@vc-shell/migrate 2.0.0-alpha.12

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.
Files changed (74) hide show
  1. package/README.md +359 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +45 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/runner.d.ts +8 -0
  6. package/dist/runner.js +154 -0
  7. package/dist/runner.js.map +1 -0
  8. package/dist/transforms/banner-variants.d.ts +4 -0
  9. package/dist/transforms/banner-variants.js +21 -0
  10. package/dist/transforms/banner-variants.js.map +1 -0
  11. package/dist/transforms/blade-props-simplification.d.ts +4 -0
  12. package/dist/transforms/blade-props-simplification.js +315 -0
  13. package/dist/transforms/blade-props-simplification.js.map +1 -0
  14. package/dist/transforms/composable-return-types.d.ts +4 -0
  15. package/dist/transforms/composable-return-types.js +50 -0
  16. package/dist/transforms/composable-return-types.js.map +1 -0
  17. package/dist/transforms/define-app-module.d.ts +4 -0
  18. package/dist/transforms/define-app-module.js +73 -0
  19. package/dist/transforms/define-app-module.js.map +1 -0
  20. package/dist/transforms/icon-audit.d.ts +4 -0
  21. package/dist/transforms/icon-audit.js +38 -0
  22. package/dist/transforms/icon-audit.js.map +1 -0
  23. package/dist/transforms/icon-container-prop.d.ts +4 -0
  24. package/dist/transforms/icon-container-prop.js +14 -0
  25. package/dist/transforms/icon-container-prop.js.map +1 -0
  26. package/dist/transforms/menu-group-config.d.ts +4 -0
  27. package/dist/transforms/menu-group-config.js +22 -0
  28. package/dist/transforms/menu-group-config.js.map +1 -0
  29. package/dist/transforms/notification-migration.d.ts +4 -0
  30. package/dist/transforms/notification-migration.js +31 -0
  31. package/dist/transforms/notification-migration.js.map +1 -0
  32. package/dist/transforms/registry.d.ts +3 -0
  33. package/dist/transforms/registry.js +129 -0
  34. package/dist/transforms/registry.js.map +1 -0
  35. package/dist/transforms/remove-deprecated-aliases.d.ts +4 -0
  36. package/dist/transforms/remove-deprecated-aliases.js +36 -0
  37. package/dist/transforms/remove-deprecated-aliases.js.map +1 -0
  38. package/dist/transforms/rewrite-imports.d.ts +4 -0
  39. package/dist/transforms/rewrite-imports.js +62 -0
  40. package/dist/transforms/rewrite-imports.js.map +1 -0
  41. package/dist/transforms/scss-safe-use.d.ts +4 -0
  42. package/dist/transforms/scss-safe-use.js +50 -0
  43. package/dist/transforms/scss-safe-use.js.map +1 -0
  44. package/dist/transforms/shims-to-globals.d.ts +4 -0
  45. package/dist/transforms/shims-to-globals.js +64 -0
  46. package/dist/transforms/shims-to-globals.js.map +1 -0
  47. package/dist/transforms/switch-tooltip-prop.d.ts +4 -0
  48. package/dist/transforms/switch-tooltip-prop.js +12 -0
  49. package/dist/transforms/switch-tooltip-prop.js.map +1 -0
  50. package/dist/transforms/types.d.ts +30 -0
  51. package/dist/transforms/types.js +2 -0
  52. package/dist/transforms/types.js.map +1 -0
  53. package/dist/transforms/use-blade-migration.d.ts +4 -0
  54. package/dist/transforms/use-blade-migration.js +50 -0
  55. package/dist/transforms/use-blade-migration.js.map +1 -0
  56. package/dist/transforms/widgets-migration.d.ts +4 -0
  57. package/dist/transforms/widgets-migration.js +38 -0
  58. package/dist/transforms/widgets-migration.js.map +1 -0
  59. package/dist/utils/import-rewriter.d.ts +3 -0
  60. package/dist/utils/import-rewriter.js +22 -0
  61. package/dist/utils/import-rewriter.js.map +1 -0
  62. package/dist/utils/template-transform.d.ts +13 -0
  63. package/dist/utils/template-transform.js +37 -0
  64. package/dist/utils/template-transform.js.map +1 -0
  65. package/dist/utils/test-helpers.d.ts +32 -0
  66. package/dist/utils/test-helpers.js +49 -0
  67. package/dist/utils/test-helpers.js.map +1 -0
  68. package/dist/utils/vue-sfc-wrapper.d.ts +24 -0
  69. package/dist/utils/vue-sfc-wrapper.js +61 -0
  70. package/dist/utils/vue-sfc-wrapper.js.map +1 -0
  71. package/dist/version-detector.d.ts +1 -0
  72. package/dist/version-detector.js +32 -0
  73. package/dist/version-detector.js.map +1 -0
  74. package/package.json +33 -0
@@ -0,0 +1,315 @@
1
+ import { wrapForSFCBoth } from "../utils/vue-sfc-wrapper.js";
2
+ import { removeBladeBoilerplateFromTemplate } from "../utils/template-transform.js";
3
+ const BLADE_PROPS = ["expanded", "closable"];
4
+ const BLADE_EMITS = ["close:blade", "expand:blade", "collapse:blade", "parent:call"];
5
+ function coreTransform(fileInfo, api, _options) {
6
+ const j = api.jscodeshift;
7
+ const root = j(fileInfo.source);
8
+ // --- Detection ---
9
+ // Find interface Props with expanded/closable
10
+ const propsInterfaces = root.find(j.TSInterfaceDeclaration, { id: { name: "Props" } });
11
+ let hasBladeProps = false;
12
+ propsInterfaces.forEach((path) => {
13
+ const body = path.node.body.body;
14
+ hasBladeProps = body.some((member) => member.type === "TSPropertySignature" &&
15
+ member.key.type === "Identifier" &&
16
+ BLADE_PROPS.includes(member.key.name));
17
+ });
18
+ // Find interface Emits with blade events
19
+ const emitsInterfaces = root.find(j.TSInterfaceDeclaration, { id: { name: "Emits" } });
20
+ let hasBladeEmits = false;
21
+ emitsInterfaces.forEach((path) => {
22
+ const body = path.node.body.body;
23
+ hasBladeEmits = body.some((member) => {
24
+ if (member.type !== "TSCallSignatureDeclaration")
25
+ return false;
26
+ const params = member.parameters;
27
+ if (!params || params.length === 0)
28
+ return false;
29
+ const firstParam = params[0];
30
+ // Check type annotation for literal string type
31
+ const annotation = firstParam.typeAnnotation;
32
+ if (annotation && annotation.type === "TSTypeAnnotation") {
33
+ const typeNode = annotation.typeAnnotation;
34
+ if (typeNode.type === "TSLiteralType" && typeNode.literal.type === "StringLiteral") {
35
+ return BLADE_EMITS.includes(typeNode.literal.value);
36
+ }
37
+ }
38
+ return false;
39
+ });
40
+ });
41
+ if (!hasBladeProps && !hasBladeEmits)
42
+ return null;
43
+ // --- Track needed useBlade members ---
44
+ const neededMembers = new Set();
45
+ // Check props.param / props.options usage
46
+ const usesParam = root
47
+ .find(j.MemberExpression, { object: { name: "props" }, property: { name: "param" } })
48
+ .size() > 0;
49
+ const usesOptions = root
50
+ .find(j.MemberExpression, { object: { name: "props" }, property: { name: "options" } })
51
+ .size() > 0;
52
+ if (usesParam)
53
+ neededMembers.add("param");
54
+ if (usesOptions)
55
+ neededMembers.add("options");
56
+ // Check emit("parent:call", ...) usage
57
+ const parentCallEmits = root
58
+ .find(j.CallExpression, { callee: { name: "emit" } })
59
+ .filter((path) => {
60
+ const args = path.node.arguments;
61
+ return (args.length > 0 && args[0].type === "StringLiteral" && args[0].value === "parent:call");
62
+ });
63
+ if (parentCallEmits.size() > 0)
64
+ neededMembers.add("callParent");
65
+ // Check emit("close:blade") usage
66
+ const closeBladeEmits = root
67
+ .find(j.CallExpression, { callee: { name: "emit" } })
68
+ .filter((path) => {
69
+ const args = path.node.arguments;
70
+ return (args.length > 0 && args[0].type === "StringLiteral" && args[0].value === "close:blade");
71
+ });
72
+ if (closeBladeEmits.size() > 0)
73
+ neededMembers.add("closeSelf");
74
+ // --- Step 3: Replace emit("parent:call", ...) → callParent(...) ---
75
+ root
76
+ .find(j.CallExpression, { callee: { name: "emit" } })
77
+ .filter((path) => {
78
+ const args = path.node.arguments;
79
+ return (args.length > 0 && args[0].type === "StringLiteral" && args[0].value === "parent:call");
80
+ })
81
+ .forEach((path) => {
82
+ const args = path.node.arguments;
83
+ const newArgs = [];
84
+ if (args.length >= 2 && args[1].type === "ObjectExpression") {
85
+ const objExpr = args[1];
86
+ // Extract method value
87
+ const methodProp = objExpr.properties.find((p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "method");
88
+ if (methodProp) {
89
+ newArgs.push(methodProp.value);
90
+ }
91
+ // Extract args value
92
+ const argsProp = objExpr.properties.find((p) => p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "args");
93
+ if (argsProp) {
94
+ newArgs.push(argsProp.value);
95
+ }
96
+ }
97
+ j(path).replaceWith(j.callExpression(j.identifier("callParent"), newArgs));
98
+ });
99
+ // --- Step 4: Replace emit("close:blade") → closeSelf() ---
100
+ root
101
+ .find(j.CallExpression, { callee: { name: "emit" } })
102
+ .filter((path) => {
103
+ const args = path.node.arguments;
104
+ return (args.length > 0 && args[0].type === "StringLiteral" && args[0].value === "close:blade");
105
+ })
106
+ .forEach((path) => {
107
+ j(path).replaceWith(j.callExpression(j.identifier("closeSelf"), []));
108
+ });
109
+ // --- Step 5: Replace props.param → param.value, props.options → options.value ---
110
+ if (usesParam) {
111
+ root
112
+ .find(j.MemberExpression, { object: { name: "props" }, property: { name: "param" } })
113
+ .forEach((path) => {
114
+ j(path).replaceWith(j.memberExpression(j.identifier("param"), j.identifier("value")));
115
+ });
116
+ }
117
+ if (usesOptions) {
118
+ root
119
+ .find(j.MemberExpression, { object: { name: "props" }, property: { name: "options" } })
120
+ .forEach((path) => {
121
+ j(path).replaceWith(j.memberExpression(j.identifier("options"), j.identifier("value")));
122
+ });
123
+ }
124
+ // --- Step 6: Remove blade fields from Props interface ---
125
+ let propsRemoved = false;
126
+ propsInterfaces.forEach((path) => {
127
+ const body = path.node.body.body;
128
+ // Remove blade props + param + options (they come from useBlade now)
129
+ const propsToRemove = [...BLADE_PROPS, ...(usesParam ? ["param"] : []), ...(usesOptions ? ["options"] : [])];
130
+ path.node.body.body = body.filter((member) => {
131
+ if (member.type !== "TSPropertySignature")
132
+ return true;
133
+ if (member.key.type !== "Identifier")
134
+ return true;
135
+ return !propsToRemove.includes(member.key.name);
136
+ });
137
+ // If Props is now empty, remove it
138
+ if (path.node.body.body.length === 0) {
139
+ propsRemoved = true;
140
+ j(path).remove();
141
+ }
142
+ });
143
+ // --- Step 7: Handle withDefaults/defineProps ---
144
+ if (propsRemoved) {
145
+ // Remove the entire defineProps/withDefaults statement
146
+ removeDefinePropsStatement(root, j);
147
+ }
148
+ else if (hasBladeProps) {
149
+ // Props still has non-blade fields — simplify withDefaults
150
+ simplifyWithDefaults(root, j);
151
+ }
152
+ // --- Step 8: Remove Emits interface and defineEmits ---
153
+ if (hasBladeEmits) {
154
+ // Remove Emits interface
155
+ root.find(j.TSInterfaceDeclaration, { id: { name: "Emits" } }).remove();
156
+ // Remove defineEmits statement
157
+ removeDefineEmitsStatement(root, j);
158
+ }
159
+ // --- Step 9: Remove IParentCallArgs from imports ---
160
+ removeNamedImport(root, j, "IParentCallArgs");
161
+ // --- Step 10: Add useBlade import and destructuring ---
162
+ if (neededMembers.size > 0) {
163
+ addUseBladeImport(root, j);
164
+ addUseBladeCall(root, j, neededMembers);
165
+ }
166
+ return root.toSource();
167
+ }
168
+ function removeDefinePropsStatement(root, j) {
169
+ // Find variable declarations containing defineProps or withDefaults
170
+ root.find(j.VariableDeclaration).forEach((path) => {
171
+ const src = j(path).toSource();
172
+ if (src.includes("defineProps") || src.includes("withDefaults")) {
173
+ j(path).remove();
174
+ }
175
+ });
176
+ // Also check expression statements (bare defineProps call)
177
+ root.find(j.ExpressionStatement).forEach((path) => {
178
+ const src = j(path).toSource();
179
+ if (src.includes("defineProps") || src.includes("withDefaults")) {
180
+ j(path).remove();
181
+ }
182
+ });
183
+ }
184
+ function simplifyWithDefaults(root, j) {
185
+ // Find withDefaults(defineProps<Props>(), { expanded: true, closable: true })
186
+ root
187
+ .find(j.CallExpression, { callee: { name: "withDefaults" } })
188
+ .forEach((path) => {
189
+ const args = path.node.arguments;
190
+ if (args.length < 2)
191
+ return;
192
+ const defaultsObj = args[1];
193
+ if (defaultsObj.type !== "ObjectExpression")
194
+ return;
195
+ // Filter out blade defaults
196
+ const remaining = defaultsObj.properties.filter((prop) => {
197
+ if (prop.type !== "ObjectProperty")
198
+ return true;
199
+ if (prop.key.type !== "Identifier")
200
+ return true;
201
+ return !BLADE_PROPS.includes(prop.key.name);
202
+ });
203
+ if (remaining.length === 0) {
204
+ // All defaults were blade-only — replace withDefaults(...) with defineProps<Props>()
205
+ j(path).replaceWith(args[0]);
206
+ }
207
+ else {
208
+ // Keep non-blade defaults
209
+ defaultsObj.properties = remaining;
210
+ }
211
+ });
212
+ }
213
+ function removeDefineEmitsStatement(root, j) {
214
+ root.find(j.VariableDeclaration).forEach((path) => {
215
+ const src = j(path).toSource();
216
+ if (src.includes("defineEmits")) {
217
+ j(path).remove();
218
+ }
219
+ });
220
+ root.find(j.ExpressionStatement).forEach((path) => {
221
+ const src = j(path).toSource();
222
+ if (src.includes("defineEmits")) {
223
+ j(path).remove();
224
+ }
225
+ });
226
+ }
227
+ function removeNamedImport(root, j, name) {
228
+ root.find(j.ImportDeclaration).forEach((path) => {
229
+ const specifiers = path.node.specifiers;
230
+ if (!specifiers)
231
+ return;
232
+ const idx = specifiers.findIndex((s) => s.type === "ImportSpecifier" && s.imported.type === "Identifier" && s.imported.name === name);
233
+ if (idx === -1)
234
+ return;
235
+ specifiers.splice(idx, 1);
236
+ // If no specifiers left, remove the entire import
237
+ if (specifiers.length === 0) {
238
+ j(path).remove();
239
+ }
240
+ });
241
+ }
242
+ function addUseBladeImport(root, j) {
243
+ // Check if useBlade is already imported
244
+ const frameworkImports = root.find(j.ImportDeclaration, {
245
+ source: { value: "@vc-shell/framework" },
246
+ });
247
+ let alreadyImported = false;
248
+ frameworkImports.forEach((path) => {
249
+ const specifiers = path.node.specifiers || [];
250
+ if (specifiers.some((s) => s.type === "ImportSpecifier" &&
251
+ s.imported.type === "Identifier" &&
252
+ s.imported.name === "useBlade")) {
253
+ alreadyImported = true;
254
+ }
255
+ });
256
+ if (alreadyImported)
257
+ return;
258
+ if (frameworkImports.size() > 0) {
259
+ // Add to existing non-type-only framework import
260
+ let target = null;
261
+ frameworkImports.forEach((path) => {
262
+ if (!target && path.node.importKind !== "type") {
263
+ target = path;
264
+ }
265
+ });
266
+ if (!target) {
267
+ frameworkImports.forEach((path) => {
268
+ if (!target)
269
+ target = path;
270
+ });
271
+ }
272
+ if (target) {
273
+ const specifiers = target.node.specifiers || [];
274
+ specifiers.push(j.importSpecifier(j.identifier("useBlade")));
275
+ }
276
+ }
277
+ else {
278
+ // Create new import — insert at beginning
279
+ const newImport = j.importDeclaration([j.importSpecifier(j.identifier("useBlade"))], j.literal("@vc-shell/framework"));
280
+ const body = root.find(j.Program).get("body");
281
+ body.unshift(newImport);
282
+ }
283
+ }
284
+ function addUseBladeCall(root, j, neededMembers) {
285
+ // Check if useBlade() call already exists
286
+ const existingCalls = root.find(j.CallExpression, { callee: { name: "useBlade" } });
287
+ if (existingCalls.size() > 0)
288
+ return;
289
+ const members = Array.from(neededMembers).sort();
290
+ const properties = members.map((name) => {
291
+ const prop = j.objectProperty(j.identifier(name), j.identifier(name));
292
+ prop.shorthand = true;
293
+ return prop;
294
+ });
295
+ const declaration = j.variableDeclaration("const", [
296
+ j.variableDeclarator(j.objectPattern(properties), j.callExpression(j.identifier("useBlade"), [])),
297
+ ]);
298
+ // Insert after last import
299
+ const imports = root.find(j.ImportDeclaration);
300
+ if (imports.size() > 0) {
301
+ const lastImport = imports.at(-1);
302
+ lastImport.insertAfter(declaration);
303
+ }
304
+ else {
305
+ const body = root.find(j.Program).get("body");
306
+ body.unshift(declaration);
307
+ }
308
+ }
309
+ function templateTransform(template, _filePath) {
310
+ const result = removeBladeBoilerplateFromTemplate(template);
311
+ return { content: result, changed: result !== template };
312
+ }
313
+ export default wrapForSFCBoth(coreTransform, templateTransform);
314
+ export const parser = "tsx";
315
+ //# sourceMappingURL=blade-props-simplification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blade-props-simplification.js","sourceRoot":"","sources":["../../src/transforms/blade-props-simplification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const _default: Transform;
3
+ export default _default;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,50 @@
1
+ import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
2
+ const RENAME_MAP = {
3
+ IUsePermissions: "UsePermissionsReturn",
4
+ IAppUserAPI: "UseUserReturn",
5
+ IUseAssets: "UseAssetsReturn",
6
+ IUseAppInsights: "UseAppInsightsReturn",
7
+ IUseFunctions: "UseFunctionsReturn",
8
+ IUseTheme: "UseThemeReturn",
9
+ IUseLanguages: "UseLanguagesReturn",
10
+ INotifications: "UseNotificationsReturn",
11
+ IUseErrorHandler: "UseErrorHandlerReturn",
12
+ IUseDynamicProperties: "UseDynamicPropertiesReturn",
13
+ IUseBreadcrumbs: "UseBreadcrumbsReturn",
14
+ IBladeRegistry: "UseBladeRegistryReturn",
15
+ IUseSettings: "UseSettingsReturn",
16
+ IUserManagementAPI: "UseUserManagementReturn",
17
+ UseConnectionStatus: "UseConnectionStatusReturn",
18
+ SidebarStateReturn: "UseSidebarStateReturn",
19
+ UseAsync: "UseAsyncReturn",
20
+ UseApiClient: "UseApiClientReturn",
21
+ AccordionProps: "VcAccordionProps",
22
+ AccordionEmits: "VcAccordionEmits",
23
+ };
24
+ function coreTransform(fileInfo, api, _options) {
25
+ const j = api.jscodeshift;
26
+ const root = j(fileInfo.source);
27
+ const frameworkImports = root.find(j.ImportDeclaration, {
28
+ source: { value: "@vc-shell/framework" },
29
+ });
30
+ if (frameworkImports.size() === 0)
31
+ return null;
32
+ const renames = [];
33
+ frameworkImports.find(j.ImportSpecifier).forEach((path) => {
34
+ const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
35
+ if (RENAME_MAP[name]) {
36
+ renames.push({ old: name, new: RENAME_MAP[name] });
37
+ }
38
+ });
39
+ if (renames.length === 0)
40
+ return null;
41
+ for (const r of renames) {
42
+ root.find(j.Identifier, { name: r.old }).forEach((path) => {
43
+ path.node.name = r.new;
44
+ });
45
+ }
46
+ return root.toSource();
47
+ }
48
+ export default wrapForSFC(coreTransform);
49
+ export const parser = "tsx";
50
+ //# sourceMappingURL=composable-return-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composable-return-types.js","sourceRoot":"","sources":["../../src/transforms/composable-return-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,UAAU,GAA2B;IACzC,eAAe,EAAE,sBAAsB;IACvC,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,iBAAiB;IAC7B,eAAe,EAAE,sBAAsB;IACvC,aAAa,EAAE,oBAAoB;IACnC,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,oBAAoB;IACnC,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,uBAAuB;IACzC,qBAAqB,EAAE,4BAA4B;IACnD,eAAe,EAAE,sBAAsB;IACvC,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,mBAAmB,EAAE,2BAA2B;IAChD,kBAAkB,EAAE,uBAAuB;IAC3C,QAAQ,EAAE,gBAAgB;IAC1B,YAAY,EAAE,oBAAoB;IAClC,cAAc,EAAE,kBAAkB;IAClC,cAAc,EAAE,kBAAkB;CACnC,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,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,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const _default: Transform;
3
+ export default _default;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,73 @@
1
+ import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
2
+ function coreTransform(fileInfo, api, _options) {
3
+ const j = api.jscodeshift;
4
+ const root = j(fileInfo.source);
5
+ // Check for createAppModule import from @vc-shell/framework
6
+ const frameworkImports = root.find(j.ImportDeclaration, {
7
+ source: { value: "@vc-shell/framework" },
8
+ });
9
+ const createAppModuleSpecifiers = frameworkImports.find(j.ImportSpecifier, {
10
+ imported: { name: "createAppModule" },
11
+ });
12
+ if (createAppModuleSpecifiers.size() === 0)
13
+ return null;
14
+ // Find createAppModule() calls
15
+ const calls = root.find(j.CallExpression, {
16
+ callee: { name: "createAppModule" },
17
+ });
18
+ if (calls.size() === 0)
19
+ return null;
20
+ let modified = false;
21
+ calls.forEach((path) => {
22
+ const args = path.node.arguments;
23
+ if (args.length === 2) {
24
+ // 2-arg: defineAppModule({ pages, locales })
25
+ // Use shorthand properties
26
+ const properties = args.map((arg) => {
27
+ if (arg.type === "Identifier") {
28
+ const prop = j.property("init", j.identifier(arg.name), j.identifier(arg.name));
29
+ prop.shorthand = true;
30
+ return prop;
31
+ }
32
+ // For non-identifier args, use the arg as-is with a generic key
33
+ return j.property("init", j.identifier("arg"), arg);
34
+ });
35
+ const obj = j.objectExpression(properties);
36
+ const replacement = j.callExpression(j.identifier("defineAppModule"), [obj]);
37
+ j(path).replaceWith(replacement);
38
+ modified = true;
39
+ }
40
+ else if (args.length === 3) {
41
+ // 3-arg: defineAppModule({ blades: pages, locales: locales, notificationTemplates: notificationTemplates })
42
+ const properties = [
43
+ j.property("init", j.identifier("blades"), args[0]),
44
+ j.property("init", j.identifier("locales"), args[1]),
45
+ j.property("init", j.identifier("notificationTemplates"), args[2]),
46
+ ];
47
+ const obj = j.objectExpression(properties);
48
+ const replacement = j.callExpression(j.identifier("defineAppModule"), [obj]);
49
+ j(path).replaceWith(replacement);
50
+ api.report(`${fileInfo.path}: Migrated 3-arg createAppModule with notificationTemplates. ` +
51
+ `Consider restructuring to the new notifications config format (see MIGRATION_GUIDE.md "Notifications System Redesign").`);
52
+ modified = true;
53
+ }
54
+ else {
55
+ // 4+ args: just rename the callee
56
+ if (path.node.callee.type === "Identifier") {
57
+ path.node.callee.name = "defineAppModule";
58
+ }
59
+ api.report(`${fileInfo.path}: defineAppModule called with ${args.length} argument(s) — manual review required.`);
60
+ modified = true;
61
+ }
62
+ });
63
+ if (!modified)
64
+ return null;
65
+ // Rename import specifier
66
+ createAppModuleSpecifiers.forEach((specPath) => {
67
+ specPath.node.imported = j.identifier("defineAppModule");
68
+ });
69
+ return root.toSource();
70
+ }
71
+ export default wrapForSFC(coreTransform);
72
+ export const parser = "tsx";
73
+ //# sourceMappingURL=define-app-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-app-module.js","sourceRoot":"","sources":["../../src/transforms/define-app-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const transform: Transform;
3
+ export default transform;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,38 @@
1
+ const ICON_SUGGESTIONS = {
2
+ "fa-check": "check (Material Symbols)",
3
+ "fa-times": "close (Material Symbols)",
4
+ "fa-plus": "add (Material Symbols)",
5
+ "fa-edit": "edit (Material Symbols)",
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
+ };
18
+ const FA_PATTERN = /\b(?:fas?|far|fal|fab)\s+(fa-[\w-]+)/g;
19
+ const transform = (fileInfo, api, _options) => {
20
+ const text = fileInfo.source;
21
+ FA_PATTERN.lastIndex = 0;
22
+ const icons = [];
23
+ let match;
24
+ while ((match = FA_PATTERN.exec(text)) !== null) {
25
+ icons.push(match[1]);
26
+ }
27
+ if (icons.length > 0) {
28
+ for (const icon of icons) {
29
+ const suggestion = ICON_SUGGESTIONS[icon];
30
+ const hint = suggestion ? ` → suggested: ${suggestion}` : "";
31
+ api.report(`${fileInfo.path}: ${icon}${hint}`);
32
+ }
33
+ }
34
+ return null; // Never modify
35
+ };
36
+ export default transform;
37
+ export const parser = "tsx";
38
+ //# sourceMappingURL=icon-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-audit.js","sourceRoot":"","sources":["../../src/transforms/icon-audit.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAA2B;IAC/C,UAAU,EAAE,0BAA0B;IACtC,UAAU,EAAE,0BAA0B;IACtC,SAAS,EAAE,wBAAwB;IACnC,SAAS,EAAE,yBAAyB;IACpC,UAAU,EAAE,2BAA2B;IACvC,cAAc,EAAE,2BAA2B;IAC3C,WAAW,EAAE,2BAA2B;IACxC,SAAS,EAAE,yBAAyB;IACpC,QAAQ,EAAE,6BAA6B;IACvC,SAAS,EAAE,2BAA2B;IACtC,aAAa,EAAE,6BAA6B;IAC5C,WAAW,EAAE,2BAA2B;IACxC,kBAAkB,EAAE,kCAAkC;IACtD,iBAAiB,EAAE,iCAAiC;IACpD,eAAe,EAAE,+BAA+B;CACjD,CAAC;AAEF,MAAM,UAAU,GAAG,uCAAuC,CAAC;AAE3D,MAAM,SAAS,GAAc,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB,EAAiB,EAAE;IAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,eAAe;AAC9B,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const _default: Transform;
3
+ export default _default;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,14 @@
1
+ import { wrapForSFCTemplate } from "../utils/vue-sfc-wrapper.js";
2
+ import { removeAttributesFromTag } from "../utils/template-transform.js";
3
+ const ATTR_PATTERNS = [
4
+ /\s+:?use-container(?:="[^"]*")?/g,
5
+ /\s+:?useContainer(?:="[^"]*")?/g,
6
+ ];
7
+ function templateTransform(template, _filePath) {
8
+ let modified = removeAttributesFromTag(template, "VcIcon", ATTR_PATTERNS);
9
+ modified = removeAttributesFromTag(modified, "vc-icon", ATTR_PATTERNS);
10
+ return { content: modified, changed: modified !== template };
11
+ }
12
+ export default wrapForSFCTemplate(templateTransform);
13
+ export const parser = "tsx";
14
+ //# sourceMappingURL=icon-container-prop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-container-prop.js","sourceRoot":"","sources":["../../src/transforms/icon-container-prop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,MAAM,aAAa,GAAG;IACpB,kCAAkC;IAClC,iCAAiC;CAClC,CAAC;AAEF,SAAS,iBAAiB,CAAC,QAAgB,EAAE,SAAiB;IAC5D,IAAI,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC1E,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;AAC/D,CAAC;AAED,eAAe,kBAAkB,CAAC,iBAAiB,CAAc,CAAC;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const transform: Transform;
3
+ export default transform;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,22 @@
1
+ const DEPRECATED_PROPS = ["groupIcon", "inGroupPriority"];
2
+ const GROUP_STRING_PATTERN = /\bgroup\s*:\s*["'`]/;
3
+ const transform = (fileInfo, api, _options) => {
4
+ const text = fileInfo.source;
5
+ const issues = [];
6
+ for (const prop of DEPRECATED_PROPS) {
7
+ if (text.includes(prop)) {
8
+ issues.push(prop);
9
+ }
10
+ }
11
+ if (GROUP_STRING_PATTERN.test(text)) {
12
+ issues.push("group (string)");
13
+ }
14
+ if (issues.length > 0) {
15
+ api.report(`${fileInfo.path}: Found deprecated menu properties: ${issues.join(", ")}. ` +
16
+ `Migrate to groupConfig: { id, title, icon, priority, permissions }.`);
17
+ }
18
+ return null; // Never modify
19
+ };
20
+ export default transform;
21
+ export const parser = "tsx";
22
+ //# sourceMappingURL=menu-group-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-group-config.js","sourceRoot":"","sources":["../../src/transforms/menu-group-config.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEnD,MAAM,SAAS,GAAc,CAAC,QAAkB,EAAE,GAAQ,EAAE,QAAiB,EAAiB,EAAE;IAC9F,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CACR,GAAG,QAAQ,CAAC,IAAI,uCAAuC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC5E,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,eAAe;AAC9B,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Transform } from "./types.js";
2
+ declare const _default: Transform;
3
+ export default _default;
4
+ export declare const parser = "tsx";
@@ -0,0 +1,31 @@
1
+ import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
2
+ const RENAME_MAP = {
3
+ useNotifications: "useBladeNotifications",
4
+ };
5
+ function coreTransform(fileInfo, api, _options) {
6
+ const j = api.jscodeshift;
7
+ const root = j(fileInfo.source);
8
+ const frameworkImports = root.find(j.ImportDeclaration, {
9
+ source: { value: "@vc-shell/framework" },
10
+ });
11
+ if (frameworkImports.size() === 0)
12
+ return null;
13
+ const renames = [];
14
+ frameworkImports.find(j.ImportSpecifier).forEach((path) => {
15
+ const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
16
+ if (RENAME_MAP[name]) {
17
+ renames.push({ old: name, new: RENAME_MAP[name] });
18
+ }
19
+ });
20
+ if (renames.length === 0)
21
+ return null;
22
+ for (const r of renames) {
23
+ root.find(j.Identifier, { name: r.old }).forEach((path) => {
24
+ path.node.name = r.new;
25
+ });
26
+ }
27
+ return root.toSource();
28
+ }
29
+ export default wrapForSFC(coreTransform);
30
+ export const parser = "tsx";
31
+ //# sourceMappingURL=notification-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-migration.js","sourceRoot":"","sources":["../../src/transforms/notification-migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,UAAU,GAA2B;IACzC,gBAAgB,EAAE,uBAAuB;CAC1C,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,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"}