@vc-shell/migrate 2.0.0-alpha.30 → 2.0.0-alpha.31
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 +6 -0
- package/dist/transforms/dynamic-properties-refactor.d.ts +4 -0
- package/dist/transforms/dynamic-properties-refactor.js +120 -0
- package/dist/transforms/dynamic-properties-refactor.js.map +1 -0
- package/dist/transforms/registry.js +17 -0
- package/dist/transforms/registry.js.map +1 -1
- package/dist/transforms/use-blade-form.d.ts +4 -0
- package/dist/transforms/use-blade-form.js +171 -0
- package/dist/transforms/use-blade-form.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# [2.0.0-alpha.31](https://github.com/VirtoCommerce/vc-shell/compare/v2.0.0-alpha.30...v2.0.0-alpha.31) (2026-04-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **migrate:** add codemod transforms for useBladeForm and useDynamicProperties ([9cf4cc8](https://github.com/VirtoCommerce/vc-shell/commit/9cf4cc8c280bb70e5ef6c457c07c44988b6fafbc))
|
|
1
7
|
# [2.0.0-alpha.30](https://github.com/VirtoCommerce/vc-shell/compare/v2.0.0-alpha.29...v2.0.0-alpha.30) (2026-03-30)
|
|
2
8
|
|
|
3
9
|
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
|
|
2
|
+
/**
|
|
3
|
+
* Migrate useDynamicProperties consumers from positional args to options object.
|
|
4
|
+
*
|
|
5
|
+
* Before:
|
|
6
|
+
* useDynamicProperties<A, B, C, D, E>(searchFn, PropertyValueFactory, PropertyDictionaryItemFactory, measureFn)
|
|
7
|
+
*
|
|
8
|
+
* After:
|
|
9
|
+
* useDynamicProperties({ searchDictionary: searchFn, searchMeasurements: measureFn })
|
|
10
|
+
*
|
|
11
|
+
* Also removes:
|
|
12
|
+
* - class PropertyValueFactory { ... }
|
|
13
|
+
* - class PropertyDictionaryItemFactory { ... }
|
|
14
|
+
* - Generic type parameters from the call
|
|
15
|
+
*/
|
|
16
|
+
const FACTORY_CLASS_NAMES = new Set(["PropertyValueFactory", "PropertyDictionaryItemFactory"]);
|
|
17
|
+
function coreTransform(fileInfo, api, _options) {
|
|
18
|
+
const j = api.jscodeshift;
|
|
19
|
+
const root = j(fileInfo.source);
|
|
20
|
+
// Find useDynamicProperties calls
|
|
21
|
+
const calls = root.find(j.CallExpression, {
|
|
22
|
+
callee: { name: "useDynamicProperties" },
|
|
23
|
+
});
|
|
24
|
+
if (calls.size() === 0)
|
|
25
|
+
return null;
|
|
26
|
+
let modified = false;
|
|
27
|
+
// --- Step 1: Rewrite useDynamicProperties calls from positional to options ---
|
|
28
|
+
calls.forEach((callPath) => {
|
|
29
|
+
const node = callPath.node;
|
|
30
|
+
const args = node.arguments;
|
|
31
|
+
// Only transform if using positional args (not already an object)
|
|
32
|
+
// Old API: useDynamicProperties(searchFn, Class1, Class2, measureFn)
|
|
33
|
+
// The old API has 2-4 positional arguments; new API has 1 object argument
|
|
34
|
+
if (args.length < 2)
|
|
35
|
+
return;
|
|
36
|
+
// If first arg is already an ObjectExpression, skip (already migrated)
|
|
37
|
+
if (args.length === 1 && args[0].type === "ObjectExpression")
|
|
38
|
+
return;
|
|
39
|
+
const properties = [];
|
|
40
|
+
// First arg: searchDictionary function
|
|
41
|
+
if (args[0] && args[0].type !== "ClassExpression") {
|
|
42
|
+
properties.push(j.objectProperty(j.identifier("searchDictionary"), args[0]));
|
|
43
|
+
}
|
|
44
|
+
// args[1] and args[2] are factory classes — skip them
|
|
45
|
+
// Fourth arg (index 3): searchMeasurements function
|
|
46
|
+
if (args.length >= 4 && args[3] && args[3].type !== "ClassExpression") {
|
|
47
|
+
properties.push(j.objectProperty(j.identifier("searchMeasurements"), args[3]));
|
|
48
|
+
}
|
|
49
|
+
// Replace arguments with single options object
|
|
50
|
+
node.arguments = [j.objectExpression(properties)];
|
|
51
|
+
// Remove generic type parameters
|
|
52
|
+
if ("typeParameters" in node && node.typeParameters) {
|
|
53
|
+
node.typeParameters = null;
|
|
54
|
+
}
|
|
55
|
+
modified = true;
|
|
56
|
+
});
|
|
57
|
+
// --- Step 2: Remove factory class declarations ---
|
|
58
|
+
root.find(j.ClassDeclaration).forEach((classPath) => {
|
|
59
|
+
const id = classPath.node.id;
|
|
60
|
+
const name = id && id.type === "Identifier" ? id.name : undefined;
|
|
61
|
+
if (name && FACTORY_CLASS_NAMES.has(name)) {
|
|
62
|
+
j(classPath).remove();
|
|
63
|
+
modified = true;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// Also remove class expressions assigned to variables
|
|
67
|
+
root.find(j.VariableDeclarator).forEach((declPath) => {
|
|
68
|
+
const init = declPath.node.init;
|
|
69
|
+
if (init &&
|
|
70
|
+
init.type === "ClassExpression" &&
|
|
71
|
+
declPath.node.id.type === "Identifier" &&
|
|
72
|
+
FACTORY_CLASS_NAMES.has(declPath.node.id.name)) {
|
|
73
|
+
const declaration = declPath.parent;
|
|
74
|
+
if (declaration.node.type === "VariableDeclaration" && declaration.node.declarations.length === 1) {
|
|
75
|
+
j(declaration).remove();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
j(declPath).remove();
|
|
79
|
+
}
|
|
80
|
+
modified = true;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
// --- Step 3: Remove factory class imports if they exist ---
|
|
84
|
+
root.find(j.ImportDeclaration).forEach((importPath) => {
|
|
85
|
+
const specifiers = importPath.node.specifiers ?? [];
|
|
86
|
+
const remaining = specifiers.filter((spec) => {
|
|
87
|
+
if (spec.type !== "ImportSpecifier")
|
|
88
|
+
return true;
|
|
89
|
+
const name = spec.imported.type === "Identifier" ? spec.imported.name : "";
|
|
90
|
+
return !FACTORY_CLASS_NAMES.has(name);
|
|
91
|
+
});
|
|
92
|
+
if (remaining.length === 0 && specifiers.length > 0) {
|
|
93
|
+
// Check if ALL specifiers were factory classes
|
|
94
|
+
const allFactory = specifiers.every((spec) => {
|
|
95
|
+
if (spec.type !== "ImportSpecifier")
|
|
96
|
+
return false;
|
|
97
|
+
const name = spec.imported.type === "Identifier" ? spec.imported.name : "";
|
|
98
|
+
return FACTORY_CLASS_NAMES.has(name);
|
|
99
|
+
});
|
|
100
|
+
if (allFactory) {
|
|
101
|
+
j(importPath).remove();
|
|
102
|
+
modified = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (remaining.length < specifiers.length) {
|
|
106
|
+
importPath.node.specifiers = remaining;
|
|
107
|
+
modified = true;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
if (modified) {
|
|
111
|
+
console.log(` ✅ ${fileInfo.path}: Migrated useDynamicProperties() to options API`);
|
|
112
|
+
}
|
|
113
|
+
if (!modified)
|
|
114
|
+
return null;
|
|
115
|
+
return root.toSource();
|
|
116
|
+
}
|
|
117
|
+
const transform = wrapForSFC(coreTransform);
|
|
118
|
+
export default transform;
|
|
119
|
+
export const parser = "tsx";
|
|
120
|
+
//# sourceMappingURL=dynamic-properties-refactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-properties-refactor.js","sourceRoot":"","sources":["../../src/transforms/dynamic-properties-refactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,6 +163,23 @@ export const transforms = [
|
|
|
163
163
|
transformPath: t("responsive-composable"),
|
|
164
164
|
fileExtensions: [".vue"],
|
|
165
165
|
},
|
|
166
|
+
{
|
|
167
|
+
name: "use-blade-form",
|
|
168
|
+
description: "Detect useForm + useBeforeUnload patterns for migration to useBladeForm()",
|
|
169
|
+
introducedIn: "2.0.0-alpha.31",
|
|
170
|
+
diagnosticOnly: true,
|
|
171
|
+
migrationGuideSection: "Guide 37",
|
|
172
|
+
transformPath: t("use-blade-form"),
|
|
173
|
+
fileExtensions: [".vue"],
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "dynamic-properties-refactor",
|
|
177
|
+
description: "useDynamicProperties<A,B,C,D,E>(fn, Class, Class, fn) → useDynamicProperties({ searchDictionary, searchMeasurements })",
|
|
178
|
+
introducedIn: "2.0.0-alpha.31",
|
|
179
|
+
migrationGuideSection: "Guide 38",
|
|
180
|
+
transformPath: t("dynamic-properties-refactor"),
|
|
181
|
+
fileExtensions: [".vue"],
|
|
182
|
+
},
|
|
166
183
|
];
|
|
167
184
|
export function selectTransforms(currentVersion, targetVersion) {
|
|
168
185
|
const current = semver.parse(currentVersion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/transforms/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/transforms/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { wrapForSFC } from "../utils/vue-sfc-wrapper.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detect useForm (vee-validate) + useBeforeUnload/useModificationTracker patterns
|
|
4
|
+
* and migrate imports toward useBladeForm().
|
|
5
|
+
*
|
|
6
|
+
* Safe mechanical transforms:
|
|
7
|
+
* 1. Remove `useForm` import from `vee-validate` (keep `Field` etc.)
|
|
8
|
+
* 2. Remove `useBeforeUnload` and `useModificationTracker` from `@vc-shell/framework`
|
|
9
|
+
* 3. Add `useBladeForm` to `@vc-shell/framework` import
|
|
10
|
+
*
|
|
11
|
+
* Diagnostic-only (reported for manual migration):
|
|
12
|
+
* - toolbar disabled formula referencing modified/valid/isValid
|
|
13
|
+
* - onBeforeClose logic using modified/isValid
|
|
14
|
+
* - setBaseline() call placement
|
|
15
|
+
* - handleSubmit / validate / resetForm usage
|
|
16
|
+
*/
|
|
17
|
+
const REMOVE_FROM_FRAMEWORK = new Set(["useBeforeUnload", "useModificationTracker"]);
|
|
18
|
+
const ADD_TO_FRAMEWORK = "useBladeForm";
|
|
19
|
+
function coreTransform(fileInfo, api, _options) {
|
|
20
|
+
const j = api.jscodeshift;
|
|
21
|
+
const root = j(fileInfo.source);
|
|
22
|
+
// --- Detect vee-validate useForm import ---
|
|
23
|
+
const veeValidateImports = root.find(j.ImportDeclaration, {
|
|
24
|
+
source: { value: "vee-validate" },
|
|
25
|
+
});
|
|
26
|
+
const hasUseForm = veeValidateImports
|
|
27
|
+
.find(j.ImportSpecifier)
|
|
28
|
+
.filter((path) => {
|
|
29
|
+
const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
|
|
30
|
+
return name === "useForm";
|
|
31
|
+
})
|
|
32
|
+
.size() > 0;
|
|
33
|
+
// --- Detect framework imports ---
|
|
34
|
+
const frameworkImports = root.find(j.ImportDeclaration, {
|
|
35
|
+
source: { value: "@vc-shell/framework" },
|
|
36
|
+
});
|
|
37
|
+
const hasBeforeUnload = frameworkImports
|
|
38
|
+
.find(j.ImportSpecifier)
|
|
39
|
+
.filter((path) => {
|
|
40
|
+
const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
|
|
41
|
+
return name === "useBeforeUnload";
|
|
42
|
+
})
|
|
43
|
+
.size() > 0;
|
|
44
|
+
const hasModificationTracker = frameworkImports
|
|
45
|
+
.find(j.ImportSpecifier)
|
|
46
|
+
.filter((path) => {
|
|
47
|
+
const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
|
|
48
|
+
return name === "useModificationTracker";
|
|
49
|
+
})
|
|
50
|
+
.size() > 0;
|
|
51
|
+
// Only process files that have the target pattern
|
|
52
|
+
if (!hasUseForm && !hasBeforeUnload && !hasModificationTracker)
|
|
53
|
+
return null;
|
|
54
|
+
let modified = false;
|
|
55
|
+
const diagnostics = [];
|
|
56
|
+
// --- Step 1: Remove useForm from vee-validate ---
|
|
57
|
+
if (hasUseForm) {
|
|
58
|
+
veeValidateImports.forEach((importPath) => {
|
|
59
|
+
const specifiers = importPath.node.specifiers ?? [];
|
|
60
|
+
const remaining = specifiers.filter((spec) => {
|
|
61
|
+
if (spec.type !== "ImportSpecifier")
|
|
62
|
+
return true;
|
|
63
|
+
const name = spec.imported.type === "Identifier" ? spec.imported.name : "";
|
|
64
|
+
return name !== "useForm";
|
|
65
|
+
});
|
|
66
|
+
if (remaining.length === 0) {
|
|
67
|
+
// Remove entire import
|
|
68
|
+
j(importPath).remove();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
importPath.node.specifiers = remaining;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
modified = true;
|
|
75
|
+
}
|
|
76
|
+
// --- Step 2: Remove useBeforeUnload/useModificationTracker from framework ---
|
|
77
|
+
if (hasBeforeUnload || hasModificationTracker) {
|
|
78
|
+
frameworkImports.forEach((importPath) => {
|
|
79
|
+
const specifiers = importPath.node.specifiers ?? [];
|
|
80
|
+
const remaining = specifiers.filter((spec) => {
|
|
81
|
+
if (spec.type !== "ImportSpecifier")
|
|
82
|
+
return true;
|
|
83
|
+
const name = spec.imported.type === "Identifier" ? spec.imported.name : "";
|
|
84
|
+
return !REMOVE_FROM_FRAMEWORK.has(name);
|
|
85
|
+
});
|
|
86
|
+
if (remaining.length === 0) {
|
|
87
|
+
// Should not happen — framework import usually has more symbols
|
|
88
|
+
j(importPath).remove();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
importPath.node.specifiers = remaining;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
modified = true;
|
|
95
|
+
}
|
|
96
|
+
// --- Step 3: Add useBladeForm to framework import ---
|
|
97
|
+
const hasBladeFormAlready = root
|
|
98
|
+
.find(j.ImportDeclaration, { source: { value: "@vc-shell/framework" } })
|
|
99
|
+
.find(j.ImportSpecifier)
|
|
100
|
+
.filter((path) => {
|
|
101
|
+
const name = path.node.imported.type === "Identifier" ? path.node.imported.name : "";
|
|
102
|
+
return name === ADD_TO_FRAMEWORK;
|
|
103
|
+
})
|
|
104
|
+
.size() > 0;
|
|
105
|
+
if (!hasBladeFormAlready) {
|
|
106
|
+
const fwImports = root.find(j.ImportDeclaration, {
|
|
107
|
+
source: { value: "@vc-shell/framework" },
|
|
108
|
+
});
|
|
109
|
+
if (fwImports.size() > 0) {
|
|
110
|
+
const firstImport = fwImports.at(0);
|
|
111
|
+
const specifiers = firstImport.get().node.specifiers ?? [];
|
|
112
|
+
specifiers.push(j.importSpecifier(j.identifier(ADD_TO_FRAMEWORK)));
|
|
113
|
+
modified = true;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// No framework import exists — create one
|
|
117
|
+
const newImport = j.importDeclaration([j.importSpecifier(j.identifier(ADD_TO_FRAMEWORK))], j.literal("@vc-shell/framework"));
|
|
118
|
+
const body = root.find(j.Program).get("body");
|
|
119
|
+
body.value.unshift(newImport);
|
|
120
|
+
modified = true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// --- Step 4: Diagnostics for manual migration ---
|
|
124
|
+
const source = fileInfo.source;
|
|
125
|
+
// Detect useForm destructure patterns
|
|
126
|
+
if (/useForm\s*[<(]/.test(source)) {
|
|
127
|
+
diagnostics.push(` → useForm() call found — replace with useBladeForm(). Destructure { form, validate, resetForm, setBaseline, modified, isValid } from useBladeForm().`);
|
|
128
|
+
}
|
|
129
|
+
// Detect handleSubmit usage
|
|
130
|
+
if (/handleSubmit/.test(source)) {
|
|
131
|
+
diagnostics.push(` → handleSubmit() detected — replace with validate() from useBladeForm(). validate() returns { valid, errors }.`);
|
|
132
|
+
}
|
|
133
|
+
// Detect toolbar disabled formula referencing modified/valid
|
|
134
|
+
if (/disabled\s*:\s*.*(?:modified|isValid|valid)/.test(source) || /!modified/.test(source)) {
|
|
135
|
+
diagnostics.push(` → Toolbar disabled formula references modified/isValid — review and update to use useBladeForm() return values.`);
|
|
136
|
+
}
|
|
137
|
+
// Detect onBeforeClose with modified check
|
|
138
|
+
if (/onBeforeClose/.test(source) && /modified/.test(source)) {
|
|
139
|
+
diagnostics.push(` → onBeforeClose uses modified state — useBladeForm() handles this automatically via built-in beforeUnload. Remove manual onBeforeClose guard.`);
|
|
140
|
+
}
|
|
141
|
+
// Detect useBeforeUnload call
|
|
142
|
+
if (/useBeforeUnload\s*\(/.test(source)) {
|
|
143
|
+
diagnostics.push(` → useBeforeUnload() call found — remove it. useBladeForm() handles before-unload automatically.`);
|
|
144
|
+
}
|
|
145
|
+
// Detect useModificationTracker call
|
|
146
|
+
if (/useModificationTracker\s*\(/.test(source)) {
|
|
147
|
+
diagnostics.push(` → useModificationTracker() call found — remove it. useBladeForm() tracks modification internally.`);
|
|
148
|
+
}
|
|
149
|
+
// Detect setBaseline
|
|
150
|
+
if (/setBaseline\s*\(/.test(source)) {
|
|
151
|
+
diagnostics.push(` → setBaseline() call found — useBladeForm() exposes setBaseline(). Verify placement after data load.`);
|
|
152
|
+
}
|
|
153
|
+
// Detect resetForm
|
|
154
|
+
if (/resetForm\s*\(/.test(source)) {
|
|
155
|
+
diagnostics.push(` → resetForm() call found — available from useBladeForm() return. Verify usage is compatible.`);
|
|
156
|
+
}
|
|
157
|
+
if (diagnostics.length > 0) {
|
|
158
|
+
console.log(` ⚠️ ${fileInfo.path}: Manual migration needed for useBladeForm():`);
|
|
159
|
+
for (const d of diagnostics) {
|
|
160
|
+
console.log(d);
|
|
161
|
+
}
|
|
162
|
+
console.log(` → See migration guide #37 for full examples.`);
|
|
163
|
+
}
|
|
164
|
+
if (!modified)
|
|
165
|
+
return null;
|
|
166
|
+
return root.toSource();
|
|
167
|
+
}
|
|
168
|
+
const transform = wrapForSFC(coreTransform);
|
|
169
|
+
export default transform;
|
|
170
|
+
export const parser = "tsx";
|
|
171
|
+
//# sourceMappingURL=use-blade-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-blade-form.js","sourceRoot":"","sources":["../../src/transforms/use-blade-form.ts"],"names":[],"mappings":"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"}
|