@craft-ng/dev-tools 0.5.1-beta.0 → 0.6.0-beta.2
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 +66 -0
- package/generators.json +26 -0
- package/package.json +18 -1
- package/src/bin/craft.d.ts +2 -0
- package/src/bin/craft.js +166 -0
- package/src/bin/craft.js.map +1 -0
- package/src/eslint-rules/craft-computed-name-match.cjs +8 -125
- package/src/eslint-rules/craft-method-name-match.cjs +8 -166
- package/src/eslint-rules/craft-name-match-utils.cjs +179 -0
- package/src/eslint-rules/craft-signal-source-name-match.cjs +8 -0
- package/src/eslint-rules/craft-source-name-match.cjs +8 -0
- package/src/eslint-rules/global-exception-registry-match.cjs +78 -13
- package/src/eslint-rules/index.cjs +8 -2
- package/src/eslint-rules/require-cascade-route-di-check.cjs +223 -0
- package/src/eslint-rules/require-primitive-generator-unwrap.cjs +267 -0
- package/src/generators/route/compat.d.ts +3 -0
- package/src/generators/route/compat.js +6 -0
- package/src/generators/route/compat.js.map +1 -0
- package/src/generators/route/generator.d.ts +31 -0
- package/src/generators/route/generator.js +434 -0
- package/src/generators/route/generator.js.map +1 -0
- package/src/generators/route/schema.json +50 -0
- package/src/generators/route/split-schema.json +19 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/scripts/primitives/migrate-primitive-generators.d.ts +27 -0
- package/src/scripts/primitives/migrate-primitive-generators.js +315 -0
- package/src/scripts/primitives/migrate-primitive-generators.js.map +1 -0
- package/src/scripts/primitives/migrate-primitive-generators.ts +402 -0
- package/src/scripts/primitives/migrate-primitives.js +36 -4
- package/src/scripts/primitives/migrate-primitives.js.map +1 -1
- package/src/scripts/primitives/migrate-primitives.spec.ts +43 -0
- package/src/scripts/primitives/migrate-primitives.ts +62 -4
- package/src/scripts/primitives/migration-diagnostic.d.ts +1 -1
- package/src/scripts/primitives/migration-diagnostic.ts +1 -0
- package/src/scripts/routes/migrate-routes.js +4 -4
- package/src/scripts/routes/migrate-routes.js.map +1 -1
- package/src/scripts/routes/migrate-routes.ts +4 -6
- package/src/scripts/routes/route-command.d.ts +75 -0
- package/src/scripts/routes/route-command.js +1187 -0
- package/src/scripts/routes/route-command.js.map +1 -0
- package/src/scripts/routes/route-command.spec.ts +553 -0
- package/src/scripts/routes/route-command.ts +1790 -0
- package/src/scripts/services/migrate-services.js +45 -11
- package/src/scripts/services/migrate-services.js.map +1 -1
- package/src/scripts/services/migrate-services.spec.ts +46 -4
- package/src/scripts/services/migrate-services.ts +64 -13
- package/src/scripts/services/migration-diagnostic.d.ts +1 -1
- package/src/scripts/services/migration-diagnostic.ts +1 -0
- package/src/eslint-rules/require-track-on-dependent-primitives.cjs +0 -219
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { relative, dirname, resolve } from 'node:path';
|
|
2
|
+
import {
|
|
3
|
+
ArrowFunction,
|
|
4
|
+
CallExpression,
|
|
5
|
+
Identifier,
|
|
6
|
+
Node,
|
|
7
|
+
Project,
|
|
8
|
+
QuoteKind,
|
|
9
|
+
SourceFile,
|
|
10
|
+
SyntaxKind,
|
|
11
|
+
} from 'ts-morph';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Migrates call-sites of the generator-returning craft primitives (`state`,
|
|
15
|
+
* `query`, `mutation`, `asyncProcess`, `queryParam`):
|
|
16
|
+
*
|
|
17
|
+
* 1. `yield* track(X)` → `yield* X` (track import purged when unused).
|
|
18
|
+
* 2. Already-consumed invocations (`yield*`, `craftUse(...)`) are left alone.
|
|
19
|
+
* 3. Inside a generator function → prefix with `yield* ` (parenthesised when
|
|
20
|
+
* the parent is a spread / member access / template position).
|
|
21
|
+
* 4. Direct expression-body return of a `craftService` factory or of a
|
|
22
|
+
* `queryParams:` arrow stays as-is (the runtime drives the generator).
|
|
23
|
+
* 5. Anywhere else → wrap with `craftUse(...)` (import added).
|
|
24
|
+
* 6. A `craftService` factory / `queryParams:` arrow returning an object
|
|
25
|
+
* literal containing primitive creations is first converted to a
|
|
26
|
+
* `function*` so rule 3 applies.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export const ALL_PRIMITIVES = [
|
|
30
|
+
'state',
|
|
31
|
+
'query',
|
|
32
|
+
'mutation',
|
|
33
|
+
'asyncProcess',
|
|
34
|
+
'queryParam',
|
|
35
|
+
] as const;
|
|
36
|
+
|
|
37
|
+
export type PrimitiveName = (typeof ALL_PRIMITIVES)[number];
|
|
38
|
+
|
|
39
|
+
export type MigratePrimitiveGeneratorsOptions = {
|
|
40
|
+
paths: readonly string[];
|
|
41
|
+
primitives?: readonly PrimitiveName[];
|
|
42
|
+
write?: boolean;
|
|
43
|
+
log?: (message: string) => void;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type MigratePrimitiveGeneratorsResult = {
|
|
47
|
+
changedFiles: string[];
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const FACTORY_HOST_CALLEES = new Set(['craftService', 'toCraftService']);
|
|
51
|
+
|
|
52
|
+
export async function migratePrimitiveGenerators({
|
|
53
|
+
paths,
|
|
54
|
+
primitives = ALL_PRIMITIVES,
|
|
55
|
+
write = true,
|
|
56
|
+
log = console.log,
|
|
57
|
+
}: MigratePrimitiveGeneratorsOptions): Promise<MigratePrimitiveGeneratorsResult> {
|
|
58
|
+
const project = new Project({
|
|
59
|
+
skipAddingFilesFromTsConfig: true,
|
|
60
|
+
manipulationSettings: { quoteKind: QuoteKind.Single },
|
|
61
|
+
});
|
|
62
|
+
project.addSourceFilesAtPaths(paths as string[]);
|
|
63
|
+
|
|
64
|
+
const changedFiles: string[] = [];
|
|
65
|
+
for (const sourceFile of project.getSourceFiles()) {
|
|
66
|
+
if (migrateFile(sourceFile, new Set(primitives))) {
|
|
67
|
+
changedFiles.push(relative(process.cwd(), sourceFile.getFilePath()));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (write) {
|
|
72
|
+
await project.save();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
log(
|
|
76
|
+
`${write ? 'Migrated' : 'Would migrate'} ${changedFiles.length} file(s).`,
|
|
77
|
+
);
|
|
78
|
+
for (const file of changedFiles) log(` ${file}`);
|
|
79
|
+
|
|
80
|
+
return { changedFiles };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function migrateFile(
|
|
84
|
+
sourceFile: SourceFile,
|
|
85
|
+
primitives: Set<string>,
|
|
86
|
+
): boolean {
|
|
87
|
+
const localNames = collectImportedLocalNames(sourceFile, primitives);
|
|
88
|
+
if (localNames.size === 0) return false;
|
|
89
|
+
|
|
90
|
+
let changed = false;
|
|
91
|
+
|
|
92
|
+
changed = unwrapTrackCalls(sourceFile) || changed;
|
|
93
|
+
changed = convertObjectLiteralFactories(sourceFile, localNames) || changed;
|
|
94
|
+
|
|
95
|
+
// Bottom-up so an edit never invalidates a not-yet-processed call above it.
|
|
96
|
+
const calls = findPrimitiveCreationCalls(sourceFile, localNames).sort(
|
|
97
|
+
(a, b) => b.getStart() - a.getStart(),
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
let needsCraftUseImport = false;
|
|
101
|
+
for (const call of calls) {
|
|
102
|
+
if (isAlreadyConsumed(call) || isDirectFactoryReturn(call)) continue;
|
|
103
|
+
|
|
104
|
+
if (isInsideGeneratorFunction(call)) {
|
|
105
|
+
const text = call.getText();
|
|
106
|
+
call.replaceWithText(
|
|
107
|
+
needsYieldParens(call) ? `(yield* ${text})` : `yield* ${text}`,
|
|
108
|
+
);
|
|
109
|
+
changed = true;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
call.replaceWithText(`craftUse(${call.getText()})`);
|
|
114
|
+
needsCraftUseImport = true;
|
|
115
|
+
changed = true;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (needsCraftUseImport) {
|
|
119
|
+
ensureCraftUseImport(sourceFile);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return changed;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function collectImportedLocalNames(
|
|
126
|
+
sourceFile: SourceFile,
|
|
127
|
+
primitives: Set<string>,
|
|
128
|
+
): Map<string, string> {
|
|
129
|
+
const localNames = new Map<string, string>();
|
|
130
|
+
for (const importDeclaration of sourceFile.getImportDeclarations()) {
|
|
131
|
+
for (const specifier of importDeclaration.getNamedImports()) {
|
|
132
|
+
const original = specifier.getName();
|
|
133
|
+
if (primitives.has(original)) {
|
|
134
|
+
localNames.set(specifier.getAliasNode()?.getText() ?? original, original);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return localNames;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function findPrimitiveCreationCalls(
|
|
142
|
+
sourceFile: SourceFile,
|
|
143
|
+
localNames: Map<string, string>,
|
|
144
|
+
): CallExpression[] {
|
|
145
|
+
return sourceFile
|
|
146
|
+
.getDescendantsOfKind(SyntaxKind.CallExpression)
|
|
147
|
+
.filter((call) => {
|
|
148
|
+
const callee = call.getExpression();
|
|
149
|
+
if (!Node.isIdentifier(callee)) return false;
|
|
150
|
+
if (!localNames.has(callee.getText())) return false;
|
|
151
|
+
// A creation call always takes a config; destructured readers such as
|
|
152
|
+
// `({ state }) => state().page` are argument-less.
|
|
153
|
+
if (call.getArguments().length === 0) return false;
|
|
154
|
+
return !isShadowed(callee);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function isShadowed(identifier: Identifier): boolean {
|
|
159
|
+
const name = identifier.getText();
|
|
160
|
+
let node: Node | undefined = identifier.getParent();
|
|
161
|
+
while (node) {
|
|
162
|
+
if (
|
|
163
|
+
Node.isFunctionDeclaration(node) ||
|
|
164
|
+
Node.isFunctionExpression(node) ||
|
|
165
|
+
Node.isArrowFunction(node) ||
|
|
166
|
+
Node.isMethodDeclaration(node)
|
|
167
|
+
) {
|
|
168
|
+
for (const parameter of node.getParameters()) {
|
|
169
|
+
const bindsName = parameter
|
|
170
|
+
.getDescendants()
|
|
171
|
+
.concat(parameter.getNameNode())
|
|
172
|
+
.some(
|
|
173
|
+
(descendant) =>
|
|
174
|
+
(Node.isIdentifier(descendant) &&
|
|
175
|
+
descendant.getText() === name &&
|
|
176
|
+
(Node.isBindingElement(descendant.getParent()) ||
|
|
177
|
+
Node.isParameterDeclaration(descendant.getParent())) &&
|
|
178
|
+
(descendant.getParent() as any).getNameNode?.() === descendant),
|
|
179
|
+
);
|
|
180
|
+
if (bindsName) return true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
node = node.getParent();
|
|
184
|
+
}
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function isAlreadyConsumed(call: CallExpression): boolean {
|
|
189
|
+
const parent = skipParens(call.getParent());
|
|
190
|
+
if (Node.isYieldExpression(parent)) return true;
|
|
191
|
+
if (
|
|
192
|
+
Node.isCallExpression(parent) &&
|
|
193
|
+
parent.getExpression().getText() === 'craftUse' &&
|
|
194
|
+
parent.getArguments()[0] === skipParensDown(call)
|
|
195
|
+
) {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function isDirectFactoryReturn(call: CallExpression): boolean {
|
|
202
|
+
const arrow = skipParens(call.getParent());
|
|
203
|
+
if (!Node.isArrowFunction(arrow)) return false;
|
|
204
|
+
if (skipParensDown(arrow.getBody()) !== call) return false;
|
|
205
|
+
return isFactoryHostArrow(arrow);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function isFactoryHostArrow(arrow: ArrowFunction): boolean {
|
|
209
|
+
const parent = arrow.getParent();
|
|
210
|
+
if (Node.isCallExpression(parent)) {
|
|
211
|
+
const callee = parent.getExpression();
|
|
212
|
+
if (Node.isIdentifier(callee) && FACTORY_HOST_CALLEES.has(callee.getText())) {
|
|
213
|
+
return parent.getArguments().includes(arrow);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (Node.isPropertyAssignment(parent)) {
|
|
217
|
+
return parent.getName() === 'queryParams';
|
|
218
|
+
}
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function isInsideGeneratorFunction(call: CallExpression): boolean {
|
|
223
|
+
let node: Node | undefined = call.getParent();
|
|
224
|
+
while (node) {
|
|
225
|
+
if (Node.isArrowFunction(node)) return false;
|
|
226
|
+
if (
|
|
227
|
+
Node.isFunctionDeclaration(node) ||
|
|
228
|
+
Node.isFunctionExpression(node) ||
|
|
229
|
+
Node.isMethodDeclaration(node)
|
|
230
|
+
) {
|
|
231
|
+
return node.isGenerator();
|
|
232
|
+
}
|
|
233
|
+
node = node.getParent();
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function needsYieldParens(call: CallExpression): boolean {
|
|
239
|
+
const parent = call.getParent();
|
|
240
|
+
return (
|
|
241
|
+
Node.isSpreadElement(parent) ||
|
|
242
|
+
Node.isSpreadAssignment(parent) ||
|
|
243
|
+
Node.isPropertyAccessExpression(parent) ||
|
|
244
|
+
Node.isElementAccessExpression(parent) ||
|
|
245
|
+
Node.isTemplateSpan(parent) ||
|
|
246
|
+
Node.isBinaryExpression(parent) ||
|
|
247
|
+
Node.isConditionalExpression(parent) ||
|
|
248
|
+
(Node.isCallExpression(parent) && parent.getExpression() === call)
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function unwrapTrackCalls(sourceFile: SourceFile): boolean {
|
|
253
|
+
const trackImport = sourceFile
|
|
254
|
+
.getImportDeclarations()
|
|
255
|
+
.flatMap((declaration) => declaration.getNamedImports())
|
|
256
|
+
.find((specifier) => specifier.getName() === 'track');
|
|
257
|
+
if (!trackImport) return false;
|
|
258
|
+
|
|
259
|
+
const localName = trackImport.getAliasNode()?.getText() ?? 'track';
|
|
260
|
+
const trackCalls = sourceFile
|
|
261
|
+
.getDescendantsOfKind(SyntaxKind.CallExpression)
|
|
262
|
+
.filter((call) => {
|
|
263
|
+
const callee = call.getExpression();
|
|
264
|
+
return (
|
|
265
|
+
Node.isIdentifier(callee) &&
|
|
266
|
+
callee.getText() === localName &&
|
|
267
|
+
call.getArguments().length === 1
|
|
268
|
+
);
|
|
269
|
+
})
|
|
270
|
+
.sort((a, b) => b.getStart() - a.getStart());
|
|
271
|
+
|
|
272
|
+
if (trackCalls.length === 0) return false;
|
|
273
|
+
|
|
274
|
+
for (const call of trackCalls) {
|
|
275
|
+
call.replaceWithText(call.getArguments()[0].getText());
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const remaining = sourceFile
|
|
279
|
+
.getDescendantsOfKind(SyntaxKind.Identifier)
|
|
280
|
+
.filter(
|
|
281
|
+
(identifier) =>
|
|
282
|
+
identifier.getText() === localName &&
|
|
283
|
+
!Node.isImportSpecifier(identifier.getParent()),
|
|
284
|
+
);
|
|
285
|
+
if (remaining.length === 0) {
|
|
286
|
+
trackImport.remove();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function convertObjectLiteralFactories(
|
|
293
|
+
sourceFile: SourceFile,
|
|
294
|
+
localNames: Map<string, string>,
|
|
295
|
+
): boolean {
|
|
296
|
+
const arrows = sourceFile
|
|
297
|
+
.getDescendantsOfKind(SyntaxKind.ArrowFunction)
|
|
298
|
+
.filter((arrow) => {
|
|
299
|
+
if (!isFactoryHostArrow(arrow)) return false;
|
|
300
|
+
const body = skipParensDown(arrow.getBody());
|
|
301
|
+
if (!Node.isObjectLiteralExpression(body)) return false;
|
|
302
|
+
return findPrimitiveCreationCalls(sourceFile, localNames).some((call) =>
|
|
303
|
+
body.getDescendants().includes(call),
|
|
304
|
+
);
|
|
305
|
+
})
|
|
306
|
+
.sort((a, b) => b.getStart() - a.getStart());
|
|
307
|
+
|
|
308
|
+
for (const arrow of arrows) {
|
|
309
|
+
const body = skipParensDown(arrow.getBody());
|
|
310
|
+
const parameters = arrow
|
|
311
|
+
.getParameters()
|
|
312
|
+
.map((parameter) => parameter.getText())
|
|
313
|
+
.join(', ');
|
|
314
|
+
arrow.replaceWithText(
|
|
315
|
+
`function* (${parameters}) {\n return ${body.getText()};\n}`,
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
return arrows.length > 0;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
function ensureCraftUseImport(sourceFile: SourceFile): void {
|
|
323
|
+
const alreadyImported = sourceFile
|
|
324
|
+
.getImportDeclarations()
|
|
325
|
+
.some((declaration) =>
|
|
326
|
+
declaration
|
|
327
|
+
.getNamedImports()
|
|
328
|
+
.some((specifier) => specifier.getName() === 'craftUse'),
|
|
329
|
+
);
|
|
330
|
+
if (alreadyImported) return;
|
|
331
|
+
|
|
332
|
+
const filePath = sourceFile.getFilePath();
|
|
333
|
+
const coreSrc = resolve('libs/core/src');
|
|
334
|
+
const isInsideCore = resolve(filePath).startsWith(coreSrc + '/');
|
|
335
|
+
|
|
336
|
+
if (isInsideCore) {
|
|
337
|
+
let specifier = relative(
|
|
338
|
+
dirname(filePath),
|
|
339
|
+
resolve('libs/core/src/lib/craft-use'),
|
|
340
|
+
);
|
|
341
|
+
if (!specifier.startsWith('.')) specifier = `./${specifier}`;
|
|
342
|
+
sourceFile.addImportDeclaration({
|
|
343
|
+
moduleSpecifier: specifier,
|
|
344
|
+
namedImports: ['craftUse'],
|
|
345
|
+
});
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const coreImport = sourceFile
|
|
350
|
+
.getImportDeclarations()
|
|
351
|
+
.find((declaration) => declaration.getModuleSpecifierValue() === '@craft-ng/core');
|
|
352
|
+
if (coreImport) {
|
|
353
|
+
coreImport.addNamedImport('craftUse');
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
sourceFile.addImportDeclaration({
|
|
358
|
+
moduleSpecifier: '@craft-ng/core',
|
|
359
|
+
namedImports: ['craftUse'],
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function skipParens(node: Node | undefined): Node | undefined {
|
|
364
|
+
while (node && Node.isParenthesizedExpression(node)) {
|
|
365
|
+
node = node.getParent();
|
|
366
|
+
}
|
|
367
|
+
return node;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function skipParensDown(node: Node): Node {
|
|
371
|
+
while (Node.isParenthesizedExpression(node)) {
|
|
372
|
+
node = node.getExpression();
|
|
373
|
+
}
|
|
374
|
+
return node;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const isCli = process.argv[1]?.includes('migrate-primitive-generators');
|
|
378
|
+
if (isCli) {
|
|
379
|
+
const args = process.argv.slice(2);
|
|
380
|
+
const readListArg = (name: string): string[] | undefined => {
|
|
381
|
+
const index = args.indexOf(`--${name}`);
|
|
382
|
+
if (index === -1) return undefined;
|
|
383
|
+
return args[index + 1]?.split(',').filter(Boolean);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
const paths = readListArg('paths');
|
|
387
|
+
if (!paths || paths.length === 0) {
|
|
388
|
+
console.error(
|
|
389
|
+
'Usage: migrate-primitive-generators --paths <glob,...> [--primitives state,query,...] [--dry]',
|
|
390
|
+
);
|
|
391
|
+
process.exit(1);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
void migratePrimitiveGenerators({
|
|
395
|
+
paths,
|
|
396
|
+
primitives: readListArg('primitives') as PrimitiveName[] | undefined,
|
|
397
|
+
write: !args.includes('--dry'),
|
|
398
|
+
}).catch((error) => {
|
|
399
|
+
console.error(error);
|
|
400
|
+
process.exit(1);
|
|
401
|
+
});
|
|
402
|
+
}
|
|
@@ -35,10 +35,17 @@ export function runPrimitivesMigration() {
|
|
|
35
35
|
const changedSignals = migrateSignalsToState(sourceFile);
|
|
36
36
|
const changedResources = migrateSingleEmissionRxResources(sourceFile, diagnostics);
|
|
37
37
|
const changedWorkflows = annotateImperativeWorkflows(sourceFile, diagnostics);
|
|
38
|
+
const changedFormTreeInserts = annotateFormTreeInsertExtractions(sourceFile, diagnostics);
|
|
38
39
|
diagnoseSignalForms(sourceFile, diagnostics);
|
|
39
|
-
if (changedSignals ||
|
|
40
|
+
if (changedSignals ||
|
|
41
|
+
changedResources ||
|
|
42
|
+
changedWorkflows ||
|
|
43
|
+
changedFormTreeInserts)
|
|
40
44
|
touched.add(sourceFile);
|
|
41
|
-
if (changedSignals ||
|
|
45
|
+
if (changedSignals ||
|
|
46
|
+
changedResources ||
|
|
47
|
+
changedWorkflows ||
|
|
48
|
+
changedFormTreeInserts)
|
|
42
49
|
getFileReport(files, sourceFile.getFilePath()).changed = true;
|
|
43
50
|
}
|
|
44
51
|
for (const file of touched)
|
|
@@ -133,6 +140,31 @@ function findImperativeStateDeclaration(call) {
|
|
|
133
140
|
}
|
|
134
141
|
const REACTIVE_WORKFLOW_COMMENT = '// CRAFT_REACTIVE_WORKFLOW_RECOMMENDED: workflow impératif détecté...';
|
|
135
142
|
const FIRST_VALUE_FROM_REVIEW_COMMENT = '// CRAFT_FIRST_VALUE_FROM_REVIEW: firstValueFrom bridges an Observable temporarily; prefer a Promise-native Craft API when possible.';
|
|
143
|
+
const FORM_TREE_INSERT_EXTRACTION_REVIEW_COMMENT = '// CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW: makeFormTreeInsert sert surtout à extraire et découper une logique de formulaire; si cet insert n’est utilisé qu’ici, envisager de le placer directement dans insertForm.';
|
|
144
|
+
function annotateFormTreeInsertExtractions(sourceFile, diagnostics) {
|
|
145
|
+
const statements = new Set();
|
|
146
|
+
for (const call of sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
147
|
+
if (call.getExpression().getText() !== 'makeFormTreeInsert')
|
|
148
|
+
continue;
|
|
149
|
+
const statement = call.getFirstAncestor((ancestor) => Node.isVariableStatement(ancestor));
|
|
150
|
+
if (statement)
|
|
151
|
+
statements.add(statement);
|
|
152
|
+
}
|
|
153
|
+
let changed = false;
|
|
154
|
+
for (const statement of [...statements].sort((left, right) => right.getStart() - left.getStart())) {
|
|
155
|
+
if (statement.wasForgotten() ||
|
|
156
|
+
statement
|
|
157
|
+
.getFullText()
|
|
158
|
+
.includes('CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW'))
|
|
159
|
+
continue;
|
|
160
|
+
statement.replaceWithText(`${FORM_TREE_INSERT_EXTRACTION_REVIEW_COMMENT}\n${statement.getText()}`);
|
|
161
|
+
changed = true;
|
|
162
|
+
}
|
|
163
|
+
if (changed) {
|
|
164
|
+
diagnose(diagnostics, 'FORM_TREE_INSERT_EXTRACTION_REQUIRES_REVIEW', sourceFile, '`makeFormTreeInsert(...)` est utile pour extraire une logique de formulaire; si l’insert n’a qu’un seul usage local, envisager de l’imbriquer directement dans `insertForm(...)`.');
|
|
165
|
+
}
|
|
166
|
+
return changed;
|
|
167
|
+
}
|
|
136
168
|
function migrateSingleEmissionRxResources(sourceFile, diagnostics) {
|
|
137
169
|
var _a, _b;
|
|
138
170
|
const rxInterop = sourceFile.getImportDeclaration('@angular/core/rxjs-interop');
|
|
@@ -270,11 +302,11 @@ function diagnoseSignalForms(sourceFile, diagnostics) {
|
|
|
270
302
|
for (const call of sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {
|
|
271
303
|
if (!isValidateAsyncRxResourceCall(call))
|
|
272
304
|
continue;
|
|
273
|
-
diagnose(diagnostics, 'ASYNC_VALIDATOR_REQUIRES_QUERY', sourceFile, '`validateAsync(...)` basé sur `rxResource(...)` doit devenir une `query(...)` locale déclenchée par la valeur du champ, puis `cAsyncValidate(queryRef, ...)`. Dans un craftService, créer la query avec `yield*
|
|
305
|
+
diagnose(diagnostics, 'ASYNC_VALIDATOR_REQUIRES_QUERY', sourceFile, '`validateAsync(...)` basé sur `rxResource(...)` doit devenir une `query(...)` locale déclenchée par la valeur du champ, puis `cAsyncValidate(queryRef, ...)`. Dans un craftService, créer la query avec `yield* query(...)` ; dans un champ de composant, `craftUse(query(...))`.');
|
|
274
306
|
}
|
|
275
307
|
}
|
|
276
308
|
if ((_a = sourceFile.getImportDeclaration('@angular/core/rxjs-interop')) === null || _a === void 0 ? void 0 : _a.getNamedImports().some((item) => item.getName() === 'rxResource')) {
|
|
277
|
-
diagnose(diagnostics, 'RX_RESOURCE_REQUIRES_QUERY', sourceFile, '`rxResource(...)` doit être remplacé par `query(...)` ou `mutation(...)` selon l’intention; dans un validateur async, préférer `query(...) + cAsyncValidate(...)`. Dans un craftService,
|
|
309
|
+
diagnose(diagnostics, 'RX_RESOURCE_REQUIRES_QUERY', sourceFile, '`rxResource(...)` doit être remplacé par `query(...)` ou `mutation(...)` selon l’intention; dans un validateur async, préférer `query(...) + cAsyncValidate(...)`. Dans un craftService, consommer toute primitive avec `yield*` ; dans un champ de composant, `craftUse(...)`.');
|
|
278
310
|
}
|
|
279
311
|
}
|
|
280
312
|
function isValidateAsyncRxResourceCall(call) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-primitives.js","sourceRoot":"","sources":["../../../../../../libs/dev-tools/src/scripts/primitives/migrate-primitives.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAEL,IAAI,EACJ,OAAO,EACP,SAAS,EAET,UAAU,GACX,MAAM,UAAU,CAAC;AAMlB,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AA8B1C,MAAM,UAAgB,sBAAsB;yDAC1C,UAAoC,EAAE;;QAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;YAC/C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,iCACtB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC7D,oBAAoB,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,EACrD,2BAA2B,EAAE,KAAK,IAClC,CAAC;QACH,OAAO,CAAC,qBAAqB,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YACxB,IAAI,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE;YACzC,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE;YACjC,IAAI,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE;YACrC,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;SACjC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAM;YACpC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;QACtC,MAAM,WAAW,GAAmC,EAAE,CAAC;QAEvD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,gBAAgB,GAAG,gCAAgC,CACvD,UAAU,EACV,WAAW,CACZ,CAAC;YACF,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,UAAU,EACV,WAAW,CACZ,CAAC;YACF,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC7C,IAAI,cAAc,IAAI,gBAAgB,IAAI,gBAAgB;gBACxD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,cAAc,IAAI,gBAAgB,IAAI,gBAAgB;gBACxD,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QAClE,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAEnD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,SAAS,CACb,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAC9C,OAAO,CACR,CAAC;YACF,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,uBAAuB,GAAG,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAA4B;YACtC,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5D,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,WAAW;YACX,uBAAuB;YACvB,oBAAoB;YACpB,SAAS;YACT,QAAQ,EACN,CAAC,OAAO,CAAC,KAAK;gBACZ,CAAC,uBAAuB,GAAG,CAAC,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;gBAC5D,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC;SACR,CAAC;QAEF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;YAClD,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAED,SAAS,qBAAqB,CAAC,UAAsB;IACnD,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAC5B,eAAe,GAChB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAQ,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI;QACjB,GAAG,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC;KAC9D,EAAE,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,SAAS;QAClC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ;YAAE,SAAS;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY;YAAE,SAAS;QAC5B,MAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,YAAY,CAAC,OAAO,EAAE,cAAc,YAAY,CAAC,OAAO,EAAE,EAAE;YAC9F,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,WAAW;YAAE,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAClB,SAAS,KAAK,2CAA2C,CAC1D,CAAC;QACF,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,IAAI,CACxD,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CACpD,EAAE,CAAC;QACF,IAAI,WAAW,CAAC,YAAY,EAAE;YAAE,SAAS;QACzC,WAAW,CAAC,eAAe,CACzB,GAAG,wBAAwB,KAAK,WAAW,CAAC,OAAO,EAAE,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,YAAY,CAAC,MAAM,EAAE,CAAC;IACtB,IACE,WAAW;QACX,CAAC,WAAW,CAAC,gBAAgB,EAAE;QAC/B,CAAC,WAAW,CAAC,kBAAkB,EAAE;QACjC,WAAW,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC;QAE1C,WAAW,CAAC,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,wBAAwB,GAC5B,6FAA6F,CAAC;AAEhG,SAAS,8BAA8B,CACrC,IAAoB;IAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CACvC,CAAC,QAAQ,EAAE,EAAE,CACX,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CACrC,CAAC;IACF,IACE,CAAC,WAAW;QACZ,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAEpE,OAAO,SAAS,CAAC;IACnB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,yBAAyB,GAC7B,uEAAuE,CAAC;AAC1E,MAAM,+BAA+B,GACnC,sIAAsI,CAAC;AAEzI,SAAS,gCAAgC,CACvC,UAAsB,EACtB,WAA2C;;IAE3C,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAC/C,4BAA4B,CAC7B,CAAC;IACF,IACE,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CACN,eAAe,GAChB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,CAAA;QAElD,OAAO,KAAK,CAAC;IAEf,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,oBAAoB,CAChD,UAAU,CAAC,cAAc,CAC1B,EAAE,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,YAAY;YACxE,SAAS;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;YAAE,SAAS;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAAE,SAAS;QAE5D,MAAM,SAAS,GAAG,2BAA2B,CAC3C,MAAA,MAAA,MAAM,CAAC,cAAc,EAAE,0CAAE,OAAO,EAAE,mCAAI,EAAE,CACzC,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,IAAI,CAAC,aAAa,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;QAC/C,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,yBAAyB,CAAC,UAAU,EAAE,4BAA4B,EAAE,YAAY,CAAC,CAAC;IAClF,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,yBAAyB,CAAC,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAErE,IACE,CAAC,UAAU;SACR,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC;SAC/C,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,EAClE,CAAC;QACD,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,4BAA4B,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAmB;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAC7B,0CAA0C,CAC3C,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,+FAA+F,CAChG,CAAC;IACF,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,MAAM,CAAC,CAAC,CAAC,EACT,GAAG,+BAA+B,kCAAkC,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1H,CAAC;IACF,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB,EAAE,QAAgB;IACzD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7E,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAsB,EACtB,eAAuB,EACvB,IAAY;IAEZ,IAAI,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW;QACd,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IACrE,IACE,CAAC,WAAW;SACT,eAAe,EAAE;SACjB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;QAExD,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,yBAAyB,CAChC,UAAsB,EACtB,eAAuB,EACvB,IAAY;IAEZ,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAC3B,eAAe,GAChB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,SAAS,GAAG,UAAU;SACzB,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC;SAC3C,IAAI,CACH,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,OAAO,EAAE,KAAK,IAAI;QAC7B,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC7D,WAAW,CAChB,CAAC;IACJ,IAAI,SAAS;QAAE,OAAO;IACtB,WAAW,CAAC,MAAM,EAAE,CAAC;IACrB,IACE,WAAW;QACX,CAAC,WAAW,CAAC,gBAAgB,EAAE;QAC/B,CAAC,WAAW,CAAC,kBAAkB,EAAE;QACjC,WAAW,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC;QAE1C,WAAW,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA2C,EAC3C,UAAsB,EACtB,IAAsC;IAEtC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CACjC,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,IAAI,KAAK,IAAI;QACxB,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,WAAW,EAAE,CACnD,CAAC;IACF,IAAI,KAAK,IAAI,CAAC;QAAE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAsB,EACtB,WAA2C;IAE3C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,SAAS,GAAG;QAChB,GAAG,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAClE,GAAG,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,iBAAiB,CAAC;KACjE,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;QACrC,IACE,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAE1E,SAAS;QACX,MAAM,KAAK,GAAG,YAAY,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CACL,UAAU,CAAC,OAAO,EAAE,KAAK,QAAQ;gBACjC,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;oBAC1C,UAAU,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CACL,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBAC3C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CACjD,CAAC;QACJ,CAAC,CAAC,CAAC,MAAM,CAAC;QACV,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,CACL,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;gBAC3C,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,aAAa,CAAC;YAAE,SAAS;QAEtE,YAAY,CAAC,eAAe,CAC1B,GAAG,yBAAyB,KAAK,YAAY,CAAC,OAAO,EAAE,EAAE,CAC1D,CAAC;QACF,QAAQ,CACN,WAAW,EACX,qCAAqC,EACrC,UAAU,EACV,8HAA8H,CAC/H,CAAC;QACF,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,WAA2C;;IAE3C,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnF,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,QAAQ,CACN,WAAW,EACX,kCAAkC,EAClC,UAAU,EACV,0JAA0J,CAC3J,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnD,QAAQ,CACN,WAAW,EACX,gCAAgC,EAChC,UAAU,EACV,qOAAqO,CACtO,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAA,UAAU,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,0CAAE,eAAe,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;QACrI,QAAQ,CACN,WAAW,EACX,4BAA4B,EAC5B,UAAU,EACV,wPAAwP,CACzP,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAoB;IACzD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,IAAI;SACR,oBAAoB,CAAC,UAAU,CAAC,cAAc,CAAC;SAC/C,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB,EAAE,KAAe;IAC1D,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW;QACd,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACtC,eAAe,EAAE,gBAAgB;SAClC,CAAC,CAAC;IACL,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAC5D,CAAC;IACF,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CACf,WAA2C,EAC3C,IAAsC,EACtC,UAAsB,EACtB,OAAe;IAEf,IACE,WAAW,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,WAAW,EAAE,CAC3E;QAED,OAAO;IACT,WAAW,CAAC,IAAI,CAAC;QACf,IAAI;QACJ,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE;QAClC,OAAO;QACP,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB,EAAE,OAAe;IAClE,OAAO,OAAO;SACX,cAAc,EAAE;SAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;SAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;;QACf,OAAA,MAAA,IAAI;aACD,oBAAoB,CAAC,eAAe,CAAC,0CACpC,eAAe,GAChB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAA;KAAA,CAC/C,CAAC,MAAM,CAAC;AACb,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAgB,EAAE,OAAe;IAC/D,OAAO,OAAO;SACX,cAAc,EAAE;SAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;SAChE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,CAAC;SAC9E,MAAM,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CACpB,GAAuC,EACvC,QAAgB;IAEhB,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,OAAe;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,SAAe,SAAS,CAAC,KAAe,EAAE,GAAW;;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,aAAa,CACjB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACpC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,EACnB,EAAE,GAAG,EAAE,CACR,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,UAAU,CACjB,MAA+B,EAC/B,GAA8B,EAC9B,KAAc;IAEd,GAAG,CACD,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,aAAa,MAAM,CAAC,WAAW,CAAC,MAAM,wBAAwB,CACpI,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW;QACzC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"migrate-primitives.js","sourceRoot":"","sources":["../../../../../../libs/dev-tools/src/scripts/primitives/migrate-primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -276,4 +276,47 @@ describe('primitives migration', () => {
|
|
|
276
276
|
expect(result.exitCode).toBe(1);
|
|
277
277
|
expect(result.remainingSignalForms).toBe(1);
|
|
278
278
|
});
|
|
279
|
+
|
|
280
|
+
it('suggests inlining a local makeFormTreeInsert into insertForm', async () => {
|
|
281
|
+
const root = await fixture({
|
|
282
|
+
'tsconfig.json': '{}',
|
|
283
|
+
'checkout.ts': `
|
|
284
|
+
import { formTreeNeed, insertForm, insertSelectFormTree, makeFormTreeInsert, state } from '@craft-ng/core';
|
|
285
|
+
type CheckoutForm = { coupon: { code: string } };
|
|
286
|
+
const { insertCouponTree } = makeFormTreeInsert(
|
|
287
|
+
'Coupon',
|
|
288
|
+
formTreeNeed<CheckoutForm['coupon']>(),
|
|
289
|
+
() => ({}),
|
|
290
|
+
);
|
|
291
|
+
export const checkout = state(
|
|
292
|
+
{ coupon: { code: '' } },
|
|
293
|
+
insertForm(insertSelectFormTree('coupon', insertCouponTree())),
|
|
294
|
+
);
|
|
295
|
+
`,
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
const first = await runPrimitivesMigration({
|
|
299
|
+
rootDir: root,
|
|
300
|
+
write: true,
|
|
301
|
+
eslint: false,
|
|
302
|
+
log: () => undefined,
|
|
303
|
+
});
|
|
304
|
+
await runPrimitivesMigration({
|
|
305
|
+
rootDir: root,
|
|
306
|
+
write: true,
|
|
307
|
+
eslint: false,
|
|
308
|
+
log: () => undefined,
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
const output = await readFile(join(root, 'checkout.ts'), 'utf8');
|
|
312
|
+
expect(first.diagnostics.map((diagnostic) => diagnostic.code)).toContain(
|
|
313
|
+
'FORM_TREE_INSERT_EXTRACTION_REQUIRES_REVIEW',
|
|
314
|
+
);
|
|
315
|
+
expect(output).toContain(
|
|
316
|
+
'// CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW: makeFormTreeInsert sert surtout à extraire et découper une logique de formulaire; si cet insert n’est utilisé qu’ici, envisager de le placer directement dans insertForm.',
|
|
317
|
+
);
|
|
318
|
+
expect(
|
|
319
|
+
output.match(/CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW/g),
|
|
320
|
+
).toHaveLength(1);
|
|
321
|
+
});
|
|
279
322
|
});
|
|
@@ -88,10 +88,24 @@ export async function runPrimitivesMigration(
|
|
|
88
88
|
sourceFile,
|
|
89
89
|
diagnostics,
|
|
90
90
|
);
|
|
91
|
+
const changedFormTreeInserts = annotateFormTreeInsertExtractions(
|
|
92
|
+
sourceFile,
|
|
93
|
+
diagnostics,
|
|
94
|
+
);
|
|
91
95
|
diagnoseSignalForms(sourceFile, diagnostics);
|
|
92
|
-
if (
|
|
96
|
+
if (
|
|
97
|
+
changedSignals ||
|
|
98
|
+
changedResources ||
|
|
99
|
+
changedWorkflows ||
|
|
100
|
+
changedFormTreeInserts
|
|
101
|
+
)
|
|
93
102
|
touched.add(sourceFile);
|
|
94
|
-
if (
|
|
103
|
+
if (
|
|
104
|
+
changedSignals ||
|
|
105
|
+
changedResources ||
|
|
106
|
+
changedWorkflows ||
|
|
107
|
+
changedFormTreeInserts
|
|
108
|
+
)
|
|
95
109
|
getFileReport(files, sourceFile.getFilePath()).changed = true;
|
|
96
110
|
}
|
|
97
111
|
|
|
@@ -210,6 +224,50 @@ const REACTIVE_WORKFLOW_COMMENT =
|
|
|
210
224
|
'// CRAFT_REACTIVE_WORKFLOW_RECOMMENDED: workflow impératif détecté...';
|
|
211
225
|
const FIRST_VALUE_FROM_REVIEW_COMMENT =
|
|
212
226
|
'// CRAFT_FIRST_VALUE_FROM_REVIEW: firstValueFrom bridges an Observable temporarily; prefer a Promise-native Craft API when possible.';
|
|
227
|
+
const FORM_TREE_INSERT_EXTRACTION_REVIEW_COMMENT =
|
|
228
|
+
'// CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW: makeFormTreeInsert sert surtout à extraire et découper une logique de formulaire; si cet insert n’est utilisé qu’ici, envisager de le placer directement dans insertForm.';
|
|
229
|
+
|
|
230
|
+
function annotateFormTreeInsertExtractions(
|
|
231
|
+
sourceFile: SourceFile,
|
|
232
|
+
diagnostics: PrimitiveMigrationDiagnostic[],
|
|
233
|
+
): boolean {
|
|
234
|
+
const statements = new Set<Node>();
|
|
235
|
+
for (const call of sourceFile.getDescendantsOfKind(
|
|
236
|
+
SyntaxKind.CallExpression,
|
|
237
|
+
)) {
|
|
238
|
+
if (call.getExpression().getText() !== 'makeFormTreeInsert') continue;
|
|
239
|
+
const statement = call.getFirstAncestor((ancestor) =>
|
|
240
|
+
Node.isVariableStatement(ancestor),
|
|
241
|
+
);
|
|
242
|
+
if (statement) statements.add(statement);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
let changed = false;
|
|
246
|
+
for (const statement of [...statements].sort(
|
|
247
|
+
(left, right) => right.getStart() - left.getStart(),
|
|
248
|
+
)) {
|
|
249
|
+
if (
|
|
250
|
+
statement.wasForgotten() ||
|
|
251
|
+
statement
|
|
252
|
+
.getFullText()
|
|
253
|
+
.includes('CRAFT_FORM_TREE_INSERT_EXTRACTION_REVIEW')
|
|
254
|
+
)
|
|
255
|
+
continue;
|
|
256
|
+
statement.replaceWithText(
|
|
257
|
+
`${FORM_TREE_INSERT_EXTRACTION_REVIEW_COMMENT}\n${statement.getText()}`,
|
|
258
|
+
);
|
|
259
|
+
changed = true;
|
|
260
|
+
}
|
|
261
|
+
if (changed) {
|
|
262
|
+
diagnose(
|
|
263
|
+
diagnostics,
|
|
264
|
+
'FORM_TREE_INSERT_EXTRACTION_REQUIRES_REVIEW',
|
|
265
|
+
sourceFile,
|
|
266
|
+
'`makeFormTreeInsert(...)` est utile pour extraire une logique de formulaire; si l’insert n’a qu’un seul usage local, envisager de l’imbriquer directement dans `insertForm(...)`.',
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
return changed;
|
|
270
|
+
}
|
|
213
271
|
|
|
214
272
|
function migrateSingleEmissionRxResources(
|
|
215
273
|
sourceFile: SourceFile,
|
|
@@ -423,7 +481,7 @@ function diagnoseSignalForms(
|
|
|
423
481
|
diagnostics,
|
|
424
482
|
'ASYNC_VALIDATOR_REQUIRES_QUERY',
|
|
425
483
|
sourceFile,
|
|
426
|
-
'`validateAsync(...)` basé sur `rxResource(...)` doit devenir une `query(...)` locale déclenchée par la valeur du champ, puis `cAsyncValidate(queryRef, ...)`. Dans un craftService, créer la query avec `yield*
|
|
484
|
+
'`validateAsync(...)` basé sur `rxResource(...)` doit devenir une `query(...)` locale déclenchée par la valeur du champ, puis `cAsyncValidate(queryRef, ...)`. Dans un craftService, créer la query avec `yield* query(...)` ; dans un champ de composant, `craftUse(query(...))`.',
|
|
427
485
|
);
|
|
428
486
|
}
|
|
429
487
|
}
|
|
@@ -432,7 +490,7 @@ function diagnoseSignalForms(
|
|
|
432
490
|
diagnostics,
|
|
433
491
|
'RX_RESOURCE_REQUIRES_QUERY',
|
|
434
492
|
sourceFile,
|
|
435
|
-
'`rxResource(...)` doit être remplacé par `query(...)` ou `mutation(...)` selon l’intention; dans un validateur async, préférer `query(...) + cAsyncValidate(...)`. Dans un craftService,
|
|
493
|
+
'`rxResource(...)` doit être remplacé par `query(...)` ou `mutation(...)` selon l’intention; dans un validateur async, préférer `query(...) + cAsyncValidate(...)`. Dans un craftService, consommer toute primitive avec `yield*` ; dans un champ de composant, `craftUse(...)`.',
|
|
436
494
|
);
|
|
437
495
|
}
|
|
438
496
|
}
|