payload 3.0.0-beta.77 → 3.0.0-beta.79
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/bin.js +33 -10
- package/dist/admin/RichText.d.ts +20 -17
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/elements/Cell.d.ts +11 -26
- package/dist/admin/elements/Cell.d.ts.map +1 -1
- package/dist/admin/elements/Cell.js.map +1 -1
- package/dist/admin/elements/Tab.d.ts +16 -15
- package/dist/admin/elements/Tab.d.ts.map +1 -1
- package/dist/admin/elements/Tab.js.map +1 -1
- package/dist/admin/fields/Array.d.ts +6 -13
- package/dist/admin/fields/Array.d.ts.map +1 -1
- package/dist/admin/fields/Array.js.map +1 -1
- package/dist/admin/fields/Blocks.d.ts +8 -25
- package/dist/admin/fields/Blocks.d.ts.map +1 -1
- package/dist/admin/fields/Blocks.js.map +1 -1
- package/dist/admin/fields/Checkbox.d.ts +9 -9
- package/dist/admin/fields/Checkbox.d.ts.map +1 -1
- package/dist/admin/fields/Checkbox.js.map +1 -1
- package/dist/admin/fields/Code.d.ts +5 -7
- package/dist/admin/fields/Code.d.ts.map +1 -1
- package/dist/admin/fields/Code.js.map +1 -1
- package/dist/admin/fields/Collapsible.d.ts +3 -4
- package/dist/admin/fields/Collapsible.d.ts.map +1 -1
- package/dist/admin/fields/Collapsible.js.map +1 -1
- package/dist/admin/fields/Date.d.ts +4 -7
- package/dist/admin/fields/Date.d.ts.map +1 -1
- package/dist/admin/fields/Date.js.map +1 -1
- package/dist/admin/fields/Email.d.ts +5 -7
- package/dist/admin/fields/Email.d.ts.map +1 -1
- package/dist/admin/fields/Email.js.map +1 -1
- package/dist/admin/fields/Group.d.ts +3 -6
- package/dist/admin/fields/Group.d.ts.map +1 -1
- package/dist/admin/fields/Group.js.map +1 -1
- package/dist/admin/fields/Hidden.d.ts +7 -5
- package/dist/admin/fields/Hidden.d.ts.map +1 -1
- package/dist/admin/fields/Hidden.js.map +1 -1
- package/dist/admin/fields/JSON.d.ts +4 -7
- package/dist/admin/fields/JSON.d.ts.map +1 -1
- package/dist/admin/fields/JSON.js.map +1 -1
- package/dist/admin/fields/Number.d.ts +5 -12
- package/dist/admin/fields/Number.d.ts.map +1 -1
- package/dist/admin/fields/Number.js.map +1 -1
- package/dist/admin/fields/Point.d.ts +4 -6
- package/dist/admin/fields/Point.d.ts.map +1 -1
- package/dist/admin/fields/Point.js.map +1 -1
- package/dist/admin/fields/Radio.d.ts +6 -9
- package/dist/admin/fields/Radio.d.ts.map +1 -1
- package/dist/admin/fields/Radio.js.map +1 -1
- package/dist/admin/fields/Relationship.d.ts +4 -9
- package/dist/admin/fields/Relationship.d.ts.map +1 -1
- package/dist/admin/fields/Relationship.js.map +1 -1
- package/dist/admin/fields/RichText.d.ts +5 -6
- package/dist/admin/fields/RichText.d.ts.map +1 -1
- package/dist/admin/fields/RichText.js.map +1 -1
- package/dist/admin/fields/Row.d.ts +3 -4
- package/dist/admin/fields/Row.d.ts.map +1 -1
- package/dist/admin/fields/Row.js.map +1 -1
- package/dist/admin/fields/Select.d.ts +6 -11
- package/dist/admin/fields/Select.d.ts.map +1 -1
- package/dist/admin/fields/Select.js.map +1 -1
- package/dist/admin/fields/Tabs.d.ts +8 -12
- package/dist/admin/fields/Tabs.d.ts.map +1 -1
- package/dist/admin/fields/Tabs.js.map +1 -1
- package/dist/admin/fields/Text.d.ts +7 -13
- package/dist/admin/fields/Text.d.ts.map +1 -1
- package/dist/admin/fields/Text.js.map +1 -1
- package/dist/admin/fields/Textarea.d.ts +7 -9
- package/dist/admin/fields/Textarea.d.ts.map +1 -1
- package/dist/admin/fields/Textarea.js.map +1 -1
- package/dist/admin/fields/Upload.d.ts +6 -7
- package/dist/admin/fields/Upload.d.ts.map +1 -1
- package/dist/admin/fields/Upload.js.map +1 -1
- package/dist/admin/forms/Error.d.ts +10 -10
- package/dist/admin/forms/Error.d.ts.map +1 -1
- package/dist/admin/forms/Error.js.map +1 -1
- package/dist/admin/forms/Field.d.ts +17 -24
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js +1 -0
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/forms/FieldDescription.d.ts +10 -9
- package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
- package/dist/admin/forms/FieldDescription.js.map +1 -1
- package/dist/admin/forms/Label.d.ts +14 -15
- package/dist/admin/forms/Label.d.ts.map +1 -1
- package/dist/admin/forms/Label.js.map +1 -1
- package/dist/admin/types.d.ts +30 -11
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/types.d.ts +21 -13
- package/dist/admin/views/types.d.ts.map +1 -1
- package/dist/admin/views/types.js.map +1 -1
- package/dist/auth/baseFields/apiKey.js +2 -2
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/baseFields/email.js +1 -1
- package/dist/auth/baseFields/email.js.map +1 -1
- package/dist/auth/baseFields/username.js +1 -1
- package/dist/auth/baseFields/username.js.map +1 -1
- package/dist/auth/baseFields/verification.js +1 -1
- package/dist/auth/baseFields/verification.js.map +1 -1
- package/dist/auth/strategies/jwt.d.ts.map +1 -1
- package/dist/auth/strategies/jwt.js +57 -24
- package/dist/auth/strategies/jwt.js.map +1 -1
- package/dist/auth/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/register.js +27 -9
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/bin/generateImportMap/index.d.ts +47 -0
- package/dist/bin/generateImportMap/index.d.ts.map +1 -0
- package/dist/bin/generateImportMap/index.js +129 -0
- package/dist/bin/generateImportMap/index.js.map +1 -0
- package/dist/bin/generateImportMap/iterateCollections.d.ts +12 -0
- package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -0
- package/dist/bin/generateImportMap/iterateCollections.js +41 -0
- package/dist/bin/generateImportMap/iterateCollections.js.map +1 -0
- package/dist/bin/generateImportMap/iterateConfig.d.ts +10 -0
- package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -0
- package/dist/bin/generateImportMap/iterateConfig.js +75 -0
- package/dist/bin/generateImportMap/iterateConfig.js.map +1 -0
- package/dist/bin/generateImportMap/iterateFields.d.ts +12 -0
- package/dist/bin/generateImportMap/iterateFields.d.ts.map +1 -0
- package/dist/bin/generateImportMap/iterateFields.js +56 -0
- package/dist/bin/generateImportMap/iterateFields.js.map +1 -0
- package/dist/bin/generateImportMap/iterateGlobals.d.ts +12 -0
- package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -0
- package/dist/bin/generateImportMap/iterateGlobals.js +34 -0
- package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -0
- package/dist/bin/generateImportMap/parsePayloadComponent.d.ts +6 -0
- package/dist/bin/generateImportMap/parsePayloadComponent.d.ts.map +1 -0
- package/dist/bin/generateImportMap/parsePayloadComponent.js +19 -0
- package/dist/bin/generateImportMap/parsePayloadComponent.js.map +1 -0
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +35 -4
- package/dist/bin/index.js.map +1 -1
- package/dist/collections/config/client.d.ts +32 -308
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +1 -73
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/types.d.ts +9 -9
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/config/client.d.ts +12 -6
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +1 -49
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +4 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +28 -2
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +111 -52
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/getLocalizedPaths.d.ts.map +1 -1
- package/dist/database/getLocalizedPaths.js +1 -1
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/exports/node.d.ts +0 -1
- package/dist/exports/node.d.ts.map +1 -1
- package/dist/exports/node.js +0 -1
- package/dist/exports/node.js.map +1 -1
- package/dist/exports/shared.d.ts +2 -1
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +2 -1
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/client.d.ts +3 -1642
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +1 -81
- 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 +23 -22
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/types.d.ts +385 -56
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +3 -0
- package/dist/fields/config/types.js.map +1 -1
- package/dist/globals/config/client.d.ts +26 -14
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +1 -47
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/types.d.ts +3 -3
- package/dist/globals/config/types.js.map +1 -1
- package/dist/index.d.ts +15 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +5 -2
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +10 -1
- package/dist/uploads/imageResizer.js.map +1 -1
- package/dist/uploads/types.d.ts +15 -0
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/utilities/fieldSchemaToJSON.d.ts +4 -4
- package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -1
- package/dist/utilities/fieldSchemaToJSON.js +0 -10
- package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
- package/dist/utilities/flattenTopLevelFields.d.ts +4 -3
- package/dist/utilities/flattenTopLevelFields.d.ts.map +1 -1
- package/dist/utilities/flattenTopLevelFields.js +12 -7
- package/dist/utilities/flattenTopLevelFields.js.map +1 -1
- package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
- package/dist/utilities/getEntityPolicies.js +12 -6
- package/dist/utilities/getEntityPolicies.js.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/versions/baseFields.js +1 -1
- package/dist/versions/baseFields.js.map +1 -1
- package/package.json +3 -10
- package/dist/admin/fields/index.d.ts +0 -65
- package/dist/admin/fields/index.d.ts.map +0 -1
- package/dist/admin/fields/index.js +0 -3
- package/dist/admin/fields/index.js.map +0 -1
- package/dist/admin/forms/FieldMap.d.ts +0 -23
- package/dist/admin/forms/FieldMap.d.ts.map +0 -1
- package/dist/admin/forms/FieldMap.js +0 -3
- package/dist/admin/forms/FieldMap.js.map +0 -1
- package/dist/admin/forms/FieldTypes.d.ts +0 -27
- package/dist/admin/forms/FieldTypes.d.ts.map +0 -1
- package/dist/admin/forms/FieldTypes.js +0 -3
- package/dist/admin/forms/FieldTypes.js.map +0 -1
- package/dist/bin/loader/clientExtensions.d.ts +0 -2
- package/dist/bin/loader/clientExtensions.d.ts.map +0 -1
- package/dist/bin/loader/clientExtensions.js +0 -13
- package/dist/bin/loader/clientExtensions.js.map +0 -1
- package/dist/bin/loader/compile.d.ts +0 -5
- package/dist/bin/loader/compile.d.ts.map +0 -1
- package/dist/bin/loader/compile.js +0 -27
- package/dist/bin/loader/compile.js.map +0 -1
- package/dist/bin/loader/ignores.d.ts +0 -2
- package/dist/bin/loader/ignores.d.ts.map +0 -1
- package/dist/bin/loader/ignores.js +0 -5
- package/dist/bin/loader/ignores.js.map +0 -1
- package/dist/bin/loader/index.d.ts +0 -34
- package/dist/bin/loader/index.d.ts.map +0 -1
- package/dist/bin/loader/index.js +0 -116
- package/dist/bin/loader/index.js.map +0 -1
- package/dist/bin/loader/read-default-tsconfig.d.ts +0 -29
- package/dist/bin/loader/read-default-tsconfig.d.ts.map +0 -1
- package/dist/bin/loader/read-default-tsconfig.js +0 -116
- package/dist/bin/loader/read-default-tsconfig.js.map +0 -1
- package/dist/bin/loader/resolveOriginalPath.d.ts +0 -10
- package/dist/bin/loader/resolveOriginalPath.d.ts.map +0 -1
- package/dist/bin/loader/resolveOriginalPath.js +0 -36
- package/dist/bin/loader/resolveOriginalPath.js.map +0 -1
- package/dist/utilities/importWithoutClientFiles.d.ts +0 -7
- package/dist/utilities/importWithoutClientFiles.d.ts.map +0 -1
- package/dist/utilities/importWithoutClientFiles.js +0 -47
- package/dist/utilities/importWithoutClientFiles.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/baseFields/verification.ts"],"sourcesContent":["import type { Field, FieldHook } from '../../fields/config/types.js'\n\nconst autoRemoveVerificationToken: FieldHook = ({ data, operation, originalDoc, value }) => {\n // If a user manually sets `_verified` to true,\n // and it was `false`, set _verificationToken to `null`.\n // This is useful because the admin panel\n // allows users to set `_verified` to true manually\n\n if (operation === 'update') {\n if (data?._verified === true && originalDoc?._verified === false) {\n return null\n }\n }\n\n return value\n}\n\nexport const verificationFields: Field[] = [\n {\n name: '_verified',\n type: 'checkbox',\n access: {\n create: ({ req: { user } }) => Boolean(user),\n read: ({ req: { user } }) => Boolean(user),\n update: ({ req: { user } }) => Boolean(user),\n },\n admin: {\n components: {\n Field:
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/baseFields/verification.ts"],"sourcesContent":["import type { Field, FieldHook } from '../../fields/config/types.js'\n\nconst autoRemoveVerificationToken: FieldHook = ({ data, operation, originalDoc, value }) => {\n // If a user manually sets `_verified` to true,\n // and it was `false`, set _verificationToken to `null`.\n // This is useful because the admin panel\n // allows users to set `_verified` to true manually\n\n if (operation === 'update') {\n if (data?._verified === true && originalDoc?._verified === false) {\n return null\n }\n }\n\n return value\n}\n\nexport const verificationFields: Field[] = [\n {\n name: '_verified',\n type: 'checkbox',\n access: {\n create: ({ req: { user } }) => Boolean(user),\n read: ({ req: { user } }) => Boolean(user),\n update: ({ req: { user } }) => Boolean(user),\n },\n admin: {\n components: {\n Field: '@payloadcms/ui/shared#emptyComponent',\n },\n },\n label: ({ t }) => t('authentication:verified'),\n },\n {\n name: '_verificationToken',\n type: 'text',\n hidden: true,\n hooks: {\n beforeChange: [autoRemoveVerificationToken],\n },\n },\n] as Field[]\n"],"names":["autoRemoveVerificationToken","data","operation","originalDoc","value","_verified","verificationFields","name","type","access","create","req","user","Boolean","read","update","admin","components","Field","label","t","hidden","hooks","beforeChange"],"mappings":"AAEA,MAAMA,8BAAyC,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,WAAW,EAAEC,KAAK,EAAE;IACrF,+CAA+C;IAC/C,wDAAwD;IACxD,yCAAyC;IACzC,mDAAmD;IAEnD,IAAIF,cAAc,UAAU;QAC1B,IAAID,MAAMI,cAAc,QAAQF,aAAaE,cAAc,OAAO;YAChE,OAAO;QACT;IACF;IAEA,OAAOD;AACT;AAEA,OAAO,MAAME,qBAA8B;IACzC;QACEC,MAAM;QACNC,MAAM;QACNC,QAAQ;YACNC,QAAQ,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAE,EAAE,GAAKC,QAAQD;YACvCE,MAAM,CAAC,EAAEH,KAAK,EAAEC,IAAI,EAAE,EAAE,GAAKC,QAAQD;YACrCG,QAAQ,CAAC,EAAEJ,KAAK,EAAEC,IAAI,EAAE,EAAE,GAAKC,QAAQD;QACzC;QACAI,OAAO;YACLC,YAAY;gBACVC,OAAO;YACT;QACF;QACAC,OAAO,CAAC,EAAEC,CAAC,EAAE,GAAKA,EAAE;IACtB;IACA;QACEb,MAAM;QACNC,MAAM;QACNa,QAAQ;QACRC,OAAO;YACLC,cAAc;gBAACvB;aAA4B;QAC7C;IACF;CACD,CAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/jwt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAQ,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/jwt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAQ,MAAM,aAAa,CAAA;AAiE7D,eAAO,MAAM,iBAAiB,EAAE,oBA2C/B,CAAA"}
|
|
@@ -1,38 +1,59 @@
|
|
|
1
1
|
import jwt from 'jsonwebtoken';
|
|
2
2
|
import { extractJWT } from '../extractJWT.js';
|
|
3
|
+
async function autoLogin({ isGraphQL, payload }) {
|
|
4
|
+
if (typeof payload?.config?.admin?.autoLogin !== 'object' || payload.config.admin?.autoLogin.prefillOnly || !payload?.config?.admin?.autoLogin || !payload.config.admin?.autoLogin.email && !payload.config.admin?.autoLogin.username) {
|
|
5
|
+
return {
|
|
6
|
+
user: null
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
const collection = payload.collections[payload.config.admin.user];
|
|
10
|
+
const where = {
|
|
11
|
+
or: []
|
|
12
|
+
};
|
|
13
|
+
if (payload.config.admin?.autoLogin.email) {
|
|
14
|
+
where.or.push({
|
|
15
|
+
email: {
|
|
16
|
+
equals: payload.config.admin?.autoLogin.email
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
} else if (payload.config.admin?.autoLogin.username) {
|
|
20
|
+
where.or.push({
|
|
21
|
+
username: {
|
|
22
|
+
equals: payload.config.admin?.autoLogin.username
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const user = (await payload.find({
|
|
27
|
+
collection: collection.config.slug,
|
|
28
|
+
depth: isGraphQL ? 0 : collection.config.auth.depth,
|
|
29
|
+
where
|
|
30
|
+
})).docs[0];
|
|
31
|
+
if (!user) {
|
|
32
|
+
return {
|
|
33
|
+
user: null
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
user.collection = collection.config.slug;
|
|
37
|
+
user._strategy = 'local-jwt';
|
|
38
|
+
return {
|
|
39
|
+
user: user
|
|
40
|
+
};
|
|
41
|
+
}
|
|
3
42
|
export const JWTAuthentication = async ({ headers, isGraphQL = false, payload })=>{
|
|
4
43
|
try {
|
|
5
44
|
const token = extractJWT({
|
|
6
45
|
headers,
|
|
7
46
|
payload
|
|
8
47
|
});
|
|
9
|
-
if (!token
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (payload.config.admin?.autoLogin.email) {
|
|
15
|
-
where.or.push({
|
|
16
|
-
email: {
|
|
17
|
-
equals: payload.config.admin?.autoLogin.email
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
} else if (payload.config.admin?.autoLogin.username) {
|
|
21
|
-
where.or.push({
|
|
22
|
-
username: {
|
|
23
|
-
equals: payload.config.admin?.autoLogin.username
|
|
24
|
-
}
|
|
48
|
+
if (!token) {
|
|
49
|
+
if (headers.get('DisableAutologin') !== 'true') {
|
|
50
|
+
return await autoLogin({
|
|
51
|
+
isGraphQL,
|
|
52
|
+
payload
|
|
25
53
|
});
|
|
26
54
|
}
|
|
27
|
-
const user = (await payload.find({
|
|
28
|
-
collection: collection.config.slug,
|
|
29
|
-
depth: isGraphQL ? 0 : collection.config.auth.depth,
|
|
30
|
-
where
|
|
31
|
-
})).docs[0];
|
|
32
|
-
user.collection = collection.config.slug;
|
|
33
|
-
user._strategy = 'local-jwt';
|
|
34
55
|
return {
|
|
35
|
-
user:
|
|
56
|
+
user: null
|
|
36
57
|
};
|
|
37
58
|
}
|
|
38
59
|
const decodedPayload = jwt.verify(token, payload.secret);
|
|
@@ -49,11 +70,23 @@ export const JWTAuthentication = async ({ headers, isGraphQL = false, payload })
|
|
|
49
70
|
user: user
|
|
50
71
|
};
|
|
51
72
|
} else {
|
|
73
|
+
if (headers.get('DisableAutologin') !== 'true') {
|
|
74
|
+
return await autoLogin({
|
|
75
|
+
isGraphQL,
|
|
76
|
+
payload
|
|
77
|
+
});
|
|
78
|
+
}
|
|
52
79
|
return {
|
|
53
80
|
user: null
|
|
54
81
|
};
|
|
55
82
|
}
|
|
56
83
|
} catch (error) {
|
|
84
|
+
if (headers.get('DisableAutologin') !== 'true') {
|
|
85
|
+
return await autoLogin({
|
|
86
|
+
isGraphQL,
|
|
87
|
+
payload
|
|
88
|
+
});
|
|
89
|
+
}
|
|
57
90
|
return {
|
|
58
91
|
user: null
|
|
59
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/strategies/jwt.ts"],"sourcesContent":["import jwt from 'jsonwebtoken'\n\nimport type { Payload, Where } from '../../types/index.js'\nimport type { AuthStrategyFunction, User } from '../index.js'\n\nimport { extractJWT } from '../extractJWT.js'\n\ntype JWTToken = {\n collection: string\n id: string\n}\n\nasync function autoLogin({\n isGraphQL,\n payload,\n}: {\n isGraphQL: boolean\n payload: Payload\n}): Promise<{\n user: User | null\n}> {\n if (\n typeof payload?.config?.admin?.autoLogin !== 'object' ||\n payload.config.admin?.autoLogin.prefillOnly ||\n !payload?.config?.admin?.autoLogin ||\n (!payload.config.admin?.autoLogin.email && !payload.config.admin?.autoLogin.username)\n ) {\n return { user: null }\n }\n\n const collection = payload.collections[payload.config.admin.user]\n\n const where: Where = {\n or: [],\n }\n if (payload.config.admin?.autoLogin.email) {\n where.or.push({\n email: {\n equals: payload.config.admin?.autoLogin.email,\n },\n })\n } else if (payload.config.admin?.autoLogin.username) {\n where.or.push({\n username: {\n equals: payload.config.admin?.autoLogin.username,\n },\n })\n }\n\n const user = (\n await payload.find({\n collection: collection.config.slug,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n where,\n })\n ).docs[0]\n\n if (!user) {\n return { user: null }\n }\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n\n return {\n user: user as User,\n }\n}\n\nexport const JWTAuthentication: AuthStrategyFunction = async ({\n headers,\n isGraphQL = false,\n payload,\n}) => {\n try {\n const token = extractJWT({ headers, payload })\n\n if (!token) {\n if (headers.get('DisableAutologin') !== 'true') {\n return await autoLogin({ isGraphQL, payload })\n }\n return { user: null }\n }\n\n const decodedPayload = jwt.verify(token, payload.secret) as JWTToken & jwt.JwtPayload\n\n const collection = payload.collections[decodedPayload.collection]\n\n const user = await payload.findByID({\n id: decodedPayload.id,\n collection: decodedPayload.collection,\n depth: isGraphQL ? 0 : collection.config.auth.depth,\n })\n\n if (user && (!collection.config.auth.verify || user._verified)) {\n user.collection = collection.config.slug\n user._strategy = 'local-jwt'\n return {\n user: user as User,\n }\n } else {\n if (headers.get('DisableAutologin') !== 'true') {\n return await autoLogin({ isGraphQL, payload })\n }\n return { user: null }\n }\n } catch (error) {\n if (headers.get('DisableAutologin') !== 'true') {\n return await autoLogin({ isGraphQL, payload })\n }\n return { user: null }\n }\n}\n"],"names":["jwt","extractJWT","autoLogin","isGraphQL","payload","config","admin","prefillOnly","email","username","user","collection","collections","where","or","push","equals","find","slug","depth","auth","docs","_strategy","JWTAuthentication","headers","token","get","decodedPayload","verify","secret","findByID","id","_verified","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/local/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,yBAAyB,CAAA;AAKpE,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,CAAA;IACrC,GAAG,EAAE,UAAU,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,qBAAqB,iDAM/B,IAAI,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsExC,CAAA"}
|
|
@@ -2,21 +2,39 @@ import { ValidationError } from '../../../errors/index.js';
|
|
|
2
2
|
import { generatePasswordSaltHash } from './generatePasswordSaltHash.js';
|
|
3
3
|
export const registerLocalStrategy = async ({ collection, doc, password, payload, req })=>{
|
|
4
4
|
const loginWithUsername = collection?.auth?.loginWithUsername;
|
|
5
|
+
let whereConstraint;
|
|
6
|
+
if (!loginWithUsername) {
|
|
7
|
+
whereConstraint = {
|
|
8
|
+
email: {
|
|
9
|
+
equals: doc.email
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
} else {
|
|
13
|
+
whereConstraint = {
|
|
14
|
+
or: []
|
|
15
|
+
};
|
|
16
|
+
if (doc.email) {
|
|
17
|
+
whereConstraint.or.push({
|
|
18
|
+
email: {
|
|
19
|
+
equals: doc.email
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (doc.username) {
|
|
24
|
+
whereConstraint.or.push({
|
|
25
|
+
username: {
|
|
26
|
+
equals: doc.username
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
5
31
|
const existingUser = await payload.find({
|
|
6
32
|
collection: collection.slug,
|
|
7
33
|
depth: 0,
|
|
8
34
|
limit: 1,
|
|
9
35
|
pagination: false,
|
|
10
36
|
req,
|
|
11
|
-
where:
|
|
12
|
-
username: {
|
|
13
|
-
equals: doc.username
|
|
14
|
-
}
|
|
15
|
-
} : {
|
|
16
|
-
email: {
|
|
17
|
-
equals: doc.email
|
|
18
|
-
}
|
|
19
|
-
}
|
|
37
|
+
where: whereConstraint
|
|
20
38
|
});
|
|
21
39
|
if (existingUser.docs.length > 0) {
|
|
22
40
|
throw new ValidationError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { JsonObject, Payload } from '../../../index.js'\nimport type { PayloadRequest } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: JsonObject\n password: string\n payload: Payload\n req: PayloadRequest\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const loginWithUsername = collection?.auth?.loginWithUsername\n\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/auth/strategies/local/register.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { JsonObject, Payload } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { generatePasswordSaltHash } from './generatePasswordSaltHash.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig\n doc: JsonObject\n password: string\n payload: Payload\n req: PayloadRequest\n}\n\nexport const registerLocalStrategy = async ({\n collection,\n doc,\n password,\n payload,\n req,\n}: Args): Promise<Record<string, unknown>> => {\n const loginWithUsername = collection?.auth?.loginWithUsername\n\n let whereConstraint: Where\n\n if (!loginWithUsername) {\n whereConstraint = {\n email: {\n equals: doc.email,\n },\n }\n } else {\n whereConstraint = {\n or: [],\n }\n\n if (doc.email) {\n whereConstraint.or.push({\n email: {\n equals: doc.email,\n },\n })\n }\n\n if (doc.username) {\n whereConstraint.or.push({\n username: {\n equals: doc.username,\n },\n })\n }\n }\n\n const existingUser = await payload.find({\n collection: collection.slug,\n depth: 0,\n limit: 1,\n pagination: false,\n req,\n where: whereConstraint,\n })\n\n if (existingUser.docs.length > 0) {\n throw new ValidationError({\n collection: collection.slug,\n errors: [\n loginWithUsername\n ? {\n field: 'username',\n message: req.t('error:usernameAlreadyRegistered'),\n }\n : { field: 'email', message: req.t('error:userEmailAlreadyRegistered') },\n ],\n })\n }\n\n const { hash, salt } = await generatePasswordSaltHash({ collection, password, req })\n\n const sanitizedDoc = { ...doc }\n if (sanitizedDoc.password) delete sanitizedDoc.password\n\n return payload.db.create({\n collection: collection.slug,\n data: {\n ...sanitizedDoc,\n hash,\n salt,\n },\n req,\n })\n}\n"],"names":["ValidationError","generatePasswordSaltHash","registerLocalStrategy","collection","doc","password","payload","req","loginWithUsername","auth","whereConstraint","email","equals","or","push","username","existingUser","find","slug","depth","limit","pagination","where","docs","length","errors","field","message","t","hash","salt","sanitizedDoc","db","create","data"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,wBAAwB,QAAQ,gCAA+B;AAUxE,OAAO,MAAMC,wBAAwB,OAAO,EAC1CC,UAAU,EACVC,GAAG,EACHC,QAAQ,EACRC,OAAO,EACPC,GAAG,EACE;IACL,MAAMC,oBAAoBL,YAAYM,MAAMD;IAE5C,IAAIE;IAEJ,IAAI,CAACF,mBAAmB;QACtBE,kBAAkB;YAChBC,OAAO;gBACLC,QAAQR,IAAIO,KAAK;YACnB;QACF;IACF,OAAO;QACLD,kBAAkB;YAChBG,IAAI,EAAE;QACR;QAEA,IAAIT,IAAIO,KAAK,EAAE;YACbD,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBH,OAAO;oBACLC,QAAQR,IAAIO,KAAK;gBACnB;YACF;QACF;QAEA,IAAIP,IAAIW,QAAQ,EAAE;YAChBL,gBAAgBG,EAAE,CAACC,IAAI,CAAC;gBACtBC,UAAU;oBACRH,QAAQR,IAAIW,QAAQ;gBACtB;YACF;QACF;IACF;IAEA,MAAMC,eAAe,MAAMV,QAAQW,IAAI,CAAC;QACtCd,YAAYA,WAAWe,IAAI;QAC3BC,OAAO;QACPC,OAAO;QACPC,YAAY;QACZd;QACAe,OAAOZ;IACT;IAEA,IAAIM,aAAaO,IAAI,CAACC,MAAM,GAAG,GAAG;QAChC,MAAM,IAAIxB,gBAAgB;YACxBG,YAAYA,WAAWe,IAAI;YAC3BO,QAAQ;gBACNjB,oBACI;oBACEkB,OAAO;oBACPC,SAASpB,IAAIqB,CAAC,CAAC;gBACjB,IACA;oBAAEF,OAAO;oBAASC,SAASpB,IAAIqB,CAAC,CAAC;gBAAoC;aAC1E;QACH;IACF;IAEA,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAG,MAAM7B,yBAAyB;QAAEE;QAAYE;QAAUE;IAAI;IAElF,MAAMwB,eAAe;QAAE,GAAG3B,GAAG;IAAC;IAC9B,IAAI2B,aAAa1B,QAAQ,EAAE,OAAO0B,aAAa1B,QAAQ;IAEvD,OAAOC,QAAQ0B,EAAE,CAACC,MAAM,CAAC;QACvB9B,YAAYA,WAAWe,IAAI;QAC3BgB,MAAM;YACJ,GAAGH,YAAY;YACfF;YACAC;QACF;QACAvB;IACF;AACF,EAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { PayloadComponent, SanitizedConfig } from '../../config/types.js';
|
|
2
|
+
type ImportIdentifier = string;
|
|
3
|
+
type ImportSpecifier = string;
|
|
4
|
+
type ImportPath = string;
|
|
5
|
+
type UserImportPath = string;
|
|
6
|
+
/**
|
|
7
|
+
* Import Map before being written to the file. Only contains all paths
|
|
8
|
+
*/
|
|
9
|
+
export type InternalImportMap = {
|
|
10
|
+
[path: UserImportPath]: ImportIdentifier;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Imports of the import map.
|
|
14
|
+
*/
|
|
15
|
+
export type Imports = {
|
|
16
|
+
[identifier: ImportIdentifier]: {
|
|
17
|
+
path: ImportPath;
|
|
18
|
+
specifier: ImportSpecifier;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Import Map after being imported from the actual import map. Contains all the actual imported components
|
|
23
|
+
*/
|
|
24
|
+
export type ImportMap = {
|
|
25
|
+
[path: UserImportPath]: any;
|
|
26
|
+
};
|
|
27
|
+
export declare function addPayloadComponentToImportMap({ baseDir, importMap, imports, payloadComponent, }: {
|
|
28
|
+
baseDir: string;
|
|
29
|
+
importMap: InternalImportMap;
|
|
30
|
+
imports: Imports;
|
|
31
|
+
payloadComponent: PayloadComponent;
|
|
32
|
+
}): void;
|
|
33
|
+
export type AddToImportMap = (payloadComponent: PayloadComponent | PayloadComponent[]) => void;
|
|
34
|
+
export declare function generateImportMap(config: SanitizedConfig, options?: {
|
|
35
|
+
force?: boolean;
|
|
36
|
+
log: boolean;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
export declare function writeImportMap({ componentMap, fileName, force, importMap, log, rootDir, }: {
|
|
39
|
+
componentMap: InternalImportMap;
|
|
40
|
+
fileName: string;
|
|
41
|
+
force?: boolean;
|
|
42
|
+
importMap: Imports;
|
|
43
|
+
log?: boolean;
|
|
44
|
+
rootDir: string;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAK9E,KAAK,gBAAgB,GAAG,MAAM,CAAA;AAC9B,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,KAAK,UAAU,GAAG,MAAM,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,UAAU,EAAE,gBAAgB,GAAG;QAC9B,IAAI,EAAE,UAAU,CAAA;QAChB,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAA;CAC5B,CAAA;AAED,wBAAgB,8BAA8B,CAAC,EAC7C,OAAO,EACP,SAAS,EACT,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,QAwBA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,KAAK,IAAI,CAAA;AAE9F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,EACH,OAAO,GACR,EAAE;IACD,YAAY,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,iBAgDA"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { iterateConfig } from './iterateConfig.js';
|
|
5
|
+
import { parsePayloadComponent } from './parsePayloadComponent.js';
|
|
6
|
+
export function addPayloadComponentToImportMap({ baseDir, importMap, imports, payloadComponent }) {
|
|
7
|
+
if (!payloadComponent) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const { exportName, path: componentPath } = parsePayloadComponent(payloadComponent);
|
|
11
|
+
if (importMap[componentPath + '#' + exportName]) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const importIdentifier = exportName + '_' + Object.keys(imports).length;
|
|
15
|
+
// e.g. if baseDir is /test/fields and componentPath is /components/Field.tsx
|
|
16
|
+
// then path needs to be /test/fields/components/Field.tsx NOT /users/username/project/test/fields/components/Field.tsx
|
|
17
|
+
// so we need to append baseDir to componentPath
|
|
18
|
+
imports[importIdentifier] = {
|
|
19
|
+
path: componentPath.startsWith('.') || componentPath.startsWith('/') ? path.join(baseDir, componentPath.slice(1)) : componentPath,
|
|
20
|
+
specifier: exportName
|
|
21
|
+
};
|
|
22
|
+
importMap[componentPath + '#' + exportName] = importIdentifier;
|
|
23
|
+
}
|
|
24
|
+
export async function generateImportMap(config, options) {
|
|
25
|
+
const shouldLog = options?.log ?? true;
|
|
26
|
+
if (shouldLog) {
|
|
27
|
+
console.log('Generating import map');
|
|
28
|
+
}
|
|
29
|
+
const importMap = {};
|
|
30
|
+
const imports = {};
|
|
31
|
+
const rootDir = process.env.ROOT_DIR ?? process.cwd();
|
|
32
|
+
// get componentsBaseDir.
|
|
33
|
+
// E.g.:
|
|
34
|
+
// config.admin.importMap.baseDir = /test/fields/
|
|
35
|
+
// rootDir: /
|
|
36
|
+
// componentsBaseDir = /test/fields/
|
|
37
|
+
// or
|
|
38
|
+
// E.g.:
|
|
39
|
+
// config.admin.importMap.baseDir = /test/fields/
|
|
40
|
+
// rootDir: /test
|
|
41
|
+
// componentsBaseDir = /fields/
|
|
42
|
+
// or
|
|
43
|
+
// config.admin.importMap.baseDir = /
|
|
44
|
+
// rootDir: /
|
|
45
|
+
// componentsBaseDir = /
|
|
46
|
+
const componentsBaseDir = path.relative(rootDir, config.admin.importMap.baseDir);
|
|
47
|
+
const addToImportMap = (payloadComponent)=>{
|
|
48
|
+
if (!payloadComponent) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {
|
|
52
|
+
console.error(payloadComponent);
|
|
53
|
+
throw new Error('addToImportMap > Payload component must be an object or a string');
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(payloadComponent)) {
|
|
56
|
+
for (const component of payloadComponent){
|
|
57
|
+
addPayloadComponentToImportMap({
|
|
58
|
+
baseDir: componentsBaseDir,
|
|
59
|
+
importMap,
|
|
60
|
+
imports,
|
|
61
|
+
payloadComponent: component
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
addPayloadComponentToImportMap({
|
|
66
|
+
baseDir: componentsBaseDir,
|
|
67
|
+
importMap,
|
|
68
|
+
imports,
|
|
69
|
+
payloadComponent
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
iterateConfig({
|
|
74
|
+
addToImportMap,
|
|
75
|
+
baseDir: config.admin.importMap.baseDir,
|
|
76
|
+
config,
|
|
77
|
+
importMap,
|
|
78
|
+
imports
|
|
79
|
+
});
|
|
80
|
+
await writeImportMap({
|
|
81
|
+
componentMap: importMap,
|
|
82
|
+
fileName: 'importMap.js',
|
|
83
|
+
force: options?.force,
|
|
84
|
+
importMap: imports,
|
|
85
|
+
log: shouldLog,
|
|
86
|
+
rootDir
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export async function writeImportMap({ componentMap, fileName, force, importMap, log, rootDir }) {
|
|
90
|
+
let importMapFolderPath = '';
|
|
91
|
+
if (fs.existsSync(path.resolve(rootDir, 'app/(payload)/admin/'))) {
|
|
92
|
+
importMapFolderPath = path.resolve(rootDir, 'app/(payload)/admin/');
|
|
93
|
+
} else if (fs.existsSync(path.resolve(rootDir, 'src/app/(payload)/admin/'))) {
|
|
94
|
+
importMapFolderPath = path.resolve(rootDir, 'src/app/(payload)/admin/');
|
|
95
|
+
} else {
|
|
96
|
+
throw new Error(`Could not find the payload admin directory. Looked in ${path.resolve(rootDir, 'app/(payload)/admin/')} and ${path.resolve(rootDir, 'src/app/(payload)/admin/')}`);
|
|
97
|
+
}
|
|
98
|
+
const imports = [];
|
|
99
|
+
for (const [identifier, { path, specifier }] of Object.entries(importMap)){
|
|
100
|
+
imports.push(`import { ${specifier} as ${identifier} } from '${path}'`);
|
|
101
|
+
}
|
|
102
|
+
const mapKeys = [];
|
|
103
|
+
for (const [userPath, identifier] of Object.entries(componentMap)){
|
|
104
|
+
mapKeys.push(` "${userPath}": ${identifier}`);
|
|
105
|
+
}
|
|
106
|
+
const importMapOutputFile = `${imports.join('\n')}
|
|
107
|
+
|
|
108
|
+
export const importMap = {
|
|
109
|
+
${mapKeys.join(',\n')}
|
|
110
|
+
}
|
|
111
|
+
`;
|
|
112
|
+
const importMapFilePath = path.resolve(importMapFolderPath, fileName);
|
|
113
|
+
if (!force) {
|
|
114
|
+
// Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.
|
|
115
|
+
const currentImportMap = await fs.promises.readFile(importMapFilePath, 'utf-8');
|
|
116
|
+
if (currentImportMap?.trim() === importMapOutputFile?.trim()) {
|
|
117
|
+
if (log) {
|
|
118
|
+
console.log('No new imports found, skipping writing import map');
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (log) {
|
|
124
|
+
console.log('Writing import map to', importMapFilePath);
|
|
125
|
+
}
|
|
126
|
+
await fs.promises.writeFile(importMapFilePath, importMapOutputFile);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bin/generateImportMap/index.ts"],"sourcesContent":["import type React from 'react'\n\nimport fs from 'fs'\nimport process from 'node:process'\nimport path from 'path'\n\nimport type { PayloadComponent, SanitizedConfig } from '../../config/types.js'\n\nimport { iterateConfig } from './iterateConfig.js'\nimport { parsePayloadComponent } from './parsePayloadComponent.js'\n\ntype ImportIdentifier = string\ntype ImportSpecifier = string\ntype ImportPath = string\ntype UserImportPath = string\n\n/**\n * Import Map before being written to the file. Only contains all paths\n */\nexport type InternalImportMap = {\n [path: UserImportPath]: ImportIdentifier\n}\n\n/**\n * Imports of the import map.\n */\nexport type Imports = {\n [identifier: ImportIdentifier]: {\n path: ImportPath\n specifier: ImportSpecifier\n }\n}\n\n/**\n * Import Map after being imported from the actual import map. Contains all the actual imported components\n */\nexport type ImportMap = {\n [path: UserImportPath]: any\n}\n\nexport function addPayloadComponentToImportMap({\n baseDir,\n importMap,\n imports,\n payloadComponent,\n}: {\n baseDir: string\n importMap: InternalImportMap\n imports: Imports\n payloadComponent: PayloadComponent\n}) {\n if (!payloadComponent) {\n return\n }\n const { exportName, path: componentPath } = parsePayloadComponent(payloadComponent)\n\n if (importMap[componentPath + '#' + exportName]) {\n return\n }\n\n const importIdentifier = exportName + '_' + Object.keys(imports).length\n\n // e.g. if baseDir is /test/fields and componentPath is /components/Field.tsx\n // then path needs to be /test/fields/components/Field.tsx NOT /users/username/project/test/fields/components/Field.tsx\n // so we need to append baseDir to componentPath\n\n imports[importIdentifier] = {\n path:\n componentPath.startsWith('.') || componentPath.startsWith('/')\n ? path.join(baseDir, componentPath.slice(1))\n : componentPath,\n specifier: exportName,\n }\n importMap[componentPath + '#' + exportName] = importIdentifier\n}\n\nexport type AddToImportMap = (payloadComponent: PayloadComponent | PayloadComponent[]) => void\n\nexport async function generateImportMap(\n config: SanitizedConfig,\n options?: { force?: boolean; log: boolean },\n): Promise<void> {\n const shouldLog = options?.log ?? true\n\n if (shouldLog) {\n console.log('Generating import map')\n }\n const importMap: InternalImportMap = {}\n const imports: Imports = {}\n\n const rootDir = process.env.ROOT_DIR ?? process.cwd()\n\n // get componentsBaseDir.\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /\n // componentsBaseDir = /test/fields/\n\n // or\n\n // E.g.:\n // config.admin.importMap.baseDir = /test/fields/\n // rootDir: /test\n // componentsBaseDir = /fields/\n\n // or\n // config.admin.importMap.baseDir = /\n // rootDir: /\n // componentsBaseDir = /\n\n const componentsBaseDir = path.relative(rootDir, config.admin.importMap.baseDir)\n\n const addToImportMap: AddToImportMap = (payloadComponent) => {\n if (!payloadComponent) {\n return\n }\n\n if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {\n console.error(payloadComponent)\n throw new Error('addToImportMap > Payload component must be an object or a string')\n }\n\n if (Array.isArray(payloadComponent)) {\n for (const component of payloadComponent) {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent: component,\n })\n }\n } else {\n addPayloadComponentToImportMap({\n baseDir: componentsBaseDir,\n importMap,\n imports,\n payloadComponent,\n })\n }\n }\n\n iterateConfig({\n addToImportMap,\n baseDir: config.admin.importMap.baseDir,\n config,\n importMap,\n imports,\n })\n\n await writeImportMap({\n componentMap: importMap,\n fileName: 'importMap.js',\n force: options?.force,\n importMap: imports,\n log: shouldLog,\n rootDir,\n })\n}\n\nexport async function writeImportMap({\n componentMap,\n fileName,\n force,\n importMap,\n log,\n rootDir,\n}: {\n componentMap: InternalImportMap\n fileName: string\n force?: boolean\n importMap: Imports\n log?: boolean\n rootDir: string\n}) {\n let importMapFolderPath = ''\n if (fs.existsSync(path.resolve(rootDir, 'app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'app/(payload)/admin/')\n } else if (fs.existsSync(path.resolve(rootDir, 'src/app/(payload)/admin/'))) {\n importMapFolderPath = path.resolve(rootDir, 'src/app/(payload)/admin/')\n } else {\n throw new Error(\n `Could not find the payload admin directory. Looked in ${path.resolve(rootDir, 'app/(payload)/admin/')} and ${path.resolve(rootDir, 'src/app/(payload)/admin/')}`,\n )\n }\n\n const imports: string[] = []\n for (const [identifier, { path, specifier }] of Object.entries(importMap)) {\n imports.push(`import { ${specifier} as ${identifier} } from '${path}'`)\n }\n\n const mapKeys: string[] = []\n for (const [userPath, identifier] of Object.entries(componentMap)) {\n mapKeys.push(` \"${userPath}\": ${identifier}`)\n }\n\n const importMapOutputFile = `${imports.join('\\n')}\n\nexport const importMap = {\n${mapKeys.join(',\\n')}\n}\n`\n\n const importMapFilePath = path.resolve(importMapFolderPath, fileName)\n\n if (!force) {\n // Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.\n const currentImportMap = await fs.promises.readFile(importMapFilePath, 'utf-8')\n\n if (currentImportMap?.trim() === importMapOutputFile?.trim()) {\n if (log) {\n console.log('No new imports found, skipping writing import map')\n }\n return\n }\n }\n\n if (log) {\n console.log('Writing import map to', importMapFilePath)\n }\n\n await fs.promises.writeFile(importMapFilePath, importMapOutputFile)\n}\n"],"names":["fs","process","path","iterateConfig","parsePayloadComponent","addPayloadComponentToImportMap","baseDir","importMap","imports","payloadComponent","exportName","componentPath","importIdentifier","Object","keys","length","startsWith","join","slice","specifier","generateImportMap","config","options","shouldLog","log","console","rootDir","env","ROOT_DIR","cwd","componentsBaseDir","relative","admin","addToImportMap","error","Error","Array","isArray","component","writeImportMap","componentMap","fileName","force","importMapFolderPath","existsSync","resolve","identifier","entries","push","mapKeys","userPath","importMapOutputFile","importMapFilePath","currentImportMap","promises","readFile","trim","writeFile"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SanitizedCollectionConfig } from '../../collections/config/types.js';
|
|
2
|
+
import type { SanitizedConfig } from '../../config/types.js';
|
|
3
|
+
import type { AddToImportMap, Imports, InternalImportMap } from './index.js';
|
|
4
|
+
export declare function iterateCollections({ addToImportMap, baseDir, collections, config, importMap, imports, }: {
|
|
5
|
+
addToImportMap: AddToImportMap;
|
|
6
|
+
baseDir: string;
|
|
7
|
+
collections: SanitizedCollectionConfig[];
|
|
8
|
+
config: SanitizedConfig;
|
|
9
|
+
importMap: InternalImportMap;
|
|
10
|
+
imports: Imports;
|
|
11
|
+
}): void;
|
|
12
|
+
//# sourceMappingURL=iterateCollections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterateCollections.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI5E,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,OAAO,EACP,WAAW,EACX,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB,QA2CA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { genImportMapIterateFields } from './iterateFields.js';
|
|
2
|
+
export function iterateCollections({ addToImportMap, baseDir, collections, config, importMap, imports }) {
|
|
3
|
+
for (const collection of collections){
|
|
4
|
+
genImportMapIterateFields({
|
|
5
|
+
addToImportMap,
|
|
6
|
+
baseDir,
|
|
7
|
+
config,
|
|
8
|
+
fields: collection.fields,
|
|
9
|
+
importMap,
|
|
10
|
+
imports
|
|
11
|
+
});
|
|
12
|
+
addToImportMap(collection.admin?.components?.afterList);
|
|
13
|
+
addToImportMap(collection.admin?.components?.afterListTable);
|
|
14
|
+
addToImportMap(collection.admin?.components?.beforeList);
|
|
15
|
+
addToImportMap(collection.admin?.components?.beforeListTable);
|
|
16
|
+
addToImportMap(collection.admin?.components?.edit?.Description);
|
|
17
|
+
addToImportMap(collection.admin?.components?.edit?.PreviewButton);
|
|
18
|
+
addToImportMap(collection.admin?.components?.edit?.PublishButton);
|
|
19
|
+
addToImportMap(collection.admin?.components?.edit?.SaveButton);
|
|
20
|
+
addToImportMap(collection.admin?.components?.edit?.SaveDraftButton);
|
|
21
|
+
addToImportMap(collection.admin?.components?.edit?.Upload);
|
|
22
|
+
if (collection.admin?.components?.views?.edit) {
|
|
23
|
+
for (const editViewConfig of Object.values(collection.admin?.components?.views?.edit)){
|
|
24
|
+
if ('Component' in editViewConfig) {
|
|
25
|
+
addToImportMap(editViewConfig?.Component);
|
|
26
|
+
}
|
|
27
|
+
if ('actions' in editViewConfig) {
|
|
28
|
+
addToImportMap(editViewConfig?.actions);
|
|
29
|
+
}
|
|
30
|
+
if ('tab' in editViewConfig) {
|
|
31
|
+
addToImportMap(editViewConfig?.tab?.Component);
|
|
32
|
+
addToImportMap(editViewConfig?.tab?.Pill);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
addToImportMap(collection.admin?.components?.views?.list?.Component);
|
|
37
|
+
addToImportMap(collection.admin?.components?.views?.list?.actions);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=iterateCollections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { SanitizedConfig } from '../../config/types.js'\nimport type { AddToImportMap, Imports, InternalImportMap } from './index.js'\n\nimport { genImportMapIterateFields } from './iterateFields.js'\n\nexport function iterateCollections({\n addToImportMap,\n baseDir,\n collections,\n config,\n importMap,\n imports,\n}: {\n addToImportMap: AddToImportMap\n baseDir: string\n collections: SanitizedCollectionConfig[]\n config: SanitizedConfig\n importMap: InternalImportMap\n imports: Imports\n}) {\n for (const collection of collections) {\n genImportMapIterateFields({\n addToImportMap,\n baseDir,\n config,\n fields: collection.fields,\n importMap,\n imports,\n })\n\n addToImportMap(collection.admin?.components?.afterList)\n addToImportMap(collection.admin?.components?.afterListTable)\n addToImportMap(collection.admin?.components?.beforeList)\n addToImportMap(collection.admin?.components?.beforeListTable)\n\n addToImportMap(collection.admin?.components?.edit?.Description)\n addToImportMap(collection.admin?.components?.edit?.PreviewButton)\n addToImportMap(collection.admin?.components?.edit?.PublishButton)\n addToImportMap(collection.admin?.components?.edit?.SaveButton)\n addToImportMap(collection.admin?.components?.edit?.SaveDraftButton)\n addToImportMap(collection.admin?.components?.edit?.Upload)\n\n if (collection.admin?.components?.views?.edit) {\n for (const editViewConfig of Object.values(collection.admin?.components?.views?.edit)) {\n if ('Component' in editViewConfig) {\n addToImportMap(editViewConfig?.Component)\n }\n\n if ('actions' in editViewConfig) {\n addToImportMap(editViewConfig?.actions)\n }\n\n if ('tab' in editViewConfig) {\n addToImportMap(editViewConfig?.tab?.Component)\n addToImportMap(editViewConfig?.tab?.Pill)\n }\n }\n }\n\n addToImportMap(collection.admin?.components?.views?.list?.Component)\n addToImportMap(collection.admin?.components?.views?.list?.actions)\n }\n}\n"],"names":["genImportMapIterateFields","iterateCollections","addToImportMap","baseDir","collections","config","importMap","imports","collection","fields","admin","components","afterList","afterListTable","beforeList","beforeListTable","edit","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Upload","views","editViewConfig","Object","values","Component","actions","tab","Pill","list"],"mappings":"AAIA,SAASA,yBAAyB,QAAQ,qBAAoB;AAE9D,OAAO,SAASC,mBAAmB,EACjCC,cAAc,EACdC,OAAO,EACPC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,OAAO,EAQR;IACC,KAAK,MAAMC,cAAcJ,YAAa;QACpCJ,0BAA0B;YACxBE;YACAC;YACAE;YACAI,QAAQD,WAAWC,MAAM;YACzBH;YACAC;QACF;QAEAL,eAAeM,WAAWE,KAAK,EAAEC,YAAYC;QAC7CV,eAAeM,WAAWE,KAAK,EAAEC,YAAYE;QAC7CX,eAAeM,WAAWE,KAAK,EAAEC,YAAYG;QAC7CZ,eAAeM,WAAWE,KAAK,EAAEC,YAAYI;QAE7Cb,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAMC;QACnDf,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAME;QACnDhB,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAMG;QACnDjB,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAMI;QACnDlB,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAMK;QACnDnB,eAAeM,WAAWE,KAAK,EAAEC,YAAYK,MAAMM;QAEnD,IAAId,WAAWE,KAAK,EAAEC,YAAYY,OAAOP,MAAM;YAC7C,KAAK,MAAMQ,kBAAkBC,OAAOC,MAAM,CAAClB,WAAWE,KAAK,EAAEC,YAAYY,OAAOP,MAAO;gBACrF,IAAI,eAAeQ,gBAAgB;oBACjCtB,eAAesB,gBAAgBG;gBACjC;gBAEA,IAAI,aAAaH,gBAAgB;oBAC/BtB,eAAesB,gBAAgBI;gBACjC;gBAEA,IAAI,SAASJ,gBAAgB;oBAC3BtB,eAAesB,gBAAgBK,KAAKF;oBACpCzB,eAAesB,gBAAgBK,KAAKC;gBACtC;YACF;QACF;QAEA5B,eAAeM,WAAWE,KAAK,EAAEC,YAAYY,OAAOQ,MAAMJ;QAC1DzB,eAAeM,WAAWE,KAAK,EAAEC,YAAYY,OAAOQ,MAAMH;IAC5D;AACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SanitizedConfig } from '../../config/types.js';
|
|
2
|
+
import type { AddToImportMap, Imports, InternalImportMap } from './index.js';
|
|
3
|
+
export declare function iterateConfig({ addToImportMap, baseDir, config, importMap, imports, }: {
|
|
4
|
+
addToImportMap: AddToImportMap;
|
|
5
|
+
baseDir: string;
|
|
6
|
+
config: SanitizedConfig;
|
|
7
|
+
importMap: InternalImportMap;
|
|
8
|
+
imports: Imports;
|
|
9
|
+
}): void;
|
|
10
|
+
//# sourceMappingURL=iterateConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterateConfig.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/iterateConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAK5E,wBAAgB,aAAa,CAAC,EAC5B,cAAc,EACd,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB,QAgFA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { iterateCollections } from './iterateCollections.js';
|
|
2
|
+
import { iterateGlobals } from './iterateGlobals.js';
|
|
3
|
+
export function iterateConfig({ addToImportMap, baseDir, config, importMap, imports }) {
|
|
4
|
+
iterateCollections({
|
|
5
|
+
addToImportMap,
|
|
6
|
+
baseDir,
|
|
7
|
+
collections: config.collections,
|
|
8
|
+
config,
|
|
9
|
+
importMap,
|
|
10
|
+
imports
|
|
11
|
+
});
|
|
12
|
+
iterateGlobals({
|
|
13
|
+
addToImportMap,
|
|
14
|
+
baseDir,
|
|
15
|
+
config,
|
|
16
|
+
globals: config.globals,
|
|
17
|
+
importMap,
|
|
18
|
+
imports
|
|
19
|
+
});
|
|
20
|
+
typeof config.admin?.avatar === 'object' && addToImportMap(config.admin?.avatar?.Component);
|
|
21
|
+
addToImportMap(config.admin?.components?.Nav);
|
|
22
|
+
addToImportMap(config.admin?.components?.logout?.Button);
|
|
23
|
+
addToImportMap(config.admin?.components?.graphics?.Icon);
|
|
24
|
+
addToImportMap(config.admin?.components?.graphics?.Logo);
|
|
25
|
+
addToImportMap(config.admin?.components?.actions);
|
|
26
|
+
addToImportMap(config.admin?.components?.afterDashboard);
|
|
27
|
+
addToImportMap(config.admin?.components?.afterLogin);
|
|
28
|
+
addToImportMap(config.admin?.components?.afterNavLinks);
|
|
29
|
+
addToImportMap(config.admin?.components?.beforeDashboard);
|
|
30
|
+
addToImportMap(config.admin?.components?.beforeLogin);
|
|
31
|
+
addToImportMap(config.admin?.components?.beforeNavLinks);
|
|
32
|
+
addToImportMap(config.admin?.components?.providers);
|
|
33
|
+
if (config.admin?.components?.views) {
|
|
34
|
+
if (Object.keys(config.admin?.components?.views)?.length) {
|
|
35
|
+
for(const key in config.admin?.components?.views){
|
|
36
|
+
const adminViewConfig = config.admin?.components?.views[key];
|
|
37
|
+
addToImportMap(adminViewConfig?.Component);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (config?.admin?.importMap?.generators?.length) {
|
|
42
|
+
for (const generator of config.admin.importMap.generators){
|
|
43
|
+
generator({
|
|
44
|
+
addToImportMap,
|
|
45
|
+
baseDir,
|
|
46
|
+
config,
|
|
47
|
+
importMap,
|
|
48
|
+
imports
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (config?.admin?.dependencies) {
|
|
53
|
+
for(const key in config.admin.dependencies){
|
|
54
|
+
const dependency = config.admin.dependencies[key];
|
|
55
|
+
addToImportMap(dependency.path);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
if (
|
|
60
|
+
config?.editor &&
|
|
61
|
+
typeof config.editor === 'object' &&
|
|
62
|
+
config.editor.generateImportMap &&
|
|
63
|
+
typeof config.editor.generateImportMap === 'function'
|
|
64
|
+
) {
|
|
65
|
+
config.editor.generateImportMap({
|
|
66
|
+
addToImportMap,
|
|
67
|
+
baseDir,
|
|
68
|
+
componentMap,
|
|
69
|
+
config,
|
|
70
|
+
importMap,
|
|
71
|
+
})
|
|
72
|
+
}*/ // No need to do that here since in the sanitized editor config, this root editor is already added to the field editor - and we already process that in iterateFields
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=iterateConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bin/generateImportMap/iterateConfig.ts"],"sourcesContent":["import type { AdminViewConfig } from '../../admin/views/types.js'\nimport type { SanitizedConfig } from '../../config/types.js'\nimport type { AddToImportMap, Imports, InternalImportMap } from './index.js'\n\nimport { iterateCollections } from './iterateCollections.js'\nimport { iterateGlobals } from './iterateGlobals.js'\n\nexport function iterateConfig({\n addToImportMap,\n baseDir,\n config,\n importMap,\n imports,\n}: {\n addToImportMap: AddToImportMap\n baseDir: string\n config: SanitizedConfig\n importMap: InternalImportMap\n imports: Imports\n}) {\n iterateCollections({\n addToImportMap,\n baseDir,\n collections: config.collections,\n config,\n importMap,\n imports,\n })\n\n iterateGlobals({\n addToImportMap,\n baseDir,\n config,\n globals: config.globals,\n importMap,\n imports,\n })\n\n typeof config.admin?.avatar === 'object' && addToImportMap(config.admin?.avatar?.Component)\n\n addToImportMap(config.admin?.components?.Nav)\n\n addToImportMap(config.admin?.components?.logout?.Button)\n addToImportMap(config.admin?.components?.graphics?.Icon)\n addToImportMap(config.admin?.components?.graphics?.Logo)\n\n addToImportMap(config.admin?.components?.actions)\n addToImportMap(config.admin?.components?.afterDashboard)\n addToImportMap(config.admin?.components?.afterLogin)\n addToImportMap(config.admin?.components?.afterNavLinks)\n addToImportMap(config.admin?.components?.beforeDashboard)\n addToImportMap(config.admin?.components?.beforeLogin)\n addToImportMap(config.admin?.components?.beforeNavLinks)\n\n addToImportMap(config.admin?.components?.providers)\n\n if (config.admin?.components?.views) {\n if (Object.keys(config.admin?.components?.views)?.length) {\n for (const key in config.admin?.components?.views) {\n const adminViewConfig: AdminViewConfig = config.admin?.components?.views[key]\n addToImportMap(adminViewConfig?.Component)\n }\n }\n }\n\n if (config?.admin?.importMap?.generators?.length) {\n for (const generator of config.admin.importMap.generators) {\n generator({\n addToImportMap,\n baseDir,\n config,\n importMap,\n imports,\n })\n }\n }\n\n if (config?.admin?.dependencies) {\n for (const key in config.admin.dependencies) {\n const dependency = config.admin.dependencies[key]\n addToImportMap(dependency.path)\n }\n }\n\n /*\n if (\n config?.editor &&\n typeof config.editor === 'object' &&\n config.editor.generateImportMap &&\n typeof config.editor.generateImportMap === 'function'\n ) {\n config.editor.generateImportMap({\n addToImportMap,\n baseDir,\n componentMap,\n config,\n importMap,\n })\n }*/ // No need to do that here since in the sanitized editor config, this root editor is already added to the field editor - and we already process that in iterateFields\n}\n"],"names":["iterateCollections","iterateGlobals","iterateConfig","addToImportMap","baseDir","config","importMap","imports","collections","globals","admin","avatar","Component","components","Nav","logout","Button","graphics","Icon","Logo","actions","afterDashboard","afterLogin","afterNavLinks","beforeDashboard","beforeLogin","beforeNavLinks","providers","views","Object","keys","length","key","adminViewConfig","generators","generator","dependencies","dependency","path"],"mappings":"AAIA,SAASA,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,cAAc,QAAQ,sBAAqB;AAEpD,OAAO,SAASC,cAAc,EAC5BC,cAAc,EACdC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,OAAO,EAOR;IACCP,mBAAmB;QACjBG;QACAC;QACAI,aAAaH,OAAOG,WAAW;QAC/BH;QACAC;QACAC;IACF;IAEAN,eAAe;QACbE;QACAC;QACAC;QACAI,SAASJ,OAAOI,OAAO;QACvBH;QACAC;IACF;IAEA,OAAOF,OAAOK,KAAK,EAAEC,WAAW,YAAYR,eAAeE,OAAOK,KAAK,EAAEC,QAAQC;IAEjFT,eAAeE,OAAOK,KAAK,EAAEG,YAAYC;IAEzCX,eAAeE,OAAOK,KAAK,EAAEG,YAAYE,QAAQC;IACjDb,eAAeE,OAAOK,KAAK,EAAEG,YAAYI,UAAUC;IACnDf,eAAeE,OAAOK,KAAK,EAAEG,YAAYI,UAAUE;IAEnDhB,eAAeE,OAAOK,KAAK,EAAEG,YAAYO;IACzCjB,eAAeE,OAAOK,KAAK,EAAEG,YAAYQ;IACzClB,eAAeE,OAAOK,KAAK,EAAEG,YAAYS;IACzCnB,eAAeE,OAAOK,KAAK,EAAEG,YAAYU;IACzCpB,eAAeE,OAAOK,KAAK,EAAEG,YAAYW;IACzCrB,eAAeE,OAAOK,KAAK,EAAEG,YAAYY;IACzCtB,eAAeE,OAAOK,KAAK,EAAEG,YAAYa;IAEzCvB,eAAeE,OAAOK,KAAK,EAAEG,YAAYc;IAEzC,IAAItB,OAAOK,KAAK,EAAEG,YAAYe,OAAO;QACnC,IAAIC,OAAOC,IAAI,CAACzB,OAAOK,KAAK,EAAEG,YAAYe,QAAQG,QAAQ;YACxD,IAAK,MAAMC,OAAO3B,OAAOK,KAAK,EAAEG,YAAYe,MAAO;gBACjD,MAAMK,kBAAmC5B,OAAOK,KAAK,EAAEG,YAAYe,KAAK,CAACI,IAAI;gBAC7E7B,eAAe8B,iBAAiBrB;YAClC;QACF;IACF;IAEA,IAAIP,QAAQK,OAAOJ,WAAW4B,YAAYH,QAAQ;QAChD,KAAK,MAAMI,aAAa9B,OAAOK,KAAK,CAACJ,SAAS,CAAC4B,UAAU,CAAE;YACzDC,UAAU;gBACRhC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QACF;IACF;IAEA,IAAIF,QAAQK,OAAO0B,cAAc;QAC/B,IAAK,MAAMJ,OAAO3B,OAAOK,KAAK,CAAC0B,YAAY,CAAE;YAC3C,MAAMC,aAAahC,OAAOK,KAAK,CAAC0B,YAAY,CAACJ,IAAI;YACjD7B,eAAekC,WAAWC,IAAI;QAChC;IACF;AAEA;;;;;;;;;;;;;;GAcC,GAAG,qKAAqK;AAC3K"}
|