@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 10.8 kB
Source Map (JSON)
{"version":3,"file":"roles.mjs","names":[],"sources":["../../src/schemas/roles.ts"],"sourcesContent":["import z from \"zod\";\nimport type { ControllerSchema } from \"../types.js\";\nimport { queryFormatted, queryString } from \"./helpers/querystring.js\";\n\nconst roleTranslationSchema = z.object({\n\tlocaleCode: z.string().trim().meta({\n\t\tdescription: \"The admin UI locale code for the translated role label\",\n\t\texample: \"en\",\n\t}),\n\tvalue: z.string().trim().nullable().meta({\n\t\tdescription: \"The translated value\",\n\t\texample: \"Editors\",\n\t}),\n});\n\nconst roleResponseSchema = z.object({\n\tid: z.number().meta({\n\t\tdescription: \"The role ID\",\n\t\texample: 1,\n\t}),\n\tkey: z.string().nullable().meta({\n\t\tdescription:\n\t\t\t\"The config-managed role key, if this role is managed by config\",\n\t\texample: \"content-admin\",\n\t}),\n\tname: z.array(roleTranslationSchema).meta({\n\t\tdescription: \"Internal admin UI translations for the role name\",\n\t}),\n\tdescription: z.array(roleTranslationSchema).meta({\n\t\tdescription: \"Internal admin UI translations for the role description\",\n\t}),\n\tlocked: z.boolean().meta({\n\t\tdescription: \"Whether this role is managed by config and cannot be edited\",\n\t\texample: false,\n\t}),\n\ttenantKey: z.string().nullable().meta({\n\t\tdescription: \"The tenant this role is scoped to. Null roles are global.\",\n\t\texample: \"alpha\",\n\t}),\n\tpermissions: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tid: z.number().meta({\n\t\t\t\t\tdescription: \"The permission ID\",\n\t\t\t\t\texample: 1,\n\t\t\t\t}),\n\t\t\t\tpermission: z.string().meta({\n\t\t\t\t\tdescription: \"The permission key\",\n\t\t\t\t\texample: \"users:create\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t)\n\t\t.meta({\n\t\t\tdescription: \"A list of all of the roles permissions\",\n\t\t})\n\t\t.optional(),\n\tcreatedAt: z.string().meta({\n\t\tdescription: \"Creation timestamp\",\n\t\texample: \"2022-01-01T00:00:00Z\",\n\t}),\n\tupdatedAt: z.string().meta({\n\t\tdescription: \"Last update timestamp\",\n\t\texample: \"2022-01-01T00:00:00Z\",\n\t}),\n});\n\nexport const controllerSchemas = {\n\tcreateSingle: {\n\t\tbody: z.object({\n\t\t\tname: z.array(roleTranslationSchema).meta({\n\t\t\t\tdescription: \"Internal admin UI translations for the role name\",\n\t\t\t}),\n\t\t\tdescription: z.array(roleTranslationSchema).optional().meta({\n\t\t\t\tdescription: \"Internal admin UI translations for the role description\",\n\t\t\t}),\n\t\t\tpermissions: z.array(z.string().trim()).meta({\n\t\t\t\tdescription: \"A lit of permissions\",\n\t\t\t\texample: [\"users:create\", \"users:update\"],\n\t\t\t}),\n\t\t\ttenantKey: z.string().trim().nullable().optional().meta({\n\t\t\t\tdescription:\n\t\t\t\t\t\"The tenant key this role is scoped to. Omit or set null to make the role global.\",\n\t\t\t\texample: \"alpha\",\n\t\t\t}),\n\t\t}),\n\t\tquery: {\n\t\t\tstring: undefined,\n\t\t\tformatted: undefined,\n\t\t},\n\t\tparams: undefined,\n\t\tresponse: roleResponseSchema,\n\t} satisfies ControllerSchema,\n\tupdateSingle: {\n\t\tbody: z.object({\n\t\t\tname: z\n\t\t\t\t.array(roleTranslationSchema)\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Internal admin UI translations for the role name\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tdescription: z\n\t\t\t\t.array(roleTranslationSchema)\n\t\t\t\t.meta({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Internal admin UI translations for the role description\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tpermissions: z\n\t\t\t\t.array(z.string().trim())\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"A lit of permissions\",\n\t\t\t\t\texample: [\"users:create\", \"users:update\"],\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\ttenantKey: z.string().trim().nullable().optional().meta({\n\t\t\t\tdescription:\n\t\t\t\t\t\"The tenant key this role is scoped to. Set null to make the role global.\",\n\t\t\t\texample: \"alpha\",\n\t\t\t}),\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({\n\t\t\t\tdescription: \"The role's ID\",\n\t\t\t\texample: 1,\n\t\t\t}),\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({\n\t\t\t\tdescription: \"The role's ID\",\n\t\t\t\texample: 1,\n\t\t\t}),\n\t\t}),\n\t\tresponse: undefined,\n\t} satisfies ControllerSchema,\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[name]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"Editor\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[roleIds]\": queryString.schema.filter(true, {\n\t\t\t\t\t\texample: \"1,2\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[description]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"Can manage content\",\n\t\t\t\t\t}),\n\t\t\t\t\t\"filter[locked]\": queryString.schema.filter(false, {\n\t\t\t\t\t\texample: \"true\",\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(\"createdAt,name\"),\n\t\t\t\t\tinclude: queryString.schema.include(\"permissions\"),\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\tname: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\tdescription: queryFormatted.schema.filters.single.optional(),\n\t\t\t\t\t\troleIds: queryFormatted.schema.filters.union.optional(),\n\t\t\t\t\t\tlocked: 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([\"createdAt\", \"name\"]),\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\tinclude: z.array(z.enum([\"permissions\"])).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: undefined,\n\t\tresponse: z.array(roleResponseSchema),\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({\n\t\t\t\tdescription: \"The role's ID\",\n\t\t\t\texample: 1,\n\t\t\t}),\n\t\t}),\n\t\tresponse: roleResponseSchema,\n\t} satisfies ControllerSchema,\n};\n\nexport type GetMultipleQueryParams = z.infer<\n\ttypeof controllerSchemas.getMultiple.query.formatted\n>;\n"],"mappings":"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"}