@vc-shell/migrate 2.0.0-alpha.32 → 2.0.0-alpha.33
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/CHANGELOG.md +21 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/dep-updater.d.ts +1 -0
- package/dist/dep-updater.js +31 -0
- package/dist/dep-updater.js.map +1 -0
- package/dist/file-scanner.d.ts +3 -0
- package/dist/file-scanner.js +102 -0
- package/dist/file-scanner.js.map +1 -0
- package/dist/report-generator.d.ts +2 -0
- package/dist/report-generator.js +271 -0
- package/dist/report-generator.js.map +1 -0
- package/dist/runner.d.ts +6 -0
- package/dist/runner.js +72 -171
- package/dist/runner.js.map +1 -1
- package/dist/sfc-processor.d.ts +12 -0
- package/dist/sfc-processor.js +54 -0
- package/dist/sfc-processor.js.map +1 -0
- package/dist/transforms/blade-props-simplification.js +10 -2
- package/dist/transforms/blade-props-simplification.js.map +1 -1
- package/dist/transforms/define-app-module.js +8 -4
- package/dist/transforms/define-app-module.js.map +1 -1
- package/dist/transforms/define-expose-to-children.d.ts +4 -0
- package/dist/transforms/define-expose-to-children.js +83 -0
- package/dist/transforms/define-expose-to-children.js.map +1 -0
- package/dist/transforms/dynamic-properties-refactor.js +1 -1
- package/dist/transforms/dynamic-properties-refactor.js.map +1 -1
- package/dist/transforms/icon-audit.js +20 -24
- package/dist/transforms/icon-audit.js.map +1 -1
- package/dist/transforms/locale-imports.d.ts +4 -0
- package/dist/transforms/locale-imports.js +23 -0
- package/dist/transforms/locale-imports.js.map +1 -0
- package/dist/transforms/registry.js +77 -2
- package/dist/transforms/registry.js.map +1 -1
- package/dist/transforms/remove-deprecated-aliases.js +12 -1
- package/dist/transforms/remove-deprecated-aliases.js.map +1 -1
- package/dist/transforms/remove-pathmatch-route.d.ts +17 -0
- package/dist/transforms/remove-pathmatch-route.js +74 -0
- package/dist/transforms/remove-pathmatch-route.js.map +1 -0
- package/dist/transforms/remove-release-config.d.ts +4 -0
- package/dist/transforms/remove-release-config.js +58 -0
- package/dist/transforms/remove-release-config.js.map +1 -0
- package/dist/transforms/replace-cover-method.d.ts +4 -0
- package/dist/transforms/replace-cover-method.js +81 -0
- package/dist/transforms/replace-cover-method.js.map +1 -0
- package/dist/transforms/types.d.ts +2 -0
- package/dist/transforms/use-assets-migration.js +12 -12
- package/dist/transforms/use-assets-migration.js.map +1 -1
- package/dist/transforms/use-blade-form.js +21 -127
- package/dist/transforms/use-blade-form.js.map +1 -1
- package/dist/transforms/use-blade-migration.js +14 -2
- package/dist/transforms/use-blade-migration.js.map +1 -1
- package/dist/transforms/vctable-audit.d.ts +4 -0
- package/dist/transforms/vctable-audit.js +14 -0
- package/dist/transforms/vctable-audit.js.map +1 -0
- package/dist/transforms/widgets-migration.js +19 -23
- package/dist/transforms/widgets-migration.js.map +1 -1
- package/dist/transforms/window-globals.d.ts +4 -0
- package/dist/transforms/window-globals.js +24 -0
- package/dist/transforms/window-globals.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
|
|
2
|
+
/**
|
|
3
|
+
* Replace defineExpose({...}) with exposeToChildren({...}) from useBlade() in blade pages.
|
|
4
|
+
*
|
|
5
|
+
* defineExpose is a Vue macro for parent→child component access.
|
|
6
|
+
* In the blade system, parent→child communication uses exposeToChildren()
|
|
7
|
+
* from useBlade(), which registers methods in the blade messaging system.
|
|
8
|
+
*
|
|
9
|
+
* Only transforms files that have defineOptions/defineBlade (blade pages).
|
|
10
|
+
*/
|
|
11
|
+
function coreTransform(fileInfo, api, _options) {
|
|
12
|
+
const j = api.jscodeshift;
|
|
13
|
+
const root = j(fileInfo.source);
|
|
14
|
+
// Only process blade pages
|
|
15
|
+
const isBladePage = root.find(j.CallExpression, { callee: { name: "defineOptions" } }).size() > 0 ||
|
|
16
|
+
root.find(j.CallExpression, { callee: { name: "defineBlade" } }).size() > 0;
|
|
17
|
+
if (!isBladePage)
|
|
18
|
+
return null;
|
|
19
|
+
// Find defineExpose calls
|
|
20
|
+
const exposes = root.find(j.CallExpression, { callee: { name: "defineExpose" } });
|
|
21
|
+
if (exposes.size() === 0)
|
|
22
|
+
return null;
|
|
23
|
+
let modified = false;
|
|
24
|
+
// Replace defineExpose → exposeToChildren
|
|
25
|
+
exposes.forEach((path) => {
|
|
26
|
+
if (path.node.callee.type === "Identifier") {
|
|
27
|
+
path.node.callee.name = "exposeToChildren";
|
|
28
|
+
modified = true;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
if (!modified)
|
|
32
|
+
return null;
|
|
33
|
+
// Add exposeToChildren to useBlade() destructuring if not already there
|
|
34
|
+
const useBladeDecls = root.find(j.VariableDeclaration).filter((path) => {
|
|
35
|
+
return (j(path)
|
|
36
|
+
.find(j.CallExpression, { callee: { name: "useBlade" } })
|
|
37
|
+
.size() > 0);
|
|
38
|
+
});
|
|
39
|
+
if (useBladeDecls.size() > 0) {
|
|
40
|
+
const decl = useBladeDecls.at(0).get().node.declarations[0];
|
|
41
|
+
if (decl.id.type === "ObjectPattern") {
|
|
42
|
+
const hasExposeToChildren = decl.id.properties.some((p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "exposeToChildren");
|
|
43
|
+
if (!hasExposeToChildren) {
|
|
44
|
+
const prop = j.objectProperty(j.identifier("exposeToChildren"), j.identifier("exposeToChildren"));
|
|
45
|
+
prop.shorthand = true;
|
|
46
|
+
decl.id.properties.push(prop);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// No useBlade() call exists — need to add import + call
|
|
52
|
+
// Add to framework import
|
|
53
|
+
const frameworkImports = root.find(j.ImportDeclaration, {
|
|
54
|
+
source: { value: "@vc-shell/framework" },
|
|
55
|
+
});
|
|
56
|
+
let hasUseBlade = false;
|
|
57
|
+
frameworkImports.forEach((path) => {
|
|
58
|
+
const specifiers = path.node.specifiers || [];
|
|
59
|
+
if (specifiers.some((s) => s.type === "ImportSpecifier" && s.imported?.name === "useBlade")) {
|
|
60
|
+
hasUseBlade = true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (!hasUseBlade && frameworkImports.size() > 0) {
|
|
64
|
+
const firstImport = frameworkImports.at(0).get();
|
|
65
|
+
const specifiers = firstImport.node.specifiers || [];
|
|
66
|
+
specifiers.push(j.importSpecifier(j.identifier("useBlade")));
|
|
67
|
+
}
|
|
68
|
+
// Add const { exposeToChildren } = useBlade(); after last import
|
|
69
|
+
const imports = root.find(j.ImportDeclaration);
|
|
70
|
+
if (imports.size() > 0) {
|
|
71
|
+
const prop = j.objectProperty(j.identifier("exposeToChildren"), j.identifier("exposeToChildren"));
|
|
72
|
+
prop.shorthand = true;
|
|
73
|
+
const decl = j.variableDeclaration("const", [
|
|
74
|
+
j.variableDeclarator(j.objectPattern([prop]), j.callExpression(j.identifier("useBlade"), [])),
|
|
75
|
+
]);
|
|
76
|
+
j(imports.at(-1).get()).insertAfter(decl);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return root.toSource();
|
|
80
|
+
}
|
|
81
|
+
export default wrapForSFC(coreTransform);
|
|
82
|
+
export const parser = "tsx";
|
|
83
|
+
//# sourceMappingURL=define-expose-to-children.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-expose-to-children.js","sourceRoot":"","sources":["../../src/transforms/define-expose-to-children.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,7 +108,7 @@ function coreTransform(fileInfo, api, _options) {
|
|
|
108
108
|
}
|
|
109
109
|
});
|
|
110
110
|
if (modified) {
|
|
111
|
-
|
|
111
|
+
api.report(` ✅ ${fileInfo.path}: Migrated useDynamicProperties() to options API`);
|
|
112
112
|
}
|
|
113
113
|
if (!modified)
|
|
114
114
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-properties-refactor.js","sourceRoot":"","sources":["../../src/transforms/dynamic-properties-refactor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dynamic-properties-refactor.js","sourceRoot":"","sources":["../../src/transforms/dynamic-properties-refactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"fa-trash": "delete (Material Symbols)",
|
|
7
|
-
"fa-trash-alt": "delete (Material Symbols)",
|
|
8
|
-
"fa-search": "search (Material Symbols)",
|
|
9
|
-
"fa-save": "save (Material Symbols)",
|
|
10
|
-
"fa-cog": "settings (Material Symbols)",
|
|
11
|
-
"fa-user": "person (Material Symbols)",
|
|
12
|
-
"fa-download": "download (Material Symbols)",
|
|
13
|
-
"fa-upload": "upload (Material Symbols)",
|
|
14
|
-
"fa-chevron-right": "chevron_right (Material Symbols)",
|
|
15
|
-
"fa-chevron-left": "chevron_left (Material Symbols)",
|
|
16
|
-
"fa-arrow-left": "arrow_back (Material Symbols)",
|
|
17
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Detect non-lucide icons (material-, bi-, fa-) and report them for AI migration.
|
|
3
|
+
* Does NOT suggest replacements — the AI migration-agent picks the best lucide
|
|
4
|
+
* equivalent based on context and icon semantics.
|
|
5
|
+
*/
|
|
18
6
|
const FA_PATTERN = /\b(?:fas?|far|fal|fab)\s+(fa-[\w-]+)/g;
|
|
7
|
+
const MATERIAL_PATTERN = /["'](material-[\w-]+)["']/g;
|
|
8
|
+
const BI_PATTERN = /["'](bi-[\w-]+)["']/g;
|
|
19
9
|
const transform = (fileInfo, api, _options) => {
|
|
20
10
|
const text = fileInfo.source;
|
|
21
|
-
FA_PATTERN.lastIndex = 0;
|
|
22
11
|
const icons = [];
|
|
12
|
+
FA_PATTERN.lastIndex = 0;
|
|
23
13
|
let match;
|
|
24
14
|
while ((match = FA_PATTERN.exec(text)) !== null) {
|
|
25
|
-
icons.push(match[1]);
|
|
15
|
+
icons.push({ icon: match[1], pack: "Font Awesome" });
|
|
16
|
+
}
|
|
17
|
+
MATERIAL_PATTERN.lastIndex = 0;
|
|
18
|
+
while ((match = MATERIAL_PATTERN.exec(text)) !== null) {
|
|
19
|
+
icons.push({ icon: match[1], pack: "Material" });
|
|
20
|
+
}
|
|
21
|
+
BI_PATTERN.lastIndex = 0;
|
|
22
|
+
while ((match = BI_PATTERN.exec(text)) !== null) {
|
|
23
|
+
icons.push({ icon: match[1], pack: "Bootstrap" });
|
|
26
24
|
}
|
|
27
25
|
if (icons.length > 0) {
|
|
28
|
-
for (const icon of icons) {
|
|
29
|
-
|
|
30
|
-
const hint = suggestion ? ` → suggested: ${suggestion}` : "";
|
|
31
|
-
api.report(`${fileInfo.path}: ${icon}${hint}`);
|
|
26
|
+
for (const { icon, pack } of icons) {
|
|
27
|
+
api.report(`${fileInfo.path}: [${pack}] ${icon} → replace with lucide- equivalent`);
|
|
32
28
|
}
|
|
33
29
|
}
|
|
34
|
-
return null; //
|
|
30
|
+
return null; // diagnostic-only — never modify
|
|
35
31
|
};
|
|
36
32
|
export default transform;
|
|
37
33
|
export const parser = "tsx";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-audit.js","sourceRoot":"","sources":["../../src/transforms/icon-audit.ts"],"names":[],"mappings":"AAGA,MAAM,
|
|
1
|
+
{"version":3,"file":"icon-audit.js","sourceRoot":"","sources":["../../src/transforms/icon-audit.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,MAAM,UAAU,GAAG,uCAAuC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AACtD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,SAAS,GAAc,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB,EAAiB,EAAE;IAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,MAAM,KAAK,GAA0C,EAAE,CAAC;IAExD,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;IACzB,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,oCAAoC,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,iCAAiC;AAChD,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const OLD_PREFIX = "@vc-shell/framework/dist/locales/";
|
|
2
|
+
const transform = (fileInfo, api, _options) => {
|
|
3
|
+
const j = api.jscodeshift;
|
|
4
|
+
const root = j(fileInfo.source);
|
|
5
|
+
let modified = false;
|
|
6
|
+
root.find(j.ImportDeclaration).forEach((path) => {
|
|
7
|
+
const source = path.node.source.value;
|
|
8
|
+
if (typeof source !== "string")
|
|
9
|
+
return;
|
|
10
|
+
if (!source.startsWith(OLD_PREFIX))
|
|
11
|
+
return;
|
|
12
|
+
const filename = source.slice(OLD_PREFIX.length);
|
|
13
|
+
const localeName = filename.replace(/\.json$/, "");
|
|
14
|
+
path.node.source.value = `@vc-shell/framework/locales/${localeName}`;
|
|
15
|
+
modified = true;
|
|
16
|
+
});
|
|
17
|
+
if (!modified)
|
|
18
|
+
return null;
|
|
19
|
+
return root.toSource();
|
|
20
|
+
};
|
|
21
|
+
export default transform;
|
|
22
|
+
export const parser = "tsx";
|
|
23
|
+
//# sourceMappingURL=locale-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-imports.js","sourceRoot":"","sources":["../../src/transforms/locale-imports.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,mCAAmC,CAAC;AAEvD,MAAM,SAAS,GAAc,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB,EAAiB,EAAE;IAC9F,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QAE3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,+BAA+B,UAAU,EAAE,CAAC;QACrE,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -4,6 +4,13 @@ import { resolve, dirname } from "node:path";
|
|
|
4
4
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
const t = (name) => resolve(__dirname, `${name}.js`);
|
|
6
6
|
export const transforms = [
|
|
7
|
+
{
|
|
8
|
+
name: "remove-release-config",
|
|
9
|
+
description: "Remove deprecated @vc-shell/release-config and scripts/release.ts",
|
|
10
|
+
introducedIn: "2.0.0",
|
|
11
|
+
scope: "project",
|
|
12
|
+
transformPath: t("remove-release-config"),
|
|
13
|
+
},
|
|
7
14
|
{
|
|
8
15
|
name: "define-app-module",
|
|
9
16
|
description: "createAppModule(pages, locales) → defineAppModule({...})",
|
|
@@ -42,6 +49,16 @@ export const transforms = [
|
|
|
42
49
|
description: "Remove boilerplate expanded/closable props and blade event emits",
|
|
43
50
|
introducedIn: "2.0.0",
|
|
44
51
|
transformPath: t("blade-props-simplification"),
|
|
52
|
+
after: ["define-options-to-blade"],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "define-expose-to-children",
|
|
56
|
+
description: "defineExpose() → exposeToChildren() from useBlade() in blade pages",
|
|
57
|
+
introducedIn: "2.0.0",
|
|
58
|
+
migrationGuideSection: "Guide 11",
|
|
59
|
+
transformPath: t("define-expose-to-children"),
|
|
60
|
+
fileExtensions: [".vue"],
|
|
61
|
+
after: ["define-options-to-blade"],
|
|
45
62
|
},
|
|
46
63
|
{
|
|
47
64
|
name: "define-options-to-blade",
|
|
@@ -50,10 +67,11 @@ export const transforms = [
|
|
|
50
67
|
migrationGuideSection: "defineBlade macro",
|
|
51
68
|
transformPath: t("define-options-to-blade"),
|
|
52
69
|
fileExtensions: [".vue"],
|
|
70
|
+
after: ["use-blade-migration"],
|
|
53
71
|
},
|
|
54
72
|
{
|
|
55
73
|
name: "icon-audit",
|
|
56
|
-
description: "Detect
|
|
74
|
+
description: "Detect non-lucide icons (material-/bi-/fa-) and suggest lucide replacements (diagnostic-only)",
|
|
57
75
|
introducedIn: "2.0.0",
|
|
58
76
|
diagnosticOnly: true,
|
|
59
77
|
migrationGuideSection: "Section 2",
|
|
@@ -133,6 +151,15 @@ export const transforms = [
|
|
|
133
151
|
diagnosticOnly: true,
|
|
134
152
|
transformPath: t("manual-migration-audit"),
|
|
135
153
|
},
|
|
154
|
+
{
|
|
155
|
+
name: "vctable-audit",
|
|
156
|
+
description: "Detect <VcTable> usage for migration to <VcDataTable> (diagnostic-only)",
|
|
157
|
+
introducedIn: "2.0.0",
|
|
158
|
+
diagnosticOnly: true,
|
|
159
|
+
migrationGuideSection: "VcTable → VcDataTable",
|
|
160
|
+
transformPath: t("vctable-audit"),
|
|
161
|
+
fileExtensions: [".vue"],
|
|
162
|
+
},
|
|
136
163
|
{
|
|
137
164
|
name: "nswag-class-to-interface",
|
|
138
165
|
description: "Migrate consumer code from NSwag class-based to interface-based DTOs",
|
|
@@ -147,6 +174,14 @@ export const transforms = [
|
|
|
147
174
|
migrationGuideSection: "Guide 32",
|
|
148
175
|
transformPath: t("use-assets-migration"),
|
|
149
176
|
},
|
|
177
|
+
{
|
|
178
|
+
name: "replace-cover-method",
|
|
179
|
+
description: "openBlade({ replaceCurrentBlade: true }) → coverWith()",
|
|
180
|
+
introducedIn: "2.0.0",
|
|
181
|
+
migrationGuideSection: "Guide 12",
|
|
182
|
+
transformPath: t("replace-cover-method"),
|
|
183
|
+
fileExtensions: [".vue", ".ts"],
|
|
184
|
+
},
|
|
150
185
|
{
|
|
151
186
|
name: "app-hub-rename",
|
|
152
187
|
description: "disableAppSwitcher → disableAppHub, #app-switcher → #app-hub, useAppSwitcher → useAppHub",
|
|
@@ -172,6 +207,22 @@ export const transforms = [
|
|
|
172
207
|
transformPath: t("use-blade-form"),
|
|
173
208
|
fileExtensions: [".vue"],
|
|
174
209
|
},
|
|
210
|
+
{
|
|
211
|
+
name: "remove-pathmatch-route",
|
|
212
|
+
description: "Remove /:pathMatch(.*)* catch-all route (now built into framework)",
|
|
213
|
+
introducedIn: "2.0.0",
|
|
214
|
+
transformPath: t("remove-pathmatch-route"),
|
|
215
|
+
fileExtensions: [".ts"],
|
|
216
|
+
after: ["use-blade-migration"],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: "locale-imports",
|
|
220
|
+
description: "@vc-shell/framework/dist/locales/*.json → @vc-shell/framework/locales/*",
|
|
221
|
+
introducedIn: "2.0.0",
|
|
222
|
+
migrationGuideSection: "Guide 33",
|
|
223
|
+
transformPath: t("locale-imports"),
|
|
224
|
+
fileExtensions: [".ts"],
|
|
225
|
+
},
|
|
175
226
|
{
|
|
176
227
|
name: "dynamic-properties-refactor",
|
|
177
228
|
description: "useDynamicProperties<A,B,C,D,E>(fn, Class, Class, fn) → useDynamicProperties({ searchDictionary, searchMeasurements })",
|
|
@@ -180,6 +231,14 @@ export const transforms = [
|
|
|
180
231
|
transformPath: t("dynamic-properties-refactor"),
|
|
181
232
|
fileExtensions: [".vue"],
|
|
182
233
|
},
|
|
234
|
+
{
|
|
235
|
+
name: "window-globals",
|
|
236
|
+
description: "Detect removed window.Vue/window._/window.moment globals",
|
|
237
|
+
introducedIn: "2.0.0",
|
|
238
|
+
diagnosticOnly: true,
|
|
239
|
+
migrationGuideSection: "Guide 04",
|
|
240
|
+
transformPath: t("window-globals"),
|
|
241
|
+
},
|
|
183
242
|
];
|
|
184
243
|
export function selectTransforms(currentVersion, targetVersion) {
|
|
185
244
|
const current = semver.parse(currentVersion);
|
|
@@ -192,7 +251,23 @@ export function selectTransforms(currentVersion, targetVersion) {
|
|
|
192
251
|
const introduced = semver.parse(t.introducedIn);
|
|
193
252
|
if (!introduced)
|
|
194
253
|
return false;
|
|
195
|
-
|
|
254
|
+
if (!semver.lt(currentVersion, t.introducedIn))
|
|
255
|
+
return false;
|
|
256
|
+
// Normal case: introducedIn <= targetVersion
|
|
257
|
+
if (semver.lte(t.introducedIn, targetVersion))
|
|
258
|
+
return true;
|
|
259
|
+
// Special case: target is a prerelease (e.g. 2.0.0-alpha.32) and introducedIn
|
|
260
|
+
// is the corresponding stable release (e.g. 2.0.0) with no prerelease tag.
|
|
261
|
+
// Prereleases are on the path to that release, so include the transform.
|
|
262
|
+
// Without this, semver.lte("2.0.0", "2.0.0-alpha.32") returns false.
|
|
263
|
+
if (target.prerelease.length > 0 &&
|
|
264
|
+
introduced.prerelease.length === 0 &&
|
|
265
|
+
target.major === introduced.major &&
|
|
266
|
+
target.minor === introduced.minor &&
|
|
267
|
+
target.patch === introduced.patch) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
return false;
|
|
196
271
|
});
|
|
197
272
|
}
|
|
198
273
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/transforms/registry.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0DAA0D;QACvE,YAAY,EAAE,eAAe;QAC7B,qBAAqB,EAAE,8BAA8B;QACrD,aAAa,EAAE,CAAC,CAAC,mBAAmB,CAAC;KACtC;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,qEAAqE;QAClF,YAAY,EAAE,eAAe;QAC7B,qBAAqB,EAAE,YAAY;QACnC,aAAa,EAAE,CAAC,CAAC,qBAAqB,CAAC;KACxC;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,0CAA0C;QACvD,YAAY,EAAE,gBAAgB;QAC9B,qBAAqB,EAAE,+BAA+B;QACtD,aAAa,EAAE,CAAC,CAAC,wBAAwB,CAAC;KAC3C;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2DAA2D;QACxE,YAAY,EAAE,OAAO;QACrB,aAAa,EAAE,CAAC,CAAC,iBAAiB,CAAC;KACpC;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,wCAAwC;QACrD,YAAY,EAAE,OAAO;QACrB,aAAa,EAAE,CAAC,CAAC,2BAA2B,CAAC;KAC9C;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,kEAAkE;QAC/E,YAAY,EAAE,OAAO;QACrB,aAAa,EAAE,CAAC,CAAC,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/transforms/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
|
|
2
2
|
const RENAME_MAP = {
|
|
3
3
|
navigationViewLocation: "NavigationViewLocationKey",
|
|
4
|
-
BladeInstance: "BladeInstanceKey",
|
|
5
4
|
BLADE_BACK_BUTTON: "BladeBackButtonKey",
|
|
6
5
|
TOOLBAR_SERVICE: "ToolbarServiceKey",
|
|
7
6
|
EMBEDDED_MODE: "EmbeddedModeKey",
|
|
7
|
+
NotificationTemplatesSymbol: "NotificationTemplatesKey",
|
|
8
|
+
};
|
|
9
|
+
// Symbols that require manual migration (API changed, not just renamed)
|
|
10
|
+
const MANUAL_MIGRATION = {
|
|
11
|
+
BladeInstance: "inject(BladeInstance) removed. Use `useBlade()` composable instead — blade context is now provided by useBlade(). See migration guide.",
|
|
8
12
|
};
|
|
9
13
|
function coreTransform(fileInfo, api, _options) {
|
|
10
14
|
const j = api.jscodeshift;
|
|
@@ -21,6 +25,13 @@ function coreTransform(fileInfo, api, _options) {
|
|
|
21
25
|
renames.push({ old: name, new: RENAME_MAP[name] });
|
|
22
26
|
}
|
|
23
27
|
});
|
|
28
|
+
// Check for symbols requiring manual migration
|
|
29
|
+
frameworkImports.find(j.ImportSpecifier).forEach((path) => {
|
|
30
|
+
const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
|
|
31
|
+
if (MANUAL_MIGRATION[name]) {
|
|
32
|
+
api.report(`${fileInfo.path}: ${MANUAL_MIGRATION[name]}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
24
35
|
if (renames.length === 0)
|
|
25
36
|
return null;
|
|
26
37
|
for (const r of renames) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-deprecated-aliases.js","sourceRoot":"","sources":["../../src/transforms/remove-deprecated-aliases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,UAAU,GAA2B;IACzC,sBAAsB,EAAE,2BAA2B;IACnD,
|
|
1
|
+
{"version":3,"file":"remove-deprecated-aliases.js","sourceRoot":"","sources":["../../src/transforms/remove-deprecated-aliases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,UAAU,GAA2B;IACzC,sBAAsB,EAAE,2BAA2B;IACnD,iBAAiB,EAAE,oBAAoB;IACvC,eAAe,EAAE,mBAAmB;IACpC,aAAa,EAAE,iBAAiB;IAChC,2BAA2B,EAAE,0BAA0B;CACxD,CAAC;AAEF,wEAAwE;AACxE,MAAM,gBAAgB,GAA2B;IAC/C,aAAa,EACX,wIAAwI;CAC3I,CAAC;AAEF,SAAS,aAAa,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB;IACpE,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE;QACtD,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;KACzC,CAAC,CAAC;IACH,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,+CAA+C;IAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,eAAe,UAAU,CAAC,aAAa,CAAc,CAAC;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Transform } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Remove the catch-all `/:pathMatch(.*)*` route entry from router/routes.ts.
|
|
4
|
+
* The framework now handles this internally.
|
|
5
|
+
*
|
|
6
|
+
* Targets:
|
|
7
|
+
* ```ts
|
|
8
|
+
* {
|
|
9
|
+
* path: "/:pathMatch(.*)*",
|
|
10
|
+
* component: App,
|
|
11
|
+
* beforeEnter: async (to) => { ... },
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const transform: Transform;
|
|
16
|
+
export default transform;
|
|
17
|
+
export declare const parser = "tsx";
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove the catch-all `/:pathMatch(.*)*` route entry from router/routes.ts.
|
|
3
|
+
* The framework now handles this internally.
|
|
4
|
+
*
|
|
5
|
+
* Targets:
|
|
6
|
+
* ```ts
|
|
7
|
+
* {
|
|
8
|
+
* path: "/:pathMatch(.*)*",
|
|
9
|
+
* component: App,
|
|
10
|
+
* beforeEnter: async (to) => { ... },
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
const transform = (fileInfo, api, _options) => {
|
|
15
|
+
// Only process route files
|
|
16
|
+
if (!fileInfo.path.includes("route"))
|
|
17
|
+
return null;
|
|
18
|
+
const j = api.jscodeshift;
|
|
19
|
+
const root = j(fileInfo.source);
|
|
20
|
+
let modified = false;
|
|
21
|
+
// Find array elements that are ObjectExpressions with path: "/:pathMatch(.*)*"
|
|
22
|
+
root.find(j.ObjectExpression).forEach((path) => {
|
|
23
|
+
const props = path.node.properties;
|
|
24
|
+
const pathProp = props.find((p) => p.type === "ObjectProperty" &&
|
|
25
|
+
p.key.type === "Identifier" &&
|
|
26
|
+
p.key.name === "path" &&
|
|
27
|
+
p.value.type === "StringLiteral" &&
|
|
28
|
+
p.value.value.includes(":pathMatch"));
|
|
29
|
+
if (!pathProp)
|
|
30
|
+
return;
|
|
31
|
+
// Remove this element from parent array
|
|
32
|
+
const parent = path.parent;
|
|
33
|
+
if (parent.node.type === "ArrayExpression") {
|
|
34
|
+
const idx = parent.node.elements.indexOf(path.node);
|
|
35
|
+
if (idx !== -1) {
|
|
36
|
+
parent.node.elements.splice(idx, 1);
|
|
37
|
+
modified = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
if (!modified)
|
|
42
|
+
return null;
|
|
43
|
+
// Clean up: remove unused imports that were only used in the pathMatch route
|
|
44
|
+
// Common: useBlade, routeResolver
|
|
45
|
+
const source = root.toSource();
|
|
46
|
+
// Re-parse to check for unused imports
|
|
47
|
+
const root2 = j(source);
|
|
48
|
+
// Check if useBlade is still used anywhere besides import
|
|
49
|
+
const useBladeUsages = root2
|
|
50
|
+
.find(j.Identifier, { name: "useBlade" })
|
|
51
|
+
.filter((p) => p.parent.node.type !== "ImportSpecifier");
|
|
52
|
+
if (useBladeUsages.size() === 0) {
|
|
53
|
+
// Remove useBlade from framework import
|
|
54
|
+
root2.find(j.ImportDeclaration, { source: { value: "@vc-shell/framework" } }).forEach((importPath) => {
|
|
55
|
+
const specifiers = importPath.node.specifiers ?? [];
|
|
56
|
+
const remaining = specifiers.filter((spec) => {
|
|
57
|
+
if (spec.type !== "ImportSpecifier")
|
|
58
|
+
return true;
|
|
59
|
+
const name = spec.imported.type === "Identifier" ? spec.imported.name : "";
|
|
60
|
+
return name !== "useBlade";
|
|
61
|
+
});
|
|
62
|
+
if (remaining.length === 0) {
|
|
63
|
+
j(importPath).remove();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
importPath.node.specifiers = remaining;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return root2.toSource();
|
|
71
|
+
};
|
|
72
|
+
export default transform;
|
|
73
|
+
export const parser = "tsx";
|
|
74
|
+
//# sourceMappingURL=remove-pathmatch-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-pathmatch-route.js","sourceRoot":"","sources":["../../src/transforms/remove-pathmatch-route.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAEH,MAAM,SAAS,GAAc,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB,EAAiB,EAAE;IAC9F,2BAA2B;IAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,+EAA+E;IAC/E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,CAAM,EAAE,EAAE,CACT,CAAC,CAAC,IAAI,KAAK,gBAAgB;YAC3B,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;YAC3B,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;YAChC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CACvC,CAAC;QAEF,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACpC,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,6EAA6E;IAC7E,kCAAkC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAE/B,uCAAuC;IACvC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAExB,0DAA0D;IAC1D,MAAM,cAAc,GAAG,KAAK;SACzB,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAChC,wCAAwC;QACxC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YACnG,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;oBAAE,OAAO,IAAI,CAAC;gBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,OAAO,IAAI,KAAK,UAAU,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, unlinkSync, readdirSync, rmdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const PACKAGE_NAME = "@vc-shell/release-config";
|
|
4
|
+
const transform = (_fileInfo, api, options) => {
|
|
5
|
+
const cwd = options.cwd ?? ".";
|
|
6
|
+
const dryRun = options.dryRun ?? false;
|
|
7
|
+
const pkgPath = join(cwd, "package.json");
|
|
8
|
+
if (!existsSync(pkgPath))
|
|
9
|
+
return null;
|
|
10
|
+
const pkgContent = readFileSync(pkgPath, "utf-8");
|
|
11
|
+
const pkg = JSON.parse(pkgContent);
|
|
12
|
+
const hasReleaseConfig = pkg.devDependencies?.[PACKAGE_NAME] || pkg.dependencies?.[PACKAGE_NAME];
|
|
13
|
+
if (!hasReleaseConfig)
|
|
14
|
+
return null;
|
|
15
|
+
// 1. Remove from devDependencies / dependencies
|
|
16
|
+
if (pkg.devDependencies?.[PACKAGE_NAME]) {
|
|
17
|
+
delete pkg.devDependencies[PACKAGE_NAME];
|
|
18
|
+
api.report(`Removed ${PACKAGE_NAME} from devDependencies`);
|
|
19
|
+
}
|
|
20
|
+
if (pkg.dependencies?.[PACKAGE_NAME]) {
|
|
21
|
+
delete pkg.dependencies[PACKAGE_NAME];
|
|
22
|
+
api.report(`Removed ${PACKAGE_NAME} from dependencies`);
|
|
23
|
+
}
|
|
24
|
+
// 2. Remove "release" script if it references release-config or scripts/release
|
|
25
|
+
if (pkg.scripts?.release) {
|
|
26
|
+
const releaseScript = pkg.scripts.release;
|
|
27
|
+
if (releaseScript.includes("release-config") || releaseScript.includes("scripts/release")) {
|
|
28
|
+
delete pkg.scripts.release;
|
|
29
|
+
api.report(`Removed "release" script from package.json`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!dryRun) {
|
|
33
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n", "utf-8");
|
|
34
|
+
}
|
|
35
|
+
// 3. Remove scripts/release.ts
|
|
36
|
+
const scriptsDir = join(cwd, "scripts");
|
|
37
|
+
const releaseFile = join(scriptsDir, "release.ts");
|
|
38
|
+
if (existsSync(releaseFile)) {
|
|
39
|
+
if (!dryRun) {
|
|
40
|
+
unlinkSync(releaseFile);
|
|
41
|
+
}
|
|
42
|
+
api.report(`Deleted scripts/release.ts`);
|
|
43
|
+
// Remove scripts/ directory if empty
|
|
44
|
+
if (existsSync(scriptsDir)) {
|
|
45
|
+
const remaining = readdirSync(scriptsDir);
|
|
46
|
+
if (remaining.length === 0) {
|
|
47
|
+
if (!dryRun) {
|
|
48
|
+
rmdirSync(scriptsDir);
|
|
49
|
+
}
|
|
50
|
+
api.report(`Deleted empty scripts/ directory`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null; // Changes done via direct file I/O
|
|
55
|
+
};
|
|
56
|
+
export default transform;
|
|
57
|
+
export const parser = "tsx";
|
|
58
|
+
//# sourceMappingURL=remove-release-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-release-config.js","sourceRoot":"","sources":["../../src/transforms/remove-release-config.ts"],"names":[],"mappings":"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"}
|