payload 3.64.0-internal.fc1e451 → 3.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/executeAccess.js +3 -3
- package/dist/auth/executeAccess.js.map +1 -1
- package/dist/auth/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/unlock.js +11 -7
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +3 -2
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/config/sanitize.js +1 -1
- package/dist/config/sanitize.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +11 -3
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +4 -1
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js +3 -2
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +1 -5
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +10 -3
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/index.bundled.d.ts +11 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
- package/dist/queues/operations/handleSchedules/index.js +8 -0
- package/dist/queues/operations/handleSchedules/index.js.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
- package/dist/uploads/checkFileRestrictions.js +11 -0
- package/dist/uploads/checkFileRestrictions.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +0 -1
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/dist/utilities/validatePDF.d.ts +2 -0
- package/dist/utilities/validatePDF.d.ts.map +1 -0
- package/dist/utilities/validatePDF.js +16 -0
- package/dist/utilities/validatePDF.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Forbidden } from '../errors/index.js';
|
|
2
2
|
export const executeAccess = async ({ id, data, disableErrors, isReadingStaticFile = false, req }, access)=>{
|
|
3
3
|
if (access) {
|
|
4
|
-
const
|
|
4
|
+
const resolvedConstraint = await access({
|
|
5
5
|
id,
|
|
6
6
|
data,
|
|
7
7
|
isReadingStaticFile,
|
|
8
8
|
req
|
|
9
9
|
});
|
|
10
|
-
if (!
|
|
10
|
+
if (!resolvedConstraint) {
|
|
11
11
|
if (!disableErrors) {
|
|
12
12
|
throw new Forbidden(req.t);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
return
|
|
15
|
+
return resolvedConstraint;
|
|
16
16
|
}
|
|
17
17
|
if (req.user) {
|
|
18
18
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/executeAccess.ts"],"sourcesContent":["import type { Access, AccessResult } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { Forbidden } from '../errors/index.js'\n\ntype OperationArgs = {\n data?: any\n disableErrors?: boolean\n id?: number | string\n isReadingStaticFile?: boolean\n req: PayloadRequest\n}\nexport const executeAccess = async (\n { id, data, disableErrors, isReadingStaticFile = false, req }: OperationArgs,\n access: Access,\n): Promise<AccessResult> => {\n if (access) {\n const
|
|
1
|
+
{"version":3,"sources":["../../src/auth/executeAccess.ts"],"sourcesContent":["import type { Access, AccessResult } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { Forbidden } from '../errors/index.js'\n\ntype OperationArgs = {\n data?: any\n disableErrors?: boolean\n id?: number | string\n isReadingStaticFile?: boolean\n req: PayloadRequest\n}\nexport const executeAccess = async (\n { id, data, disableErrors, isReadingStaticFile = false, req }: OperationArgs,\n access: Access,\n): Promise<AccessResult> => {\n if (access) {\n const resolvedConstraint = await access({\n id,\n data,\n isReadingStaticFile,\n req,\n })\n\n if (!resolvedConstraint) {\n if (!disableErrors) {\n throw new Forbidden(req.t)\n }\n }\n\n return resolvedConstraint\n }\n\n if (req.user) {\n return true\n }\n\n if (!disableErrors) {\n throw new Forbidden(req.t)\n }\n return false\n}\n"],"names":["Forbidden","executeAccess","id","data","disableErrors","isReadingStaticFile","req","access","resolvedConstraint","t","user"],"mappings":"AAGA,SAASA,SAAS,QAAQ,qBAAoB;AAS9C,OAAO,MAAMC,gBAAgB,OAC3B,EAAEC,EAAE,EAAEC,IAAI,EAAEC,aAAa,EAAEC,sBAAsB,KAAK,EAAEC,GAAG,EAAiB,EAC5EC;IAEA,IAAIA,QAAQ;QACV,MAAMC,qBAAqB,MAAMD,OAAO;YACtCL;YACAC;YACAE;YACAC;QACF;QAEA,IAAI,CAACE,oBAAoB;YACvB,IAAI,CAACJ,eAAe;gBAClB,MAAM,IAAIJ,UAAUM,IAAIG,CAAC;YAC3B;QACF;QAEA,OAAOD;IACT;IAEA,IAAIF,IAAII,IAAI,EAAE;QACZ,OAAO;IACT;IAEA,IAAI,CAACN,eAAe;QAClB,MAAM,IAAIJ,UAAUM,IAAIG,CAAC;IAC3B;IACA,OAAO;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/unlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACX,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAYjE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,gCAAgC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA;IACvD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,cAAc,QAC1D,SAAS,CAAC,KAAK,CAAC,KACrB,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"unlock.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/unlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACX,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAYjE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,gCAAgC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA;IACvD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,cAAc,QAC1D,SAAS,CAAC,KAAK,CAAC,KACrB,OAAO,CAAC,OAAO,CAsGjB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { status as httpStatus } from 'http-status';
|
|
2
2
|
import { APIError } from '../../errors/index.js';
|
|
3
|
-
import { Forbidden } from '../../index.js';
|
|
3
|
+
import { combineQueries, Forbidden } from '../../index.js';
|
|
4
4
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
5
5
|
import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
6
6
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
@@ -22,30 +22,33 @@ export const unlockOperation = async (args)=>{
|
|
|
22
22
|
}
|
|
23
23
|
try {
|
|
24
24
|
const shouldCommit = await initTransaction(req);
|
|
25
|
+
let whereConstraint = {};
|
|
25
26
|
// /////////////////////////////////////
|
|
26
27
|
// Access
|
|
27
28
|
// /////////////////////////////////////
|
|
28
29
|
if (!overrideAccess) {
|
|
29
|
-
await executeAccess({
|
|
30
|
+
const accessResult = await executeAccess({
|
|
30
31
|
req
|
|
31
32
|
}, collectionConfig.access.unlock);
|
|
33
|
+
if (accessResult && typeof accessResult === 'object') {
|
|
34
|
+
whereConstraint = accessResult;
|
|
35
|
+
}
|
|
32
36
|
}
|
|
33
37
|
// /////////////////////////////////////
|
|
34
38
|
// Unlock
|
|
35
39
|
// /////////////////////////////////////
|
|
36
|
-
let whereConstraint = {};
|
|
37
40
|
if (canLoginWithEmail && sanitizedEmail) {
|
|
38
|
-
whereConstraint = {
|
|
41
|
+
whereConstraint = combineQueries(whereConstraint, {
|
|
39
42
|
email: {
|
|
40
43
|
equals: sanitizedEmail
|
|
41
44
|
}
|
|
42
|
-
};
|
|
45
|
+
});
|
|
43
46
|
} else if (canLoginWithUsername && sanitizedUsername) {
|
|
44
|
-
whereConstraint = {
|
|
47
|
+
whereConstraint = combineQueries(whereConstraint, {
|
|
45
48
|
username: {
|
|
46
49
|
equals: sanitizedUsername
|
|
47
50
|
}
|
|
48
|
-
};
|
|
51
|
+
});
|
|
49
52
|
}
|
|
50
53
|
// Exclude trashed users unless `trash: true`
|
|
51
54
|
whereConstraint = appendNonTrashedFilter({
|
|
@@ -70,6 +73,7 @@ export const unlockOperation = async (args)=>{
|
|
|
70
73
|
result = true;
|
|
71
74
|
} else {
|
|
72
75
|
result = null;
|
|
76
|
+
throw new Forbidden(req.t);
|
|
73
77
|
}
|
|
74
78
|
if (shouldCommit) {
|
|
75
79
|
await commitTransaction(req);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/unlock.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type {\n AuthOperationsFromCollectionSlug,\n Collection,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { Forbidden } from '../../index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { executeAccess } from '../executeAccess.js'\nimport { getLoginOptions } from '../getLoginOptions.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: AuthOperationsFromCollectionSlug<TSlug>['unlock']\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const unlockOperation = async <TSlug extends CollectionSlug>(\n args: Arguments<TSlug>,\n): Promise<boolean> => {\n const {\n collection: { config: collectionConfig },\n overrideAccess,\n req: { locale },\n req,\n } = args\n\n const loginWithUsername = collectionConfig.auth.loginWithUsername\n\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const sanitizedEmail = canLoginWithEmail && (args.data?.email || '').toLowerCase().trim()\n const sanitizedUsername =\n (canLoginWithUsername &&\n 'username' in args.data &&\n typeof args.data.username === 'string' &&\n args.data.username.toLowerCase().trim()) ||\n null\n\n if (collectionConfig.auth.disableLocalStrategy) {\n throw new Forbidden(req.t)\n }\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${collectionConfig.auth.loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n try {\n const shouldCommit = await initTransaction(req)\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n await executeAccess({ req }, collectionConfig.access.unlock)\n }\n\n // /////////////////////////////////////\n // Unlock\n // /////////////////////////////////////\n\n
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/unlock.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type {\n AuthOperationsFromCollectionSlug,\n Collection,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { APIError } from '../../errors/index.js'\nimport { combineQueries, Forbidden } from '../../index.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { executeAccess } from '../executeAccess.js'\nimport { getLoginOptions } from '../getLoginOptions.js'\nimport { resetLoginAttempts } from '../strategies/local/resetLoginAttempts.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: AuthOperationsFromCollectionSlug<TSlug>['unlock']\n overrideAccess?: boolean\n req: PayloadRequest\n}\n\nexport const unlockOperation = async <TSlug extends CollectionSlug>(\n args: Arguments<TSlug>,\n): Promise<boolean> => {\n const {\n collection: { config: collectionConfig },\n overrideAccess,\n req: { locale },\n req,\n } = args\n\n const loginWithUsername = collectionConfig.auth.loginWithUsername\n\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const sanitizedEmail = canLoginWithEmail && (args.data?.email || '').toLowerCase().trim()\n const sanitizedUsername =\n (canLoginWithUsername &&\n 'username' in args.data &&\n typeof args.data.username === 'string' &&\n args.data.username.toLowerCase().trim()) ||\n null\n\n if (collectionConfig.auth.disableLocalStrategy) {\n throw new Forbidden(req.t)\n }\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${collectionConfig.auth.loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n try {\n const shouldCommit = await initTransaction(req)\n let whereConstraint: Where = {}\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n const accessResult = await executeAccess({ req }, collectionConfig.access.unlock)\n\n if (accessResult && typeof accessResult === 'object') {\n whereConstraint = accessResult\n }\n }\n\n // /////////////////////////////////////\n // Unlock\n // /////////////////////////////////////\n\n if (canLoginWithEmail && sanitizedEmail) {\n whereConstraint = combineQueries(whereConstraint, {\n email: {\n equals: sanitizedEmail,\n },\n })\n } else if (canLoginWithUsername && sanitizedUsername) {\n whereConstraint = combineQueries(whereConstraint, {\n username: {\n equals: sanitizedUsername,\n },\n })\n }\n\n // Exclude trashed users unless `trash: true`\n whereConstraint = appendNonTrashedFilter({\n enableTrash: Boolean(collectionConfig.trash),\n trash: false,\n where: whereConstraint,\n })\n\n const user = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: whereConstraint,\n })\n\n let result: boolean | null = null\n\n if (user) {\n await resetLoginAttempts({\n collection: collectionConfig,\n doc: user,\n payload: req.payload,\n req,\n })\n result = true\n } else {\n result = null\n throw new Forbidden(req.t)\n }\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["status","httpStatus","APIError","combineQueries","Forbidden","appendNonTrashedFilter","commitTransaction","initTransaction","killTransaction","executeAccess","getLoginOptions","resetLoginAttempts","unlockOperation","args","collection","config","collectionConfig","overrideAccess","req","locale","loginWithUsername","auth","canLoginWithEmail","canLoginWithUsername","sanitizedEmail","data","email","toLowerCase","trim","sanitizedUsername","username","disableLocalStrategy","t","BAD_REQUEST","shouldCommit","whereConstraint","accessResult","access","unlock","equals","enableTrash","Boolean","trash","where","user","payload","db","findOne","slug","result","doc","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAO3B,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AASrF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAA;AAErD,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,YAAY,KACzB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAO3B,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AASrF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAA;AAErD,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,YAAY,KACzB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAmR3F,CAAA"}
|
|
@@ -95,13 +95,14 @@ export const findByIDOperation = async (incomingArgs)=>{
|
|
|
95
95
|
if (!findOneArgs.where?.and?.[0]?.id) {
|
|
96
96
|
throw new NotFound(t);
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
if (!
|
|
98
|
+
const docFromDB = await req.payload.db.findOne(findOneArgs);
|
|
99
|
+
if (!docFromDB && !args.data) {
|
|
100
100
|
if (!disableErrors) {
|
|
101
101
|
throw new NotFound(req.t);
|
|
102
102
|
}
|
|
103
103
|
return null;
|
|
104
104
|
}
|
|
105
|
+
let result = args.data ?? docFromDB;
|
|
105
106
|
// /////////////////////////////////////
|
|
106
107
|
// Include Lock Status if required
|
|
107
108
|
// /////////////////////////////////////
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'read',\n req: args.req,\n })) || args\n }\n }\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: draftEnabled = false,\n flattenLocales,\n includeLockStatus,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.read)\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: draftEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n transactionID: req.transactionID,\n } as PayloadRequest,\n select,\n where: fullWhere,\n }\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n if (!findOneArgs.where?.and?.[0]?.id) {\n throw new NotFound(t)\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? (await req.payload.db.findOne(findOneArgs))!\n\n if (!result) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n\n return null!\n }\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (collectionConfig.versions?.drafts && draftEnabled) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n query: findOneArgs.where,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: draftEnabled,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n query: findOneArgs.where,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<\n TransformCollectionWithSelect<TSlug, TSelect>,\n TDisableErrors\n >\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","killTransaction","sanitizeSelect","replaceWithDraftIfAvailable","buildAfterOperation","findByIDOperation","incomingArgs","args","collection","config","hooks","beforeOperation","length","hook","context","req","operation","id","collectionConfig","currentDepth","depth","disableErrors","draft","draftEnabled","flattenLocales","includeLockStatus","joins","overrideAccess","populate","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","fields","flattenedFields","forceSelect","accessResult","access","read","where","equals","fullWhere","enableTrash","payload","sanitizedJoins","findOneArgs","slug","draftsEnabled","payloadAPI","transactionID","collections","customIDType","and","result","data","db","findOne","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","limit","pagination","updatedAt","greater_than","Date","getTime","docs","_isLocked","_userEditing","user","value","versions","drafts","doc","entity","entityType","beforeRead","query","global","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'read',\n req: args.req,\n })) || args\n }\n }\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: draftEnabled = false,\n flattenLocales,\n includeLockStatus,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess({ id, disableErrors, req }, collectionConfig.access.read)\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: draftEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n transactionID: req.transactionID,\n } as PayloadRequest,\n select,\n where: fullWhere,\n }\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n if (!findOneArgs.where?.and?.[0]?.id) {\n throw new NotFound(t)\n }\n\n const docFromDB = await req.payload.db.findOne(findOneArgs)\n\n if (!docFromDB && !args.data) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n return null!\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? docFromDB!\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (collectionConfig.versions?.drafts && draftEnabled) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n query: findOneArgs.where,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: draftEnabled,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n query: findOneArgs.where,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<\n TransformCollectionWithSelect<TSlug, TSelect>,\n TDisableErrors\n >\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","killTransaction","sanitizeSelect","replaceWithDraftIfAvailable","buildAfterOperation","findByIDOperation","incomingArgs","args","collection","config","hooks","beforeOperation","length","hook","context","req","operation","id","collectionConfig","currentDepth","depth","disableErrors","draft","draftEnabled","flattenLocales","includeLockStatus","joins","overrideAccess","populate","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","fields","flattenedFields","forceSelect","accessResult","access","read","where","equals","fullWhere","enableTrash","payload","sanitizedJoins","findOneArgs","slug","draftsEnabled","payloadAPI","transactionID","collections","customIDType","and","docFromDB","db","findOne","data","result","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","limit","pagination","updatedAt","greater_than","Date","getTime","docs","_isLocked","_userEditing","user","value","versions","drafts","doc","entity","entityType","beforeRead","query","global","error"],"mappings":"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"}
|
package/dist/config/sanitize.js
CHANGED
|
@@ -66,7 +66,7 @@ const sanitizeAdminConfig = (configToSanitize)=>{
|
|
|
66
66
|
// Timezones supported by the Intl API
|
|
67
67
|
const _internalSupportedTimezones = Intl.supportedValuesOf('timeZone');
|
|
68
68
|
sanitizedConfig.admin.timezones.supportedTimezones.forEach((timezone)=>{
|
|
69
|
-
if (!_internalSupportedTimezones.includes(timezone.value)) {
|
|
69
|
+
if (timezone.value !== 'UTC' && !_internalSupportedTimezones.includes(timezone.value)) {
|
|
70
70
|
throw new InvalidConfiguration(`Timezone ${timezone.value} is not supported by the current runtime via the Intl API.`);
|
|
71
71
|
}
|
|
72
72
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import type { AcceptedLanguages } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type { CollectionSlug, GlobalSlug, SanitizedCollectionConfig } from '../index.js'\nimport type { SanitizedJobsConfig } from '../queues/config/types/index.js'\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n Timezone,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { authRootEndpoints } from '../auth/endpoints/index.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { DuplicateCollection, InvalidConfiguration } from '../errors/index.js'\nimport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\nimport { addFolderCollection } from '../folders/addFolderCollection.js'\nimport { addFolderFieldToCollection } from '../folders/addFolderFieldToCollection.js'\nimport { sanitizeGlobal } from '../globals/config/sanitize.js'\nimport { baseBlockFields, formatLabels, sanitizeFields } from '../index.js'\nimport {\n getLockedDocumentsCollection,\n lockedDocumentsCollectionSlug,\n} from '../locked-documents/config.js'\nimport { getPreferencesCollection, preferencesCollectionSlug } from '../preferences/config.js'\nimport { getQueryPresetsConfig, queryPresetsCollectionSlug } from '../query-presets/config.js'\nimport { getDefaultJobsCollection, jobsCollectionSlug } from '../queues/config/collection.js'\nimport { getJobStatsGlobal } from '../queues/config/global.js'\nimport { flattenBlock } from '../utilities/flattenAllFields.js'\nimport { getSchedulePublishTask } from '../versions/schedule/job.js'\nimport { addDefaultsToConfig } from './defaults.js'\nimport { setupOrderable } from './orderable/index.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n if (configToSanitize?.compatibility?.allowLocalizedWithinLocalized) {\n process.env.NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized = 'true'\n }\n\n // default logging level will be 'error' if not provided\n sanitizedConfig.loggingLevels = {\n Forbidden: 'info',\n Locked: 'info',\n MissingFile: 'info',\n NotFound: 'info',\n ValidationError: 'info',\n ...(sanitizedConfig.loggingLevels || {}),\n }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections!.find(({ auth }) => Boolean(auth))\n\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\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin!.user} is not a valid admin user collection`,\n )\n }\n\n if (sanitizedConfig?.admin?.timezones) {\n if (typeof sanitizedConfig?.admin?.timezones?.supportedTimezones === 'function') {\n sanitizedConfig.admin.timezones.supportedTimezones =\n sanitizedConfig.admin.timezones.supportedTimezones({ defaultTimezones })\n }\n\n if (!sanitizedConfig?.admin?.timezones?.supportedTimezones) {\n sanitizedConfig.admin.timezones.supportedTimezones = defaultTimezones\n }\n } else {\n sanitizedConfig.admin!.timezones = {\n supportedTimezones: defaultTimezones,\n }\n }\n // Timezones supported by the Intl API\n const _internalSupportedTimezones = Intl.supportedValuesOf('timeZone')\n\n // We're casting here because it's already been sanitised above but TS still thinks it could be a function\n ;(sanitizedConfig.admin!.timezones.supportedTimezones as Timezone[]).forEach((timezone) => {\n if (!_internalSupportedTimezones.includes(timezone.value)) {\n throw new InvalidConfiguration(\n `Timezone ${timezone.value} is not supported by the current runtime via the Intl API.`,\n )\n }\n })\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults = addDefaultsToConfig(incomingConfig)\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n // Add orderable fields\n setupOrderable(config as SanitizedConfig)\n\n if (!config.endpoints) {\n config.endpoints = []\n }\n\n for (const endpoint of authRootEndpoints) {\n config.endpoints.push(endpoint)\n }\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.map((locale) => locale.code)\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n\n // Default fallback to true if not provided\n config.localization.fallback = config.localization?.fallback ?? true\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 =\n (incomingConfig.i18n?.translations as SanitizedConfig['i18n']['translations']) ||\n i18nConfig.translations\n }\n\n config.i18n = i18nConfig\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n\n const schedulePublishCollections: CollectionSlug[] = []\n\n const queryPresetsCollections: CollectionSlug[] = []\n\n const schedulePublishGlobals: GlobalSlug[] = []\n\n const collectionSlugs = new Set<CollectionSlug>()\n\n const validRelationships = [\n ...(config.collections?.map((c) => c.slug) ?? []),\n jobsCollectionSlug,\n lockedDocumentsCollectionSlug,\n preferencesCollectionSlug,\n ]\n\n if (config.folders !== false) {\n validRelationships.push(config.folders!.slug)\n }\n\n /**\n * Blocks sanitization needs to happen before collections, as collection/global join field sanitization needs config.blocks\n * to be populated with the sanitized blocks\n */\n config.blocks = []\n\n if (incomingConfig.blocks?.length) {\n for (const block of incomingConfig.blocks) {\n const sanitizedBlock = block\n\n if (sanitizedBlock._sanitized === true) {\n continue\n }\n sanitizedBlock._sanitized = true\n\n sanitizedBlock.fields = sanitizedBlock.fields.concat(baseBlockFields)\n\n sanitizedBlock.labels = !sanitizedBlock.labels\n ? formatLabels(sanitizedBlock.slug)\n : sanitizedBlock.labels\n\n sanitizedBlock.fields = await sanitizeFields({\n config: config as unknown as Config,\n existingFieldNames: new Set(),\n fields: sanitizedBlock.fields,\n parentIsLocalized: false,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n const flattenedSanitizedBlock = flattenBlock({ block })\n\n config.blocks.push(flattenedSanitizedBlock)\n }\n }\n\n const folderEnabledCollections: SanitizedCollectionConfig[] = []\n\n for (let i = 0; i < config.collections!.length; i++) {\n if (collectionSlugs.has(config.collections![i]!.slug)) {\n throw new DuplicateCollection('slug', config.collections![i]!.slug)\n }\n\n collectionSlugs.add(config.collections![i]!.slug)\n\n const draftsConfig = config.collections![i]?.versions?.drafts\n\n if (typeof draftsConfig === 'object' && draftsConfig.schedulePublish) {\n schedulePublishCollections.push(config.collections![i]!.slug)\n }\n\n if (config.collections![i]!.enableQueryPresets) {\n queryPresetsCollections.push(config.collections![i]!.slug)\n\n if (!validRelationships.includes(queryPresetsCollectionSlug)) {\n validRelationships.push(queryPresetsCollectionSlug)\n }\n }\n\n if (config.folders !== false && config.collections![i]!.folders) {\n addFolderFieldToCollection({\n collection: config.collections![i]!,\n collectionSpecific: config.folders!.collectionSpecific,\n folderFieldName: config.folders!.fieldName,\n folderSlug: config.folders!.slug,\n })\n }\n\n config.collections![i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections![i]!,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n if (config.folders !== false && config.collections![i]!.folders) {\n folderEnabledCollections.push(config.collections![i]!)\n }\n }\n\n if (config.globals!.length > 0) {\n for (let i = 0; i < config.globals!.length; i++) {\n const draftsConfig = config.globals![i]?.versions?.drafts\n\n if (typeof draftsConfig === 'object' && draftsConfig.schedulePublish) {\n schedulePublishGlobals.push(config.globals![i]!.slug)\n }\n\n config.globals![i] = await sanitizeGlobal(\n config as unknown as Config,\n config.globals![i]!,\n richTextSanitizationPromises,\n validRelationships,\n )\n }\n }\n\n if (schedulePublishCollections.length || schedulePublishGlobals.length) {\n ;((config.jobs ??= {} as SanitizedJobsConfig).tasks ??= []).push(\n getSchedulePublishTask({\n adminUserSlug: config.admin!.user,\n collections: schedulePublishCollections,\n globals: schedulePublishGlobals,\n }),\n )\n }\n\n ;(config.jobs ??= {} as SanitizedJobsConfig).enabled = Boolean(\n (Array.isArray(configWithDefaults.jobs?.tasks) && configWithDefaults.jobs?.tasks?.length) ||\n (Array.isArray(configWithDefaults.jobs?.workflows) &&\n configWithDefaults.jobs?.workflows?.length),\n )\n\n // Need to add default jobs collection before locked documents collections\n if (config.jobs.enabled) {\n // Check for schedule property in both tasks and workflows\n const hasScheduleProperty =\n (config?.jobs?.tasks?.length && config.jobs.tasks.some((task) => task.schedule)) ||\n (config?.jobs?.workflows?.length &&\n config.jobs.workflows.some((workflow) => workflow.schedule))\n\n if (hasScheduleProperty) {\n config.jobs.scheduling = true\n // Add payload-jobs-stats global for tracking when a job of a specific slug was last run\n ;(config.globals ??= []).push(\n await sanitizeGlobal(\n config as unknown as Config,\n getJobStatsGlobal(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n config.jobs.stats = true\n }\n\n let defaultJobsCollection = getDefaultJobsCollection(config.jobs)\n\n if (typeof config.jobs.jobsCollectionOverrides === 'function') {\n defaultJobsCollection = config.jobs.jobsCollectionOverrides({\n defaultJobsCollection,\n })\n\n const hooks = defaultJobsCollection?.hooks\n // @todo - delete this check in 4.0\n if (hooks && config?.jobs?.runHooks !== true) {\n for (const [hookKey, hook] of Object.entries(hooks)) {\n const defaultAmount = hookKey === 'afterRead' || hookKey === 'beforeChange' ? 1 : 0\n if (hook.length > defaultAmount) {\n // eslint-disable-next-line no-console\n console.warn(\n `The jobsCollectionOverrides function is returning a collection with an additional ${hookKey} hook defined. These hooks will not run unless the jobs.runHooks option is set to true. Setting this option to true will negatively impact performance.`,\n )\n break\n }\n }\n }\n }\n const sanitizedJobsCollection = await sanitizeCollection(\n config as unknown as Config,\n defaultJobsCollection,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n ;(config.collections ??= []).push(sanitizedJobsCollection)\n }\n\n if (config.folders !== false && folderEnabledCollections.length) {\n await addFolderCollection({\n collectionSpecific: config.folders!.collectionSpecific,\n config: config as unknown as Config,\n folderEnabledCollections,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getLockedDocumentsCollection(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getPreferencesCollection(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n const migrations = await sanitizeCollection(\n config as unknown as Config,\n migrationsCollection,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n // @ts-expect-error indexSortableFields is only valid for @payloadcms/db-mongodb\n if (config?.db?.indexSortableFields) {\n migrations.indexes = [\n {\n fields: ['batch', 'name'],\n unique: false,\n },\n ]\n }\n configWithDefaults.collections!.push(migrations)\n\n if (queryPresetsCollections.length > 0) {\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getQueryPresetsConfig(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf!.push(config.serverURL!)\n }\n\n const uploadAdapters = new Set<string>()\n // interact with all collections\n for (const collection of config.collections!) {\n // deduped upload adapters\n if (collection.upload?.adapter) {\n uploadAdapters.add(collection.upload.adapter)\n }\n }\n\n if (!config.upload) {\n config.upload = { adapters: [] }\n }\n\n config.upload.adapters = Array.from(\n new Set(config.collections!.map((c) => c.upload?.adapter).filter(Boolean) as string[]),\n )\n\n // Pass through the email config as is so adapters don't break\n if (incomingConfig.email) {\n config.email = incomingConfig.email\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 parentIsLocalized: false,\n })\n if (config.editor.i18n && Object.keys(config.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, config.editor.i18n)\n }\n }\n\n const promises: Promise<void>[] = []\n\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","deepMergeSimple","defaultUserCollection","authRootEndpoints","sanitizeCollection","migrationsCollection","DuplicateCollection","InvalidConfiguration","defaultTimezones","addFolderCollection","addFolderFieldToCollection","sanitizeGlobal","baseBlockFields","formatLabels","sanitizeFields","getLockedDocumentsCollection","lockedDocumentsCollectionSlug","getPreferencesCollection","preferencesCollectionSlug","getQueryPresetsConfig","queryPresetsCollectionSlug","getDefaultJobsCollection","jobsCollectionSlug","getJobStatsGlobal","flattenBlock","getSchedulePublishTask","addDefaultsToConfig","setupOrderable","sanitizeAdminConfig","configToSanitize","sanitizedConfig","compatibility","allowLocalizedWithinLocalized","process","env","NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized","loggingLevels","Forbidden","Locked","MissingFile","NotFound","ValidationError","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","timezones","supportedTimezones","_internalSupportedTimezones","Intl","supportedValuesOf","forEach","timezone","includes","value","sanitizeConfig","incomingConfig","configWithDefaults","config","endpoints","endpoint","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","fallback","i18nConfig","fallbackLanguage","supportedLanguages","translations","i18n","supportedLangKeys","Object","keys","fallbackLang","richTextSanitizationPromises","schedulePublishCollections","queryPresetsCollections","schedulePublishGlobals","collectionSlugs","Set","validRelationships","c","folders","blocks","block","sanitizedBlock","_sanitized","fields","concat","labels","existingFieldNames","parentIsLocalized","flattenedSanitizedBlock","folderEnabledCollections","i","has","add","draftsConfig","versions","drafts","schedulePublish","enableQueryPresets","collection","collectionSpecific","folderFieldName","fieldName","folderSlug","globals","jobs","tasks","adminUserSlug","enabled","Array","isArray","workflows","hasScheduleProperty","some","task","schedule","workflow","scheduling","stats","defaultJobsCollection","jobsCollectionOverrides","hooks","runHooks","hookKey","hook","entries","defaultAmount","console","warn","sanitizedJobsCollection","migrations","db","indexSortableFields","indexes","unique","serverURL","csrf","uploadAdapters","upload","adapter","adapters","from","filter","email","editor","isRoot","promises","sanitizeFunction","Promise","all"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/config/sanitize.ts"],"sourcesContent":["import type { AcceptedLanguages, Language } from '@payloadcms/translations'\n\nimport { en } from '@payloadcms/translations/languages/en'\nimport { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type { CollectionSlug, GlobalSlug, SanitizedCollectionConfig } from '../index.js'\nimport type { SanitizedJobsConfig } from '../queues/config/types/index.js'\nimport type {\n Config,\n LocalizationConfigWithLabels,\n LocalizationConfigWithNoLabels,\n SanitizedConfig,\n Timezone,\n} from './types.js'\n\nimport { defaultUserCollection } from '../auth/defaultUser.js'\nimport { authRootEndpoints } from '../auth/endpoints/index.js'\nimport { sanitizeCollection } from '../collections/config/sanitize.js'\nimport { migrationsCollection } from '../database/migrations/migrationsCollection.js'\nimport { DuplicateCollection, InvalidConfiguration } from '../errors/index.js'\nimport { defaultTimezones } from '../fields/baseFields/timezone/defaultTimezones.js'\nimport { addFolderCollection } from '../folders/addFolderCollection.js'\nimport { addFolderFieldToCollection } from '../folders/addFolderFieldToCollection.js'\nimport { sanitizeGlobal } from '../globals/config/sanitize.js'\nimport { baseBlockFields, formatLabels, sanitizeFields } from '../index.js'\nimport {\n getLockedDocumentsCollection,\n lockedDocumentsCollectionSlug,\n} from '../locked-documents/config.js'\nimport { getPreferencesCollection, preferencesCollectionSlug } from '../preferences/config.js'\nimport { getQueryPresetsConfig, queryPresetsCollectionSlug } from '../query-presets/config.js'\nimport { getDefaultJobsCollection, jobsCollectionSlug } from '../queues/config/collection.js'\nimport { getJobStatsGlobal } from '../queues/config/global.js'\nimport { flattenBlock } from '../utilities/flattenAllFields.js'\nimport { getSchedulePublishTask } from '../versions/schedule/job.js'\nimport { addDefaultsToConfig } from './defaults.js'\nimport { setupOrderable } from './orderable/index.js'\n\nconst sanitizeAdminConfig = (configToSanitize: Config): Partial<SanitizedConfig> => {\n const sanitizedConfig = { ...configToSanitize }\n\n if (configToSanitize?.compatibility?.allowLocalizedWithinLocalized) {\n process.env.NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized = 'true'\n }\n\n // default logging level will be 'error' if not provided\n sanitizedConfig.loggingLevels = {\n Forbidden: 'info',\n Locked: 'info',\n MissingFile: 'info',\n NotFound: 'info',\n ValidationError: 'info',\n ...(sanitizedConfig.loggingLevels || {}),\n }\n\n // add default user collection if none provided\n if (!sanitizedConfig?.admin?.user) {\n const firstCollectionWithAuth = sanitizedConfig.collections!.find(({ auth }) => Boolean(auth))\n\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\n if (!userCollection || !userCollection.auth) {\n throw new InvalidConfiguration(\n `${sanitizedConfig.admin!.user} is not a valid admin user collection`,\n )\n }\n\n if (sanitizedConfig?.admin?.timezones) {\n if (typeof sanitizedConfig?.admin?.timezones?.supportedTimezones === 'function') {\n sanitizedConfig.admin.timezones.supportedTimezones =\n sanitizedConfig.admin.timezones.supportedTimezones({ defaultTimezones })\n }\n\n if (!sanitizedConfig?.admin?.timezones?.supportedTimezones) {\n sanitizedConfig.admin.timezones.supportedTimezones = defaultTimezones\n }\n } else {\n sanitizedConfig.admin!.timezones = {\n supportedTimezones: defaultTimezones,\n }\n }\n // Timezones supported by the Intl API\n const _internalSupportedTimezones = Intl.supportedValuesOf('timeZone')\n\n // We're casting here because it's already been sanitised above but TS still thinks it could be a function\n ;(sanitizedConfig.admin!.timezones.supportedTimezones as Timezone[]).forEach((timezone) => {\n if (timezone.value !== 'UTC' && !_internalSupportedTimezones.includes(timezone.value)) {\n throw new InvalidConfiguration(\n `Timezone ${timezone.value} is not supported by the current runtime via the Intl API.`,\n )\n }\n })\n\n return sanitizedConfig as unknown as Partial<SanitizedConfig>\n}\n\nexport const sanitizeConfig = async (incomingConfig: Config): Promise<SanitizedConfig> => {\n const configWithDefaults = addDefaultsToConfig(incomingConfig)\n\n const config: Partial<SanitizedConfig> = sanitizeAdminConfig(configWithDefaults)\n\n // Add orderable fields\n setupOrderable(config as SanitizedConfig)\n\n if (!config.endpoints) {\n config.endpoints = []\n }\n\n for (const endpoint of authRootEndpoints) {\n config.endpoints.push(endpoint)\n }\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.map((locale) => locale.code)\n\n config.localization.locales = (\n config.localization as LocalizationConfigWithLabels\n ).locales.map((locale) => ({\n ...locale,\n toString: () => locale.code,\n }))\n }\n\n // Default fallback to true if not provided\n config.localization.fallback = config.localization?.fallback ?? true\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 =\n (incomingConfig.i18n?.translations as SanitizedConfig['i18n']['translations']) ||\n i18nConfig.translations\n }\n\n config.i18n = i18nConfig\n\n const richTextSanitizationPromises: Array<(config: SanitizedConfig) => Promise<void>> = []\n\n const schedulePublishCollections: CollectionSlug[] = []\n\n const queryPresetsCollections: CollectionSlug[] = []\n\n const schedulePublishGlobals: GlobalSlug[] = []\n\n const collectionSlugs = new Set<CollectionSlug>()\n\n const validRelationships = [\n ...(config.collections?.map((c) => c.slug) ?? []),\n jobsCollectionSlug,\n lockedDocumentsCollectionSlug,\n preferencesCollectionSlug,\n ]\n\n if (config.folders !== false) {\n validRelationships.push(config.folders!.slug)\n }\n\n /**\n * Blocks sanitization needs to happen before collections, as collection/global join field sanitization needs config.blocks\n * to be populated with the sanitized blocks\n */\n config.blocks = []\n\n if (incomingConfig.blocks?.length) {\n for (const block of incomingConfig.blocks) {\n const sanitizedBlock = block\n\n if (sanitizedBlock._sanitized === true) {\n continue\n }\n sanitizedBlock._sanitized = true\n\n sanitizedBlock.fields = sanitizedBlock.fields.concat(baseBlockFields)\n\n sanitizedBlock.labels = !sanitizedBlock.labels\n ? formatLabels(sanitizedBlock.slug)\n : sanitizedBlock.labels\n\n sanitizedBlock.fields = await sanitizeFields({\n config: config as unknown as Config,\n existingFieldNames: new Set(),\n fields: sanitizedBlock.fields,\n parentIsLocalized: false,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n const flattenedSanitizedBlock = flattenBlock({ block })\n\n config.blocks.push(flattenedSanitizedBlock)\n }\n }\n\n const folderEnabledCollections: SanitizedCollectionConfig[] = []\n\n for (let i = 0; i < config.collections!.length; i++) {\n if (collectionSlugs.has(config.collections![i]!.slug)) {\n throw new DuplicateCollection('slug', config.collections![i]!.slug)\n }\n\n collectionSlugs.add(config.collections![i]!.slug)\n\n const draftsConfig = config.collections![i]?.versions?.drafts\n\n if (typeof draftsConfig === 'object' && draftsConfig.schedulePublish) {\n schedulePublishCollections.push(config.collections![i]!.slug)\n }\n\n if (config.collections![i]!.enableQueryPresets) {\n queryPresetsCollections.push(config.collections![i]!.slug)\n\n if (!validRelationships.includes(queryPresetsCollectionSlug)) {\n validRelationships.push(queryPresetsCollectionSlug)\n }\n }\n\n if (config.folders !== false && config.collections![i]!.folders) {\n addFolderFieldToCollection({\n collection: config.collections![i]!,\n collectionSpecific: config.folders!.collectionSpecific,\n folderFieldName: config.folders!.fieldName,\n folderSlug: config.folders!.slug,\n })\n }\n\n config.collections![i] = await sanitizeCollection(\n config as unknown as Config,\n config.collections![i]!,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n if (config.folders !== false && config.collections![i]!.folders) {\n folderEnabledCollections.push(config.collections![i]!)\n }\n }\n\n if (config.globals!.length > 0) {\n for (let i = 0; i < config.globals!.length; i++) {\n const draftsConfig = config.globals![i]?.versions?.drafts\n\n if (typeof draftsConfig === 'object' && draftsConfig.schedulePublish) {\n schedulePublishGlobals.push(config.globals![i]!.slug)\n }\n\n config.globals![i] = await sanitizeGlobal(\n config as unknown as Config,\n config.globals![i]!,\n richTextSanitizationPromises,\n validRelationships,\n )\n }\n }\n\n if (schedulePublishCollections.length || schedulePublishGlobals.length) {\n ;((config.jobs ??= {} as SanitizedJobsConfig).tasks ??= []).push(\n getSchedulePublishTask({\n adminUserSlug: config.admin!.user,\n collections: schedulePublishCollections,\n globals: schedulePublishGlobals,\n }),\n )\n }\n\n ;(config.jobs ??= {} as SanitizedJobsConfig).enabled = Boolean(\n (Array.isArray(configWithDefaults.jobs?.tasks) && configWithDefaults.jobs?.tasks?.length) ||\n (Array.isArray(configWithDefaults.jobs?.workflows) &&\n configWithDefaults.jobs?.workflows?.length),\n )\n\n // Need to add default jobs collection before locked documents collections\n if (config.jobs.enabled) {\n // Check for schedule property in both tasks and workflows\n const hasScheduleProperty =\n (config?.jobs?.tasks?.length && config.jobs.tasks.some((task) => task.schedule)) ||\n (config?.jobs?.workflows?.length &&\n config.jobs.workflows.some((workflow) => workflow.schedule))\n\n if (hasScheduleProperty) {\n config.jobs.scheduling = true\n // Add payload-jobs-stats global for tracking when a job of a specific slug was last run\n ;(config.globals ??= []).push(\n await sanitizeGlobal(\n config as unknown as Config,\n getJobStatsGlobal(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n config.jobs.stats = true\n }\n\n let defaultJobsCollection = getDefaultJobsCollection(config.jobs)\n\n if (typeof config.jobs.jobsCollectionOverrides === 'function') {\n defaultJobsCollection = config.jobs.jobsCollectionOverrides({\n defaultJobsCollection,\n })\n\n const hooks = defaultJobsCollection?.hooks\n // @todo - delete this check in 4.0\n if (hooks && config?.jobs?.runHooks !== true) {\n for (const [hookKey, hook] of Object.entries(hooks)) {\n const defaultAmount = hookKey === 'afterRead' || hookKey === 'beforeChange' ? 1 : 0\n if (hook.length > defaultAmount) {\n // eslint-disable-next-line no-console\n console.warn(\n `The jobsCollectionOverrides function is returning a collection with an additional ${hookKey} hook defined. These hooks will not run unless the jobs.runHooks option is set to true. Setting this option to true will negatively impact performance.`,\n )\n break\n }\n }\n }\n }\n const sanitizedJobsCollection = await sanitizeCollection(\n config as unknown as Config,\n defaultJobsCollection,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n ;(config.collections ??= []).push(sanitizedJobsCollection)\n }\n\n if (config.folders !== false && folderEnabledCollections.length) {\n await addFolderCollection({\n collectionSpecific: config.folders!.collectionSpecific,\n config: config as unknown as Config,\n folderEnabledCollections,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getLockedDocumentsCollection(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getPreferencesCollection(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n\n const migrations = await sanitizeCollection(\n config as unknown as Config,\n migrationsCollection,\n richTextSanitizationPromises,\n validRelationships,\n )\n\n // @ts-expect-error indexSortableFields is only valid for @payloadcms/db-mongodb\n if (config?.db?.indexSortableFields) {\n migrations.indexes = [\n {\n fields: ['batch', 'name'],\n unique: false,\n },\n ]\n }\n configWithDefaults.collections!.push(migrations)\n\n if (queryPresetsCollections.length > 0) {\n configWithDefaults.collections!.push(\n await sanitizeCollection(\n config as unknown as Config,\n getQueryPresetsConfig(config as unknown as Config),\n richTextSanitizationPromises,\n validRelationships,\n ),\n )\n }\n\n if (config.serverURL !== '') {\n config.csrf!.push(config.serverURL!)\n }\n\n const uploadAdapters = new Set<string>()\n // interact with all collections\n for (const collection of config.collections!) {\n // deduped upload adapters\n if (collection.upload?.adapter) {\n uploadAdapters.add(collection.upload.adapter)\n }\n }\n\n if (!config.upload) {\n config.upload = { adapters: [] }\n }\n\n config.upload.adapters = Array.from(\n new Set(config.collections!.map((c) => c.upload?.adapter).filter(Boolean) as string[]),\n )\n\n // Pass through the email config as is so adapters don't break\n if (incomingConfig.email) {\n config.email = incomingConfig.email\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 parentIsLocalized: false,\n })\n if (config.editor.i18n && Object.keys(config.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, config.editor.i18n)\n }\n }\n\n const promises: Promise<void>[] = []\n\n for (const sanitizeFunction of richTextSanitizationPromises) {\n promises.push(sanitizeFunction(config as SanitizedConfig))\n }\n\n await Promise.all(promises)\n\n return config as SanitizedConfig\n}\n"],"names":["en","deepMergeSimple","defaultUserCollection","authRootEndpoints","sanitizeCollection","migrationsCollection","DuplicateCollection","InvalidConfiguration","defaultTimezones","addFolderCollection","addFolderFieldToCollection","sanitizeGlobal","baseBlockFields","formatLabels","sanitizeFields","getLockedDocumentsCollection","lockedDocumentsCollectionSlug","getPreferencesCollection","preferencesCollectionSlug","getQueryPresetsConfig","queryPresetsCollectionSlug","getDefaultJobsCollection","jobsCollectionSlug","getJobStatsGlobal","flattenBlock","getSchedulePublishTask","addDefaultsToConfig","setupOrderable","sanitizeAdminConfig","configToSanitize","sanitizedConfig","compatibility","allowLocalizedWithinLocalized","process","env","NEXT_PUBLIC_PAYLOAD_COMPATIBILITY_allowLocalizedWithinLocalized","loggingLevels","Forbidden","Locked","MissingFile","NotFound","ValidationError","admin","user","firstCollectionWithAuth","collections","find","auth","Boolean","slug","push","userCollection","timezones","supportedTimezones","_internalSupportedTimezones","Intl","supportedValuesOf","forEach","timezone","value","includes","sanitizeConfig","incomingConfig","configWithDefaults","config","endpoints","endpoint","localization","locales","length","firstLocale","localeCodes","map","locale","code","label","rtl","toString","fallback","i18nConfig","fallbackLanguage","supportedLanguages","translations","i18n","supportedLangKeys","Object","keys","fallbackLang","richTextSanitizationPromises","schedulePublishCollections","queryPresetsCollections","schedulePublishGlobals","collectionSlugs","Set","validRelationships","c","folders","blocks","block","sanitizedBlock","_sanitized","fields","concat","labels","existingFieldNames","parentIsLocalized","flattenedSanitizedBlock","folderEnabledCollections","i","has","add","draftsConfig","versions","drafts","schedulePublish","enableQueryPresets","collection","collectionSpecific","folderFieldName","fieldName","folderSlug","globals","jobs","tasks","adminUserSlug","enabled","Array","isArray","workflows","hasScheduleProperty","some","task","schedule","workflow","scheduling","stats","defaultJobsCollection","jobsCollectionOverrides","hooks","runHooks","hookKey","hook","entries","defaultAmount","console","warn","sanitizedJobsCollection","migrations","db","indexSortableFields","indexes","unique","serverURL","csrf","uploadAdapters","upload","adapter","adapters","from","filter","email","editor","isRoot","promises","sanitizeFunction","Promise","all"],"mappings":"AAEA,SAASA,EAAE,QAAQ,wCAAuC;AAC1D,SAASC,eAAe,QAAQ,qCAAoC;AAYpE,SAASC,qBAAqB,QAAQ,yBAAwB;AAC9D,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,kBAAkB,QAAQ,oCAAmC;AACtE,SAASC,oBAAoB,QAAQ,iDAAgD;AACrF,SAASC,mBAAmB,EAAEC,oBAAoB,QAAQ,qBAAoB;AAC9E,SAASC,gBAAgB,QAAQ,oDAAmD;AACpF,SAASC,mBAAmB,QAAQ,oCAAmC;AACvE,SAASC,0BAA0B,QAAQ,2CAA0C;AACrF,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,eAAe,EAAEC,YAAY,EAAEC,cAAc,QAAQ,cAAa;AAC3E,SACEC,4BAA4B,EAC5BC,6BAA6B,QACxB,gCAA+B;AACtC,SAASC,wBAAwB,EAAEC,yBAAyB,QAAQ,2BAA0B;AAC9F,SAASC,qBAAqB,EAAEC,0BAA0B,QAAQ,6BAA4B;AAC9F,SAASC,wBAAwB,EAAEC,kBAAkB,QAAQ,iCAAgC;AAC7F,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,YAAY,QAAQ,mCAAkC;AAC/D,SAASC,sBAAsB,QAAQ,8BAA6B;AACpE,SAASC,mBAAmB,QAAQ,gBAAe;AACnD,SAASC,cAAc,QAAQ,uBAAsB;AAErD,MAAMC,sBAAsB,CAACC;IAC3B,MAAMC,kBAAkB;QAAE,GAAGD,gBAAgB;IAAC;IAE9C,IAAIA,kBAAkBE,eAAeC,+BAA+B;QAClEC,QAAQC,GAAG,CAACC,+DAA+D,GAAG;IAChF;IAEA,wDAAwD;IACxDL,gBAAgBM,aAAa,GAAG;QAC9BC,WAAW;QACXC,QAAQ;QACRC,aAAa;QACbC,UAAU;QACVC,iBAAiB;QACjB,GAAIX,gBAAgBM,aAAa,IAAI,CAAC,CAAC;IACzC;IAEA,+CAA+C;IAC/C,IAAI,CAACN,iBAAiBY,OAAOC,MAAM;QACjC,MAAMC,0BAA0Bd,gBAAgBe,WAAW,CAAEC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKC,QAAQD;QAExF,IAAIH,yBAAyB;YAC3Bd,gBAAgBY,KAAK,CAAEC,IAAI,GAAGC,wBAAwBK,IAAI;QAC5D,OAAO;YACLnB,gBAAgBY,KAAK,CAAEC,IAAI,GAAGzC,sBAAsB+C,IAAI;YACxDnB,gBAAgBe,WAAW,CAAEK,IAAI,CAAChD;QACpC;IACF;IAEA,MAAMiD,iBAAiBrB,gBAAgBe,WAAW,CAAEC,IAAI,CACtD,CAAC,EAAEG,IAAI,EAAE,GAAKA,SAASnB,gBAAgBY,KAAK,CAAEC,IAAI;IAGpD,IAAI,CAACQ,kBAAkB,CAACA,eAAeJ,IAAI,EAAE;QAC3C,MAAM,IAAIxC,qBACR,GAAGuB,gBAAgBY,KAAK,CAAEC,IAAI,CAAC,qCAAqC,CAAC;IAEzE;IAEA,IAAIb,iBAAiBY,OAAOU,WAAW;QACrC,IAAI,OAAOtB,iBAAiBY,OAAOU,WAAWC,uBAAuB,YAAY;YAC/EvB,gBAAgBY,KAAK,CAACU,SAAS,CAACC,kBAAkB,GAChDvB,gBAAgBY,KAAK,CAACU,SAAS,CAACC,kBAAkB,CAAC;gBAAE7C;YAAiB;QAC1E;QAEA,IAAI,CAACsB,iBAAiBY,OAAOU,WAAWC,oBAAoB;YAC1DvB,gBAAgBY,KAAK,CAACU,SAAS,CAACC,kBAAkB,GAAG7C;QACvD;IACF,OAAO;QACLsB,gBAAgBY,KAAK,CAAEU,SAAS,GAAG;YACjCC,oBAAoB7C;QACtB;IACF;IACA,sCAAsC;IACtC,MAAM8C,8BAA8BC,KAAKC,iBAAiB,CAAC;IAGzD1B,gBAAgBY,KAAK,CAAEU,SAAS,CAACC,kBAAkB,CAAgBI,OAAO,CAAC,CAACC;QAC5E,IAAIA,SAASC,KAAK,KAAK,SAAS,CAACL,4BAA4BM,QAAQ,CAACF,SAASC,KAAK,GAAG;YACrF,MAAM,IAAIpD,qBACR,CAAC,SAAS,EAAEmD,SAASC,KAAK,CAAC,0DAA0D,CAAC;QAE1F;IACF;IAEA,OAAO7B;AACT;AAEA,OAAO,MAAM+B,iBAAiB,OAAOC;IACnC,MAAMC,qBAAqBrC,oBAAoBoC;IAE/C,MAAME,SAAmCpC,oBAAoBmC;IAE7D,uBAAuB;IACvBpC,eAAeqC;IAEf,IAAI,CAACA,OAAOC,SAAS,EAAE;QACrBD,OAAOC,SAAS,GAAG,EAAE;IACvB;IAEA,KAAK,MAAMC,YAAY/D,kBAAmB;QACxC6D,OAAOC,SAAS,CAACf,IAAI,CAACgB;IACxB;IAEA,IAAIF,OAAOG,YAAY,IAAIH,OAAOG,YAAY,CAACC,OAAO,EAAEC,SAAS,GAAG;QAClE,uDAAuD;QACvD,MAAMC,cAAcN,OAAOG,YAAY,CAACC,OAAO,CAAC,EAAE;QAClD,IAAI,OAAOE,gBAAgB,UAAU;YACnCN,OAAOG,YAAY,CAACI,WAAW,GAAG;mBAC7B,AAACP,OAAOG,YAAY,CAA+CC,OAAO;aAC9E;YAED,sCAAsC;YACtCJ,OAAOG,YAAY,CAACC,OAAO,GAAG,AAC5BJ,OAAOG,YAAY,CACnBC,OAAO,CAACI,GAAG,CAAC,CAACC,SAAY,CAAA;oBACzBC,MAAMD;oBACNE,OAAOF;oBACPG,KAAK;oBACLC,UAAU,IAAMJ;gBAClB,CAAA;QACF,OAAO;YACL,sDAAsD;YACtDT,OAAOG,YAAY,CAACI,WAAW,GAAGP,OAAOG,YAAY,CAACC,OAAO,CAACI,GAAG,CAAC,CAACC,SAAWA,OAAOC,IAAI;YAEzFV,OAAOG,YAAY,CAACC,OAAO,GAAG,AAC5BJ,OAAOG,YAAY,CACnBC,OAAO,CAACI,GAAG,CAAC,CAACC,SAAY,CAAA;oBACzB,GAAGA,MAAM;oBACTI,UAAU,IAAMJ,OAAOC,IAAI;gBAC7B,CAAA;QACF;QAEA,2CAA2C;QAC3CV,OAAOG,YAAY,CAACW,QAAQ,GAAGd,OAAOG,YAAY,EAAEW,YAAY;IAClE;IAEA,MAAMC,aAAsC;QAC1CC,kBAAkB;QAClBC,oBAAoB;YAClBjF;QACF;QACAkF,cAAc,CAAC;IACjB;IAEA,IAAIpB,gBAAgBqB,MAAM;QACxBJ,WAAWE,kBAAkB,GAC3BnB,eAAeqB,IAAI,EAAEF,sBAAsBF,WAAWE,kBAAkB;QAE1E,MAAMG,oBAAyCC,OAAOC,IAAI,CAACP,WAAWE,kBAAkB;QACxF,MAAMM,eAAezB,eAAeqB,IAAI,EAAEH,oBAAoBD,WAAWC,gBAAgB;QAEzFD,WAAWC,gBAAgB,GAAGI,kBAAkBxB,QAAQ,CAAC2B,gBACrDA,eACAH,iBAAiB,CAAC,EAAE;QACxBL,WAAWG,YAAY,GACrB,AAACpB,eAAeqB,IAAI,EAAED,gBACtBH,WAAWG,YAAY;IAC3B;IAEAlB,OAAOmB,IAAI,GAAGJ;IAEd,MAAMS,+BAAkF,EAAE;IAE1F,MAAMC,6BAA+C,EAAE;IAEvD,MAAMC,0BAA4C,EAAE;IAEpD,MAAMC,yBAAuC,EAAE;IAE/C,MAAMC,kBAAkB,IAAIC;IAE5B,MAAMC,qBAAqB;WACrB9B,OAAOnB,WAAW,EAAE2B,IAAI,CAACuB,IAAMA,EAAE9C,IAAI,KAAK,EAAE;QAChD3B;QACAN;QACAE;KACD;IAED,IAAI8C,OAAOgC,OAAO,KAAK,OAAO;QAC5BF,mBAAmB5C,IAAI,CAACc,OAAOgC,OAAO,CAAE/C,IAAI;IAC9C;IAEA;;;GAGC,GACDe,OAAOiC,MAAM,GAAG,EAAE;IAElB,IAAInC,eAAemC,MAAM,EAAE5B,QAAQ;QACjC,KAAK,MAAM6B,SAASpC,eAAemC,MAAM,CAAE;YACzC,MAAME,iBAAiBD;YAEvB,IAAIC,eAAeC,UAAU,KAAK,MAAM;gBACtC;YACF;YACAD,eAAeC,UAAU,GAAG;YAE5BD,eAAeE,MAAM,GAAGF,eAAeE,MAAM,CAACC,MAAM,CAAC1F;YAErDuF,eAAeI,MAAM,GAAG,CAACJ,eAAeI,MAAM,GAC1C1F,aAAasF,eAAelD,IAAI,IAChCkD,eAAeI,MAAM;YAEzBJ,eAAeE,MAAM,GAAG,MAAMvF,eAAe;gBAC3CkD,QAAQA;gBACRwC,oBAAoB,IAAIX;gBACxBQ,QAAQF,eAAeE,MAAM;gBAC7BI,mBAAmB;gBACnBjB;gBACAM;YACF;YAEA,MAAMY,0BAA0BlF,aAAa;gBAAE0E;YAAM;YAErDlC,OAAOiC,MAAM,CAAC/C,IAAI,CAACwD;QACrB;IACF;IAEA,MAAMC,2BAAwD,EAAE;IAEhE,IAAK,IAAIC,IAAI,GAAGA,IAAI5C,OAAOnB,WAAW,CAAEwB,MAAM,EAAEuC,IAAK;QACnD,IAAIhB,gBAAgBiB,GAAG,CAAC7C,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAE3D,IAAI,GAAG;YACrD,MAAM,IAAI3C,oBAAoB,QAAQ0D,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAE3D,IAAI;QACpE;QAEA2C,gBAAgBkB,GAAG,CAAC9C,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAE3D,IAAI;QAEhD,MAAM8D,eAAe/C,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,EAAEI,UAAUC;QAEvD,IAAI,OAAOF,iBAAiB,YAAYA,aAAaG,eAAe,EAAE;YACpEzB,2BAA2BvC,IAAI,CAACc,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAE3D,IAAI;QAC9D;QAEA,IAAIe,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAEO,kBAAkB,EAAE;YAC9CzB,wBAAwBxC,IAAI,CAACc,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAE3D,IAAI;YAEzD,IAAI,CAAC6C,mBAAmBlC,QAAQ,CAACxC,6BAA6B;gBAC5D0E,mBAAmB5C,IAAI,CAAC9B;YAC1B;QACF;QAEA,IAAI4C,OAAOgC,OAAO,KAAK,SAAShC,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAEZ,OAAO,EAAE;YAC/DtF,2BAA2B;gBACzB0G,YAAYpD,OAAOnB,WAAW,AAAC,CAAC+D,EAAE;gBAClCS,oBAAoBrD,OAAOgC,OAAO,CAAEqB,kBAAkB;gBACtDC,iBAAiBtD,OAAOgC,OAAO,CAAEuB,SAAS;gBAC1CC,YAAYxD,OAAOgC,OAAO,CAAE/C,IAAI;YAClC;QACF;QAEAe,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,GAAG,MAAMxG,mBAC7B4D,QACAA,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,EACtBpB,8BACAM;QAGF,IAAI9B,OAAOgC,OAAO,KAAK,SAAShC,OAAOnB,WAAW,AAAC,CAAC+D,EAAE,CAAEZ,OAAO,EAAE;YAC/DW,yBAAyBzD,IAAI,CAACc,OAAOnB,WAAW,AAAC,CAAC+D,EAAE;QACtD;IACF;IAEA,IAAI5C,OAAOyD,OAAO,CAAEpD,MAAM,GAAG,GAAG;QAC9B,IAAK,IAAIuC,IAAI,GAAGA,IAAI5C,OAAOyD,OAAO,CAAEpD,MAAM,EAAEuC,IAAK;YAC/C,MAAMG,eAAe/C,OAAOyD,OAAO,AAAC,CAACb,EAAE,EAAEI,UAAUC;YAEnD,IAAI,OAAOF,iBAAiB,YAAYA,aAAaG,eAAe,EAAE;gBACpEvB,uBAAuBzC,IAAI,CAACc,OAAOyD,OAAO,AAAC,CAACb,EAAE,CAAE3D,IAAI;YACtD;YAEAe,OAAOyD,OAAO,AAAC,CAACb,EAAE,GAAG,MAAMjG,eACzBqD,QACAA,OAAOyD,OAAO,AAAC,CAACb,EAAE,EAClBpB,8BACAM;QAEJ;IACF;IAEA,IAAIL,2BAA2BpB,MAAM,IAAIsB,uBAAuBtB,MAAM,EAAE;;QACpE,CAAA,AAACL,CAAAA,OAAO0D,IAAI,KAAK,CAAC,CAAuB,EAAGC,KAAK,KAAK,EAAE,AAAD,EAAGzE,IAAI,CAC9DzB,uBAAuB;YACrBmG,eAAe5D,OAAOtB,KAAK,CAAEC,IAAI;YACjCE,aAAa4C;YACbgC,SAAS9B;QACX;IAEJ;;IAEE3B,CAAAA,OAAO0D,IAAI,KAAK,CAAC,CAAuB,EAAGG,OAAO,GAAG7E,QACrD,AAAC8E,MAAMC,OAAO,CAAChE,mBAAmB2D,IAAI,EAAEC,UAAU5D,mBAAmB2D,IAAI,EAAEC,OAAOtD,UAC/EyD,MAAMC,OAAO,CAAChE,mBAAmB2D,IAAI,EAAEM,cACtCjE,mBAAmB2D,IAAI,EAAEM,WAAW3D;IAG1C,0EAA0E;IAC1E,IAAIL,OAAO0D,IAAI,CAACG,OAAO,EAAE;QACvB,0DAA0D;QAC1D,MAAMI,sBACJ,AAACjE,QAAQ0D,MAAMC,OAAOtD,UAAUL,OAAO0D,IAAI,CAACC,KAAK,CAACO,IAAI,CAAC,CAACC,OAASA,KAAKC,QAAQ,KAC7EpE,QAAQ0D,MAAMM,WAAW3D,UACxBL,OAAO0D,IAAI,CAACM,SAAS,CAACE,IAAI,CAAC,CAACG,WAAaA,SAASD,QAAQ;QAE9D,IAAIH,qBAAqB;YACvBjE,OAAO0D,IAAI,CAACY,UAAU,GAAG;YAEvBtE,CAAAA,OAAOyD,OAAO,KAAK,EAAE,AAAD,EAAGvE,IAAI,CAC3B,MAAMvC,eACJqD,QACAzC,kBAAkByC,SAClBwB,8BACAM;YAIJ9B,OAAO0D,IAAI,CAACa,KAAK,GAAG;QACtB;QAEA,IAAIC,wBAAwBnH,yBAAyB2C,OAAO0D,IAAI;QAEhE,IAAI,OAAO1D,OAAO0D,IAAI,CAACe,uBAAuB,KAAK,YAAY;YAC7DD,wBAAwBxE,OAAO0D,IAAI,CAACe,uBAAuB,CAAC;gBAC1DD;YACF;YAEA,MAAME,QAAQF,uBAAuBE;YACrC,mCAAmC;YACnC,IAAIA,SAAS1E,QAAQ0D,MAAMiB,aAAa,MAAM;gBAC5C,KAAK,MAAM,CAACC,SAASC,KAAK,IAAIxD,OAAOyD,OAAO,CAACJ,OAAQ;oBACnD,MAAMK,gBAAgBH,YAAY,eAAeA,YAAY,iBAAiB,IAAI;oBAClF,IAAIC,KAAKxE,MAAM,GAAG0E,eAAe;wBAC/B,sCAAsC;wBACtCC,QAAQC,IAAI,CACV,CAAC,kFAAkF,EAAEL,QAAQ,uJAAuJ,CAAC;wBAEvP;oBACF;gBACF;YACF;QACF;QACA,MAAMM,0BAA0B,MAAM9I,mBACpC4D,QACAwE,uBACAhD,8BACAM;QAGA9B,CAAAA,OAAOnB,WAAW,KAAK,EAAE,AAAD,EAAGK,IAAI,CAACgG;IACpC;IAEA,IAAIlF,OAAOgC,OAAO,KAAK,SAASW,yBAAyBtC,MAAM,EAAE;QAC/D,MAAM5D,oBAAoB;YACxB4G,oBAAoBrD,OAAOgC,OAAO,CAAEqB,kBAAkB;YACtDrD,QAAQA;YACR2C;YACAnB;YACAM;QACF;IACF;IAEA/B,mBAAmBlB,WAAW,CAAEK,IAAI,CAClC,MAAM9C,mBACJ4D,QACAjD,6BAA6BiD,SAC7BwB,8BACAM;IAIJ/B,mBAAmBlB,WAAW,CAAEK,IAAI,CAClC,MAAM9C,mBACJ4D,QACA/C,yBAAyB+C,SACzBwB,8BACAM;IAIJ,MAAMqD,aAAa,MAAM/I,mBACvB4D,QACA3D,sBACAmF,8BACAM;IAGF,gFAAgF;IAChF,IAAI9B,QAAQoF,IAAIC,qBAAqB;QACnCF,WAAWG,OAAO,GAAG;YACnB;gBACEjD,QAAQ;oBAAC;oBAAS;iBAAO;gBACzBkD,QAAQ;YACV;SACD;IACH;IACAxF,mBAAmBlB,WAAW,CAAEK,IAAI,CAACiG;IAErC,IAAIzD,wBAAwBrB,MAAM,GAAG,GAAG;QACtCN,mBAAmBlB,WAAW,CAAEK,IAAI,CAClC,MAAM9C,mBACJ4D,QACA7C,sBAAsB6C,SACtBwB,8BACAM;IAGN;IAEA,IAAI9B,OAAOwF,SAAS,KAAK,IAAI;QAC3BxF,OAAOyF,IAAI,CAAEvG,IAAI,CAACc,OAAOwF,SAAS;IACpC;IAEA,MAAME,iBAAiB,IAAI7D;IAC3B,gCAAgC;IAChC,KAAK,MAAMuB,cAAcpD,OAAOnB,WAAW,CAAG;QAC5C,0BAA0B;QAC1B,IAAIuE,WAAWuC,MAAM,EAAEC,SAAS;YAC9BF,eAAe5C,GAAG,CAACM,WAAWuC,MAAM,CAACC,OAAO;QAC9C;IACF;IAEA,IAAI,CAAC5F,OAAO2F,MAAM,EAAE;QAClB3F,OAAO2F,MAAM,GAAG;YAAEE,UAAU,EAAE;QAAC;IACjC;IAEA7F,OAAO2F,MAAM,CAACE,QAAQ,GAAG/B,MAAMgC,IAAI,CACjC,IAAIjE,IAAI7B,OAAOnB,WAAW,CAAE2B,GAAG,CAAC,CAACuB,IAAMA,EAAE4D,MAAM,EAAEC,SAASG,MAAM,CAAC/G;IAGnE,8DAA8D;IAC9D,IAAIc,eAAekG,KAAK,EAAE;QACxBhG,OAAOgG,KAAK,GAAGlG,eAAekG,KAAK;IACrC;IAEA;;GAEC,GACD,IAAI,OAAOlG,eAAemG,MAAM,KAAK,YAAY;QAC/CjG,OAAOiG,MAAM,GAAG,MAAMnG,eAAemG,MAAM,CAAC;YAC1CjG,QAAQA;YACRkG,QAAQ;YACRzD,mBAAmB;QACrB;QACA,IAAIzC,OAAOiG,MAAM,CAAC9E,IAAI,IAAIE,OAAOC,IAAI,CAACtB,OAAOiG,MAAM,CAAC9E,IAAI,EAAEd,MAAM,IAAI,GAAG;YACrEL,OAAOmB,IAAI,CAACD,YAAY,GAAGjF,gBAAgB+D,OAAOmB,IAAI,CAACD,YAAY,EAAElB,OAAOiG,MAAM,CAAC9E,IAAI;QACzF;IACF;IAEA,MAAMgF,WAA4B,EAAE;IAEpC,KAAK,MAAMC,oBAAoB5E,6BAA8B;QAC3D2E,SAASjH,IAAI,CAACkH,iBAAiBpG;IACjC;IAEA,MAAMqG,QAAQC,GAAG,CAACH;IAElB,OAAOnG;AACT,EAAC"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export { MissingFile } from './MissingFile.js';
|
|
|
20
20
|
export { NotFound } from './NotFound.js';
|
|
21
21
|
export { QueryError } from './QueryError.js';
|
|
22
22
|
export { ReservedFieldName } from './ReservedFieldName.js';
|
|
23
|
+
export { UnauthorizedError } from './UnauthorizedError.js';
|
|
23
24
|
export { UnverifiedEmail } from './UnverifiedEmail.js';
|
|
24
25
|
export { ValidationError, ValidationErrorName } from './ValidationError.js';
|
|
25
26
|
export type { ValidationFieldError } from './ValidationError.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/errors/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export { MissingFile } from './MissingFile.js';
|
|
|
20
20
|
export { NotFound } from './NotFound.js';
|
|
21
21
|
export { QueryError } from './QueryError.js';
|
|
22
22
|
export { ReservedFieldName } from './ReservedFieldName.js';
|
|
23
|
+
export { UnauthorizedError } from './UnauthorizedError.js';
|
|
23
24
|
export { UnverifiedEmail } from './UnverifiedEmail.js';
|
|
24
25
|
export { ValidationError, ValidationErrorName } from './ValidationError.js';
|
|
25
26
|
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/errors/index.ts"],"sourcesContent":["export { APIError, APIErrorName } from './APIError.js'\nexport { AuthenticationError } from './AuthenticationError.js'\nexport { DuplicateCollection } from './DuplicateCollection.js'\nexport { DuplicateFieldName } from './DuplicateFieldName.js'\nexport { DuplicateGlobal } from './DuplicateGlobal.js'\nexport { ErrorDeletingFile } from './ErrorDeletingFile.js'\nexport { FileRetrievalError } from './FileRetrievalError.js'\nexport { FileUploadError } from './FileUploadError.js'\nexport { Forbidden } from './Forbidden.js'\nexport { InvalidConfiguration } from './InvalidConfiguration.js'\nexport { InvalidFieldName } from './InvalidFieldName.js'\nexport { InvalidFieldRelationship } from './InvalidFieldRelationship.js'\nexport { Locked } from './Locked.js'\nexport { LockedAuth } from './LockedAuth.js'\nexport { MissingCollectionLabel } from './MissingCollectionLabel.js'\nexport { MissingEditorProp } from './MissingEditorProp.js'\nexport { MissingFieldInputOptions } from './MissingFieldInputOptions.js'\nexport { MissingFieldType } from './MissingFieldType.js'\nexport { MissingFile } from './MissingFile.js'\nexport { NotFound } from './NotFound.js'\nexport { QueryError } from './QueryError.js'\nexport { ReservedFieldName } from './ReservedFieldName.js'\nexport { UnverifiedEmail } from './UnverifiedEmail.js'\nexport { ValidationError, ValidationErrorName } from './ValidationError.js'\nexport type { ValidationFieldError } from './ValidationError.js'\n"],"names":["APIError","APIErrorName","AuthenticationError","DuplicateCollection","DuplicateFieldName","DuplicateGlobal","ErrorDeletingFile","FileRetrievalError","FileUploadError","Forbidden","InvalidConfiguration","InvalidFieldName","InvalidFieldRelationship","Locked","LockedAuth","MissingCollectionLabel","MissingEditorProp","MissingFieldInputOptions","MissingFieldType","MissingFile","NotFound","QueryError","ReservedFieldName","UnverifiedEmail","ValidationError","ValidationErrorName"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,YAAY,QAAQ,gBAAe;AACtD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,wBAAwB,QAAQ,gCAA+B;AACxE,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,sBAAsB,QAAQ,8BAA6B;AACpE,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AACxE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,QAAQ,QAAQ,gBAAe;AACxC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,uBAAsB"}
|
|
1
|
+
{"version":3,"sources":["../../src/errors/index.ts"],"sourcesContent":["export { APIError, APIErrorName } from './APIError.js'\nexport { AuthenticationError } from './AuthenticationError.js'\nexport { DuplicateCollection } from './DuplicateCollection.js'\nexport { DuplicateFieldName } from './DuplicateFieldName.js'\nexport { DuplicateGlobal } from './DuplicateGlobal.js'\nexport { ErrorDeletingFile } from './ErrorDeletingFile.js'\nexport { FileRetrievalError } from './FileRetrievalError.js'\nexport { FileUploadError } from './FileUploadError.js'\nexport { Forbidden } from './Forbidden.js'\nexport { InvalidConfiguration } from './InvalidConfiguration.js'\nexport { InvalidFieldName } from './InvalidFieldName.js'\nexport { InvalidFieldRelationship } from './InvalidFieldRelationship.js'\nexport { Locked } from './Locked.js'\nexport { LockedAuth } from './LockedAuth.js'\nexport { MissingCollectionLabel } from './MissingCollectionLabel.js'\nexport { MissingEditorProp } from './MissingEditorProp.js'\nexport { MissingFieldInputOptions } from './MissingFieldInputOptions.js'\nexport { MissingFieldType } from './MissingFieldType.js'\nexport { MissingFile } from './MissingFile.js'\nexport { NotFound } from './NotFound.js'\nexport { QueryError } from './QueryError.js'\nexport { ReservedFieldName } from './ReservedFieldName.js'\nexport { UnauthorizedError } from './UnauthorizedError.js'\nexport { UnverifiedEmail } from './UnverifiedEmail.js'\nexport { ValidationError, ValidationErrorName } from './ValidationError.js'\nexport type { ValidationFieldError } from './ValidationError.js'\n"],"names":["APIError","APIErrorName","AuthenticationError","DuplicateCollection","DuplicateFieldName","DuplicateGlobal","ErrorDeletingFile","FileRetrievalError","FileUploadError","Forbidden","InvalidConfiguration","InvalidFieldName","InvalidFieldRelationship","Locked","LockedAuth","MissingCollectionLabel","MissingEditorProp","MissingFieldInputOptions","MissingFieldType","MissingFile","NotFound","QueryError","ReservedFieldName","UnauthorizedError","UnverifiedEmail","ValidationError","ValidationErrorName"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,YAAY,QAAQ,gBAAe;AACtD,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,SAAS,QAAQ,iBAAgB;AAC1C,SAASC,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,wBAAwB,QAAQ,gCAA+B;AACxE,SAASC,MAAM,QAAQ,cAAa;AACpC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,sBAAsB,QAAQ,8BAA6B;AACpE,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AACxE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,WAAW,QAAQ,mBAAkB;AAC9C,SAASC,QAAQ,QAAQ,gBAAe;AACxC,SAASC,UAAU,QAAQ,kBAAiB;AAC5C,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,iBAAiB,QAAQ,yBAAwB;AAC1D,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,uBAAsB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EACX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKtE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,OAAO,GACP,kBAAkB,GAClB,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AA+BD,eAAO,MAAM,kBAAkB,gDAK5B;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,EAgFzC,CAAA;AAED,eAAO,MAAM,iBAAiB,8DAK3B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/fields/config/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAGV,KAAK,EAGL,WAAW,EACX,WAAW,EACX,KAAK,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKtE,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,eAAe,GACf,SAAS,GACT,OAAO,GACP,kBAAkB,GAClB,UAAU,GACV,MAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,8BAA8B,GAAG,MAAM,IAAI,CACrD,SAAS,CAAC,OAAO,CAAC,EAElB,YAAY,GAAG,WAAW,CAC3B,CAAA;AA+BD,eAAO,MAAM,kBAAkB,gDAK5B;IACD,MAAM,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,GAAG,WAAW,EAgFzC,CAAA;AAED,eAAO,MAAM,iBAAiB,8DAK3B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAqRH,CAAA;AAED,eAAO,MAAM,kBAAkB,iEAM5B;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,WAAW,EAkCd,CAAA"}
|
|
@@ -135,6 +135,8 @@ export const createClientField = ({ defaultIDType, field: incomingField, i18n, i
|
|
|
135
135
|
case 'fields':
|
|
136
136
|
case 'tabs':
|
|
137
137
|
break;
|
|
138
|
+
case 'options':
|
|
139
|
+
break;
|
|
138
140
|
case 'label':
|
|
139
141
|
//@ts-expect-error - would need to type narrow
|
|
140
142
|
if (typeof incomingField.label === 'function') {
|
|
@@ -253,12 +255,11 @@ export const createClientField = ({ defaultIDType, field: incomingField, i18n, i
|
|
|
253
255
|
{
|
|
254
256
|
const field = clientField;
|
|
255
257
|
if (incomingField.options?.length) {
|
|
258
|
+
field.options = [] // Create new array to avoid mutating global config
|
|
259
|
+
;
|
|
256
260
|
for(let i = 0; i < incomingField.options.length; i++){
|
|
257
261
|
const option = incomingField.options[i];
|
|
258
262
|
if (typeof option === 'object' && typeof option.label === 'function') {
|
|
259
|
-
if (!field.options) {
|
|
260
|
-
field.options = [];
|
|
261
|
-
}
|
|
262
263
|
field.options[i] = {
|
|
263
264
|
label: option.label({
|
|
264
265
|
i18n,
|
|
@@ -266,6 +267,13 @@ export const createClientField = ({ defaultIDType, field: incomingField, i18n, i
|
|
|
266
267
|
}),
|
|
267
268
|
value: option.value
|
|
268
269
|
};
|
|
270
|
+
} else if (typeof option === 'object') {
|
|
271
|
+
field.options[i] = {
|
|
272
|
+
label: option.label,
|
|
273
|
+
value: option.value
|
|
274
|
+
};
|
|
275
|
+
} else if (typeof option === 'string') {
|
|
276
|
+
field.options[i] = option;
|
|
269
277
|
}
|
|
270
278
|
}
|
|
271
279
|
}
|