payload 3.21.0 → 3.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/forms/Form.d.ts +7 -0
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +1 -0
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/fields/config/types.d.ts +32 -3
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.d.ts +5 -1
- package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js +8 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.d.ts +5 -1
- package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.js +2 -1
- package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +5 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +12 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +5 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +2 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts +5 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +13 -2
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +5 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts +5 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +13 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts +5 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeDuplicate/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts +5 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +9 -1
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +5 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +2 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +4 -0
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +3 -1
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n let { data } = args\n\n const shouldSaveDraft = Boolean(draftArg && globalConfig.versions?.drafts)\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersion || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersion && globalVersion.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg,\n fallbackLocale,\n global: globalConfig,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n let publishedDocWithLocales = globalJSON\n let versionSnapshotResult\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: undefined,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n shouldSaveDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate,\n }\n\n if (publishSpecificLocale) {\n const latestVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n\n publishedDocWithLocales = latestVersion?.global || {}\n\n versionSnapshotResult = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: globalJSON,\n })\n }\n\n let result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: publishedDocWithLocales,\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft) {\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: shouldSaveDraft,\n global: globalConfig,\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: versionSnapshotResult,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: globalConfig,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","initTransaction","killTransaction","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","fallbackLocale","payload","select","showHiddenFields","shouldCommit","data","shouldSaveDraft","Boolean","versions","drafts","accessResults","access","update","query","undefined","globalVersion","config","where","global","globalExists","globalJSON","_id","originalDoc","collection","context","doc","globalSlug","lockErrorMessage","operation","hooks","reduce","priorHook","hook","Promise","resolve","publishedDocWithLocales","versionSnapshotResult","beforeChangeArgs","docWithLocales","skipValidation","validate","latestVersion","published","result","db","updateGlobal","createGlobal","globalType","snapshot","selectMode","previousDoc","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n Operation,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n select,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n let { data } = args\n\n const shouldSaveDraft = Boolean(draftArg && globalConfig.versions?.drafts)\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersion || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersion && globalVersion.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg,\n fallbackLocale,\n global: globalConfig,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n let publishedDocWithLocales = globalJSON\n let versionSnapshotResult\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: undefined,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n shouldSaveDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate,\n }\n\n if (publishSpecificLocale) {\n const latestVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n\n publishedDocWithLocales = latestVersion?.global || {}\n\n versionSnapshotResult = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: globalJSON,\n })\n }\n\n let result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: publishedDocWithLocales,\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft) {\n // Ensure global has createdAt\n if (!result.createdAt) {\n result.createdAt = new Date().toISOString()\n }\n\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n select,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: shouldSaveDraft,\n global: globalConfig,\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot: versionSnapshotResult,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && result.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete result['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: globalConfig,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","initTransaction","killTransaction","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","fallbackLocale","payload","select","showHiddenFields","shouldCommit","data","shouldSaveDraft","Boolean","versions","drafts","accessResults","access","update","query","undefined","globalVersion","config","where","global","globalExists","globalJSON","_id","originalDoc","collection","context","doc","globalSlug","lockErrorMessage","operation","hooks","reduce","priorHook","hook","Promise","resolve","publishedDocWithLocales","versionSnapshotResult","beforeChangeArgs","docWithLocales","skipValidation","validate","latestVersion","published","result","createdAt","Date","toISOString","db","updateGlobal","createGlobal","globalType","snapshot","selectMode","previousDoc","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAKnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAsB,cAAc,EAAU,MAAM,2BAA2B,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AA+KvE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAO7C;
|
|
1
|
+
{"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAKnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAsB,cAAc,EAAU,MAAM,2BAA2B,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AA+KvE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAO7C;AA2BD,wBAAgB,kBAAkB;AAChC;;;;GAIG;AACH,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,EAC9D,MAAM,EAAE,cAAc,EAAE;AACxB;;GAEG;AACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,IAAI,GACV;IACD,UAAU,EAAE;QACV,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;KACzB,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CA4YA;AAGD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,EAChC,sBAAsB,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,EAC/D,IAAI,CAAC,EAAE,IAAI,GACV,WAAW,CAmEb;AAED,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,wBAAwB,GACzB,EAAE;IACD,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACnD,GAAG,WAAW,CA0Fd;AAgHD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,yBAAyB,GAChC,WAAW,CA0Bb;AAoBD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,EACjC,IAAI,CAAC,EAAE,IAAI,GACV,WAAW,CAgIb"}
|
|
@@ -187,7 +187,9 @@ function entityOrFieldToJsDocs({ entity, i18n }) {
|
|
|
187
187
|
description = entity?.admin?.description?.[i18n.language];
|
|
188
188
|
}
|
|
189
189
|
} else if (typeof entity?.admin?.description === 'function' && i18n) {
|
|
190
|
-
|
|
190
|
+
// do not evaluate description functions for generating JSDocs. The output of
|
|
191
|
+
// those can differ depending on where and when they are called, creating
|
|
192
|
+
// inconsistencies in the generated JSDocs.
|
|
191
193
|
}
|
|
192
194
|
}
|
|
193
195
|
return description;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/configToJSONSchema.ts"],"sourcesContent":["import type { JSONSchema4, JSONSchema4TypeName } from 'json-schema'\n\nimport pluralize from 'pluralize'\nconst { singular } = pluralize\n\nimport type { I18n } from '@payloadcms/translations'\n\nimport type { Auth } from '../auth/types.js'\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { FieldAffectingData, FlattenedField, Option } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { MissingEditorProp } from '../errors/MissingEditorProp.js'\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { generateJobsJSONSchemas } from '../queues/config/generateJobsJSONSchemas.js'\nimport { deepCopyObject } from './deepCopyObject.js'\nimport { toWords } from './formatLabels.js'\nimport { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js'\n\nconst fieldIsRequired = (field: FlattenedField) => {\n const isConditional = Boolean(field?.admin && field?.admin?.condition)\n if (isConditional) {\n return false\n }\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) {\n return true\n }\n\n // if any subfields are required, this field is required\n if ('fields' in field && field.type !== 'array') {\n return field.flattenedFields.some((subField) => fieldIsRequired(subField))\n }\n\n return false\n}\n\nfunction buildOptionEnums(options: Option[]): string[] {\n return options.map((option) => {\n if (typeof option === 'object' && 'value' in option) {\n return option.value\n }\n\n return option\n })\n}\n\nfunction generateEntitySchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateEntitySelectSchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}_select`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateCollectionJoinsSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = [...collections].reduce<Record<string, JSONSchema4>>(\n (acc, { slug, joins }) => {\n const schema = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n required: [],\n } satisfies JSONSchema4\n\n for (const collectionSlug in joins) {\n for (const join of joins[collectionSlug]) {\n schema.properties[join.joinPath] = {\n type: 'string',\n enum: [collectionSlug],\n }\n schema.required.push(join.joinPath)\n }\n }\n\n if (Object.keys(schema.properties).length > 0) {\n acc[slug] = schema\n }\n\n return acc\n },\n {},\n )\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateLocaleEntitySchemas(localization: SanitizedConfig['localization']): JSONSchema4 {\n if (localization && 'locales' in localization && localization?.locales) {\n const localesFromConfig = localization?.locales\n\n const locales = [...localesFromConfig].map((locale) => {\n return locale.code\n }, [])\n\n return {\n type: 'string',\n enum: locales,\n }\n }\n\n return {\n type: 'null',\n }\n}\n\nfunction generateAuthEntitySchemas(entities: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties: JSONSchema4[] = [...entities]\n .filter(({ auth }) => Boolean(auth))\n .map(({ slug }) => {\n return {\n allOf: [\n { $ref: `#/definitions/${slug}` },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n collection: { type: 'string', enum: [slug] },\n },\n required: ['collection'],\n },\n ],\n }\n }, {})\n\n return {\n oneOf: properties,\n }\n}\n\n/**\n * Generates the JSON Schema for database configuration\n *\n * @example { db: idType: string }\n */\nfunction generateDbEntitySchema(config: SanitizedConfig): JSONSchema4 {\n const defaultIDType: JSONSchema4 =\n config.db?.defaultIDType === 'number' ? { type: 'number' } : { type: 'string' }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n defaultIDType,\n },\n required: ['defaultIDType'],\n }\n}\n\n/**\n * Returns a JSON Schema Type with 'null' added if the field is not required.\n */\nexport function withNullableJSONSchemaType(\n fieldType: JSONSchema4TypeName,\n isRequired: boolean,\n): JSONSchema4TypeName | JSONSchema4TypeName[] {\n const fieldTypes = [fieldType]\n if (isRequired) {\n return fieldType\n }\n fieldTypes.push('null')\n return fieldTypes\n}\n\nfunction entityOrFieldToJsDocs({\n entity,\n i18n,\n}: {\n entity: FlattenedField | SanitizedCollectionConfig | SanitizedGlobalConfig\n i18n?: I18n\n}): string | undefined {\n let description: string | undefined = undefined\n if (entity?.admin?.description) {\n if (typeof entity?.admin?.description === 'string') {\n description = entity?.admin?.description\n } else if (typeof entity?.admin?.description === 'object') {\n if (entity?.admin?.description?.en) {\n description = entity?.admin?.description?.en\n } else if (entity?.admin?.description?.[i18n.language]) {\n description = entity?.admin?.description?.[i18n.language]\n }\n } else if (typeof entity?.admin?.description === 'function' && i18n) {\n description = entity?.admin?.description(i18n)\n }\n }\n return description\n}\nexport function fieldsToJSONSchema(\n /**\n * Used for relationship fields, to determine whether to use a string or number type for the ID.\n * While there is a default ID field type set by the db adapter, they can differ on a collection-level\n * if they have custom ID fields.\n */\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' },\n fields: FlattenedField[],\n /**\n * Allows you to define new top-level interfaces that can be re-used in the output schema.\n */\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n config?: SanitizedConfig,\n i18n?: I18n,\n): {\n properties: {\n [k: string]: JSONSchema4\n }\n required: string[]\n} {\n const requiredFieldNames = new Set<string>()\n\n return {\n properties: Object.fromEntries(\n fields.reduce((fieldSchemas, field) => {\n const isRequired = fieldAffectsData(field) && fieldIsRequired(field)\n if (isRequired) {\n requiredFieldNames.add(field.name)\n }\n\n const fieldDescription = entityOrFieldToJsDocs({ entity: field, i18n })\n const baseFieldSchema: JSONSchema4 = {}\n if (fieldDescription) {\n baseFieldSchema.description = fieldDescription\n }\n\n let fieldSchema: JSONSchema4\n\n switch (field.type) {\n case 'array': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n },\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n case 'blocks': {\n // Check for a case where no blocks are provided.\n // We need to generate an empty array for this case, note that JSON schema 4 doesn't support empty arrays\n // so the best we can get is `unknown[]`\n const hasBlocks = Boolean(field.blocks.length)\n\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: hasBlocks\n ? {\n oneOf: field.blocks.map((block) => {\n const blockFieldSchemas = fieldsToJSONSchema(\n collectionIDFieldTypes,\n block.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n )\n\n const blockSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {\n ...blockFieldSchemas.properties,\n blockType: {\n const: block.slug,\n },\n },\n required: ['blockType', ...blockFieldSchemas.required],\n }\n\n if (block.interfaceName) {\n interfaceNameDefinitions.set(block.interfaceName, blockSchema)\n\n return {\n $ref: `#/definitions/${block.interfaceName}`,\n }\n }\n\n return blockSchema\n }),\n }\n : {},\n }\n break\n }\n case 'checkbox': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('boolean', isRequired),\n }\n break\n }\n case 'code':\n case 'date':\n case 'email':\n case 'textarea': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n break\n }\n\n case 'group':\n case 'tab': {\n fieldSchema = {\n ...baseFieldSchema,\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = { $ref: `#/definitions/${field.interfaceName}` }\n }\n break\n }\n\n case 'join': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('object', false),\n additionalProperties: false,\n properties: {\n docs: {\n type: withNullableJSONSchemaType('array', false),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.collection],\n },\n {\n $ref: `#/definitions/${field.collection}`,\n },\n ],\n },\n },\n hasNextPage: { type: withNullableJSONSchemaType('boolean', false) },\n },\n }\n break\n }\n\n case 'json': {\n fieldSchema = field.jsonSchema?.schema || {\n ...baseFieldSchema,\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'number': {\n if (field.hasMany === true) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'number' },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('number', isRequired),\n }\n }\n break\n }\n\n case 'point': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: [\n {\n type: 'number',\n },\n {\n type: 'number',\n },\n ],\n maxItems: 2,\n minItems: 2,\n }\n break\n }\n case 'radio': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n enum: buildOptionEnums(field.options),\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (Array.isArray(field.relationTo)) {\n if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n oneOf: field.relationTo.map((relation) => {\n return {\n type: withNullableJSONSchemaType('object', isRequired),\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n }\n }\n } else if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n oneOf: [\n {\n type: withNullableJSONSchemaType(\n collectionIDFieldTypes[field.relationTo],\n isRequired,\n ),\n },\n { $ref: `#/definitions/${field.relationTo}` },\n ],\n }\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n if (field.editor.outputSchema) {\n fieldSchema = {\n ...baseFieldSchema,\n ...field.editor.outputSchema({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }),\n }\n } else {\n // Maintain backwards compatibility with existing rich text editors\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n }\n\n break\n }\n case 'select': {\n const optionEnums = buildOptionEnums(field.options)\n\n if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'string',\n },\n }\n if (optionEnums?.length) {\n ;(fieldSchema.items as JSONSchema4).enum = optionEnums\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n if (optionEnums?.length) {\n fieldSchema.enum = optionEnums\n }\n }\n\n break\n }\n\n case 'text':\n if (field.hasMany === true) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'string' },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n }\n break\n\n default: {\n break\n }\n }\n\n if ('typescriptSchema' in field && field?.typescriptSchema?.length) {\n for (const schema of field.typescriptSchema) {\n fieldSchema = schema({ jsonSchema: fieldSchema })\n }\n }\n\n if (fieldSchema && fieldAffectsData(field)) {\n fieldSchemas.set(field.name, fieldSchema)\n }\n\n return fieldSchemas\n }, new Map<string, JSONSchema4>()),\n ),\n required: Array.from(requiredFieldNames),\n }\n}\n\n// This function is part of the public API and is exported through payload/utilities\nexport function entityToJSONSchema(\n config: SanitizedConfig,\n incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig,\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n defaultIDType: 'number' | 'text',\n collectionIDFieldTypes?: { [key: string]: 'number' | 'string' },\n i18n?: I18n,\n): JSONSchema4 {\n if (!collectionIDFieldTypes) {\n collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n }\n\n const entity: SanitizedCollectionConfig | SanitizedGlobalConfig = deepCopyObject(incomingEntity)\n const title = entity.typescript?.interface\n ? entity.typescript.interface\n : singular(toWords(entity.slug, true))\n\n const idField: FieldAffectingData = { name: 'id', type: defaultIDType as 'text', required: true }\n const customIdField = entity.flattenedFields.find(\n (field) => field.name === 'id',\n ) as FieldAffectingData\n\n if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {\n customIdField.required = true\n } else {\n entity.flattenedFields.unshift(idField)\n }\n\n // mark timestamp fields required\n if ('timestamps' in entity && entity.timestamps !== false) {\n entity.flattenedFields = entity.flattenedFields.map((field) => {\n if (field.name === 'createdAt' || field.name === 'updatedAt') {\n return {\n ...field,\n required: true,\n }\n }\n return field\n })\n }\n\n if (\n 'auth' in entity &&\n entity.auth &&\n (!entity.auth?.disableLocalStrategy ||\n (typeof entity.auth?.disableLocalStrategy === 'object' &&\n entity.auth.disableLocalStrategy.enableFields))\n ) {\n entity.flattenedFields.push({\n name: 'password',\n type: 'text',\n })\n }\n\n const jsonSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n title,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n entity.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n }\n\n const entityDescription = entityOrFieldToJsDocs({ entity, i18n })\n\n if (entityDescription) {\n jsonSchema.description = entityDescription\n }\n\n return jsonSchema\n}\n\nexport function fieldsToSelectJSONSchema({\n fields,\n interfaceNameDefinitions,\n}: {\n fields: FlattenedField[]\n interfaceNameDefinitions: Map<string, JSONSchema4>\n}): JSONSchema4 {\n const schema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const field of fields) {\n switch (field.type) {\n case 'array':\n case 'group':\n case 'tab': {\n let fieldSchema: JSONSchema4 = fieldsToSelectJSONSchema({\n fields: field.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (field.interfaceName) {\n const definition = `${field.interfaceName}_select`\n interfaceNameDefinitions.set(definition, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${definition}`,\n }\n }\n\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n fieldSchema,\n ],\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const block of field.blocks) {\n let blockSchema = fieldsToSelectJSONSchema({\n fields: block.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (block.interfaceName) {\n const definition = `${block.interfaceName}_select`\n interfaceNameDefinitions.set(definition, blockSchema)\n blockSchema = {\n $ref: `#/definitions/${definition}`,\n }\n }\n\n blocksSchema.properties[block.slug] = {\n oneOf: [\n {\n type: 'boolean',\n },\n blockSchema,\n ],\n }\n }\n\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n blocksSchema,\n ],\n }\n\n break\n }\n\n default:\n schema.properties[field.name] = {\n type: 'boolean',\n }\n break\n }\n }\n\n return schema\n}\n\nconst fieldType: JSONSchema4 = {\n type: 'string',\n required: false,\n}\nconst generateAuthFieldTypes = ({\n type,\n loginWithUsername,\n}: {\n loginWithUsername: Auth['loginWithUsername']\n type: 'forgotOrUnlock' | 'login' | 'register'\n}): JSONSchema4 => {\n if (loginWithUsername) {\n switch (type) {\n case 'forgotOrUnlock': {\n if (loginWithUsername.allowEmailLogin) {\n // allow email or username for unlock/forgot-password\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType },\n required: ['email'],\n },\n {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n },\n ],\n }\n } else {\n // allow only username for unlock/forgot-password\n return {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n }\n }\n }\n\n case 'login': {\n if (loginWithUsername.allowEmailLogin) {\n // allow username or email and require password for login\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n },\n {\n additionalProperties: false,\n properties: { password: fieldType, username: fieldType },\n required: ['username', 'password'],\n },\n ],\n }\n } else {\n // allow only username and password for login\n return {\n additionalProperties: false,\n properties: {\n password: fieldType,\n username: fieldType,\n },\n required: ['username', 'password'],\n }\n }\n }\n\n case 'register': {\n const requiredFields: ('email' | 'password' | 'username')[] = ['password']\n const properties: {\n email?: JSONSchema4['properties']\n password?: JSONSchema4['properties']\n username?: JSONSchema4['properties']\n } = {\n password: fieldType,\n username: fieldType,\n }\n\n if (loginWithUsername.requireEmail) {\n requiredFields.push('email')\n }\n if (loginWithUsername.requireUsername) {\n requiredFields.push('username')\n }\n if (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin) {\n properties.email = fieldType\n }\n\n return {\n additionalProperties: false,\n properties,\n required: requiredFields,\n }\n }\n }\n }\n\n // default email (and password for login/register)\n return {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n }\n}\n\nexport function authCollectionToOperationsJSONSchema(\n config: SanitizedCollectionConfig,\n): JSONSchema4 {\n const loginWithUsername = config.auth?.loginWithUsername\n const loginUserFields: JSONSchema4 = generateAuthFieldTypes({ type: 'login', loginWithUsername })\n const forgotOrUnlockUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'forgotOrUnlock',\n loginWithUsername,\n })\n const registerUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'register',\n loginWithUsername,\n })\n\n const properties: JSONSchema4['properties'] = {\n forgotPassword: forgotOrUnlockUserFields,\n login: loginUserFields,\n registerFirstUser: registerUserFields,\n unlock: forgotOrUnlockUserFields,\n }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n title: `${singular(toWords(`${config.slug}`, true))}AuthOperations`,\n }\n}\n\nfunction generateAuthOperationSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = collections.reduce((acc, collection) => {\n if (collection.auth) {\n acc[collection.slug] = {\n $ref: `#/definitions/auth/${collection.slug}`,\n }\n }\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\n/**\n * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.\n */\nexport function configToJSONSchema(\n config: SanitizedConfig,\n defaultIDType?: 'number' | 'text',\n i18n?: I18n,\n): JSONSchema4 {\n // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here\n const interfaceNameDefinitions: Map<string, JSONSchema4> = new Map()\n\n // Used for relationship fields, to determine whether to use a string or number type for the ID.\n const collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n\n // Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global\n // types to be inlined inside the `Config` type\n\n const entities: {\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n type: 'collection' | 'global'\n }[] = [\n ...config.globals.map((global) => ({ type: 'global' as const, entity: global })),\n ...config.collections.map((collection) => ({\n type: 'collection' as const,\n entity: collection,\n })),\n ]\n\n const entityDefinitions: { [k: string]: JSONSchema4 } = entities.reduce(\n (acc, { type, entity }) => {\n acc[entity.slug] = entityToJSONSchema(\n config,\n entity,\n interfaceNameDefinitions,\n defaultIDType,\n collectionIDFieldTypes,\n i18n,\n )\n const select = fieldsToSelectJSONSchema({\n fields: entity.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (type === 'global') {\n select.properties.globalType = {\n type: 'boolean',\n }\n }\n\n acc[`${entity.slug}_select`] = {\n type: 'object',\n additionalProperties: false,\n ...select,\n }\n\n return acc\n },\n {},\n )\n\n const authOperationDefinitions = [...config.collections]\n .filter(({ auth }) => Boolean(auth))\n .reduce(\n (acc, authCollection) => {\n acc.auth[authCollection.slug] = authCollectionToOperationsJSONSchema(authCollection)\n return acc\n },\n { auth: {} },\n )\n\n const jobsSchemas = config.jobs\n ? generateJobsJSONSchemas(\n config,\n config.jobs,\n interfaceNameDefinitions,\n collectionIDFieldTypes,\n i18n,\n )\n : {}\n\n let jsonSchema: JSONSchema4 = {\n additionalProperties: false,\n definitions: {\n ...entityDefinitions,\n ...Object.fromEntries(interfaceNameDefinitions),\n ...authOperationDefinitions,\n },\n // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type\n type: 'object',\n properties: {\n auth: generateAuthOperationSchemas(config.collections),\n collections: generateEntitySchemas(config.collections || []),\n collectionsJoins: generateCollectionJoinsSchemas(config.collections || []),\n collectionsSelect: generateEntitySelectSchemas(config.collections || []),\n db: generateDbEntitySchema(config),\n globals: generateEntitySchemas(config.globals || []),\n globalsSelect: generateEntitySelectSchemas(config.globals || []),\n locale: generateLocaleEntitySchemas(config.localization),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: [\n 'user',\n 'locale',\n 'collections',\n 'collectionsSelect',\n 'collectionsJoins',\n 'globalsSelect',\n 'globals',\n 'auth',\n 'db',\n 'jobs',\n ],\n title: 'Config',\n }\n if (jobsSchemas.definitions?.size) {\n for (const [key, value] of jobsSchemas.definitions) {\n jsonSchema.definitions[key] = value\n }\n }\n if (jobsSchemas.properties) {\n jsonSchema.properties.jobs = {\n type: 'object',\n additionalProperties: false,\n properties: jobsSchemas.properties,\n required: ['tasks', 'workflows'],\n }\n }\n\n if (config?.typescript?.schema?.length) {\n for (const schema of config.typescript.schema) {\n jsonSchema = schema({ collectionIDFieldTypes, config, i18n, jsonSchema })\n }\n }\n\n return jsonSchema\n}\n"],"names":["pluralize","singular","MissingEditorProp","fieldAffectsData","generateJobsJSONSchemas","deepCopyObject","toWords","getCollectionIDFieldTypes","fieldIsRequired","field","isConditional","Boolean","admin","condition","isMarkedRequired","required","type","flattenedFields","some","subField","buildOptionEnums","options","map","option","value","generateEntitySchemas","entities","properties","reduce","acc","slug","$ref","additionalProperties","Object","keys","generateEntitySelectSchemas","generateCollectionJoinsSchemas","collections","joins","schema","collectionSlug","join","joinPath","enum","push","length","generateLocaleEntitySchemas","localization","locales","localesFromConfig","locale","code","generateAuthEntitySchemas","filter","auth","allOf","collection","oneOf","generateDbEntitySchema","config","defaultIDType","db","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","entityOrFieldToJsDocs","entity","i18n","description","undefined","en","language","fieldsToJSONSchema","collectionIDFieldTypes","fields","interfaceNameDefinitions","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldDescription","baseFieldSchema","fieldSchema","items","interfaceName","set","hasBlocks","blocks","block","blockFieldSchemas","blockSchema","blockType","const","docs","hasNextPage","jsonSchema","hasMany","maxItems","minItems","Array","isArray","relationTo","relation","editor","Error","outputSchema","optionEnums","typescriptSchema","Map","from","entityToJSONSchema","incomingEntity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","enableFields","entityDescription","fieldsToSelectJSONSchema","definition","blocksSchema","generateAuthFieldTypes","loginWithUsername","allowEmailLogin","email","username","password","requiredFields","requireEmail","requireUsername","authCollectionToOperationsJSONSchema","loginUserFields","forgotOrUnlockUserFields","registerUserFields","forgotPassword","login","registerFirstUser","unlock","generateAuthOperationSchemas","configToJSONSchema","globals","global","entityDefinitions","select","globalType","authOperationDefinitions","authCollection","jobsSchemas","jobs","definitions","collectionsJoins","collectionsSelect","globalsSelect","user","size","key"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/configToJSONSchema.ts"],"sourcesContent":["import type { JSONSchema4, JSONSchema4TypeName } from 'json-schema'\n\nimport pluralize from 'pluralize'\nconst { singular } = pluralize\n\nimport type { I18n } from '@payloadcms/translations'\n\nimport type { Auth } from '../auth/types.js'\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { FieldAffectingData, FlattenedField, Option } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { MissingEditorProp } from '../errors/MissingEditorProp.js'\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { generateJobsJSONSchemas } from '../queues/config/generateJobsJSONSchemas.js'\nimport { deepCopyObject } from './deepCopyObject.js'\nimport { toWords } from './formatLabels.js'\nimport { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js'\n\nconst fieldIsRequired = (field: FlattenedField) => {\n const isConditional = Boolean(field?.admin && field?.admin?.condition)\n if (isConditional) {\n return false\n }\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) {\n return true\n }\n\n // if any subfields are required, this field is required\n if ('fields' in field && field.type !== 'array') {\n return field.flattenedFields.some((subField) => fieldIsRequired(subField))\n }\n\n return false\n}\n\nfunction buildOptionEnums(options: Option[]): string[] {\n return options.map((option) => {\n if (typeof option === 'object' && 'value' in option) {\n return option.value\n }\n\n return option\n })\n}\n\nfunction generateEntitySchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateEntitySelectSchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}_select`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateCollectionJoinsSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = [...collections].reduce<Record<string, JSONSchema4>>(\n (acc, { slug, joins }) => {\n const schema = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n required: [],\n } satisfies JSONSchema4\n\n for (const collectionSlug in joins) {\n for (const join of joins[collectionSlug]) {\n schema.properties[join.joinPath] = {\n type: 'string',\n enum: [collectionSlug],\n }\n schema.required.push(join.joinPath)\n }\n }\n\n if (Object.keys(schema.properties).length > 0) {\n acc[slug] = schema\n }\n\n return acc\n },\n {},\n )\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateLocaleEntitySchemas(localization: SanitizedConfig['localization']): JSONSchema4 {\n if (localization && 'locales' in localization && localization?.locales) {\n const localesFromConfig = localization?.locales\n\n const locales = [...localesFromConfig].map((locale) => {\n return locale.code\n }, [])\n\n return {\n type: 'string',\n enum: locales,\n }\n }\n\n return {\n type: 'null',\n }\n}\n\nfunction generateAuthEntitySchemas(entities: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties: JSONSchema4[] = [...entities]\n .filter(({ auth }) => Boolean(auth))\n .map(({ slug }) => {\n return {\n allOf: [\n { $ref: `#/definitions/${slug}` },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n collection: { type: 'string', enum: [slug] },\n },\n required: ['collection'],\n },\n ],\n }\n }, {})\n\n return {\n oneOf: properties,\n }\n}\n\n/**\n * Generates the JSON Schema for database configuration\n *\n * @example { db: idType: string }\n */\nfunction generateDbEntitySchema(config: SanitizedConfig): JSONSchema4 {\n const defaultIDType: JSONSchema4 =\n config.db?.defaultIDType === 'number' ? { type: 'number' } : { type: 'string' }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n defaultIDType,\n },\n required: ['defaultIDType'],\n }\n}\n\n/**\n * Returns a JSON Schema Type with 'null' added if the field is not required.\n */\nexport function withNullableJSONSchemaType(\n fieldType: JSONSchema4TypeName,\n isRequired: boolean,\n): JSONSchema4TypeName | JSONSchema4TypeName[] {\n const fieldTypes = [fieldType]\n if (isRequired) {\n return fieldType\n }\n fieldTypes.push('null')\n return fieldTypes\n}\n\nfunction entityOrFieldToJsDocs({\n entity,\n i18n,\n}: {\n entity: FlattenedField | SanitizedCollectionConfig | SanitizedGlobalConfig\n i18n?: I18n\n}): string | undefined {\n let description: string | undefined = undefined\n if (entity?.admin?.description) {\n if (typeof entity?.admin?.description === 'string') {\n description = entity?.admin?.description\n } else if (typeof entity?.admin?.description === 'object') {\n if (entity?.admin?.description?.en) {\n description = entity?.admin?.description?.en\n } else if (entity?.admin?.description?.[i18n.language]) {\n description = entity?.admin?.description?.[i18n.language]\n }\n } else if (typeof entity?.admin?.description === 'function' && i18n) {\n // do not evaluate description functions for generating JSDocs. The output of\n // those can differ depending on where and when they are called, creating\n // inconsistencies in the generated JSDocs.\n }\n }\n return description\n}\nexport function fieldsToJSONSchema(\n /**\n * Used for relationship fields, to determine whether to use a string or number type for the ID.\n * While there is a default ID field type set by the db adapter, they can differ on a collection-level\n * if they have custom ID fields.\n */\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' },\n fields: FlattenedField[],\n /**\n * Allows you to define new top-level interfaces that can be re-used in the output schema.\n */\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n config?: SanitizedConfig,\n i18n?: I18n,\n): {\n properties: {\n [k: string]: JSONSchema4\n }\n required: string[]\n} {\n const requiredFieldNames = new Set<string>()\n\n return {\n properties: Object.fromEntries(\n fields.reduce((fieldSchemas, field) => {\n const isRequired = fieldAffectsData(field) && fieldIsRequired(field)\n if (isRequired) {\n requiredFieldNames.add(field.name)\n }\n\n const fieldDescription = entityOrFieldToJsDocs({ entity: field, i18n })\n const baseFieldSchema: JSONSchema4 = {}\n if (fieldDescription) {\n baseFieldSchema.description = fieldDescription\n }\n\n let fieldSchema: JSONSchema4\n\n switch (field.type) {\n case 'array': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n },\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n case 'blocks': {\n // Check for a case where no blocks are provided.\n // We need to generate an empty array for this case, note that JSON schema 4 doesn't support empty arrays\n // so the best we can get is `unknown[]`\n const hasBlocks = Boolean(field.blocks.length)\n\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: hasBlocks\n ? {\n oneOf: field.blocks.map((block) => {\n const blockFieldSchemas = fieldsToJSONSchema(\n collectionIDFieldTypes,\n block.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n )\n\n const blockSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {\n ...blockFieldSchemas.properties,\n blockType: {\n const: block.slug,\n },\n },\n required: ['blockType', ...blockFieldSchemas.required],\n }\n\n if (block.interfaceName) {\n interfaceNameDefinitions.set(block.interfaceName, blockSchema)\n\n return {\n $ref: `#/definitions/${block.interfaceName}`,\n }\n }\n\n return blockSchema\n }),\n }\n : {},\n }\n break\n }\n case 'checkbox': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('boolean', isRequired),\n }\n break\n }\n case 'code':\n case 'date':\n case 'email':\n case 'textarea': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n break\n }\n\n case 'group':\n case 'tab': {\n fieldSchema = {\n ...baseFieldSchema,\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = { $ref: `#/definitions/${field.interfaceName}` }\n }\n break\n }\n\n case 'join': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('object', false),\n additionalProperties: false,\n properties: {\n docs: {\n type: withNullableJSONSchemaType('array', false),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.collection],\n },\n {\n $ref: `#/definitions/${field.collection}`,\n },\n ],\n },\n },\n hasNextPage: { type: withNullableJSONSchemaType('boolean', false) },\n },\n }\n break\n }\n\n case 'json': {\n fieldSchema = field.jsonSchema?.schema || {\n ...baseFieldSchema,\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'number': {\n if (field.hasMany === true) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'number' },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('number', isRequired),\n }\n }\n break\n }\n\n case 'point': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: [\n {\n type: 'number',\n },\n {\n type: 'number',\n },\n ],\n maxItems: 2,\n minItems: 2,\n }\n break\n }\n case 'radio': {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n enum: buildOptionEnums(field.options),\n }\n\n break\n }\n\n case 'relationship':\n case 'upload': {\n if (Array.isArray(field.relationTo)) {\n if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n oneOf: field.relationTo.map((relation) => {\n return {\n type: withNullableJSONSchemaType('object', isRequired),\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n }\n }\n } else if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n oneOf: [\n {\n type: withNullableJSONSchemaType(\n collectionIDFieldTypes[field.relationTo],\n isRequired,\n ),\n },\n { $ref: `#/definitions/${field.relationTo}` },\n ],\n }\n }\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n if (field.editor.outputSchema) {\n fieldSchema = {\n ...baseFieldSchema,\n ...field.editor.outputSchema({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }),\n }\n } else {\n // Maintain backwards compatibility with existing rich text editors\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n }\n\n break\n }\n case 'select': {\n const optionEnums = buildOptionEnums(field.options)\n\n if (field.hasMany) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'string',\n },\n }\n if (optionEnums?.length) {\n ;(fieldSchema.items as JSONSchema4).enum = optionEnums\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n if (optionEnums?.length) {\n fieldSchema.enum = optionEnums\n }\n }\n\n break\n }\n\n case 'text':\n if (field.hasMany === true) {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'string' },\n }\n } else {\n fieldSchema = {\n ...baseFieldSchema,\n type: withNullableJSONSchemaType('string', isRequired),\n }\n }\n break\n\n default: {\n break\n }\n }\n\n if ('typescriptSchema' in field && field?.typescriptSchema?.length) {\n for (const schema of field.typescriptSchema) {\n fieldSchema = schema({ jsonSchema: fieldSchema })\n }\n }\n\n if (fieldSchema && fieldAffectsData(field)) {\n fieldSchemas.set(field.name, fieldSchema)\n }\n\n return fieldSchemas\n }, new Map<string, JSONSchema4>()),\n ),\n required: Array.from(requiredFieldNames),\n }\n}\n\n// This function is part of the public API and is exported through payload/utilities\nexport function entityToJSONSchema(\n config: SanitizedConfig,\n incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig,\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n defaultIDType: 'number' | 'text',\n collectionIDFieldTypes?: { [key: string]: 'number' | 'string' },\n i18n?: I18n,\n): JSONSchema4 {\n if (!collectionIDFieldTypes) {\n collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n }\n\n const entity: SanitizedCollectionConfig | SanitizedGlobalConfig = deepCopyObject(incomingEntity)\n const title = entity.typescript?.interface\n ? entity.typescript.interface\n : singular(toWords(entity.slug, true))\n\n const idField: FieldAffectingData = { name: 'id', type: defaultIDType as 'text', required: true }\n const customIdField = entity.flattenedFields.find(\n (field) => field.name === 'id',\n ) as FieldAffectingData\n\n if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {\n customIdField.required = true\n } else {\n entity.flattenedFields.unshift(idField)\n }\n\n // mark timestamp fields required\n if ('timestamps' in entity && entity.timestamps !== false) {\n entity.flattenedFields = entity.flattenedFields.map((field) => {\n if (field.name === 'createdAt' || field.name === 'updatedAt') {\n return {\n ...field,\n required: true,\n }\n }\n return field\n })\n }\n\n if (\n 'auth' in entity &&\n entity.auth &&\n (!entity.auth?.disableLocalStrategy ||\n (typeof entity.auth?.disableLocalStrategy === 'object' &&\n entity.auth.disableLocalStrategy.enableFields))\n ) {\n entity.flattenedFields.push({\n name: 'password',\n type: 'text',\n })\n }\n\n const jsonSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n title,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n entity.flattenedFields,\n interfaceNameDefinitions,\n config,\n i18n,\n ),\n }\n\n const entityDescription = entityOrFieldToJsDocs({ entity, i18n })\n\n if (entityDescription) {\n jsonSchema.description = entityDescription\n }\n\n return jsonSchema\n}\n\nexport function fieldsToSelectJSONSchema({\n fields,\n interfaceNameDefinitions,\n}: {\n fields: FlattenedField[]\n interfaceNameDefinitions: Map<string, JSONSchema4>\n}): JSONSchema4 {\n const schema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const field of fields) {\n switch (field.type) {\n case 'array':\n case 'group':\n case 'tab': {\n let fieldSchema: JSONSchema4 = fieldsToSelectJSONSchema({\n fields: field.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (field.interfaceName) {\n const definition = `${field.interfaceName}_select`\n interfaceNameDefinitions.set(definition, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${definition}`,\n }\n }\n\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n fieldSchema,\n ],\n }\n\n break\n }\n\n case 'blocks': {\n const blocksSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const block of field.blocks) {\n let blockSchema = fieldsToSelectJSONSchema({\n fields: block.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (block.interfaceName) {\n const definition = `${block.interfaceName}_select`\n interfaceNameDefinitions.set(definition, blockSchema)\n blockSchema = {\n $ref: `#/definitions/${definition}`,\n }\n }\n\n blocksSchema.properties[block.slug] = {\n oneOf: [\n {\n type: 'boolean',\n },\n blockSchema,\n ],\n }\n }\n\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n blocksSchema,\n ],\n }\n\n break\n }\n\n default:\n schema.properties[field.name] = {\n type: 'boolean',\n }\n break\n }\n }\n\n return schema\n}\n\nconst fieldType: JSONSchema4 = {\n type: 'string',\n required: false,\n}\nconst generateAuthFieldTypes = ({\n type,\n loginWithUsername,\n}: {\n loginWithUsername: Auth['loginWithUsername']\n type: 'forgotOrUnlock' | 'login' | 'register'\n}): JSONSchema4 => {\n if (loginWithUsername) {\n switch (type) {\n case 'forgotOrUnlock': {\n if (loginWithUsername.allowEmailLogin) {\n // allow email or username for unlock/forgot-password\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType },\n required: ['email'],\n },\n {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n },\n ],\n }\n } else {\n // allow only username for unlock/forgot-password\n return {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n }\n }\n }\n\n case 'login': {\n if (loginWithUsername.allowEmailLogin) {\n // allow username or email and require password for login\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n },\n {\n additionalProperties: false,\n properties: { password: fieldType, username: fieldType },\n required: ['username', 'password'],\n },\n ],\n }\n } else {\n // allow only username and password for login\n return {\n additionalProperties: false,\n properties: {\n password: fieldType,\n username: fieldType,\n },\n required: ['username', 'password'],\n }\n }\n }\n\n case 'register': {\n const requiredFields: ('email' | 'password' | 'username')[] = ['password']\n const properties: {\n email?: JSONSchema4['properties']\n password?: JSONSchema4['properties']\n username?: JSONSchema4['properties']\n } = {\n password: fieldType,\n username: fieldType,\n }\n\n if (loginWithUsername.requireEmail) {\n requiredFields.push('email')\n }\n if (loginWithUsername.requireUsername) {\n requiredFields.push('username')\n }\n if (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin) {\n properties.email = fieldType\n }\n\n return {\n additionalProperties: false,\n properties,\n required: requiredFields,\n }\n }\n }\n }\n\n // default email (and password for login/register)\n return {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n }\n}\n\nexport function authCollectionToOperationsJSONSchema(\n config: SanitizedCollectionConfig,\n): JSONSchema4 {\n const loginWithUsername = config.auth?.loginWithUsername\n const loginUserFields: JSONSchema4 = generateAuthFieldTypes({ type: 'login', loginWithUsername })\n const forgotOrUnlockUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'forgotOrUnlock',\n loginWithUsername,\n })\n const registerUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'register',\n loginWithUsername,\n })\n\n const properties: JSONSchema4['properties'] = {\n forgotPassword: forgotOrUnlockUserFields,\n login: loginUserFields,\n registerFirstUser: registerUserFields,\n unlock: forgotOrUnlockUserFields,\n }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n title: `${singular(toWords(`${config.slug}`, true))}AuthOperations`,\n }\n}\n\nfunction generateAuthOperationSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = collections.reduce((acc, collection) => {\n if (collection.auth) {\n acc[collection.slug] = {\n $ref: `#/definitions/auth/${collection.slug}`,\n }\n }\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\n/**\n * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.\n */\nexport function configToJSONSchema(\n config: SanitizedConfig,\n defaultIDType?: 'number' | 'text',\n i18n?: I18n,\n): JSONSchema4 {\n // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here\n const interfaceNameDefinitions: Map<string, JSONSchema4> = new Map()\n\n // Used for relationship fields, to determine whether to use a string or number type for the ID.\n const collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n\n // Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global\n // types to be inlined inside the `Config` type\n\n const entities: {\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n type: 'collection' | 'global'\n }[] = [\n ...config.globals.map((global) => ({ type: 'global' as const, entity: global })),\n ...config.collections.map((collection) => ({\n type: 'collection' as const,\n entity: collection,\n })),\n ]\n\n const entityDefinitions: { [k: string]: JSONSchema4 } = entities.reduce(\n (acc, { type, entity }) => {\n acc[entity.slug] = entityToJSONSchema(\n config,\n entity,\n interfaceNameDefinitions,\n defaultIDType,\n collectionIDFieldTypes,\n i18n,\n )\n const select = fieldsToSelectJSONSchema({\n fields: entity.flattenedFields,\n interfaceNameDefinitions,\n })\n\n if (type === 'global') {\n select.properties.globalType = {\n type: 'boolean',\n }\n }\n\n acc[`${entity.slug}_select`] = {\n type: 'object',\n additionalProperties: false,\n ...select,\n }\n\n return acc\n },\n {},\n )\n\n const authOperationDefinitions = [...config.collections]\n .filter(({ auth }) => Boolean(auth))\n .reduce(\n (acc, authCollection) => {\n acc.auth[authCollection.slug] = authCollectionToOperationsJSONSchema(authCollection)\n return acc\n },\n { auth: {} },\n )\n\n const jobsSchemas = config.jobs\n ? generateJobsJSONSchemas(\n config,\n config.jobs,\n interfaceNameDefinitions,\n collectionIDFieldTypes,\n i18n,\n )\n : {}\n\n let jsonSchema: JSONSchema4 = {\n additionalProperties: false,\n definitions: {\n ...entityDefinitions,\n ...Object.fromEntries(interfaceNameDefinitions),\n ...authOperationDefinitions,\n },\n // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type\n type: 'object',\n properties: {\n auth: generateAuthOperationSchemas(config.collections),\n collections: generateEntitySchemas(config.collections || []),\n collectionsJoins: generateCollectionJoinsSchemas(config.collections || []),\n collectionsSelect: generateEntitySelectSchemas(config.collections || []),\n db: generateDbEntitySchema(config),\n globals: generateEntitySchemas(config.globals || []),\n globalsSelect: generateEntitySelectSchemas(config.globals || []),\n locale: generateLocaleEntitySchemas(config.localization),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: [\n 'user',\n 'locale',\n 'collections',\n 'collectionsSelect',\n 'collectionsJoins',\n 'globalsSelect',\n 'globals',\n 'auth',\n 'db',\n 'jobs',\n ],\n title: 'Config',\n }\n if (jobsSchemas.definitions?.size) {\n for (const [key, value] of jobsSchemas.definitions) {\n jsonSchema.definitions[key] = value\n }\n }\n if (jobsSchemas.properties) {\n jsonSchema.properties.jobs = {\n type: 'object',\n additionalProperties: false,\n properties: jobsSchemas.properties,\n required: ['tasks', 'workflows'],\n }\n }\n\n if (config?.typescript?.schema?.length) {\n for (const schema of config.typescript.schema) {\n jsonSchema = schema({ collectionIDFieldTypes, config, i18n, jsonSchema })\n }\n }\n\n return jsonSchema\n}\n"],"names":["pluralize","singular","MissingEditorProp","fieldAffectsData","generateJobsJSONSchemas","deepCopyObject","toWords","getCollectionIDFieldTypes","fieldIsRequired","field","isConditional","Boolean","admin","condition","isMarkedRequired","required","type","flattenedFields","some","subField","buildOptionEnums","options","map","option","value","generateEntitySchemas","entities","properties","reduce","acc","slug","$ref","additionalProperties","Object","keys","generateEntitySelectSchemas","generateCollectionJoinsSchemas","collections","joins","schema","collectionSlug","join","joinPath","enum","push","length","generateLocaleEntitySchemas","localization","locales","localesFromConfig","locale","code","generateAuthEntitySchemas","filter","auth","allOf","collection","oneOf","generateDbEntitySchema","config","defaultIDType","db","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","entityOrFieldToJsDocs","entity","i18n","description","undefined","en","language","fieldsToJSONSchema","collectionIDFieldTypes","fields","interfaceNameDefinitions","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldDescription","baseFieldSchema","fieldSchema","items","interfaceName","set","hasBlocks","blocks","block","blockFieldSchemas","blockSchema","blockType","const","docs","hasNextPage","jsonSchema","hasMany","maxItems","minItems","Array","isArray","relationTo","relation","editor","Error","outputSchema","optionEnums","typescriptSchema","Map","from","entityToJSONSchema","incomingEntity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","enableFields","entityDescription","fieldsToSelectJSONSchema","definition","blocksSchema","generateAuthFieldTypes","loginWithUsername","allowEmailLogin","email","username","password","requiredFields","requireEmail","requireUsername","authCollectionToOperationsJSONSchema","loginUserFields","forgotOrUnlockUserFields","registerUserFields","forgotPassword","login","registerFirstUser","unlock","generateAuthOperationSchemas","configToJSONSchema","globals","global","entityDefinitions","select","globalType","authOperationDefinitions","authCollection","jobsSchemas","jobs","definitions","collectionsJoins","collectionsSelect","globalsSelect","user","size","key"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.22.0",
|
|
4
4
|
"description": "Node, React, Headless CMS and Application Framework built on Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin panel",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"tsx": "4.19.2",
|
|
101
101
|
"uuid": "10.0.0",
|
|
102
102
|
"ws": "^8.16.0",
|
|
103
|
-
"@payloadcms/translations": "3.
|
|
103
|
+
"@payloadcms/translations": "3.22.0"
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
106
|
"@hyrious/esbuild-plugin-commonjs": "^0.2.4",
|