aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-05-31 18:46:04 +0100
committerGitHub <noreply@github.com>2025-05-31 18:46:04 +0100
commit9695bba2e993b48ae333da622fa459dbaacb9349 (patch)
treec6bffbcdd73151671343f27012e82bea5a05ab6b /packages/shared
parentb218118b84291de4a9c1cd400dc58afab7054b78 (diff)
downloadkarakeep-9695bba2e993b48ae333da622fa459dbaacb9349.tar.zst
feat: Generate RSS feeds from lists (#1507)
* refactor: Move bookmark utils from shared-react to shared * Expose RSS feeds for lists * Add e2e tests * Slightly improve the look of the share dialog * allow specifying a limit in the rss endpoint
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/config.ts5
-rw-r--r--packages/shared/types/bookmarks.ts29
-rw-r--r--packages/shared/types/pagination.ts2
3 files changed, 36 insertions, 0 deletions
diff --git a/packages/shared/config.ts b/packages/shared/config.ts
index c355f9db..218b46b0 100644
--- a/packages/shared/config.ts
+++ b/packages/shared/config.ts
@@ -17,6 +17,7 @@ const optionalStringBool = () =>
const allEnv = z.object({
API_URL: z.string().url().default("http://localhost:3000"),
+ NEXTAUTH_URL: z.string().url().default("http://localhost:3000"),
DISABLE_SIGNUPS: stringBool("false"),
DISABLE_PASSWORD_AUTH: stringBool("false"),
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING: stringBool("false"),
@@ -91,6 +92,8 @@ const allEnv = z.object({
const serverConfigSchema = allEnv.transform((val) => {
return {
apiUrl: val.API_URL,
+ publicUrl: val.NEXTAUTH_URL,
+ publicApiUrl: `${val.NEXTAUTH_URL}/api`,
auth: {
disableSignups: val.DISABLE_SIGNUPS,
disablePasswordAuth: val.DISABLE_PASSWORD_AUTH,
@@ -181,6 +184,8 @@ const serverConfigSchema = allEnv.transform((val) => {
const serverConfig = serverConfigSchema.parse(process.env);
// Always explicitly pick up stuff from server config to avoid accidentally leaking stuff
export const clientConfig = {
+ publicUrl: serverConfig.publicUrl,
+ publicApiUrl: serverConfig.publicApiUrl,
demoMode: serverConfig.demoMode,
auth: {
disableSignups: serverConfig.auth.disableSignups,
diff --git a/packages/shared/types/bookmarks.ts b/packages/shared/types/bookmarks.ts
index 5fe77278..3522fad3 100644
--- a/packages/shared/types/bookmarks.ts
+++ b/packages/shared/types/bookmarks.ts
@@ -242,3 +242,32 @@ export const zSearchBookmarksRequestSchema = z.object({
sortOrder: zSortOrder.optional().default("relevance"),
includeContent: z.boolean().optional().default(false),
});
+
+export const zPublicBookmarkSchema = z.object({
+ id: z.string(),
+ createdAt: z.date(),
+ modifiedAt: z.date().nullable(),
+ title: z.string().nullish(),
+ tags: z.array(z.string()),
+ description: z.string().nullish(),
+ content: z.discriminatedUnion("type", [
+ z.object({
+ type: z.literal(BookmarkTypes.LINK),
+ url: z.string(),
+ author: z.string().nullish(),
+ }),
+ z.object({
+ type: z.literal(BookmarkTypes.TEXT),
+ text: z.string(),
+ }),
+ z.object({
+ type: z.literal(BookmarkTypes.ASSET),
+ assetType: z.enum(["image", "pdf"]),
+ assetId: z.string(),
+ fileName: z.string().nullish(),
+ sourceUrl: z.string().nullish(),
+ }),
+ ]),
+});
+
+export type ZPublicBookmark = z.infer<typeof zPublicBookmarkSchema>;
diff --git a/packages/shared/types/pagination.ts b/packages/shared/types/pagination.ts
index d2312982..3b9dead4 100644
--- a/packages/shared/types/pagination.ts
+++ b/packages/shared/types/pagination.ts
@@ -4,3 +4,5 @@ export const zCursorV2 = z.object({
createdAt: z.date(),
id: z.string(),
});
+
+export type ZCursor = z.infer<typeof zCursorV2>;