@payloadcms/codemod 4.0.0-internal.77191e5 → 4.0.0-internal.7d5c665
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/README.md +97 -30
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.help.d.ts +4 -0
- package/dist/cli.help.d.ts.map +1 -0
- package/dist/cli.help.js +29 -0
- package/dist/cli.help.js.map +1 -0
- package/dist/cli.js +49 -27
- package/dist/cli.js.map +1 -1
- package/dist/cli.parseFlags.d.ts +15 -0
- package/dist/cli.parseFlags.d.ts.map +1 -1
- package/dist/cli.parseFlags.js +35 -2
- package/dist/cli.parseFlags.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +16 -0
- package/dist/registry.js.map +1 -1
- package/dist/runbook/payload-v4-upgrade.md +55 -0
- package/dist/runbook/v4.mdx +2516 -0
- package/dist/transforms/add-override-access-true/basic.input.js +41 -0
- package/dist/transforms/add-override-access-true/basic.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/basic.output.js +50 -0
- package/dist/transforms/add-override-access-true/basic.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.input.js +11 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.output.js +12 -0
- package/dist/transforms/add-override-access-true/comment-between-properties.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/index.d.ts +20 -0
- package/dist/transforms/add-override-access-true/index.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/index.js +208 -0
- package/dist/transforms/add-override-access-true/index.js.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.input.d.ts +6 -0
- package/dist/transforms/add-override-access-true/javascript.input.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.input.js +24 -0
- package/dist/transforms/add-override-access-true/javascript.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.output.d.ts +6 -0
- package/dist/transforms/add-override-access-true/javascript.output.d.ts.map +1 -0
- package/dist/transforms/add-override-access-true/javascript.output.js +26 -0
- package/dist/transforms/add-override-access-true/javascript.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/non-matching.input.js +42 -0
- package/dist/transforms/add-override-access-true/non-matching.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/non-matching.output.js +42 -0
- package/dist/transforms/add-override-access-true/non-matching.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/single-line.input.js +13 -0
- package/dist/transforms/add-override-access-true/single-line.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/single-line.output.js +17 -0
- package/dist/transforms/add-override-access-true/single-line.output.js.map +1 -0
- package/dist/transforms/add-override-access-true/trailing-comment.input.js +10 -0
- package/dist/transforms/add-override-access-true/trailing-comment.input.js.map +1 -0
- package/dist/transforms/add-override-access-true/trailing-comment.output.js +12 -0
- package/dist/transforms/add-override-access-true/trailing-comment.output.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/basic.input.js +32 -0
- package/dist/transforms/migrate-admin-context-properties/basic.input.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/basic.output.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/basic.output.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/index.d.ts +3 -0
- package/dist/transforms/migrate-admin-context-properties/index.d.ts.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/index.js +302 -0
- package/dist/transforms/migrate-admin-context-properties/index.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.input.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.output.js +30 -0
- package/dist/transforms/migrate-admin-context-properties/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-aliased-exports/index.d.ts.map +1 -1
- package/dist/transforms/migrate-aliased-exports/index.js +6 -5
- package/dist/transforms/migrate-aliased-exports/index.js.map +1 -1
- package/dist/transforms/migrate-aliased-exports/request.input.js +6 -0
- package/dist/transforms/migrate-aliased-exports/request.input.js.map +1 -0
- package/dist/transforms/migrate-aliased-exports/request.output.js +5 -0
- package/dist/transforms/migrate-aliased-exports/request.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/already-set.input.js +15 -0
- package/dist/transforms/migrate-authorship-default/already-set.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/already-set.output.js +15 -0
- package/dist/transforms/migrate-authorship-default/already-set.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/basic.input.js +16 -0
- package/dist/transforms/migrate-authorship-default/basic.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/basic.output.js +18 -0
- package/dist/transforms/migrate-authorship-default/basic.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/build-config.input.js +32 -0
- package/dist/transforms/migrate-authorship-default/build-config.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/build-config.output.js +35 -0
- package/dist/transforms/migrate-authorship-default/build-config.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/globals.input.js +16 -0
- package/dist/transforms/migrate-authorship-default/globals.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/globals.output.js +17 -0
- package/dist/transforms/migrate-authorship-default/globals.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/index.d.ts +11 -0
- package/dist/transforms/migrate-authorship-default/index.d.ts.map +1 -0
- package/dist/transforms/migrate-authorship-default/index.js +141 -0
- package/dist/transforms/migrate-authorship-default/index.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/non-matching.input.js +18 -0
- package/dist/transforms/migrate-authorship-default/non-matching.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/non-matching.output.js +18 -0
- package/dist/transforms/migrate-authorship-default/non-matching.output.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/satisfies.input.js +11 -0
- package/dist/transforms/migrate-authorship-default/satisfies.input.js.map +1 -0
- package/dist/transforms/migrate-authorship-default/satisfies.output.js +13 -0
- package/dist/transforms/migrate-authorship-default/satisfies.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.output.js +8 -0
- package/dist/transforms/migrate-displayed-field-value-args/basic.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.d.ts +3 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.d.ts.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.js +84 -0
- package/dist/transforms/migrate-displayed-field-value-args/index.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.output.js +8 -0
- package/dist/transforms/migrate-displayed-field-value-args/namespace.output.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.input.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.output.js +4 -0
- package/dist/transforms/migrate-displayed-field-value-args/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/basic.input.js +8 -0
- package/dist/transforms/migrate-field-component-types/basic.input.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/basic.output.js +8 -0
- package/dist/transforms/migrate-field-component-types/basic.output.js.map +1 -0
- package/dist/transforms/migrate-field-component-types/index.d.ts +3 -0
- package/dist/transforms/migrate-field-component-types/index.d.ts.map +1 -0
- package/dist/transforms/migrate-field-component-types/index.js +620 -0
- package/dist/transforms/migrate-field-component-types/index.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.input.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.output.js +31 -0
- package/dist/transforms/migrate-payload-request-creation/aliases.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/collision.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/collision.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/comments.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/comments.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/comments.output.js +34 -0
- package/dist/transforms/migrate-payload-request-creation/comments.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/empty.input.js +5 -0
- package/dist/transforms/migrate-payload-request-creation/empty.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/empty.output.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/empty.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js +10 -0
- package/dist/transforms/migrate-payload-request-creation/evaluation-order.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/expression.input.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/expression.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/expression.output.js +8 -0
- package/dist/transforms/migrate-payload-request-creation/expression.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/getters.input.js +52 -0
- package/dist/transforms/migrate-payload-request-creation/getters.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/index.d.ts +3 -0
- package/dist/transforms/migrate-payload-request-creation/index.d.ts.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/index.js +236 -0
- package/dist/transforms/migrate-payload-request-creation/index.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/internal.input.js +6 -0
- package/dist/transforms/migrate-payload-request-creation/internal.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/internal.output.js +6 -0
- package/dist/transforms/migrate-payload-request-creation/internal.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/non-matching.input.js +5 -0
- package/dist/transforms/migrate-payload-request-creation/non-matching.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/populated.input.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/populated.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/populated.output.js +30 -0
- package/dist/transforms/migrate-payload-request-creation/populated.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.input.js +7 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.output.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/shadowed.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.input.js +12 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.input.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.output.js +12 -0
- package/dist/transforms/migrate-payload-request-creation/shorthand.output.js.map +1 -0
- package/dist/transforms/migrate-payload-request-creation/unsupported.input.js +9 -0
- package/dist/transforms/migrate-payload-request-creation/unsupported.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.input.js +28 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.output.js +39 -0
- package/dist/transforms/migrate-sharp-to-transformer/basic.output.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js +27 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js +33 -0
- package/dist/transforms/migrate-sharp-to-transformer/existing-transformers.output.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.d.ts +3 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.d.ts.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.js +430 -0
- package/dist/transforms/migrate-sharp-to-transformer/index.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js +11 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.input.js.map +1 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js +11 -0
- package/dist/transforms/migrate-sharp-to-transformer/no-match.output.js.map +1 -0
- package/dist/transforms/migrate-versions-default/index.js +5 -5
- package/dist/transforms/migrate-versions-default/index.js.map +1 -1
- package/dist/transforms/remove-publish-specific-locale/index.d.ts.map +1 -1
- package/dist/transforms/remove-publish-specific-locale/index.js.map +1 -1
- package/dist/transforms/remove-storage-always-insert-fields/index.d.ts.map +1 -1
- package/dist/transforms/remove-storage-always-insert-fields/index.js +4 -0
- package/dist/transforms/remove-storage-always-insert-fields/index.js.map +1 -1
- package/dist/transforms/remove-versions-true/index.js +4 -4
- package/dist/transforms/remove-versions-true/index.js.map +1 -1
- package/dist/transforms/rename-diff-value-props/basic.input.js +38 -0
- package/dist/transforms/rename-diff-value-props/basic.input.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/basic.output.js +38 -0
- package/dist/transforms/rename-diff-value-props/basic.output.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/index.d.ts +3 -0
- package/dist/transforms/rename-diff-value-props/index.d.ts.map +1 -0
- package/dist/transforms/rename-diff-value-props/index.js +328 -0
- package/dist/transforms/rename-diff-value-props/index.js.map +1 -0
- package/dist/transforms/rename-diff-value-props/no-match.input.js +8 -0
- package/dist/transforms/rename-diff-value-props/no-match.input.js.map +1 -0
- package/dist/transforms/rename-experimental-table-feature/index.d.ts.map +1 -1
- package/dist/transforms/rename-experimental-table-feature/index.js +7 -1
- package/dist/transforms/rename-experimental-table-feature/index.js.map +1 -1
- package/dist/upgrade/defaultTag.d.ts +9 -0
- package/dist/upgrade/defaultTag.d.ts.map +1 -0
- package/dist/upgrade/defaultTag.js +25 -0
- package/dist/upgrade/defaultTag.js.map +1 -0
- package/dist/upgrade/detectPackageManager.d.ts +8 -0
- package/dist/upgrade/detectPackageManager.d.ts.map +1 -0
- package/dist/upgrade/detectPackageManager.js +38 -0
- package/dist/upgrade/detectPackageManager.js.map +1 -0
- package/dist/upgrade/dispatch.d.ts +38 -0
- package/dist/upgrade/dispatch.d.ts.map +1 -0
- package/dist/upgrade/dispatch.js +132 -0
- package/dist/upgrade/dispatch.js.map +1 -0
- package/dist/upgrade/index.d.ts +25 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +209 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/upgrade/prompt.d.ts +14 -0
- package/dist/upgrade/prompt.d.ts.map +1 -0
- package/dist/upgrade/prompt.js +77 -0
- package/dist/upgrade/prompt.js.map +1 -0
- package/dist/upgrade/report.d.ts +21 -0
- package/dist/upgrade/report.d.ts.map +1 -0
- package/dist/upgrade/report.js +47 -0
- package/dist/upgrade/report.js.map +1 -0
- package/dist/upgrade/resolveVersions.d.ts +13 -0
- package/dist/upgrade/resolveVersions.d.ts.map +1 -0
- package/dist/upgrade/resolveVersions.js +55 -0
- package/dist/upgrade/resolveVersions.js.map +1 -0
- package/dist/upgrade/rewritePackageJson.d.ts +32 -0
- package/dist/upgrade/rewritePackageJson.d.ts.map +1 -0
- package/dist/upgrade/rewritePackageJson.js +164 -0
- package/dist/upgrade/rewritePackageJson.js.map +1 -0
- package/dist/upgrade/runInstall.d.ts +16 -0
- package/dist/upgrade/runInstall.d.ts.map +1 -0
- package/dist/upgrade/runInstall.js +17 -0
- package/dist/upgrade/runInstall.js.map +1 -0
- package/dist/upgrade/selectAgent.d.ts +45 -0
- package/dist/upgrade/selectAgent.d.ts.map +1 -0
- package/dist/upgrade/selectAgent.js +54 -0
- package/dist/upgrade/selectAgent.js.map +1 -0
- package/dist/upgrade/selfCommand.d.ts +13 -0
- package/dist/upgrade/selfCommand.d.ts.map +1 -0
- package/dist/upgrade/selfCommand.js +17 -0
- package/dist/upgrade/selfCommand.js.map +1 -0
- package/dist/upgrade/types.d.ts +47 -0
- package/dist/upgrade/types.d.ts.map +1 -0
- package/dist/upgrade/types.js +11 -0
- package/dist/upgrade/types.js.map +1 -0
- package/dist/utils/project.d.ts +10 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +43 -0
- package/dist/utils/project.js.map +1 -0
- package/package.json +8 -4
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// A trailing comment after the last property previously caused a double comma.
|
|
2
|
+
const doc = await payload.findByID({
|
|
3
|
+
id: first.id,
|
|
4
|
+
collection
|
|
5
|
+
});
|
|
6
|
+
const posts = await payload.find({
|
|
7
|
+
collection: 'posts'
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=trailing-comment.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/add-override-access-true/trailing-comment.input.ts"],"sourcesContent":["// A trailing comment after the last property previously caused a double comma.\nconst doc = await payload.findByID({\n id: first.id,\n collection,\n // omitting req for isolation\n})\n\nconst posts = await payload.find({\n collection: 'posts',\n // no req on purpose\n})\n"],"names":["doc","payload","findByID","id","first","collection","posts","find"],"mappings":"AAAA,+EAA+E;AAC/E,MAAMA,MAAM,MAAMC,QAAQC,QAAQ,CAAC;IACjCC,IAAIC,MAAMD,EAAE;IACZE;AAEF;AAEA,MAAMC,QAAQ,MAAML,QAAQM,IAAI,CAAC;IAC/BF,YAAY;AAEd"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// A trailing comment after the last property previously caused a double comma.
|
|
2
|
+
const doc = await payload.findByID({
|
|
3
|
+
id: first.id,
|
|
4
|
+
collection,
|
|
5
|
+
overrideAccess: true
|
|
6
|
+
});
|
|
7
|
+
const posts = await payload.find({
|
|
8
|
+
collection: 'posts',
|
|
9
|
+
overrideAccess: true
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=trailing-comment.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/add-override-access-true/trailing-comment.output.ts"],"sourcesContent":["// A trailing comment after the last property previously caused a double comma.\nconst doc = await payload.findByID({\n id: first.id,\n collection,\n overrideAccess: true,\n // omitting req for isolation\n})\n\nconst posts = await payload.find({\n collection: 'posts',\n overrideAccess: true,\n // no req on purpose\n})\n"],"names":["doc","payload","findByID","id","first","collection","overrideAccess","posts","find"],"mappings":"AAAA,+EAA+E;AAC/E,MAAMA,MAAM,MAAMC,QAAQC,QAAQ,CAAC;IACjCC,IAAIC,MAAMD,EAAE;IACZE;IACAC,gBAAgB;AAElB;AAEA,MAAMC,QAAQ,MAAMN,QAAQO,IAAI,CAAC;IAC/BH,YAAY;IACZC,gBAAgB;AAElB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { getRootLayoutData } from '@payloadcms/ui/layouts/Root/getRootLayoutData';
|
|
2
|
+
import { initAdminContext } from 'payload/internal';
|
|
3
|
+
export async function getLayoutData(args) {
|
|
4
|
+
const context = await initAdminContext(args);
|
|
5
|
+
const { cookies, headers, languageCode, permissions, req, user } = context;
|
|
6
|
+
const data = await getRootLayoutData({
|
|
7
|
+
cookies,
|
|
8
|
+
headers,
|
|
9
|
+
importMap: args.importMap,
|
|
10
|
+
languageCode,
|
|
11
|
+
permissions,
|
|
12
|
+
req,
|
|
13
|
+
user
|
|
14
|
+
});
|
|
15
|
+
return {
|
|
16
|
+
data,
|
|
17
|
+
userAgent: context.headers.get('user-agent')
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export async function getTheme(args) {
|
|
21
|
+
const { headers: requestHeaders, languageCode, user } = await initAdminContext(args);
|
|
22
|
+
return {
|
|
23
|
+
languageCode,
|
|
24
|
+
theme: requestHeaders.get('sec-ch-prefers-color-scheme'),
|
|
25
|
+
user
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export const getUserAgent = async (args)=>(await initAdminContext(args)).headers.get('user-agent');
|
|
29
|
+
export const getDirection = (context)=>context.languageCode === 'ar' ? 'rtl' : 'ltr';
|
|
30
|
+
export const getAcceptLanguage = ({ headers })=>headers.get('accept-language');
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=basic.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-admin-context-properties/basic.input.ts"],"sourcesContent":["import type { AdminContext } from 'payload'\nimport type { InitAdminContextArgs } from 'payload/internal'\n\nimport { getRootLayoutData } from '@payloadcms/ui/layouts/Root/getRootLayoutData'\nimport { initAdminContext } from 'payload/internal'\n\ntype LayoutArgs = Pick<AdminContext, 'cookies' | 'headers' | 'languageCode' | 'req'>\n\ntype LanguageCode = AdminContext['languageCode']\n\nexport async function getLayoutData(args: InitAdminContextArgs) {\n const context = await initAdminContext(args)\n\n const { cookies, headers, languageCode, permissions, req, user } = context\n\n const data = await getRootLayoutData({\n cookies,\n headers,\n importMap: args.importMap,\n languageCode,\n permissions,\n req,\n user,\n })\n\n return { data, userAgent: context.headers.get('user-agent') }\n}\n\nexport async function getTheme(args: InitAdminContextArgs) {\n const { headers: requestHeaders, languageCode, user } = await initAdminContext(args)\n\n return { languageCode, theme: requestHeaders.get('sec-ch-prefers-color-scheme'), user }\n}\n\nexport const getUserAgent = async (args: InitAdminContextArgs) =>\n (await initAdminContext(args)).headers.get('user-agent')\n\nexport const getDirection = (context: AdminContext) =>\n context.languageCode === 'ar' ? 'rtl' : 'ltr'\n\nexport const getAcceptLanguage = ({ headers }: AdminContext) => headers.get('accept-language')\n"],"names":["getRootLayoutData","initAdminContext","getLayoutData","args","context","cookies","headers","languageCode","permissions","req","user","data","importMap","userAgent","get","getTheme","requestHeaders","theme","getUserAgent","getDirection","getAcceptLanguage"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,gDAA+C;AACjF,SAASC,gBAAgB,QAAQ,mBAAkB;AAMnD,OAAO,eAAeC,cAAcC,IAA0B;IAC5D,MAAMC,UAAU,MAAMH,iBAAiBE;IAEvC,MAAM,EAAEE,OAAO,EAAEC,OAAO,EAAEC,YAAY,EAAEC,WAAW,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGN;IAEnE,MAAMO,OAAO,MAAMX,kBAAkB;QACnCK;QACAC;QACAM,WAAWT,KAAKS,SAAS;QACzBL;QACAC;QACAC;QACAC;IACF;IAEA,OAAO;QAAEC;QAAME,WAAWT,QAAQE,OAAO,CAACQ,GAAG,CAAC;IAAc;AAC9D;AAEA,OAAO,eAAeC,SAASZ,IAA0B;IACvD,MAAM,EAAEG,SAASU,cAAc,EAAET,YAAY,EAAEG,IAAI,EAAE,GAAG,MAAMT,iBAAiBE;IAE/E,OAAO;QAAEI;QAAcU,OAAOD,eAAeF,GAAG,CAAC;QAAgCJ;IAAK;AACxF;AAEA,OAAO,MAAMQ,eAAe,OAAOf,OACjC,AAAC,CAAA,MAAMF,iBAAiBE,KAAI,EAAGG,OAAO,CAACQ,GAAG,CAAC,cAAa;AAE1D,OAAO,MAAMK,eAAe,CAACf,UAC3BA,QAAQG,YAAY,KAAK,OAAO,QAAQ,MAAK;AAE/C,OAAO,MAAMa,oBAAoB,CAAC,EAAEd,OAAO,EAAgB,GAAKA,QAAQQ,GAAG,CAAC,mBAAkB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getRootLayoutData } from '@payloadcms/ui/layouts/Root/getRootLayoutData';
|
|
2
|
+
import { initAdminContext } from 'payload/internal';
|
|
3
|
+
export async function getLayoutData(args) {
|
|
4
|
+
const context = await initAdminContext(args);
|
|
5
|
+
const { cookies, permissions, req, user } = context;
|
|
6
|
+
const data = await getRootLayoutData({
|
|
7
|
+
cookies,
|
|
8
|
+
importMap: args.importMap,
|
|
9
|
+
permissions,
|
|
10
|
+
req,
|
|
11
|
+
user
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
data,
|
|
15
|
+
userAgent: context.req.headers.get('user-agent')
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export async function getTheme(args) {
|
|
19
|
+
const { req: { headers: requestHeaders, i18n: { language: languageCode } }, user } = await initAdminContext(args);
|
|
20
|
+
return {
|
|
21
|
+
languageCode,
|
|
22
|
+
theme: requestHeaders.get('sec-ch-prefers-color-scheme'),
|
|
23
|
+
user
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export const getUserAgent = async (args)=>(await initAdminContext(args)).req.headers.get('user-agent');
|
|
27
|
+
export const getDirection = (context)=>context.req.i18n.language === 'ar' ? 'rtl' : 'ltr';
|
|
28
|
+
export const getAcceptLanguage = ({ req: { headers } })=>headers.get('accept-language');
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=basic.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-admin-context-properties/basic.output.ts"],"sourcesContent":["import type { AdminContext } from 'payload'\nimport type { InitAdminContextArgs } from 'payload/internal'\n\nimport { getRootLayoutData } from '@payloadcms/ui/layouts/Root/getRootLayoutData'\nimport { initAdminContext } from 'payload/internal'\n\ntype LayoutArgs = Pick<AdminContext, 'cookies' | 'req'>\n\ntype LanguageCode = AdminContext['req']['i18n']['language']\n\nexport async function getLayoutData(args: InitAdminContextArgs) {\n const context = await initAdminContext(args)\n\n const { cookies, permissions, req, user } = context\n\n const data = await getRootLayoutData({\n cookies,\n importMap: args.importMap,\n permissions,\n req,\n user,\n })\n\n return { data, userAgent: context.req.headers.get('user-agent') }\n}\n\nexport async function getTheme(args: InitAdminContextArgs) {\n const { req: { headers: requestHeaders, i18n: { language: languageCode } }, user } = await initAdminContext(args)\n\n return { languageCode, theme: requestHeaders.get('sec-ch-prefers-color-scheme'), user }\n}\n\nexport const getUserAgent = async (args: InitAdminContextArgs) =>\n (await initAdminContext(args)).req.headers.get('user-agent')\n\nexport const getDirection = (context: AdminContext) =>\n context.req.i18n.language === 'ar' ? 'rtl' : 'ltr'\n\nexport const getAcceptLanguage = ({ req: { headers } }: AdminContext) => headers.get('accept-language')\n"],"names":["getRootLayoutData","initAdminContext","getLayoutData","args","context","cookies","permissions","req","user","data","importMap","userAgent","headers","get","getTheme","requestHeaders","i18n","language","languageCode","theme","getUserAgent","getDirection","getAcceptLanguage"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ,gDAA+C;AACjF,SAASC,gBAAgB,QAAQ,mBAAkB;AAMnD,OAAO,eAAeC,cAAcC,IAA0B;IAC5D,MAAMC,UAAU,MAAMH,iBAAiBE;IAEvC,MAAM,EAAEE,OAAO,EAAEC,WAAW,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGJ;IAE5C,MAAMK,OAAO,MAAMT,kBAAkB;QACnCK;QACAK,WAAWP,KAAKO,SAAS;QACzBJ;QACAC;QACAC;IACF;IAEA,OAAO;QAAEC;QAAME,WAAWP,QAAQG,GAAG,CAACK,OAAO,CAACC,GAAG,CAAC;IAAc;AAClE;AAEA,OAAO,eAAeC,SAASX,IAA0B;IACvD,MAAM,EAAEI,KAAK,EAAEK,SAASG,cAAc,EAAEC,MAAM,EAAEC,UAAUC,YAAY,EAAE,EAAE,EAAEV,IAAI,EAAE,GAAG,MAAMP,iBAAiBE;IAE5G,OAAO;QAAEe;QAAcC,OAAOJ,eAAeF,GAAG,CAAC;QAAgCL;IAAK;AACxF;AAEA,OAAO,MAAMY,eAAe,OAAOjB,OACjC,AAAC,CAAA,MAAMF,iBAAiBE,KAAI,EAAGI,GAAG,CAACK,OAAO,CAACC,GAAG,CAAC,cAAa;AAE9D,OAAO,MAAMQ,eAAe,CAACjB,UAC3BA,QAAQG,GAAG,CAACS,IAAI,CAACC,QAAQ,KAAK,OAAO,QAAQ,MAAK;AAEpD,OAAO,MAAMK,oBAAoB,CAAC,EAAEf,KAAK,EAAEK,OAAO,EAAE,EAAgB,GAAKA,QAAQC,GAAG,CAAC,mBAAkB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-admin-context-properties/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAwC/C,eAAO,MAAM,6BAA6B,EAAE,SA8J3C,CAAA"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { Node, SyntaxKind } from 'ts-morph';
|
|
2
|
+
/** Removed `AdminContext` properties mapped to where each value lives now. */ const ADMIN_CONTEXT_PATHS = new Map([
|
|
3
|
+
[
|
|
4
|
+
'headers',
|
|
5
|
+
[
|
|
6
|
+
'req',
|
|
7
|
+
'headers'
|
|
8
|
+
]
|
|
9
|
+
],
|
|
10
|
+
[
|
|
11
|
+
'languageCode',
|
|
12
|
+
[
|
|
13
|
+
'req',
|
|
14
|
+
'i18n',
|
|
15
|
+
'language'
|
|
16
|
+
]
|
|
17
|
+
]
|
|
18
|
+
]);
|
|
19
|
+
const PARTIAL_ADMIN_CONTEXT_PATHS = new Map([
|
|
20
|
+
[
|
|
21
|
+
'languageCode',
|
|
22
|
+
[
|
|
23
|
+
'i18n',
|
|
24
|
+
'language'
|
|
25
|
+
]
|
|
26
|
+
]
|
|
27
|
+
]);
|
|
28
|
+
// Pre-rename names are accepted so this transform also works without `migrate-payload-request-creation`.
|
|
29
|
+
const IMPORTS = {
|
|
30
|
+
'@payloadcms/ui/layouts/Root/getRootLayoutData': {
|
|
31
|
+
getRootLayoutData: {
|
|
32
|
+
kind: 'getRootLayoutData',
|
|
33
|
+
paths: ADMIN_CONTEXT_PATHS
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
payload: {
|
|
37
|
+
AdminContext: {
|
|
38
|
+
kind: 'context',
|
|
39
|
+
paths: ADMIN_CONTEXT_PATHS
|
|
40
|
+
},
|
|
41
|
+
InitReqResult: {
|
|
42
|
+
kind: 'context',
|
|
43
|
+
paths: ADMIN_CONTEXT_PATHS
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
'payload/internal': {
|
|
47
|
+
initAdminContext: {
|
|
48
|
+
kind: 'initAdminContext',
|
|
49
|
+
paths: ADMIN_CONTEXT_PATHS
|
|
50
|
+
},
|
|
51
|
+
initReq: {
|
|
52
|
+
kind: 'initAdminContext',
|
|
53
|
+
paths: ADMIN_CONTEXT_PATHS
|
|
54
|
+
},
|
|
55
|
+
InitReqPartialResult: {
|
|
56
|
+
kind: 'context',
|
|
57
|
+
paths: PARTIAL_ADMIN_CONTEXT_PATHS
|
|
58
|
+
},
|
|
59
|
+
PartialAdminContext: {
|
|
60
|
+
kind: 'context',
|
|
61
|
+
paths: PARTIAL_ADMIN_CONTEXT_PATHS
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export const migrateAdminContextProperties = {
|
|
66
|
+
name: 'migrate-admin-context-properties',
|
|
67
|
+
apply: ({ project })=>{
|
|
68
|
+
const filesChanged = [];
|
|
69
|
+
const notes = [];
|
|
70
|
+
for (const file of project.getSourceFiles()){
|
|
71
|
+
const imports = file.getImportDeclarations().flatMap((declaration)=>{
|
|
72
|
+
const source = declaration.getModuleSpecifierValue();
|
|
73
|
+
if (!Object.hasOwn(IMPORTS, source)) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
return declaration.getNamedImports().flatMap((spec)=>{
|
|
77
|
+
const name = spec.getAliasNode() ?? spec.getNameNode();
|
|
78
|
+
return Object.hasOwn(IMPORTS[source], spec.getName()) && Node.isIdentifier(name) ? [
|
|
79
|
+
{
|
|
80
|
+
...IMPORTS[source][spec.getName()],
|
|
81
|
+
name
|
|
82
|
+
}
|
|
83
|
+
] : [];
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
if (imports.length === 0) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const original = file.getFullText();
|
|
90
|
+
// `getRootLayoutData` reads both values from `req` now. Removing these arguments first lets
|
|
91
|
+
// the destructures below drop bindings that only fed this call.
|
|
92
|
+
for (const { name, kind } of imports){
|
|
93
|
+
if (kind !== 'getRootLayoutData') {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
for (const reference of getReferences({
|
|
97
|
+
name,
|
|
98
|
+
file
|
|
99
|
+
})){
|
|
100
|
+
const call = reference.getParent();
|
|
101
|
+
const [argument] = Node.isCallExpression(call) && call.getExpression() === reference ? call.getArguments() : [];
|
|
102
|
+
if (!Node.isObjectLiteralExpression(argument)) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
for (const property of argument.getProperties()){
|
|
106
|
+
if ((Node.isPropertyAssignment(property) || Node.isShorthandPropertyAssignment(property)) && ADMIN_CONTEXT_PATHS.has(property.getName())) {
|
|
107
|
+
property.remove();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const state = {
|
|
113
|
+
edits: new Map(),
|
|
114
|
+
file,
|
|
115
|
+
notes,
|
|
116
|
+
rewritten: new Set()
|
|
117
|
+
};
|
|
118
|
+
for (const { name, kind, paths } of imports){
|
|
119
|
+
for (const reference of kind === 'getRootLayoutData' ? [] : getReferences({
|
|
120
|
+
name,
|
|
121
|
+
file
|
|
122
|
+
})){
|
|
123
|
+
const parent = reference.getParent();
|
|
124
|
+
if (kind === 'initAdminContext') {
|
|
125
|
+
if (!Node.isCallExpression(parent) || parent.getExpression() !== reference) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let expression = parent;
|
|
129
|
+
while(Node.isAwaitExpression(expression.getParent()) || Node.isParenthesizedExpression(expression.getParent())){
|
|
130
|
+
expression = expression.getParentOrThrow();
|
|
131
|
+
}
|
|
132
|
+
collectExpression({
|
|
133
|
+
allowAlias: true,
|
|
134
|
+
expression,
|
|
135
|
+
paths,
|
|
136
|
+
state
|
|
137
|
+
});
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (!Node.isTypeReference(parent) || parent.getTypeName() !== reference) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const owner = parent.getParent();
|
|
144
|
+
if ((Node.isParameterDeclaration(owner) || Node.isVariableDeclaration(owner)) && owner.getTypeNode() === parent) {
|
|
145
|
+
collectBinding({
|
|
146
|
+
binding: owner.getNameNode(),
|
|
147
|
+
paths,
|
|
148
|
+
state
|
|
149
|
+
});
|
|
150
|
+
} else if (Node.isIndexedAccessTypeNode(owner) && owner.getObjectTypeNode() === parent) {
|
|
151
|
+
const index = owner.getIndexTypeNode();
|
|
152
|
+
const literal = Node.isLiteralTypeNode(index) ? index.getLiteral() : undefined;
|
|
153
|
+
const property = Node.isStringLiteral(literal) ? literal.getLiteralValue() : undefined;
|
|
154
|
+
const path = property === undefined ? undefined : paths.get(property);
|
|
155
|
+
if (path) {
|
|
156
|
+
state.edits.set(owner, `${parent.getText()}${path.map((key)=>`['${key}']`).join('')}`);
|
|
157
|
+
state.rewritten.add(property);
|
|
158
|
+
}
|
|
159
|
+
} else if (Node.isTypeReference(owner) && owner.getTypeName().getText() === 'Pick' && owner.getTypeArguments()[0] === parent) {
|
|
160
|
+
const keys = owner.getTypeArguments()[1];
|
|
161
|
+
const members = Node.isUnionTypeNode(keys) ? keys.getTypeNodes() : keys ? [
|
|
162
|
+
keys
|
|
163
|
+
] : [];
|
|
164
|
+
const remaining = members.filter((member)=>{
|
|
165
|
+
const literal = Node.isLiteralTypeNode(member) ? member.getLiteral() : undefined;
|
|
166
|
+
return !(Node.isStringLiteral(literal) && paths.has(literal.getLiteralValue()));
|
|
167
|
+
});
|
|
168
|
+
if (remaining.length === members.length) {
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (remaining.length === 0) {
|
|
172
|
+
notes.push(`${file.getFilePath()}:${owner.getStartLineNumber()}: \`${owner.getText()}\` only picks properties removed in v4; migrate manually.`);
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
state.edits.set(keys, remaining.map((member)=>member.getText()).join(' | '));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Apply from the end of the file so earlier edits don't shift later nodes.
|
|
180
|
+
for (const [node, text] of [
|
|
181
|
+
...state.edits
|
|
182
|
+
].sort(([a], [b])=>b.getStart() - a.getStart())){
|
|
183
|
+
node.replaceWithText(text);
|
|
184
|
+
}
|
|
185
|
+
if (state.rewritten.has('languageCode')) {
|
|
186
|
+
notes.push(`${file.getFilePath()}: \`languageCode\` reads now use \`i18n.language\`, which is typed as \`string\` instead of \`AcceptedLanguages\`. Cast where the narrower type is required.`);
|
|
187
|
+
}
|
|
188
|
+
if (file.getFullText() !== original) {
|
|
189
|
+
filesChanged.push(file.getFilePath());
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
filesChanged,
|
|
194
|
+
...notes.length > 0 ? {
|
|
195
|
+
notes
|
|
196
|
+
} : {}
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
description: 'Rewrites reads of `headers` and `languageCode`, removed from `AdminContext` in v4, to `req.headers` and `req.i18n.language`. Covers `initAdminContext()` results, bindings typed as `AdminContext` or `PartialAdminContext`, and `Pick`/indexed access types, and drops both arguments from `getRootLayoutData()` calls.'
|
|
200
|
+
};
|
|
201
|
+
/** Same-file identifiers bound to the same symbol as `name`. */ function getReferences({ name, file }) {
|
|
202
|
+
const symbol = name.getSymbol()?.compilerSymbol;
|
|
203
|
+
if (!symbol) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
return file.getDescendantsOfKind(SyntaxKind.Identifier).filter((identifier)=>identifier !== name && identifier.getText() === name.getText() && identifier.getSymbol()?.compilerSymbol === symbol);
|
|
207
|
+
}
|
|
208
|
+
/** Handles a variable or parameter name that holds an admin context. */ function collectBinding({ binding, paths, state }) {
|
|
209
|
+
if (Node.isObjectBindingPattern(binding)) {
|
|
210
|
+
collectPattern({
|
|
211
|
+
paths,
|
|
212
|
+
pattern: binding,
|
|
213
|
+
state
|
|
214
|
+
});
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (!Node.isIdentifier(binding)) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
for (const reference of binding.findReferencesAsNodes()){
|
|
221
|
+
if (reference !== binding && reference.getSourceFile() === state.file) {
|
|
222
|
+
collectExpression({
|
|
223
|
+
allowAlias: false,
|
|
224
|
+
expression: reference,
|
|
225
|
+
paths,
|
|
226
|
+
state
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/** Handles an expression that evaluates to an admin context. */ function collectExpression({ allowAlias, expression, paths, state }) {
|
|
232
|
+
const parent = expression.getParent();
|
|
233
|
+
if (Node.isPropertyAccessExpression(parent) && parent.getExpression() === expression) {
|
|
234
|
+
const path = paths.get(parent.getName());
|
|
235
|
+
if (path) {
|
|
236
|
+
state.edits.set(parent, `${expression.getText()}${parent.hasQuestionDotToken() ? '?.' : '.'}${path.join('.')}`);
|
|
237
|
+
state.rewritten.add(parent.getName());
|
|
238
|
+
}
|
|
239
|
+
} else if (Node.isElementAccessExpression(parent) && parent.getExpression() === expression) {
|
|
240
|
+
const argument = parent.getArgumentExpression();
|
|
241
|
+
const path = Node.isStringLiteral(argument) ? paths.get(argument.getLiteralValue()) : undefined;
|
|
242
|
+
if (path) {
|
|
243
|
+
state.notes.push(`${state.file.getFilePath()}:${parent.getStartLineNumber()}: \`${parent.getText()}\` reads a property removed in v4; migrate manually to \`${expression.getText()}.${path.join('.')}\`.`);
|
|
244
|
+
}
|
|
245
|
+
} else if (Node.isVariableDeclaration(parent) && parent.getInitializer() === expression) {
|
|
246
|
+
const name = parent.getNameNode();
|
|
247
|
+
if (Node.isObjectBindingPattern(name) || allowAlias) {
|
|
248
|
+
collectBinding({
|
|
249
|
+
binding: name,
|
|
250
|
+
paths,
|
|
251
|
+
state
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Moves removed properties out of a destructure into nested patterns, e.g.
|
|
258
|
+
* `{ headers, user }` becomes `{ req: { headers }, user }`. Bindings that are never read are dropped.
|
|
259
|
+
*/ function collectPattern({ paths, pattern, state }) {
|
|
260
|
+
const kept = [];
|
|
261
|
+
const moved = new Map();
|
|
262
|
+
let insertIndex = -1;
|
|
263
|
+
for (const element of pattern.getElements()){
|
|
264
|
+
const propertyNameNode = element.getPropertyNameNode();
|
|
265
|
+
const nameNode = element.getNameNode();
|
|
266
|
+
const property = !propertyNameNode ? nameNode.getText() : Node.isIdentifier(propertyNameNode) ? propertyNameNode.getText() : Node.isStringLiteral(propertyNameNode) ? propertyNameNode.getLiteralValue() : undefined;
|
|
267
|
+
const path = element.getDotDotDotToken() || property === undefined ? undefined : paths.get(property);
|
|
268
|
+
if (!path) {
|
|
269
|
+
kept.push(element.getText());
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
if (insertIndex === -1) {
|
|
273
|
+
insertIndex = kept.length;
|
|
274
|
+
}
|
|
275
|
+
if (Node.isIdentifier(nameNode) && nameNode.findReferencesAsNodes().every((reference)=>reference === nameNode)) {
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
let level = moved;
|
|
279
|
+
for (const key of path.slice(0, -1)){
|
|
280
|
+
const next = level.get(key);
|
|
281
|
+
const child = next instanceof Map ? next : new Map();
|
|
282
|
+
level.set(key, child);
|
|
283
|
+
level = child;
|
|
284
|
+
}
|
|
285
|
+
const leaf = path.at(-1);
|
|
286
|
+
const initializer = element.getInitializer();
|
|
287
|
+
level.set(leaf, `${leaf === nameNode.getText() ? leaf : `${leaf}: ${nameNode.getText()}`}${initializer ? ` = ${initializer.getText()}` : ''}`);
|
|
288
|
+
state.rewritten.add(property);
|
|
289
|
+
}
|
|
290
|
+
if (insertIndex === -1) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
kept.splice(insertIndex, 0, ...renderTree(moved));
|
|
294
|
+
state.edits.set(pattern, `{ ${kept.join(', ')} }`);
|
|
295
|
+
}
|
|
296
|
+
function renderTree(tree) {
|
|
297
|
+
return [
|
|
298
|
+
...tree
|
|
299
|
+
].map(([key, value])=>typeof value === 'string' ? value : `${key}: { ${renderTree(value).join(', ')} }`);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-admin-context-properties/index.ts"],"sourcesContent":["import type { Identifier, ObjectBindingPattern, SourceFile } from 'ts-morph'\n\nimport { Node, SyntaxKind } from 'ts-morph'\n\nimport type { Transform } from '../../types.js'\n\ntype Paths = Map<string, readonly string[]>\n\n/** Removed `AdminContext` properties mapped to where each value lives now. */\nconst ADMIN_CONTEXT_PATHS: Paths = new Map([\n ['headers', ['req', 'headers']],\n ['languageCode', ['req', 'i18n', 'language']],\n])\n\nconst PARTIAL_ADMIN_CONTEXT_PATHS: Paths = new Map([['languageCode', ['i18n', 'language']]])\n\ntype ImportKind = 'context' | 'getRootLayoutData' | 'initAdminContext'\n\n// Pre-rename names are accepted so this transform also works without `migrate-payload-request-creation`.\nconst IMPORTS: Record<string, Record<string, { kind: ImportKind; paths: Paths }>> = {\n '@payloadcms/ui/layouts/Root/getRootLayoutData': {\n getRootLayoutData: { kind: 'getRootLayoutData', paths: ADMIN_CONTEXT_PATHS },\n },\n payload: {\n AdminContext: { kind: 'context', paths: ADMIN_CONTEXT_PATHS },\n InitReqResult: { kind: 'context', paths: ADMIN_CONTEXT_PATHS },\n },\n 'payload/internal': {\n initAdminContext: { kind: 'initAdminContext', paths: ADMIN_CONTEXT_PATHS },\n initReq: { kind: 'initAdminContext', paths: ADMIN_CONTEXT_PATHS },\n InitReqPartialResult: { kind: 'context', paths: PARTIAL_ADMIN_CONTEXT_PATHS },\n PartialAdminContext: { kind: 'context', paths: PARTIAL_ADMIN_CONTEXT_PATHS },\n },\n}\n\ntype State = {\n /** Replacement text keyed by node, so a node reached twice is only rewritten once. */\n edits: Map<Node, string>\n file: SourceFile\n notes: string[]\n /** Removed properties whose reads were rewritten. */\n rewritten: Set<string>\n}\n\nexport const migrateAdminContextProperties: Transform = {\n name: 'migrate-admin-context-properties',\n apply: ({ project }) => {\n const filesChanged: string[] = []\n const notes: string[] = []\n\n for (const file of project.getSourceFiles()) {\n const imports = file.getImportDeclarations().flatMap((declaration) => {\n const source = declaration.getModuleSpecifierValue()\n\n if (!Object.hasOwn(IMPORTS, source)) {\n return []\n }\n\n return declaration.getNamedImports().flatMap((spec) => {\n const name = spec.getAliasNode() ?? spec.getNameNode()\n\n return Object.hasOwn(IMPORTS[source]!, spec.getName()) && Node.isIdentifier(name)\n ? [{ ...IMPORTS[source]![spec.getName()]!, name }]\n : []\n })\n })\n\n if (imports.length === 0) {\n continue\n }\n\n const original = file.getFullText()\n\n // `getRootLayoutData` reads both values from `req` now. Removing these arguments first lets\n // the destructures below drop bindings that only fed this call.\n for (const { name, kind } of imports) {\n if (kind !== 'getRootLayoutData') {\n continue\n }\n\n for (const reference of getReferences({ name, file })) {\n const call = reference.getParent()\n const [argument] =\n Node.isCallExpression(call) && call.getExpression() === reference\n ? call.getArguments()\n : []\n\n if (!Node.isObjectLiteralExpression(argument)) {\n continue\n }\n\n for (const property of argument.getProperties()) {\n if (\n (Node.isPropertyAssignment(property) ||\n Node.isShorthandPropertyAssignment(property)) &&\n ADMIN_CONTEXT_PATHS.has(property.getName())\n ) {\n property.remove()\n }\n }\n }\n }\n\n const state: State = { edits: new Map(), file, notes, rewritten: new Set() }\n\n for (const { name, kind, paths } of imports) {\n for (const reference of kind === 'getRootLayoutData' ? [] : getReferences({ name, file })) {\n const parent = reference.getParent()\n\n if (kind === 'initAdminContext') {\n if (!Node.isCallExpression(parent) || parent.getExpression() !== reference) {\n continue\n }\n\n let expression: Node = parent\n\n while (\n Node.isAwaitExpression(expression.getParent()) ||\n Node.isParenthesizedExpression(expression.getParent())\n ) {\n expression = expression.getParentOrThrow()\n }\n\n collectExpression({ allowAlias: true, expression, paths, state })\n continue\n }\n\n if (!Node.isTypeReference(parent) || parent.getTypeName() !== reference) {\n continue\n }\n\n const owner = parent.getParent()\n\n if (\n (Node.isParameterDeclaration(owner) || Node.isVariableDeclaration(owner)) &&\n owner.getTypeNode() === parent\n ) {\n collectBinding({ binding: owner.getNameNode(), paths, state })\n } else if (Node.isIndexedAccessTypeNode(owner) && owner.getObjectTypeNode() === parent) {\n const index = owner.getIndexTypeNode()\n const literal = Node.isLiteralTypeNode(index) ? index.getLiteral() : undefined\n const property = Node.isStringLiteral(literal) ? literal.getLiteralValue() : undefined\n const path = property === undefined ? undefined : paths.get(property)\n\n if (path) {\n state.edits.set(\n owner,\n `${parent.getText()}${path.map((key) => `['${key}']`).join('')}`,\n )\n state.rewritten.add(property!)\n }\n } else if (\n Node.isTypeReference(owner) &&\n owner.getTypeName().getText() === 'Pick' &&\n owner.getTypeArguments()[0] === parent\n ) {\n const keys = owner.getTypeArguments()[1]\n const members = Node.isUnionTypeNode(keys) ? keys.getTypeNodes() : keys ? [keys] : []\n const remaining = members.filter((member) => {\n const literal = Node.isLiteralTypeNode(member) ? member.getLiteral() : undefined\n return !(Node.isStringLiteral(literal) && paths.has(literal.getLiteralValue()))\n })\n\n if (remaining.length === members.length) {\n continue\n }\n\n if (remaining.length === 0) {\n notes.push(\n `${file.getFilePath()}:${owner.getStartLineNumber()}: \\`${owner.getText()}\\` only picks properties removed in v4; migrate manually.`,\n )\n continue\n }\n\n state.edits.set(keys!, remaining.map((member) => member.getText()).join(' | '))\n }\n }\n }\n\n // Apply from the end of the file so earlier edits don't shift later nodes.\n for (const [node, text] of [...state.edits].sort(([a], [b]) => b.getStart() - a.getStart())) {\n node.replaceWithText(text)\n }\n\n if (state.rewritten.has('languageCode')) {\n notes.push(\n `${file.getFilePath()}: \\`languageCode\\` reads now use \\`i18n.language\\`, which is typed as \\`string\\` instead of \\`AcceptedLanguages\\`. Cast where the narrower type is required.`,\n )\n }\n\n if (file.getFullText() !== original) {\n filesChanged.push(file.getFilePath())\n }\n }\n\n return {\n filesChanged,\n ...(notes.length > 0 ? { notes } : {}),\n }\n },\n description:\n 'Rewrites reads of `headers` and `languageCode`, removed from `AdminContext` in v4, to `req.headers` and `req.i18n.language`. Covers `initAdminContext()` results, bindings typed as `AdminContext` or `PartialAdminContext`, and `Pick`/indexed access types, and drops both arguments from `getRootLayoutData()` calls.',\n}\n\n/** Same-file identifiers bound to the same symbol as `name`. */\nfunction getReferences({ name, file }: { file: SourceFile; name: Identifier }): Identifier[] {\n const symbol = name.getSymbol()?.compilerSymbol\n\n if (!symbol) {\n return []\n }\n\n return file\n .getDescendantsOfKind(SyntaxKind.Identifier)\n .filter(\n (identifier) =>\n identifier !== name &&\n identifier.getText() === name.getText() &&\n identifier.getSymbol()?.compilerSymbol === symbol,\n )\n}\n\n/** Handles a variable or parameter name that holds an admin context. */\nfunction collectBinding({\n binding,\n paths,\n state,\n}: {\n binding: Node\n paths: Paths\n state: State\n}): void {\n if (Node.isObjectBindingPattern(binding)) {\n collectPattern({ paths, pattern: binding, state })\n return\n }\n\n if (!Node.isIdentifier(binding)) {\n return\n }\n\n for (const reference of binding.findReferencesAsNodes()) {\n if (reference !== binding && reference.getSourceFile() === state.file) {\n collectExpression({ allowAlias: false, expression: reference, paths, state })\n }\n }\n}\n\n/** Handles an expression that evaluates to an admin context. */\nfunction collectExpression({\n allowAlias,\n expression,\n paths,\n state,\n}: {\n /** Whether to follow `const context = <expression>` to the uses of `context`. */\n allowAlias: boolean\n expression: Node\n paths: Paths\n state: State\n}): void {\n const parent = expression.getParent()\n\n if (Node.isPropertyAccessExpression(parent) && parent.getExpression() === expression) {\n const path = paths.get(parent.getName())\n\n if (path) {\n state.edits.set(\n parent,\n `${expression.getText()}${parent.hasQuestionDotToken() ? '?.' : '.'}${path.join('.')}`,\n )\n state.rewritten.add(parent.getName())\n }\n } else if (Node.isElementAccessExpression(parent) && parent.getExpression() === expression) {\n const argument = parent.getArgumentExpression()\n const path = Node.isStringLiteral(argument) ? paths.get(argument.getLiteralValue()) : undefined\n\n if (path) {\n state.notes.push(\n `${state.file.getFilePath()}:${parent.getStartLineNumber()}: \\`${parent.getText()}\\` reads a property removed in v4; migrate manually to \\`${expression.getText()}.${path.join('.')}\\`.`,\n )\n }\n } else if (Node.isVariableDeclaration(parent) && parent.getInitializer() === expression) {\n const name = parent.getNameNode()\n\n if (Node.isObjectBindingPattern(name) || allowAlias) {\n collectBinding({ binding: name, paths, state })\n }\n }\n}\n\ntype Tree = Map<string, string | Tree>\n\n/**\n * Moves removed properties out of a destructure into nested patterns, e.g.\n * `{ headers, user }` becomes `{ req: { headers }, user }`. Bindings that are never read are dropped.\n */\nfunction collectPattern({\n paths,\n pattern,\n state,\n}: {\n paths: Paths\n pattern: ObjectBindingPattern\n state: State\n}): void {\n const kept: string[] = []\n const moved: Tree = new Map()\n let insertIndex = -1\n\n for (const element of pattern.getElements()) {\n const propertyNameNode = element.getPropertyNameNode()\n const nameNode = element.getNameNode()\n const property = !propertyNameNode\n ? nameNode.getText()\n : Node.isIdentifier(propertyNameNode)\n ? propertyNameNode.getText()\n : Node.isStringLiteral(propertyNameNode)\n ? propertyNameNode.getLiteralValue()\n : undefined\n const path =\n element.getDotDotDotToken() || property === undefined ? undefined : paths.get(property)\n\n if (!path) {\n kept.push(element.getText())\n continue\n }\n\n if (insertIndex === -1) {\n insertIndex = kept.length\n }\n\n if (\n Node.isIdentifier(nameNode) &&\n nameNode.findReferencesAsNodes().every((reference) => reference === nameNode)\n ) {\n continue\n }\n\n let level = moved\n\n for (const key of path.slice(0, -1)) {\n const next = level.get(key)\n const child = next instanceof Map ? next : new Map<string, string | Tree>()\n level.set(key, child)\n level = child\n }\n\n const leaf = path.at(-1)!\n const initializer = element.getInitializer()\n\n level.set(\n leaf,\n `${leaf === nameNode.getText() ? leaf : `${leaf}: ${nameNode.getText()}`}${initializer ? ` = ${initializer.getText()}` : ''}`,\n )\n state.rewritten.add(property!)\n }\n\n if (insertIndex === -1) {\n return\n }\n\n kept.splice(insertIndex, 0, ...renderTree(moved))\n state.edits.set(pattern, `{ ${kept.join(', ')} }`)\n}\n\nfunction renderTree(tree: Tree): string[] {\n return [...tree].map(([key, value]) =>\n typeof value === 'string' ? value : `${key}: { ${renderTree(value).join(', ')} }`,\n )\n}\n"],"names":["Node","SyntaxKind","ADMIN_CONTEXT_PATHS","Map","PARTIAL_ADMIN_CONTEXT_PATHS","IMPORTS","getRootLayoutData","kind","paths","payload","AdminContext","InitReqResult","initAdminContext","initReq","InitReqPartialResult","PartialAdminContext","migrateAdminContextProperties","name","apply","project","filesChanged","notes","file","getSourceFiles","imports","getImportDeclarations","flatMap","declaration","source","getModuleSpecifierValue","Object","hasOwn","getNamedImports","spec","getAliasNode","getNameNode","getName","isIdentifier","length","original","getFullText","reference","getReferences","call","getParent","argument","isCallExpression","getExpression","getArguments","isObjectLiteralExpression","property","getProperties","isPropertyAssignment","isShorthandPropertyAssignment","has","remove","state","edits","rewritten","Set","parent","expression","isAwaitExpression","isParenthesizedExpression","getParentOrThrow","collectExpression","allowAlias","isTypeReference","getTypeName","owner","isParameterDeclaration","isVariableDeclaration","getTypeNode","collectBinding","binding","isIndexedAccessTypeNode","getObjectTypeNode","index","getIndexTypeNode","literal","isLiteralTypeNode","getLiteral","undefined","isStringLiteral","getLiteralValue","path","get","set","getText","map","key","join","add","getTypeArguments","keys","members","isUnionTypeNode","getTypeNodes","remaining","filter","member","push","getFilePath","getStartLineNumber","node","text","sort","a","b","getStart","replaceWithText","description","symbol","getSymbol","compilerSymbol","getDescendantsOfKind","Identifier","identifier","isObjectBindingPattern","collectPattern","pattern","findReferencesAsNodes","getSourceFile","isPropertyAccessExpression","hasQuestionDotToken","isElementAccessExpression","getArgumentExpression","getInitializer","kept","moved","insertIndex","element","getElements","propertyNameNode","getPropertyNameNode","nameNode","getDotDotDotToken","every","level","slice","next","child","leaf","at","initializer","splice","renderTree","tree","value"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { initAdminContext } from 'payload/internal';
|
|
2
|
+
export async function getRequestInfo(request) {
|
|
3
|
+
const { headers } = request;
|
|
4
|
+
const response = await fetch(request.url, {
|
|
5
|
+
headers
|
|
6
|
+
});
|
|
7
|
+
return {
|
|
8
|
+
headers: response.headers,
|
|
9
|
+
status: response.status
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export async function getContext(args) {
|
|
13
|
+
const { cookies, req } = await initAdminContext(args);
|
|
14
|
+
return {
|
|
15
|
+
cookies,
|
|
16
|
+
userAgent: req.headers.get('user-agent')
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function getLanguage(languageCode, context) {
|
|
20
|
+
const initAdminContext = (value)=>value;
|
|
21
|
+
return {
|
|
22
|
+
context,
|
|
23
|
+
headers: initAdminContext({
|
|
24
|
+
headers: new Headers()
|
|
25
|
+
}).headers,
|
|
26
|
+
languageCode
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=no-match.input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-admin-context-properties/no-match.input.ts"],"sourcesContent":["import type { AdminContext } from 'payload'\n\nimport { initAdminContext } from 'payload/internal'\n\ntype Context = Pick<AdminContext, 'cookies' | 'req'>\n\nexport async function getRequestInfo(request: Request) {\n const { headers } = request\n const response = await fetch(request.url, { headers })\n\n return { headers: response.headers, status: response.status }\n}\n\nexport async function getContext(args: Parameters<typeof initAdminContext>[0]) {\n const { cookies, req } = await initAdminContext(args)\n\n return { cookies, userAgent: req.headers.get('user-agent') }\n}\n\nexport function getLanguage(languageCode: string, context: Context) {\n const initAdminContext = (value: { headers: Headers }) => value\n\n return { context, headers: initAdminContext({ headers: new Headers() }).headers, languageCode }\n}\n"],"names":["initAdminContext","getRequestInfo","request","headers","response","fetch","url","status","getContext","args","cookies","req","userAgent","get","getLanguage","languageCode","context","value","Headers"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,mBAAkB;AAInD,OAAO,eAAeC,eAAeC,OAAgB;IACnD,MAAM,EAAEC,OAAO,EAAE,GAAGD;IACpB,MAAME,WAAW,MAAMC,MAAMH,QAAQI,GAAG,EAAE;QAAEH;IAAQ;IAEpD,OAAO;QAAEA,SAASC,SAASD,OAAO;QAAEI,QAAQH,SAASG,MAAM;IAAC;AAC9D;AAEA,OAAO,eAAeC,WAAWC,IAA4C;IAC3E,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAE,GAAG,MAAMX,iBAAiBS;IAEhD,OAAO;QAAEC;QAASE,WAAWD,IAAIR,OAAO,CAACU,GAAG,CAAC;IAAc;AAC7D;AAEA,OAAO,SAASC,YAAYC,YAAoB,EAAEC,OAAgB;IAChE,MAAMhB,mBAAmB,CAACiB,QAAgCA;IAE1D,OAAO;QAAED;QAASb,SAASH,iBAAiB;YAAEG,SAAS,IAAIe;QAAU,GAAGf,OAAO;QAAEY;IAAa;AAChG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { initAdminContext } from 'payload/internal';
|
|
2
|
+
export async function getRequestInfo(request) {
|
|
3
|
+
const { headers } = request;
|
|
4
|
+
const response = await fetch(request.url, {
|
|
5
|
+
headers
|
|
6
|
+
});
|
|
7
|
+
return {
|
|
8
|
+
headers: response.headers,
|
|
9
|
+
status: response.status
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export async function getContext(args) {
|
|
13
|
+
const { cookies, req } = await initAdminContext(args);
|
|
14
|
+
return {
|
|
15
|
+
cookies,
|
|
16
|
+
userAgent: req.headers.get('user-agent')
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function getLanguage(languageCode, context) {
|
|
20
|
+
const initAdminContext = (value)=>value;
|
|
21
|
+
return {
|
|
22
|
+
context,
|
|
23
|
+
headers: initAdminContext({
|
|
24
|
+
headers: new Headers()
|
|
25
|
+
}).headers,
|
|
26
|
+
languageCode
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=no-match.output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/transforms/migrate-admin-context-properties/no-match.output.ts"],"sourcesContent":["import type { AdminContext } from 'payload'\n\nimport { initAdminContext } from 'payload/internal'\n\ntype Context = Pick<AdminContext, 'cookies' | 'req'>\n\nexport async function getRequestInfo(request: Request) {\n const { headers } = request\n const response = await fetch(request.url, { headers })\n\n return { headers: response.headers, status: response.status }\n}\n\nexport async function getContext(args: Parameters<typeof initAdminContext>[0]) {\n const { cookies, req } = await initAdminContext(args)\n\n return { cookies, userAgent: req.headers.get('user-agent') }\n}\n\nexport function getLanguage(languageCode: string, context: Context) {\n const initAdminContext = (value: { headers: Headers }) => value\n\n return { context, headers: initAdminContext({ headers: new Headers() }).headers, languageCode }\n}\n"],"names":["initAdminContext","getRequestInfo","request","headers","response","fetch","url","status","getContext","args","cookies","req","userAgent","get","getLanguage","languageCode","context","value","Headers"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ,mBAAkB;AAInD,OAAO,eAAeC,eAAeC,OAAgB;IACnD,MAAM,EAAEC,OAAO,EAAE,GAAGD;IACpB,MAAME,WAAW,MAAMC,MAAMH,QAAQI,GAAG,EAAE;QAAEH;IAAQ;IAEpD,OAAO;QAAEA,SAASC,SAASD,OAAO;QAAEI,QAAQH,SAASG,MAAM;IAAC;AAC9D;AAEA,OAAO,eAAeC,WAAWC,IAA4C;IAC3E,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAE,GAAG,MAAMX,iBAAiBS;IAEhD,OAAO;QAAEC;QAASE,WAAWD,IAAIR,OAAO,CAACU,GAAG,CAAC;IAAc;AAC7D;AAEA,OAAO,SAASC,YAAYC,YAAoB,EAAEC,OAAgB;IAChE,MAAMhB,mBAAmB,CAACiB,QAAgCA;IAE1D,OAAO;QAAED;QAASb,SAASH,iBAAiB;YAAEG,SAAS,IAAIe;QAAU,GAAGf,OAAO;QAAEY;IAAa;AAChG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-aliased-exports/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAoC/C,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transforms/migrate-aliased-exports/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAoC/C,eAAO,MAAM,qBAAqB,EAAE,SA0FnC,CAAA"}
|
|
@@ -7,6 +7,7 @@ const SOURCE_MAP = {
|
|
|
7
7
|
to: 'payload'
|
|
8
8
|
},
|
|
9
9
|
createPayloadRequest: {
|
|
10
|
+
rename: 'createPayloadRequestFromWebRequest',
|
|
10
11
|
to: 'payload'
|
|
11
12
|
},
|
|
12
13
|
headersWithCors: {
|
|
@@ -96,8 +97,7 @@ export const migrateAliasedExports = {
|
|
|
96
97
|
migration,
|
|
97
98
|
notes,
|
|
98
99
|
sourceFile: file,
|
|
99
|
-
spec
|
|
100
|
-
target: target
|
|
100
|
+
spec
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
mutated = true;
|
|
@@ -108,6 +108,7 @@ export const migrateAliasedExports = {
|
|
|
108
108
|
const aliasNode = spec.getAliasNode();
|
|
109
109
|
const localName = aliasNode?.getText() ?? spec.getName();
|
|
110
110
|
const canonicalName = migration.rename ?? spec.getName();
|
|
111
|
+
const originalName = spec.getName();
|
|
111
112
|
const alias = localName !== canonicalName ? localName : undefined;
|
|
112
113
|
spec.remove();
|
|
113
114
|
attachToTargetImport({
|
|
@@ -123,7 +124,7 @@ export const migrateAliasedExports = {
|
|
|
123
124
|
notes.push(renameNote({
|
|
124
125
|
filePath: file.getFilePath(),
|
|
125
126
|
migration,
|
|
126
|
-
originalName
|
|
127
|
+
originalName
|
|
127
128
|
}));
|
|
128
129
|
}
|
|
129
130
|
}
|
|
@@ -146,9 +147,9 @@ export const migrateAliasedExports = {
|
|
|
146
147
|
} : {}
|
|
147
148
|
};
|
|
148
149
|
},
|
|
149
|
-
description: 'Move imports of aliased re-exports from @payloadcms/ui and @payloadcms/next/utilities to their canonical sources in `payload` / `payload/shared`. Renamed names (`ListPreferences` → `CollectionPreferences`, `ListComponentClientProps` → `ListViewClientProps`, `ListComponentServerProps` → `ListViewServerProps`) are imported using an `as` alias so existing usages keep compiling.'
|
|
150
|
+
description: 'Move imports of aliased re-exports from @payloadcms/ui and @payloadcms/next/utilities to their canonical sources in `payload` / `payload/shared`. Renamed names (`createPayloadRequest` → `createPayloadRequestFromWebRequest`, `ListPreferences` → `CollectionPreferences`, `ListComponentClientProps` → `ListViewClientProps`, `ListComponentServerProps` → `ListViewServerProps`) are imported using an `as` alias so existing usages keep compiling.'
|
|
150
151
|
};
|
|
151
|
-
function applyRename({ migration, notes, sourceFile, spec
|
|
152
|
+
function applyRename({ migration, notes, sourceFile, spec }) {
|
|
152
153
|
if (!migration.rename) {
|
|
153
154
|
return;
|
|
154
155
|
}
|