@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 12.5 kB
Source Map (JSON)
{"version":3,"file":"media-share-links.mjs","names":[],"sources":["../../src/schemas/media-share-links.ts"],"sourcesContent":["import z from \"zod\";\nimport type { ControllerSchema } from \"../types.js\";\nimport { queryFormatted, queryString } from \"./helpers/querystring.js\";\n\nexport const tokenSchema = z\n\t.string()\n\t.length(12)\n\t.regex(/^[A-Za-z0-9_-]+$/, \"Invalid token format\");\n\nexport const mediaShareLinkResponseSchema = z.object({\n\tid: z.number().meta({ description: \"Share link ID\", example: 1 }),\n\ttoken: z.string().meta({\n\t\tdescription: \"Unique token identifying the share link\",\n\t\texample: \"a1B2c3D4e5F6\",\n\t}),\n\turl: z.string().meta({\n\t\tdescription: \"Public share URL\",\n\t\texample: \"https://example.com/lucid/share/a1B2c3D4e5F6\",\n\t}),\n\tname: z.string().nullable().meta({\n\t\tdescription: \"Optional display name\",\n\t\texample: \"Client preview\",\n\t}),\n\tdescription: z.string().nullable().meta({\n\t\tdescription: \"Optional description\",\n\t\texample: \"Preview link for the client review\",\n\t}),\n\texpiresAt: z.string().nullable().meta({\n\t\tdescription: \"ISO date string when the link expires\",\n\t\texample: \"2025-01-01T00:00:00Z\",\n\t}),\n\thasExpired: z.boolean().meta({\n\t\tdescription: \"Whether the link has expired based on the current date\",\n\t\texample: false,\n\t}),\n\thasPassword: z.boolean().meta({\n\t\tdescription: \"Whether a password is set for this link\",\n\t\texample: true,\n\t}),\n\tcreatedBy: z.number().nullable().meta({\n\t\tdescription: \"User ID that created the link\",\n\t\texample: 1,\n\t}),\n\tupdatedBy: z.number().nullable().meta({\n\t\tdescription: \"User ID that last updated the link\",\n\t\texample: 1,\n\t}),\n\tcreatedAt: z.string().nullable().meta({\n\t\tdescription: \"Creation timestamp\",\n\t\texample: \"2022-01-01T00:00:00Z\",\n\t}),\n\tupdatedAt: z.string().nullable().meta({\n\t\tdescription: \"Last update timestamp\",\n\t\texample: \"2022-01-01T00:00:00Z\",\n\t}),\n});\n\nexport const controllerSchemas = {\n\tgetMultiple: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: z\n\t\t\t\t.object({\n\t\t\t\t\t\"filter[token]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"a1B2c3D4e5F6\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[name]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"Client preview\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[createdBy]\": queryString.schema.filter(true, {\n\t\t\t\t\t\texample: \"1\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[updatedBy]\": queryString.schema.filter(true, {\n\t\t\t\t\t\texample: \"1\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[expiresAt]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"2026-01-01T00:00:00Z\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[createdAt]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"2026-01-01T00:00:00Z\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[updatedAt]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"2026-01-01T00:00:00Z\",\n\t\t\t\t\t}),\n\t\t\t\t\tsort: queryString.schema.sort(\"name,expiresAt,createdAt,updatedAt\"),\n\t\t\t\t\tpage: queryString.schema.page,\n\t\t\t\t\tperPage: queryString.schema.perPage,\n\t\t\t\t})\n\t\t\t\t.meta(queryString.meta),\n\t\t\tformatted: z.object({\n\t\t\t\tfilter: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\ttoken: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tname: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tcreatedBy: queryFormatted.schema.filters.union.optional(),\n\t\t\t\t\t\tupdatedBy: queryFormatted.schema.filters.union.optional(),\n\t\t\t\t\t\texpiresAt: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tcreatedAt: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tupdatedAt: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t})\n\t\t\t\t\t.optional(),\n\t\t\t\tfilterOr: queryFormatted.schema.filterOr,\n\t\t\t\tsort: z\n\t\t\t\t\t.array(\n\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\tkey: z.enum([\"name\", \"expiresAt\", \"createdAt\", \"updatedAt\"]),\n\t\t\t\t\t\t\tdirection: z.enum([\"asc\", \"desc\"]),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\t.optional(),\n\t\t\t\tpage: queryFormatted.schema.page,\n\t\t\t\tperPage: queryFormatted.schema.perPage,\n\t\t\t}),\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({\n\t\t\t\tdescription: \"The media ID\",\n\t\t\t\texample: 1,\n\t\t\t}),\n\t\t}),\n\t\tresponse: z.array(mediaShareLinkResponseSchema),\n\t} satisfies ControllerSchema,\n\tcreateSingle: {\n\t\tbody: z.object({\n\t\t\tname: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.min(1)\n\t\t\t\t.meta({ description: \"Optional display name\" })\n\t\t\t\t.optional(),\n\t\t\tdescription: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"Optional description\" })\n\t\t\t\t.optional(),\n\t\t\tpassword: z\n\t\t\t\t.string()\n\t\t\t\t.min(1)\n\t\t\t\t.meta({ description: \"Optional password to protect the link\" })\n\t\t\t\t.optional(),\n\t\t\texpiresAt: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Optional expiry date\",\n\t\t\t\t\texample: \"2025-01-01T00:00:00Z\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t}),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({ description: \"The media ID\", example: 1 }),\n\t\t}),\n\t\tresponse: mediaShareLinkResponseSchema,\n\t} satisfies ControllerSchema,\n\tupdateSingle: {\n\t\tbody: z.object({\n\t\t\tname: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"Optional display name\" })\n\t\t\t\t.optional(),\n\t\t\tdescription: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"Optional description\" })\n\t\t\t\t.optional(),\n\t\t\tpassword: z\n\t\t\t\t.union([z.string().min(0), z.null()])\n\t\t\t\t.meta({ description: \"Set a password or null to clear\" })\n\t\t\t\t.optional(),\n\t\t\texpiresAt: z\n\t\t\t\t.union([z.string().trim(), z.null()])\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Expiry date or null to clear\",\n\t\t\t\t\texample: \"2025-01-01T00:00:00Z\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t}),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({ description: \"The media ID\", example: 1 }),\n\t\t\tlinkId: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"The share link ID\", example: 1 }),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tdeleteSingle: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({ description: \"The media ID\", example: 1 }),\n\t\t\tlinkId: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"The share link ID\", example: 1 }),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tgetSingle: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({ description: \"The media ID\", example: 1 }),\n\t\t\tlinkId: z\n\t\t\t\t.string()\n\t\t\t\t.trim()\n\t\t\t\t.meta({ description: \"The share link ID\", example: 1 }),\n\t\t}),\n\t\tresponse: mediaShareLinkResponseSchema,\n\t} satisfies ControllerSchema,\n\tdeleteMultiple: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: z.object({\n\t\t\tid: z.string().trim().meta({ description: \"The media ID\", example: 1 }),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n\tdeleteAll: {\n\t\tbody: undefined,\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\n};\n\nexport type GetMultipleShareLinksQueryParams = z.infer<\n\ttypeof controllerSchemas.getMultiple.query.formatted\n>;\n"],"mappings":"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"}