payload 3.0.0-alpha.69 → 3.0.0-alpha.70
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/RichText.d.ts +7 -1
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +12 -4
- package/dist/config/sanitize.js.map +1 -1
- package/dist/errors/MissingEditorProp.js +1 -1
- package/dist/errors/MissingEditorProp.js.map +1 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/fields/config/client.d.ts +1 -0
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +2 -1
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +2 -1
- package/dist/fields/config/schema.js.map +1 -1
- package/dist/fields/config/types.d.ts +16 -4
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +2 -1
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/translations/getLocalI18n.d.ts +1 -1
- package/dist/translations/getLocalI18n.d.ts.map +1 -1
- package/dist/translations/getLocalI18n.js +1 -1
- package/dist/translations/getLocalI18n.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +4 -3
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/package.json +2 -2
package/dist/admin/RichText.d.ts
CHANGED
|
@@ -60,8 +60,14 @@ export type RichTextAdapter<Value extends object = object, AdapterProps = any, E
|
|
|
60
60
|
CellComponent: React.FC<any>;
|
|
61
61
|
FieldComponent: React.FC<RichTextFieldProps<Value, AdapterProps, ExtraFieldProperties>>;
|
|
62
62
|
};
|
|
63
|
-
export type RichTextAdapterProvider<Value extends object = object, AdapterProps = any, ExtraFieldProperties = {}> = ({ config, }: {
|
|
63
|
+
export type RichTextAdapterProvider<Value extends object = object, AdapterProps = any, ExtraFieldProperties = {}> = ({ config, isRoot, }: {
|
|
64
64
|
config: SanitizedConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Whether or not this is the root richText editor, defined in the payload.config.ts.
|
|
67
|
+
*
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
isRoot?: boolean;
|
|
65
71
|
}) => Promise<RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>> | RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>;
|
|
66
72
|
export {};
|
|
67
73
|
//# sourceMappingURL=RichText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/admin/RichText.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../src/admin/RichText.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/admin/RichText.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\n\nimport type { Config, SanitizedConfig } from '../config/types.js'\nimport type { Field, FieldBase, RichTextField, Validate } from '../fields/config/types.js'\nimport type { PayloadRequestWithData, RequestContext } from '../types/index.js'\nimport type { WithServerSideProps } from './elements/WithServerSideProps.js'\n\nexport type RichTextFieldProps<\n Value extends object,\n AdapterProps,\n ExtraFieldProperties = {},\n> = Omit<RichTextField<Value, AdapterProps, ExtraFieldProperties>, 'type'> & {\n path?: string\n}\n\ntype RichTextAdapterBase<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = {\n generateComponentMap: (args: {\n WithServerSideProps: WithServerSideProps\n config: SanitizedConfig\n i18n: I18n\n schemaPath: string\n }) => Map<string, React.ReactNode>\n generateSchemaMap?: (args: {\n config: SanitizedConfig\n i18n: I18n\n schemaMap: Map<string, Field[]>\n schemaPath: string\n }) => Map<string, Field[]>\n hooks?: FieldBase['hooks']\n outputSchema?: ({\n collectionIDFieldTypes,\n config,\n field,\n interfaceNameDefinitions,\n isRequired,\n }: {\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' }\n config?: SanitizedConfig\n field: RichTextField<Value, AdapterProps, ExtraFieldProperties>\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 isRequired: boolean\n }) => JSONSchema4\n /**\n * Like an afterRead hook, but runs for both afterRead AND in the GraphQL resolver. For populating data, this should be used.\n *\n * To populate stuff / resolve field hooks, mutate the incoming populationPromises or fieldPromises array. They will then be awaited in the correct order within payload itself.\n * @param data\n */\n populationPromises?: (data: {\n context: RequestContext\n currentDepth?: number\n depth: number\n draft: boolean\n field: RichTextField<Value, AdapterProps, ExtraFieldProperties>\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess?: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequestWithData\n showHiddenFields: boolean\n siblingDoc: Record<string, unknown>\n }) => void\n validate: Validate<\n Value,\n Value,\n unknown,\n RichTextField<Value, AdapterProps, ExtraFieldProperties>\n >\n}\n\nexport type RichTextAdapter<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = RichTextAdapterBase<Value, AdapterProps, ExtraFieldProperties> & {\n CellComponent: React.FC<any>\n FieldComponent: React.FC<RichTextFieldProps<Value, AdapterProps, ExtraFieldProperties>>\n}\n\nexport type RichTextAdapterProvider<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = ({\n config,\n}: {\n config: SanitizedConfig\n}) =>\n | Promise<RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>>\n | RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>\n"],"names":[],"rangeMappings":"","mappings":"AAwFA,
|
|
1
|
+
{"version":3,"sources":["../../src/admin/RichText.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\n\nimport type { Config, SanitizedConfig } from '../config/types.js'\nimport type { Field, FieldBase, RichTextField, Validate } from '../fields/config/types.js'\nimport type { PayloadRequestWithData, RequestContext } from '../types/index.js'\nimport type { WithServerSideProps } from './elements/WithServerSideProps.js'\n\nexport type RichTextFieldProps<\n Value extends object,\n AdapterProps,\n ExtraFieldProperties = {},\n> = Omit<RichTextField<Value, AdapterProps, ExtraFieldProperties>, 'type'> & {\n path?: string\n}\n\ntype RichTextAdapterBase<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = {\n generateComponentMap: (args: {\n WithServerSideProps: WithServerSideProps\n config: SanitizedConfig\n i18n: I18n\n schemaPath: string\n }) => Map<string, React.ReactNode>\n generateSchemaMap?: (args: {\n config: SanitizedConfig\n i18n: I18n\n schemaMap: Map<string, Field[]>\n schemaPath: string\n }) => Map<string, Field[]>\n hooks?: FieldBase['hooks']\n outputSchema?: ({\n collectionIDFieldTypes,\n config,\n field,\n interfaceNameDefinitions,\n isRequired,\n }: {\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' }\n config?: SanitizedConfig\n field: RichTextField<Value, AdapterProps, ExtraFieldProperties>\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 isRequired: boolean\n }) => JSONSchema4\n /**\n * Like an afterRead hook, but runs for both afterRead AND in the GraphQL resolver. For populating data, this should be used.\n *\n * To populate stuff / resolve field hooks, mutate the incoming populationPromises or fieldPromises array. They will then be awaited in the correct order within payload itself.\n * @param data\n */\n populationPromises?: (data: {\n context: RequestContext\n currentDepth?: number\n depth: number\n draft: boolean\n field: RichTextField<Value, AdapterProps, ExtraFieldProperties>\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess?: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequestWithData\n showHiddenFields: boolean\n siblingDoc: Record<string, unknown>\n }) => void\n validate: Validate<\n Value,\n Value,\n unknown,\n RichTextField<Value, AdapterProps, ExtraFieldProperties>\n >\n}\n\nexport type RichTextAdapter<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = RichTextAdapterBase<Value, AdapterProps, ExtraFieldProperties> & {\n CellComponent: React.FC<any>\n FieldComponent: React.FC<RichTextFieldProps<Value, AdapterProps, ExtraFieldProperties>>\n}\n\nexport type RichTextAdapterProvider<\n Value extends object = object,\n AdapterProps = any,\n ExtraFieldProperties = {},\n> = ({\n config,\n isRoot,\n}: {\n config: SanitizedConfig\n /**\n * Whether or not this is the root richText editor, defined in the payload.config.ts.\n *\n * @default false\n */\n isRoot?: boolean\n}) =>\n | Promise<RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>>\n | RichTextAdapter<Value, AdapterProps, ExtraFieldProperties>\n"],"names":[],"rangeMappings":"","mappings":"AAwFA,WAiB8D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CA2C7D,CAAA"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { Config } from './types.js'\n\nexport const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {\n admin: {\n avatar: 'default',\n components: {},\n custom: {},\n dateFormat: 'MMMM do yyyy, h:mm a',\n disable: false,\n inactivityRoute: '/logout-inactivity',\n logoutRoute: '/logout',\n meta: {\n titleSuffix: '- Payload',\n },\n },\n bin: [],\n collections: [],\n cookiePrefix: 'payload',\n cors: [],\n csrf: [],\n custom: {},\n defaultDepth: 2,\n defaultMaxTextLength: 40000,\n endpoints: [],\n globals: [],\n graphQL: {\n disablePlaygroundInProduction: true,\n maxComplexity: 1000,\n },\n hooks: {},\n localization: false,\n maxDepth: 10,\n routes: {\n admin: '/admin',\n api: '/api',\n graphQL: '/graphql',\n graphQLPlayground: '/graphql-playground',\n },\n serverURL: '',\n telemetry: true,\n typescript: {\n outputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/payload-types.ts`,\n },\n upload: {},\n}\n"],"names":["defaults","admin","avatar","components","custom","dateFormat","disable","inactivityRoute","logoutRoute","meta","titleSuffix","bin","collections","cookiePrefix","cors","csrf","defaultDepth","defaultMaxTextLength","endpoints","globals","graphQL","disablePlaygroundInProduction","maxComplexity","hooks","localization","maxDepth","routes","api","graphQLPlayground","serverURL","telemetry","typescript","outputFile","process","cwd","upload"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { Config } from './types.js'\n\nexport const defaults: Omit<Config, 'db' | 'editor' | 'secret'> = {\n admin: {\n avatar: 'default',\n components: {},\n custom: {},\n dateFormat: 'MMMM do yyyy, h:mm a',\n disable: false,\n inactivityRoute: '/logout-inactivity',\n logoutRoute: '/logout',\n meta: {\n titleSuffix: '- Payload',\n },\n },\n bin: [],\n collections: [],\n cookiePrefix: 'payload',\n cors: [],\n csrf: [],\n custom: {},\n defaultDepth: 2,\n defaultMaxTextLength: 40000,\n endpoints: [],\n globals: [],\n graphQL: {\n disablePlaygroundInProduction: true,\n maxComplexity: 1000,\n },\n hooks: {},\n i18n: {},\n localization: false,\n maxDepth: 10,\n routes: {\n admin: '/admin',\n api: '/api',\n graphQL: '/graphql',\n graphQLPlayground: '/graphql-playground',\n },\n serverURL: '',\n telemetry: true,\n typescript: {\n outputFile: `${typeof process?.cwd === 'function' ? process.cwd() : ''}/payload-types.ts`,\n },\n upload: {},\n}\n"],"names":["defaults","admin","avatar","components","custom","dateFormat","disable","inactivityRoute","logoutRoute","meta","titleSuffix","bin","collections","cookiePrefix","cors","csrf","defaultDepth","defaultMaxTextLength","endpoints","globals","graphQL","disablePlaygroundInProduction","maxComplexity","hooks","i18n","localization","maxDepth","routes","api","graphQLPlayground","serverURL","telemetry","typescript","outputFile","process","cwd","upload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,WAAqD;IAChEC,OAAO;QACLC,QAAQ;QACRC,YAAY,CAAC;QACbC,QAAQ,CAAC;QACTC,YAAY;QACZC,SAAS;QACTC,iBAAiB;QACjBC,aAAa;QACbC,MAAM;YACJC,aAAa;QACf;IACF;IACAC,KAAK,EAAE;IACPC,aAAa,EAAE;IACfC,cAAc;IACdC,MAAM,EAAE;IACRC,MAAM,EAAE;IACRX,QAAQ,CAAC;IACTY,cAAc;IACdC,sBAAsB;IACtBC,WAAW,EAAE;IACbC,SAAS,EAAE;IACXC,SAAS;QACPC,+BAA+B;QAC/BC,eAAe;IACjB;IACAC,OAAO,CAAC;IACRC,MAAM,CAAC;IACPC,cAAc;IACdC,UAAU;IACVC,QAAQ;QACN1B,OAAO;QACP2B,KAAK;QACLR,SAAS;QACTS,mBAAmB;IACrB;IACAC,WAAW;IACXC,WAAW;IACXC,YAAY;QACVC,YAAY,CAAC,EAAE,OAAOC,SAASC,QAAQ,aAAaD,QAAQC,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC3F;IACAC,QAAQ,CAAC;AACX,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/config/sanitize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/config/sanitize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EAGN,eAAe,EAChB,MAAM,YAAY,CAAA;AAsCnB,eAAO,MAAM,cAAc,mBAA0B,MAAM,KAAG,QAAQ,eAAe,CAmHpF,CAAA"}
|
package/dist/config/sanitize.js
CHANGED
|
@@ -63,14 +63,21 @@ export const sanitizeConfig = async (incomingConfig)=>{
|
|
|
63
63
|
}));
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
const i18nConfig = {
|
|
67
67
|
fallbackLanguage: 'en',
|
|
68
68
|
supportedLanguages: {
|
|
69
69
|
en
|
|
70
70
|
},
|
|
71
|
-
translations: {}
|
|
72
|
-
...incomingConfig?.i18n ?? {}
|
|
71
|
+
translations: {}
|
|
73
72
|
};
|
|
73
|
+
if (incomingConfig?.i18n) {
|
|
74
|
+
i18nConfig.supportedLanguages = incomingConfig.i18n?.supportedLanguages || i18nConfig.supportedLanguages;
|
|
75
|
+
const supportedLangKeys = Object.keys(i18nConfig.supportedLanguages);
|
|
76
|
+
const fallbackLang = incomingConfig.i18n?.fallbackLanguage || i18nConfig.fallbackLanguage;
|
|
77
|
+
i18nConfig.fallbackLanguage = supportedLangKeys.includes(fallbackLang) ? fallbackLang : supportedLangKeys[0];
|
|
78
|
+
i18nConfig.translations = incomingConfig.i18n?.translations || i18nConfig.translations;
|
|
79
|
+
}
|
|
80
|
+
config.i18n = i18nConfig;
|
|
74
81
|
configWithDefaults.collections.push(getPreferencesCollection(config));
|
|
75
82
|
configWithDefaults.collections.push(migrationsCollection);
|
|
76
83
|
const richTextSanitizationPromises = [];
|
|
@@ -93,7 +100,8 @@ export const sanitizeConfig = async (incomingConfig)=>{
|
|
|
93
100
|
Execute richText sanitization
|
|
94
101
|
*/ if (typeof incomingConfig.editor === 'function') {
|
|
95
102
|
config.editor = await incomingConfig.editor({
|
|
96
|
-
config: config
|
|
103
|
+
config: config,
|
|
104
|
+
isRoot: true
|
|
97
105
|
});
|
|
98
106
|
}
|
|
99
107
|
const promises = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import { en } from '@payloadcms/translations/languages/en'\nimport merge from 'deepmerge'\n\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport { sanitizeGlobals } from '../globals/config/sanitize.js'\nimport getPreferencesCollection from '../preferences/preferencesCollection.js'\nimport checkDuplicateCollections from '../utilities/checkDuplicateCollections.js'\nimport { isPlainObject } from '../utilities/isPlainObject.js'\nimport { defaults } from './defaults.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections.find(({ auth }) => Boolean(auth))\n if (firstCollectionWithAuth) {\n sanitizedConfig.admin.user = firstCollectionWithAuth.slug\n } else {\n sanitizedConfig.admin.user = defaultUserCollection.slug\n sanitizedConfig.collections.push(defaultUserCollection)\n }\n }\n\n const userCollection = sanitizedConfig.collections.find(\n ({ slug }) => slug === sanitizedConfig.admin.user,\n )\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin.user} is not a valid admin user collection`,\n )\n }\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults: Config = merge(defaults, incomingConfig, {\n isMergeableObject: isPlainObject,\n }) as Config\n\n if (!configWithDefaults?.serverURL) {\n configWithDefaults.serverURL = ''\n }\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n if (config.localization && config.localization.locales?.length > 0) {\n // clone localization config so to not break everything\n const firstLocale = config.localization.locales[0]\n if (typeof firstLocale === 'string') {\n config.localization.localeCodes = [\n ...(config.localization as unknown as LocalizationConfigWithNoLabels).locales,\n ]\n\n // is string[], so convert to Locale[]\n config.localization.locales = (\n config.localization as unknown as LocalizationConfigWithNoLabels\n ).locales.map((locale) => ({\n code: locale,\n label: locale,\n rtl: false,\n toString: () => locale,\n }))\n } else {\n // is Locale[], so convert to string[] for localeCodes\n config.localization.localeCodes = config.localization.locales.reduce((locales, locale) => {\n locales.push(locale.code)\n return locales\n }, [] as string[])\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n }\n\n config.i18n = {\n fallbackLanguage: 'en',\n supportedLanguages: {\n en,\n },\n translations: {},\n ...(incomingConfig?.i18n ?? {}),\n }\n\n configWithDefaults.collections.push(getPreferencesCollection(config as unknown as Config))\n configWithDefaults.collections.push(migrationsCollection)\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n for (let i = 0; i < config.collections.length; i++) {\n config.collections[i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections[i],\n richTextSanitizationPromises,\n )\n }\n\n checkDuplicateCollections(config.collections)\n\n if (config.globals.length > 0) {\n config.globals = await sanitizeGlobals(\n config as unknown as Config,\n richTextSanitizationPromises,\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf.push(config.serverURL)\n }\n\n // Get deduped list of upload adapters\n if (!config.upload) config.upload = { adapters: [] }\n config.upload.adapters = Array.from(\n new Set(config.collections.map((c) => c.upload?.adapter).filter(Boolean)),\n )\n\n /*\n Execute richText sanitization\n */\n if (typeof incomingConfig.editor === 'function') {\n config.editor = await incomingConfig.editor({\n config: config as SanitizedConfig,\n })\n }\n\n const promises: Promise<void>[] = []\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","merge","defaultUserCollection","sanitizeCollection","migrationsCollection","InvalidConfiguration","sanitizeGlobals","getPreferencesCollection","checkDuplicateCollections","isPlainObject","defaults","sanitizeAdminConfig","configToSanitize","sanitizedConfig","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","sanitizeConfig","incomingConfig","configWithDefaults","isMergeableObject","serverURL","config","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","reduce","i18n","fallbackLanguage","supportedLanguages","translations","richTextSanitizationPromises","i","globals","csrf","upload","adapters","Array","from","Set","c","adapter","filter","editor","promises","sanitizeFunction","Promise","all"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport merge from 'deepmerge'\n\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { InvalidConfiguration } from '../errors/index.js'\nimport { sanitizeGlobals } from '../globals/config/sanitize.js'\nimport getPreferencesCollection from '../preferences/preferencesCollection.js'\nimport checkDuplicateCollections from '../utilities/checkDuplicateCollections.js'\nimport { isPlainObject } from '../utilities/isPlainObject.js'\nimport { defaults } from './defaults.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections.find(({ auth }) => Boolean(auth))\n if (firstCollectionWithAuth) {\n sanitizedConfig.admin.user = firstCollectionWithAuth.slug\n } else {\n sanitizedConfig.admin.user = defaultUserCollection.slug\n sanitizedConfig.collections.push(defaultUserCollection)\n }\n }\n\n const userCollection = sanitizedConfig.collections.find(\n ({ slug }) => slug === sanitizedConfig.admin.user,\n )\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin.user} is not a valid admin user collection`,\n )\n }\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults: Config = merge(defaults, incomingConfig, {\n isMergeableObject: isPlainObject,\n }) as Config\n\n if (!configWithDefaults?.serverURL) {\n configWithDefaults.serverURL = ''\n }\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n if (config.localization && config.localization.locales?.length > 0) {\n // clone localization config so to not break everything\n const firstLocale = config.localization.locales[0]\n if (typeof firstLocale === 'string') {\n config.localization.localeCodes = [\n ...(config.localization as unknown as LocalizationConfigWithNoLabels).locales,\n ]\n\n // is string[], so convert to Locale[]\n config.localization.locales = (\n config.localization as unknown as LocalizationConfigWithNoLabels\n ).locales.map((locale) => ({\n code: locale,\n label: locale,\n rtl: false,\n toString: () => locale,\n }))\n } else {\n // is Locale[], so convert to string[] for localeCodes\n config.localization.localeCodes = config.localization.locales.reduce((locales, locale) => {\n locales.push(locale.code)\n return locales\n }, [] as string[])\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n }\n\n const i18nConfig: SanitizedConfig['i18n'] = {\n fallbackLanguage: 'en',\n supportedLanguages: {\n en,\n },\n translations: {},\n }\n\n if (incomingConfig?.i18n) {\n i18nConfig.supportedLanguages =\n incomingConfig.i18n?.supportedLanguages || i18nConfig.supportedLanguages\n\n const supportedLangKeys = <AcceptedLanguages[]>Object.keys(i18nConfig.supportedLanguages)\n const fallbackLang = incomingConfig.i18n?.fallbackLanguage || i18nConfig.fallbackLanguage\n\n i18nConfig.fallbackLanguage = supportedLangKeys.includes(fallbackLang)\n ? fallbackLang\n : supportedLangKeys[0]\n i18nConfig.translations = incomingConfig.i18n?.translations || i18nConfig.translations\n }\n\n config.i18n = i18nConfig\n\n configWithDefaults.collections.push(getPreferencesCollection(config as unknown as Config))\n configWithDefaults.collections.push(migrationsCollection)\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n for (let i = 0; i < config.collections.length; i++) {\n config.collections[i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections[i],\n richTextSanitizationPromises,\n )\n }\n\n checkDuplicateCollections(config.collections)\n\n if (config.globals.length > 0) {\n config.globals = await sanitizeGlobals(\n config as unknown as Config,\n richTextSanitizationPromises,\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf.push(config.serverURL)\n }\n\n // Get deduped list of upload adapters\n if (!config.upload) config.upload = { adapters: [] }\n config.upload.adapters = Array.from(\n new Set(config.collections.map((c) => c.upload?.adapter).filter(Boolean)),\n )\n\n /*\n Execute richText sanitization\n */\n if (typeof incomingConfig.editor === 'function') {\n config.editor = await incomingConfig.editor({\n config: config as SanitizedConfig,\n isRoot: true,\n })\n }\n\n const promises: Promise<void>[] = []\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","merge","defaultUserCollection","sanitizeCollection","migrationsCollection","InvalidConfiguration","sanitizeGlobals","getPreferencesCollection","checkDuplicateCollections","isPlainObject","defaults","sanitizeAdminConfig","configToSanitize","sanitizedConfig","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","sanitizeConfig","incomingConfig","configWithDefaults","isMergeableObject","serverURL","config","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","reduce","i18nConfig","fallbackLanguage","supportedLanguages","translations","i18n","supportedLangKeys","Object","keys","fallbackLang","includes","richTextSanitizationPromises","i","globals","csrf","upload","adapters","Array","from","Set","c","adapter","filter","editor","isRoot","promises","sanitizeFunction","Promise","all"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { fieldAffectsData } from '../fields/config/types.js';
|
|
|
2
2
|
import { APIError } from './APIError.js';
|
|
3
3
|
export class MissingEditorProp extends APIError {
|
|
4
4
|
constructor(field){
|
|
5
|
-
super(`RichText field${fieldAffectsData(field) ? ` "${field.name}"` : ''} is missing the editor prop
|
|
5
|
+
super(`RichText field${fieldAffectsData(field) ? ` "${field.name}"` : ''} is missing the editor prop. For sub-richText fields, the editor props is required, as it would otherwise create infinite recursion.`);
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/MissingEditorProp.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { APIError } from './APIError.js'\n\nexport class MissingEditorProp extends APIError {\n constructor(field: Field) {\n super(\n `RichText field${fieldAffectsData(field) ? ` \"${field.name}\"` : ''} is missing the editor prop
|
|
1
|
+
{"version":3,"sources":["../../src/errors/MissingEditorProp.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { APIError } from './APIError.js'\n\nexport class MissingEditorProp extends APIError {\n constructor(field: Field) {\n super(\n `RichText field${fieldAffectsData(field) ? ` \"${field.name}\"` : ''} is missing the editor prop. For sub-richText fields, the editor props is required, as it would otherwise create infinite recursion.`,\n )\n }\n}\n"],"names":["fieldAffectsData","APIError","MissingEditorProp","constructor","field","name"],"rangeMappings":";;;;;;","mappings":"AAEA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,SAASC,QAAQ,QAAQ,gBAAe;AAExC,OAAO,MAAMC,0BAA0BD;IACrCE,YAAYC,KAAY,CAAE;QACxB,KAAK,CACH,CAAC,cAAc,EAAEJ,iBAAiBI,SAAS,CAAC,EAAE,EAAEA,MAAMC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,oIAAoI,CAAC;IAE5M;AACF"}
|
package/dist/exports/types.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type { AfterChangeHook as CollectionAfterChangeHook, AfterDeleteHook as C
|
|
|
10
10
|
export type { ClientConfig } from './../config/client.js';
|
|
11
11
|
export type { Access, AccessArgs, EditViewComponent, EntityDescription, EntityDescriptionComponent, EntityDescriptionFunction, SanitizedConfig, } from './../config/types.js';
|
|
12
12
|
export type { ClientFieldConfig } from './../fields/config/client.js';
|
|
13
|
-
export type { ArrayField, Block, BlockField, CheckboxField, ClientValidate, CodeField, CollapsibleField, Condition, DateField, EmailField, Field, FieldAccess, FieldAffectingData, FieldBase, FieldHook, FieldHookArgs, FieldPresentationalOnly, FieldWithMany, FieldWithMaxDepth, FieldWithPath,
|
|
13
|
+
export type { ArrayField, Block, BlockField, CheckboxField, ClientValidate, CodeField, CollapsibleField, Condition, DateField, EmailField, Field, FieldAccess, FieldAffectingData, FieldBase, FieldHook, FieldHookArgs, FieldPresentationalOnly, FieldWithMany, FieldWithMaxDepth, FieldWithPath, FieldWithSubFields, FilterOptions, FilterOptionsProps, GroupField, HookName, JSONField, Labels, NamedTab, NonPresentationalField, NumberField, Option, OptionObject, PointField, PolymorphicRelationshipField, RadioField, RelationshipField, RelationshipValue, RichTextField, RowAdmin, RowField, SelectField, SingleRelationshipField, Tab, TabAsField, TabsAdmin, TabsField, TextField, TextareaField, UIField, UnnamedTab, UploadField, Validate, ValidateOptions, ValueWithRelation, } from './../fields/config/types.js';
|
|
14
14
|
export { fieldAffectsData, fieldHasMaxDepth, fieldHasSubFields, fieldIsArrayType, fieldIsBlockType, fieldIsGroupType, fieldIsLocalized, fieldIsPresentationalOnly, fieldSupportsMany, optionIsObject, optionIsValue, optionsAreObjects, tabHasName, valueIsValueWithRelation, } from './../fields/config/types.js';
|
|
15
15
|
export type { ClientGlobalConfig } from './../globals/config/client.js';
|
|
16
16
|
export type { AfterChangeHook as GlobalAfterChangeHook, AfterReadHook as GlobalAfterReadHook, BeforeChangeHook as GlobalBeforeChangeHook, BeforeReadHook as GlobalBeforeReadHook, BeforeValidateHook as GlobalBeforeValidateHook, GlobalConfig, SanitizedGlobalConfig, } from './../globals/config/types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,qBAAqB,CAAA;AAExC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,YAAY,EAAE,YAAY,IAAI,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE9F,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAE/E,YAAY,EACV,eAAe,IAAI,yBAAyB,EAC5C,eAAe,IAAI,yBAAyB,EAC5C,cAAc,IAAI,wBAAwB,EAC1C,uBAAuB,IAAI,iCAAiC,EAC5D,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,IAAI,4BAA4B,EAClD,aAAa,IAAI,uBAAuB,EACxC,gBAAgB,IAAI,0BAA0B,EAC9C,gBAAgB,IAAI,0BAA0B,EAC9C,eAAe,IAAI,yBAAyB,EAC5C,mBAAmB,IAAI,6BAA6B,EACpD,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,IAAI,4BAA4B,EAClD,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,kBAAkB,GACnB,MAAM,kCAAkC,CAAA;AAEzC,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,YAAY,EACV,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,YAAY,EACV,UAAU,EACV,KAAK,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export * from './../types/index.js'\nexport type * from '../admin/types.js'\nexport type * from '../uploads/types.js'\n\nexport type { DocumentPermissions, FieldPermissions } from '../auth/index.js'\n\nexport type { MeOperationResult } from '../auth/operations/me.js'\nexport type { EmailAdapter as PayloadEmailAdapter, SendEmailOptions } from '../email/types.js'\n\nexport type {\n CollapsedPreferences,\n DocumentPreferences,\n FieldsPreferences,\n InsideFieldsPreferences,\n PreferenceRequest,\n PreferenceUpdateRequest,\n TabsPreferences,\n} from '../preferences/types.js'\n\nexport type { ClientCollectionConfig } from './../collections/config/client.js'\n\nexport type {\n AfterChangeHook as CollectionAfterChangeHook,\n AfterDeleteHook as CollectionAfterDeleteHook,\n AfterErrorHook as CollectionAfterErrorHook,\n AfterForgotPasswordHook as CollectionAfterForgotPasswordHook,\n AfterLoginHook as CollectionAfterLoginHook,\n AfterOperationHook as CollectionAfterOperationHook,\n AfterReadHook as CollectionAfterReadHook,\n BeforeChangeHook as CollectionBeforeChangeHook,\n BeforeDeleteHook as CollectionBeforeDeleteHook,\n BeforeLoginHook as CollectionBeforeLoginHook,\n BeforeOperationHook as CollectionBeforeOperationHook,\n BeforeReadHook as CollectionBeforeReadHook,\n BeforeValidateHook as CollectionBeforeValidateHook,\n Collection,\n CollectionConfig,\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithTimestamps,\n} from './../collections/config/types.js'\n\nexport type { ClientConfig } from './../config/client.js'\nexport type {\n Access,\n AccessArgs,\n EditViewComponent,\n EntityDescription,\n EntityDescriptionComponent,\n EntityDescriptionFunction,\n SanitizedConfig,\n} from './../config/types.js'\nexport type { ClientFieldConfig } from './../fields/config/client.js'\nexport type {\n ArrayField,\n Block,\n BlockField,\n CheckboxField,\n ClientValidate,\n CodeField,\n CollapsibleField,\n Condition,\n DateField,\n EmailField,\n Field,\n FieldAccess,\n FieldAffectingData,\n FieldBase,\n FieldHook,\n FieldHookArgs,\n FieldPresentationalOnly,\n FieldWithMany,\n FieldWithMaxDepth,\n FieldWithPath,\n
|
|
1
|
+
{"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export * from './../types/index.js'\nexport type * from '../admin/types.js'\nexport type * from '../uploads/types.js'\n\nexport type { DocumentPermissions, FieldPermissions } from '../auth/index.js'\n\nexport type { MeOperationResult } from '../auth/operations/me.js'\nexport type { EmailAdapter as PayloadEmailAdapter, SendEmailOptions } from '../email/types.js'\n\nexport type {\n CollapsedPreferences,\n DocumentPreferences,\n FieldsPreferences,\n InsideFieldsPreferences,\n PreferenceRequest,\n PreferenceUpdateRequest,\n TabsPreferences,\n} from '../preferences/types.js'\n\nexport type { ClientCollectionConfig } from './../collections/config/client.js'\n\nexport type {\n AfterChangeHook as CollectionAfterChangeHook,\n AfterDeleteHook as CollectionAfterDeleteHook,\n AfterErrorHook as CollectionAfterErrorHook,\n AfterForgotPasswordHook as CollectionAfterForgotPasswordHook,\n AfterLoginHook as CollectionAfterLoginHook,\n AfterOperationHook as CollectionAfterOperationHook,\n AfterReadHook as CollectionAfterReadHook,\n BeforeChangeHook as CollectionBeforeChangeHook,\n BeforeDeleteHook as CollectionBeforeDeleteHook,\n BeforeLoginHook as CollectionBeforeLoginHook,\n BeforeOperationHook as CollectionBeforeOperationHook,\n BeforeReadHook as CollectionBeforeReadHook,\n BeforeValidateHook as CollectionBeforeValidateHook,\n Collection,\n CollectionConfig,\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithTimestamps,\n} from './../collections/config/types.js'\n\nexport type { ClientConfig } from './../config/client.js'\nexport type {\n Access,\n AccessArgs,\n EditViewComponent,\n EntityDescription,\n EntityDescriptionComponent,\n EntityDescriptionFunction,\n SanitizedConfig,\n} from './../config/types.js'\nexport type { ClientFieldConfig } from './../fields/config/client.js'\nexport type {\n ArrayField,\n Block,\n BlockField,\n CheckboxField,\n ClientValidate,\n CodeField,\n CollapsibleField,\n Condition,\n DateField,\n EmailField,\n Field,\n FieldAccess,\n FieldAffectingData,\n FieldBase,\n FieldHook,\n FieldHookArgs,\n FieldPresentationalOnly,\n FieldWithMany,\n FieldWithMaxDepth,\n FieldWithPath,\n FieldWithSubFields,\n FilterOptions,\n FilterOptionsProps,\n GroupField,\n HookName,\n JSONField,\n Labels,\n NamedTab,\n NonPresentationalField,\n NumberField,\n Option,\n OptionObject,\n PointField,\n PolymorphicRelationshipField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RichTextField,\n RowAdmin,\n RowField,\n SelectField,\n SingleRelationshipField,\n Tab,\n TabAsField,\n TabsAdmin,\n TabsField,\n TextField,\n TextareaField,\n UIField,\n UnnamedTab,\n UploadField,\n Validate,\n ValidateOptions,\n ValueWithRelation,\n} from './../fields/config/types.js'\n\nexport {\n fieldAffectsData,\n fieldHasMaxDepth,\n fieldHasSubFields,\n fieldIsArrayType,\n fieldIsBlockType,\n fieldIsGroupType,\n fieldIsLocalized,\n fieldIsPresentationalOnly,\n fieldSupportsMany,\n optionIsObject,\n optionIsValue,\n optionsAreObjects,\n tabHasName,\n valueIsValueWithRelation,\n} from './../fields/config/types.js'\n\nexport type { ClientGlobalConfig } from './../globals/config/client.js'\n\nexport type {\n AfterChangeHook as GlobalAfterChangeHook,\n AfterReadHook as GlobalAfterReadHook,\n BeforeChangeHook as GlobalBeforeChangeHook,\n BeforeReadHook as GlobalBeforeReadHook,\n BeforeValidateHook as GlobalBeforeValidateHook,\n GlobalConfig,\n SanitizedGlobalConfig,\n} from './../globals/config/types.js'\n\nexport { validOperators } from './../types/constants.js'\n"],"names":["fieldAffectsData","fieldHasMaxDepth","fieldHasSubFields","fieldIsArrayType","fieldIsBlockType","fieldIsGroupType","fieldIsLocalized","fieldIsPresentationalOnly","fieldSupportsMany","optionIsObject","optionIsValue","optionsAreObjects","tabHasName","valueIsValueWithRelation","validOperators"],"rangeMappings":";;","mappings":"AAAA,cAAc,sBAAqB;AA8GnC,SACEA,gBAAgB,EAChBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,EAChBC,yBAAyB,EACzBC,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,UAAU,EACVC,wBAAwB,QACnB,8BAA6B;AAcpC,SAASC,cAAc,QAAQ,0BAAyB"}
|
|
@@ -963,6 +963,7 @@ export declare const createClientFieldConfig: ({ field: incomingField, t, }: {
|
|
|
963
963
|
unique?: boolean;
|
|
964
964
|
validate?: import("../../fields/config/types.js").Validate<any, any, any, object>;
|
|
965
965
|
editor?: import("../../admin/RichText.js").RichTextAdapter<any, any, any> | import("../../admin/RichText.js").RichTextAdapterProvider<any, any, any>;
|
|
966
|
+
maxDepth?: number;
|
|
966
967
|
type: "richText";
|
|
967
968
|
} | {
|
|
968
969
|
custom?: Record<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAE7F,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,eAAe,GACf,OAAO,GACP,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAEtF,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAClB,YAAY,GAAG,WAAW,GAAG,aAAa,CAC3C,CAAA;AAED,eAAO,MAAM,uBAAuB,iCAGjC;IACD,KAAK,EAAE,KAAK,CAAA;IACZ,CAAC,EAAE,SAAS,CAAA;CACb
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAEpE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAE7F,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,eAAe,GACf,OAAO,GACP,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,CAAA;AAEtF,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAClB,YAAY,GAAG,WAAW,GAAG,aAAa,CAC3C,CAAA;AAED,eAAO,MAAM,uBAAuB,iCAGjC;IACD,KAAK,EAAE,KAAK,CAAA;IACZ,CAAC,EAAE,SAAS,CAAA;CACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEA,CAAA;AAED,eAAO,MAAM,wBAAwB,mBAGlC;IACD,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,CAAC,EAAE,SAAS,CAAA;CACb,KAAG,KAAK,EAAkE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,+HAOxB,IAAI,KAAG,QAAQ,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,+HAOxB,IAAI,KAAG,QAAQ,KAAK,EAAE,CAuMxB,CAAA"}
|
|
@@ -97,7 +97,8 @@ export const sanitizeFields = async ({ config, existingFieldNames = new Set(), f
|
|
|
97
97
|
}
|
|
98
98
|
if (typeof field.editor === 'function') {
|
|
99
99
|
field.editor = await field.editor({
|
|
100
|
-
config: _config
|
|
100
|
+
config: _config,
|
|
101
|
+
isRoot: requireFieldLevelRichTextEditor
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
104
|
// Add editor adapter hooks to field hooks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) return []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({ config: _config })\n }\n\n // Add editor adapter hooks to field hooks\n if (!field.hooks) field.hooks = {}\n\n const mergeHooks = (hookName: keyof typeof field.editor.hooks) => {\n if (typeof field.editor === 'function') return\n\n if (field.editor?.hooks?.[hookName]?.length) {\n field.hooks[hookName] = field.hooks[hookName]\n ? field.hooks[hookName].concat(field.editor.hooks[hookName])\n : [...field.editor.hooks[hookName]]\n }\n }\n\n mergeHooks('afterRead')\n mergeHooks('afterChange')\n mergeHooks('beforeChange')\n mergeHooks('beforeValidate')\n mergeHooks('beforeDuplicate')\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if ('blocks' in field && field.blocks) {\n for (let j = 0; j < field.blocks.length; j++) {\n const block = field.blocks[j]\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.blocks[j] = block\n }\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","i","length","field","type","name","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","map","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","sanitizeRichText","_config","editor","mergeHooks","hookName","j","tabs","tab","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) return []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({\n config: _config,\n isRoot: requireFieldLevelRichTextEditor,\n })\n }\n\n // Add editor adapter hooks to field hooks\n if (!field.hooks) field.hooks = {}\n\n const mergeHooks = (hookName: keyof typeof field.editor.hooks) => {\n if (typeof field.editor === 'function') return\n\n if (field.editor?.hooks?.[hookName]?.length) {\n field.hooks[hookName] = field.hooks[hookName]\n ? field.hooks[hookName].concat(field.editor.hooks[hookName])\n : [...field.editor.hooks[hookName]]\n }\n }\n\n mergeHooks('afterRead')\n mergeHooks('afterChange')\n mergeHooks('beforeChange')\n mergeHooks('beforeValidate')\n mergeHooks('beforeDuplicate')\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if ('blocks' in field && field.blocks) {\n for (let j = 0; j < field.blocks.length; j++) {\n const block = field.blocks[j]\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.blocks[j] = block\n }\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","i","length","field","type","name","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","map","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","sanitizeRichText","_config","editor","isRoot","mergeHooks","hookName","j","tabs","tab","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,uBAgB1B,CAAA;AAEF,eAAO,MAAM,SAAS,uBAoCV,CAAA;AAEZ,eAAO,MAAM,OAAO,uBAKlB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAsBf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAiBnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAgBhB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA4BhB,CAAA;AAEF,eAAO,MAAM,GAAG,uBAId,CAAA;AAEF,eAAO,MAAM,WAAW,uBAKtB,CAAA;AAeF,eAAO,MAAM,IAAI,uBAQf,CAAA;AAEF,eAAO,MAAM,KAAK,uBAShB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA0BhB,CAAA;AAEF,eAAO,MAAM,MAAM,uBAajB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAYnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAYhB,CAAA;AAEF,eAAO,MAAM,YAAY,uBA+BvB,CAAA;AAEF,eAAO,MAAM,MAAM,uBA0CjB,CAAA;AAEF,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,uBAgB1B,CAAA;AAEF,eAAO,MAAM,SAAS,uBAoCV,CAAA;AAEZ,eAAO,MAAM,OAAO,uBAKlB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAsBf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAiBnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAgBhB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA4BhB,CAAA;AAEF,eAAO,MAAM,GAAG,uBAId,CAAA;AAEF,eAAO,MAAM,WAAW,uBAKtB,CAAA;AAeF,eAAO,MAAM,IAAI,uBAQf,CAAA;AAEF,eAAO,MAAM,KAAK,uBAShB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA0BhB,CAAA;AAEF,eAAO,MAAM,MAAM,uBAajB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAYnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAYhB,CAAA;AAEF,eAAO,MAAM,YAAY,uBA+BvB,CAAA;AAEF,eAAO,MAAM,MAAM,uBA0CjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAsBnB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAyBf,CAAA;AAEF,eAAO,MAAM,EAAE,uBAqBb,CAAA;AAEF,QAAA,MAAM,WAAW,6BAyBH,CAAA;AAEd,eAAe,WAAW,CAAA"}
|
|
@@ -431,7 +431,8 @@ export const richText = baseField.keys({
|
|
|
431
431
|
outputSchema: joi.func().optional(),
|
|
432
432
|
populationPromise: joi.func().optional(),
|
|
433
433
|
validate: joi.func().required()
|
|
434
|
-
}).unknown()
|
|
434
|
+
}).unknown(),
|
|
435
|
+
maxDepth: joi.number()
|
|
435
436
|
});
|
|
436
437
|
export const date = baseField.keys({
|
|
437
438
|
name: joi.string().required(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { componentSchema } from '../../config/shared/componentSchema.js'\n\nexport const baseAdminComponentFields = joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n Filter: componentSchema,\n })\n .default({})\n\nexport const baseAdminFields = joi.object().keys({\n className: joi.string(),\n components: baseAdminComponentFields,\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n description: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]), componentSchema),\n disableBulkEdit: joi.boolean().default(false),\n disabled: joi.boolean().default(false),\n hidden: joi.boolean().default(false),\n initCollapsed: joi.boolean().default(false),\n position: joi.string().valid('sidebar'),\n readOnly: joi.boolean().default(false),\n style: joi.object().unknown(),\n width: joi.string(),\n})\n\nexport const baseField = joi\n .object()\n .keys({\n access: joi.object().keys({\n create: joi.func(),\n read: joi.func(),\n update: joi.func(),\n }),\n admin: baseAdminFields.default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n hidden: joi.boolean().default(false),\n hooks: joi\n .object()\n .keys({\n afterChange: joi.array().items(joi.func()).default([]),\n afterRead: joi.array().items(joi.func()).default([]),\n beforeChange: joi.array().items(joi.func()).default([]),\n beforeDuplicate: joi.array().items(joi.func()).default([]),\n beforeValidate: joi.array().items(joi.func()).default([]),\n })\n .default(),\n index: joi.boolean().default(false),\n label: joi\n .alternatives()\n .try(\n joi.func(),\n joi.object().pattern(joi.string(), [joi.string()]),\n joi.string(),\n joi.valid(false),\n ),\n localized: joi.boolean().default(false),\n required: joi.boolean().default(false),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()).default(false),\n unique: joi.boolean().default(false),\n validate: joi.func(),\n })\n .default()\n\nexport const idField = baseField.keys({\n name: joi.string().valid('id'),\n type: joi.string().valid('text', 'number'),\n localized: joi.invalid(true),\n required: joi.not(false, 0).default(true),\n})\n\nexport const text = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('text').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi\n .alternatives()\n .try(joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n maxLength: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n minLength: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const number = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('number').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n beforeInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n }),\n placeholder: joi.string(),\n step: joi.number(),\n }),\n defaultValue: joi\n .alternatives()\n .try(\n joi.number(),\n joi.func(),\n joi.array().when('hasMany', { not: true, then: joi.forbidden() }),\n ),\n hasMany: joi.boolean().default(false),\n max: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const textarea = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('textarea').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n rows: joi.number(),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const email = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('email').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const code = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('code').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n language: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const json = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('json').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n }),\n defaultValue: joi.alternatives().try(joi.array(), joi.object()),\n jsonSchema: joi.object().unknown(),\n})\n\nexport const select = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('select').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isClearable: joi.boolean().default(false),\n isSortable: joi.boolean().default(false),\n }),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi\n .alternatives()\n .try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const radio = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('radio').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n layout: joi.string().valid('vertical', 'horizontal'),\n }),\n defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .required(),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const row = baseField.keys({\n type: joi.string().valid('row').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n})\n\nexport const collapsible = baseField.keys({\n type: joi.string().valid('collapsible').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n label: joi.alternatives().try(joi.string(), componentSchema),\n})\n\nconst tab = baseField.keys({\n name: joi.string().when('localized', { is: joi.exist(), then: joi.required() }),\n description: joi.alternatives().try(joi.string(), componentSchema),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string().when('name', { not: joi.exist(), then: joi.forbidden() }),\n label: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .when('name', { is: joi.not(), then: joi.required() }),\n localized: joi.boolean(),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()),\n})\n\nexport const tabs = baseField.keys({\n type: joi.string().valid('tabs').required(),\n admin: baseAdminFields.keys({\n description: joi.forbidden(),\n }),\n fields: joi.forbidden(),\n localized: joi.forbidden(),\n tabs: joi.array().items(tab).required(),\n})\n\nexport const group = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('group').required(),\n admin: baseAdminFields.keys({\n hideGutter: joi.boolean().default(true),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n interfaceName: joi.string(),\n})\n\nexport const array = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('array').required(),\n admin: baseAdminFields\n .keys({\n components: baseAdminComponentFields\n .keys({\n RowLabel: componentSchema,\n })\n .default({}),\n })\n .default({}),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const upload = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('upload').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n maxDepth: joi.number(),\n relationTo: joi.string().required(),\n})\n\nexport const checkbox = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('checkbox').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.boolean(), joi.func()),\n})\n\nexport const point = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('point').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func()),\n})\n\nexport const relationship = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('relationship').required(),\n admin: baseAdminFields.keys({\n allowCreate: joi.boolean().default(true),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isSortable: joi.boolean().default(false),\n sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {\n is: joi.string(),\n otherwise: joi.object().pattern(joi.string(), joi.string()),\n then: joi.string(),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n hasMany: joi.boolean().default(false),\n max: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use maxRows instead.' }),\n maxDepth: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use minRows instead.' }),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string())),\n})\n\nexport const blocks = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('blocks').required(),\n blocks: joi\n .array()\n .items(\n joi.object({\n slug: joi.string().required(),\n admin: joi.object().keys({\n custom: joi.object().pattern(joi.string(), joi.any()),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n graphQL: joi.object().keys({\n singularName: joi.string(),\n }),\n imageAltText: joi.string(),\n imageURL: joi.string(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n }),\n )\n .required(),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const richText = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('richText').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),\n editor: joi\n .object()\n .keys({\n CellComponent: componentSchema.optional(),\n FieldComponent: componentSchema.optional(),\n afterReadPromise: joi.func().optional(),\n outputSchema: joi.func().optional(),\n populationPromise: joi.func().optional(),\n validate: joi.func().required(),\n })\n .unknown(),\n})\n\nexport const date = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('date').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n date: joi.object({\n displayFormat: joi.string(),\n maxDate: joi.date(),\n maxTime: joi.date(),\n minDate: joi.date(),\n minTime: joi.date(),\n monthsToShow: joi.number(),\n overrides: joi.object().unknown(),\n pickerAppearance: joi.string(),\n timeFormat: joi.string(),\n timeIntervals: joi.number(),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const ui = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().valid('ui').required(),\n admin: joi\n .object()\n .keys({\n components: joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n })\n .default({}),\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n position: joi.string().valid('sidebar'),\n width: joi.string(),\n })\n .default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n})\n\nconst fieldSchema = joi\n .alternatives()\n .try(\n text,\n number,\n textarea,\n email,\n code,\n json,\n select,\n group,\n array,\n row,\n collapsible,\n tabs,\n radio,\n relationship,\n checkbox,\n upload,\n richText,\n blocks,\n date,\n point,\n ui,\n )\n .id('field')\n\nexport default fieldSchema\n"],"names":["joi","componentSchema","baseAdminComponentFields","object","keys","Cell","Field","Filter","default","baseAdminFields","className","string","components","condition","func","custom","pattern","any","description","alternatives","try","disableBulkEdit","boolean","disabled","hidden","initCollapsed","position","valid","readOnly","style","unknown","width","baseField","access","create","read","update","admin","hooks","afterChange","array","items","afterRead","beforeChange","beforeDuplicate","beforeValidate","index","label","localized","required","saveToJWT","unique","validate","idField","name","type","invalid","not","text","autoComplete","Error","Label","afterInput","beforeInput","placeholder","rtl","defaultValue","hasMany","maxLength","number","maxRows","when","is","then","forbidden","minLength","minRows","otherwise","step","max","min","textarea","rows","email","code","editorOptions","language","json","jsonSchema","select","isClearable","isSortable","dbName","allow","enumName","options","value","radio","layout","row","fields","link","collapsible","tab","exist","interfaceName","tabs","group","hideGutter","RowLabel","labels","plural","singular","upload","filterOptions","maxDepth","relationTo","checkbox","point","relationship","allowCreate","sortOptions","conditional","ref","warning","message","blocks","slug","graphQL","singularName","imageAltText","imageURL","richText","editor","CellComponent","optional","FieldComponent","afterReadPromise","outputSchema","populationPromise","date","displayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","overrides","pickerAppearance","timeFormat","timeIntervals","ui","fieldSchema","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { componentSchema } from '../../config/shared/componentSchema.js'\n\nexport const baseAdminComponentFields = joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n Filter: componentSchema,\n })\n .default({})\n\nexport const baseAdminFields = joi.object().keys({\n className: joi.string(),\n components: baseAdminComponentFields,\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n description: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]), componentSchema),\n disableBulkEdit: joi.boolean().default(false),\n disabled: joi.boolean().default(false),\n hidden: joi.boolean().default(false),\n initCollapsed: joi.boolean().default(false),\n position: joi.string().valid('sidebar'),\n readOnly: joi.boolean().default(false),\n style: joi.object().unknown(),\n width: joi.string(),\n})\n\nexport const baseField = joi\n .object()\n .keys({\n access: joi.object().keys({\n create: joi.func(),\n read: joi.func(),\n update: joi.func(),\n }),\n admin: baseAdminFields.default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n hidden: joi.boolean().default(false),\n hooks: joi\n .object()\n .keys({\n afterChange: joi.array().items(joi.func()).default([]),\n afterRead: joi.array().items(joi.func()).default([]),\n beforeChange: joi.array().items(joi.func()).default([]),\n beforeDuplicate: joi.array().items(joi.func()).default([]),\n beforeValidate: joi.array().items(joi.func()).default([]),\n })\n .default(),\n index: joi.boolean().default(false),\n label: joi\n .alternatives()\n .try(\n joi.func(),\n joi.object().pattern(joi.string(), [joi.string()]),\n joi.string(),\n joi.valid(false),\n ),\n localized: joi.boolean().default(false),\n required: joi.boolean().default(false),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()).default(false),\n unique: joi.boolean().default(false),\n validate: joi.func(),\n })\n .default()\n\nexport const idField = baseField.keys({\n name: joi.string().valid('id'),\n type: joi.string().valid('text', 'number'),\n localized: joi.invalid(true),\n required: joi.not(false, 0).default(true),\n})\n\nexport const text = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('text').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi\n .alternatives()\n .try(joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n maxLength: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n minLength: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const number = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('number').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n beforeInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n }),\n placeholder: joi.string(),\n step: joi.number(),\n }),\n defaultValue: joi\n .alternatives()\n .try(\n joi.number(),\n joi.func(),\n joi.array().when('hasMany', { not: true, then: joi.forbidden() }),\n ),\n hasMany: joi.boolean().default(false),\n max: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const textarea = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('textarea').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n rows: joi.number(),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const email = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('email').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const code = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('code').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n language: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const json = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('json').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n }),\n defaultValue: joi.alternatives().try(joi.array(), joi.object()),\n jsonSchema: joi.object().unknown(),\n})\n\nexport const select = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('select').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isClearable: joi.boolean().default(false),\n isSortable: joi.boolean().default(false),\n }),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi\n .alternatives()\n .try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const radio = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('radio').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n layout: joi.string().valid('vertical', 'horizontal'),\n }),\n defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .required(),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const row = baseField.keys({\n type: joi.string().valid('row').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n})\n\nexport const collapsible = baseField.keys({\n type: joi.string().valid('collapsible').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n label: joi.alternatives().try(joi.string(), componentSchema),\n})\n\nconst tab = baseField.keys({\n name: joi.string().when('localized', { is: joi.exist(), then: joi.required() }),\n description: joi.alternatives().try(joi.string(), componentSchema),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string().when('name', { not: joi.exist(), then: joi.forbidden() }),\n label: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .when('name', { is: joi.not(), then: joi.required() }),\n localized: joi.boolean(),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()),\n})\n\nexport const tabs = baseField.keys({\n type: joi.string().valid('tabs').required(),\n admin: baseAdminFields.keys({\n description: joi.forbidden(),\n }),\n fields: joi.forbidden(),\n localized: joi.forbidden(),\n tabs: joi.array().items(tab).required(),\n})\n\nexport const group = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('group').required(),\n admin: baseAdminFields.keys({\n hideGutter: joi.boolean().default(true),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n interfaceName: joi.string(),\n})\n\nexport const array = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('array').required(),\n admin: baseAdminFields\n .keys({\n components: baseAdminComponentFields\n .keys({\n RowLabel: componentSchema,\n })\n .default({}),\n })\n .default({}),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const upload = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('upload').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n maxDepth: joi.number(),\n relationTo: joi.string().required(),\n})\n\nexport const checkbox = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('checkbox').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.boolean(), joi.func()),\n})\n\nexport const point = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('point').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func()),\n})\n\nexport const relationship = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('relationship').required(),\n admin: baseAdminFields.keys({\n allowCreate: joi.boolean().default(true),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isSortable: joi.boolean().default(false),\n sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {\n is: joi.string(),\n otherwise: joi.object().pattern(joi.string(), joi.string()),\n then: joi.string(),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n hasMany: joi.boolean().default(false),\n max: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use maxRows instead.' }),\n maxDepth: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use minRows instead.' }),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string())),\n})\n\nexport const blocks = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('blocks').required(),\n blocks: joi\n .array()\n .items(\n joi.object({\n slug: joi.string().required(),\n admin: joi.object().keys({\n custom: joi.object().pattern(joi.string(), joi.any()),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n graphQL: joi.object().keys({\n singularName: joi.string(),\n }),\n imageAltText: joi.string(),\n imageURL: joi.string(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n }),\n )\n .required(),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const richText = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('richText').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),\n editor: joi\n .object()\n .keys({\n CellComponent: componentSchema.optional(),\n FieldComponent: componentSchema.optional(),\n afterReadPromise: joi.func().optional(),\n outputSchema: joi.func().optional(),\n populationPromise: joi.func().optional(),\n validate: joi.func().required(),\n })\n .unknown(),\n maxDepth: joi.number(),\n})\n\nexport const date = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('date').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n date: joi.object({\n displayFormat: joi.string(),\n maxDate: joi.date(),\n maxTime: joi.date(),\n minDate: joi.date(),\n minTime: joi.date(),\n monthsToShow: joi.number(),\n overrides: joi.object().unknown(),\n pickerAppearance: joi.string(),\n timeFormat: joi.string(),\n timeIntervals: joi.number(),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const ui = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().valid('ui').required(),\n admin: joi\n .object()\n .keys({\n components: joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n })\n .default({}),\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n position: joi.string().valid('sidebar'),\n width: joi.string(),\n })\n .default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n})\n\nconst fieldSchema = joi\n .alternatives()\n .try(\n text,\n number,\n textarea,\n email,\n code,\n json,\n select,\n group,\n array,\n row,\n collapsible,\n tabs,\n radio,\n relationship,\n checkbox,\n upload,\n richText,\n blocks,\n date,\n point,\n ui,\n )\n .id('field')\n\nexport default fieldSchema\n"],"names":["joi","componentSchema","baseAdminComponentFields","object","keys","Cell","Field","Filter","default","baseAdminFields","className","string","components","condition","func","custom","pattern","any","description","alternatives","try","disableBulkEdit","boolean","disabled","hidden","initCollapsed","position","valid","readOnly","style","unknown","width","baseField","access","create","read","update","admin","hooks","afterChange","array","items","afterRead","beforeChange","beforeDuplicate","beforeValidate","index","label","localized","required","saveToJWT","unique","validate","idField","name","type","invalid","not","text","autoComplete","Error","Label","afterInput","beforeInput","placeholder","rtl","defaultValue","hasMany","maxLength","number","maxRows","when","is","then","forbidden","minLength","minRows","otherwise","step","max","min","textarea","rows","email","code","editorOptions","language","json","jsonSchema","select","isClearable","isSortable","dbName","allow","enumName","options","value","radio","layout","row","fields","link","collapsible","tab","exist","interfaceName","tabs","group","hideGutter","RowLabel","labels","plural","singular","upload","filterOptions","maxDepth","relationTo","checkbox","point","relationship","allowCreate","sortOptions","conditional","ref","warning","message","blocks","slug","graphQL","singularName","imageAltText","imageURL","richText","editor","CellComponent","optional","FieldComponent","afterReadPromise","outputSchema","populationPromise","date","displayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","overrides","pickerAppearance","timeFormat","timeIntervals","ui","fieldSchema","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|