@craft-ts/dev-tools 0.7.0-beta.13 → 0.7.0-beta.15

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 (89) hide show
  1. package/README.md +64 -10
  2. package/package.json +8 -2
  3. package/src/bin/agent-selector.d.ts +22 -0
  4. package/src/bin/agent-selector.js +100 -0
  5. package/src/bin/agent-selector.js.map +1 -0
  6. package/src/bin/craft-graph.js +74 -8
  7. package/src/bin/craft-graph.js.map +1 -1
  8. package/src/bin/craft.d.ts +23 -0
  9. package/src/bin/craft.js +245 -28
  10. package/src/bin/craft.js.map +1 -1
  11. package/src/eslint-rules/anchor-has-href.cjs +37 -3
  12. package/src/eslint-rules/craft-computed-name-match.cjs +26 -5
  13. package/src/eslint-rules/craft-name-match-utils.cjs +18 -9
  14. package/src/eslint-rules/hyperscript-walk.cjs +3 -3
  15. package/src/eslint-rules/index.cjs +46 -1
  16. package/src/eslint-rules/no-auth-token-in-local-storage.cjs +17 -0
  17. package/src/eslint-rules/no-craft-computed-side-effects.cjs +12 -5
  18. package/src/eslint-rules/no-craft-service-component-same-file.cjs +138 -0
  19. package/src/eslint-rules/no-effect-import-in-frontend.cjs +52 -0
  20. package/src/eslint-rules/no-effect-in-params.cjs +31 -1
  21. package/src/eslint-rules/no-explicit-effect-type.cjs +137 -0
  22. package/src/eslint-rules/no-free-has.cjs +47 -0
  23. package/src/eslint-rules/no-heading-level-skip.cjs +6 -6
  24. package/src/eslint-rules/no-raw-class.cjs +76 -0
  25. package/src/eslint-rules/no-raw-css-value.cjs +163 -0
  26. package/src/eslint-rules/no-raw-user-url.cjs +114 -0
  27. package/src/eslint-rules/no-trust-forwarded-headers.cjs +43 -0
  28. package/src/eslint-rules/no-unsafe-html.cjs +93 -0
  29. package/src/eslint-rules/no-unsafe-transfer-state.cjs +54 -0
  30. package/src/eslint-rules/prefer-craft-template-blocks.cjs +8 -8
  31. package/src/eslint-rules/prefer-direct-yieldable-callback.cjs +57 -14
  32. package/src/eslint-rules/prefer-inline-effect-insertion.cjs +263 -0
  33. package/src/eslint-rules/prefer-inline-route-providers.cjs +138 -0
  34. package/src/eslint-rules/recommended-config.cjs +6 -0
  35. package/src/eslint-rules/require-reactive-template-bindings.cjs +8 -8
  36. package/src/eslint-rules/require-route-security-policy.cjs +87 -0
  37. package/src/eslint-rules/require-server-function-timeout.cjs +39 -0
  38. package/src/eslint-rules/security-config.cjs +14 -0
  39. package/src/eslint-rules/security-rule-utils.cjs +21 -0
  40. package/src/eslint-rules/style-file-boundary.cjs +75 -0
  41. package/src/eslint-rules/sync-effect-body.cjs +343 -0
  42. package/src/index.d.ts +4 -0
  43. package/src/index.js +4 -0
  44. package/src/index.js.map +1 -1
  45. package/src/scripts/architecture-graph.js +8 -2
  46. package/src/scripts/architecture-graph.js.map +1 -1
  47. package/src/scripts/create/create-project.d.ts +71 -1
  48. package/src/scripts/create/create-project.js +1937 -176
  49. package/src/scripts/create/create-project.js.map +1 -1
  50. package/src/scripts/data-flow-graph.d.ts +1 -1
  51. package/src/scripts/effect-dependency-graph.d.ts +1 -1
  52. package/src/scripts/security-check.d.ts +30 -0
  53. package/src/scripts/security-check.js +223 -0
  54. package/src/scripts/security-check.js.map +1 -0
  55. package/src/scripts/style-architecture.d.ts +56 -0
  56. package/src/scripts/style-architecture.js +142 -0
  57. package/src/scripts/style-architecture.js.map +1 -0
  58. package/src/scripts/style-graph.d.ts +99 -0
  59. package/src/scripts/style-graph.js +179 -0
  60. package/src/scripts/style-graph.js.map +1 -0
  61. package/src/scripts/style-report.d.ts +55 -0
  62. package/src/scripts/style-report.js +67 -0
  63. package/src/scripts/style-report.js.map +1 -0
  64. package/src/scripts/template/migrate-template.js +1 -1
  65. package/src/scripts/template/migrate-template.js.map +1 -1
  66. package/src/scripts/angular-brand-codemod.ts +0 -3985
  67. package/src/scripts/architecture/migrate-architecture.ts +0 -653
  68. package/src/scripts/architecture-graph.ts +0 -3136
  69. package/src/scripts/components/migrate-components.ts +0 -227
  70. package/src/scripts/components/migration-diagnostic.ts +0 -8
  71. package/src/scripts/create/create-project.ts +0 -849
  72. package/src/scripts/data-flow-graph.ts +0 -240
  73. package/src/scripts/dependency-graph.ts +0 -5908
  74. package/src/scripts/effect-dependency-graph.ts +0 -630
  75. package/src/scripts/migrate.ts +0 -162
  76. package/src/scripts/migration-workspace.ts +0 -93
  77. package/src/scripts/primitives/migrate-named-primitives.ts +0 -627
  78. package/src/scripts/primitives/migrate-primitive-generators.ts +0 -410
  79. package/src/scripts/primitives/migrate-primitives.ts +0 -655
  80. package/src/scripts/primitives/migrate-yieldable-reactive-reads.ts +0 -499
  81. package/src/scripts/primitives/migration-diagnostic.ts +0 -15
  82. package/src/scripts/routes/migrate-routes.ts +0 -895
  83. package/src/scripts/routes/migration-diagnostic.ts +0 -25
  84. package/src/scripts/routes/route-command.ts +0 -1807
  85. package/src/scripts/routes/verify-routes.ts +0 -1511
  86. package/src/scripts/services/config.ts +0 -60
  87. package/src/scripts/services/migrate-services.ts +0 -1348
  88. package/src/scripts/services/migration-diagnostic.ts +0 -28
  89. package/src/scripts/template/migrate-template.ts +0 -418
package/src/bin/craft.js CHANGED
@@ -4,6 +4,9 @@ import { stdin as input, stdout as output } from 'node:process';
4
4
  import { listAngularProjects, runRouteAdd, runRouteSplit, } from '../scripts/routes/route-command.js';
5
5
  import { runRouteVerification, } from '../scripts/routes/verify-routes.js';
6
6
  import { createCraftProject, createModeFromFlag, parseCreateAgents, } from '../scripts/create/create-project.js';
7
+ import { selectOptionInteractively, selectOptionsInteractively, selectAgentsInteractively, } from './agent-selector.js';
8
+ import { runSecurityCheck } from '../scripts/security-check.js';
9
+ import { spawnSync } from 'node:child_process';
7
10
  async function main(argv) {
8
11
  if (argv[0] === 'create') {
9
12
  return await runCreate(argv.slice(1));
@@ -20,6 +23,29 @@ async function main(argv) {
20
23
  child.on('error', () => resolve(1));
21
24
  });
22
25
  }
26
+ if (argv[0] === 'security' && argv[1] === 'check') {
27
+ const rootIndex = argv.indexOf('--root');
28
+ const rootDir = rootIndex >= 0 ? argv[rootIndex + 1] : process.cwd();
29
+ const result = runSecurityCheck({ rootDir, strict: argv.includes('--strict') });
30
+ for (const diagnostic of result.diagnostics) {
31
+ const line = `${diagnostic.file}:${diagnostic.line} ${diagnostic.code}: ${diagnostic.message}`;
32
+ if (diagnostic.severity === 'error')
33
+ console.error(line);
34
+ else
35
+ console.warn(`warning ${line}`);
36
+ }
37
+ const errors = result.diagnostics.filter((diagnostic) => diagnostic.severity === 'error').length;
38
+ if (result.passed) {
39
+ console.log(`Craft security check passed${result.diagnostics.length > 0 ? ` (${result.diagnostics.length} warning(s))` : ''}.`);
40
+ }
41
+ else {
42
+ console.error(`Craft security check failed with ${errors} error(s).`);
43
+ }
44
+ return result.passed ? 0 : 1;
45
+ }
46
+ if (argv[0] === 'i18n' && ['check', 'test'].includes(argv[1] ?? '')) {
47
+ return runI18nCommand(argv[1]);
48
+ }
23
49
  if (argv[0] !== 'route' || !['add', 'split', 'verify'].includes(argv[1] ?? '')) {
24
50
  printHelp();
25
51
  return argv.includes('--help') ? 0 : 1;
@@ -159,35 +185,101 @@ function parseArgs(argv) {
159
185
  }
160
186
  return { values, flags, positionals, help };
161
187
  }
162
- function parseCreateArgs(argv) {
188
+ const CREATE_FRONTEND_OPTIONS = [
189
+ { value: 'plain', label: 'Plain CraftTS' },
190
+ { value: 'effect', label: 'Effect v4' },
191
+ ];
192
+ const CREATE_BACKEND_OPTIONS = [
193
+ { value: 'none', label: 'No backend' },
194
+ { value: 'promise', label: 'Promise server functions' },
195
+ { value: 'effect', label: 'Effect server functions' },
196
+ ];
197
+ const CREATE_I18N_OPTIONS = [
198
+ { value: 'strict', label: 'Strict type-safe i18n' },
199
+ { value: 'loose', label: 'Loose i18n validation' },
200
+ { value: 'none', label: 'No i18n' },
201
+ ];
202
+ const CREATE_DESIGN_SYSTEM_OPTIONS = [
203
+ { value: 'basic', label: 'Basic design system' },
204
+ { value: 'none', label: 'No design system' },
205
+ ];
206
+ const CREATE_BOOLEAN_OPTIONS = [
207
+ { value: 'yes', label: 'Yes' },
208
+ { value: 'no', label: 'No' },
209
+ ];
210
+ const CREATE_WORKSPACE_OPTIONS = [
211
+ { value: 'standalone', label: 'Standalone project' },
212
+ { value: 'nx', label: 'Nx workspace' },
213
+ ];
214
+ const CREATE_REFERENCE_MODE_OPTIONS = [
215
+ { value: 'context', label: 'Context only (portable npm packages)' },
216
+ { value: 'local', label: 'Local build artifacts' },
217
+ { value: 'source', label: 'Direct source mapping' },
218
+ ];
219
+ const CREATE_LOCALE_OPTIONS = [
220
+ { value: 'en-US', label: 'English (United States)' },
221
+ { value: 'fr-FR', label: 'Français (France)' },
222
+ { value: 'de-DE', label: 'Deutsch (Deutschland)' },
223
+ { value: 'es-ES', label: 'Español (España)' },
224
+ { value: 'it-IT', label: 'Italiano (Italia)' },
225
+ { value: 'pt-BR', label: 'Português (Brasil)' },
226
+ { value: 'ja-JP', label: '日本語 (日本)' },
227
+ { value: 'zh-CN', label: '中文 (中国)' },
228
+ ];
229
+ export function parseCreateArgs(argv) {
163
230
  const result = { flags: new Set(), help: false };
231
+ const values = new Map();
232
+ const valueNames = new Set([
233
+ 'effect', 'frontend-runtime', 'backend-runtime', 'effect-scope', 'agents',
234
+ 'locales', 'default-locale', 'i18n', 'design-system', 'workspace',
235
+ 'references', 'reference-mode', 'craft-ts-ref', 'effect-ts-ref',
236
+ ]);
237
+ const setValue = (name, value) => {
238
+ values.set(name, value);
239
+ };
164
240
  for (let index = 0; index < argv.length; index += 1) {
165
241
  const argument = argv[index];
166
242
  if (argument === '--help' || argument === '-h') {
167
243
  result.help = true;
168
244
  continue;
169
245
  }
170
- if (argument === '--no-effect') {
171
- result.effect = 'none';
246
+ if (argument === '--no-effect' || argument === '--no-i18n' || argument === '--no-design-system' || argument === '--no-typed-css' || argument === '--no-clone-craft-ts' || argument === '--no-clone-effect-ts') {
247
+ if (argument === '--no-effect')
248
+ setValue('effect', 'none');
249
+ else if (argument === '--no-i18n')
250
+ setValue('i18n', 'none');
251
+ else if (argument === '--no-design-system')
252
+ setValue('design-system', 'none');
253
+ else if (argument === '--no-typed-css')
254
+ result.typedCss = false;
255
+ else if (argument === '--no-clone-craft-ts')
256
+ result.cloneCraftTs = false;
257
+ else
258
+ result.cloneEffectTs = false;
172
259
  continue;
173
260
  }
174
- if (argument === '--effect' || argument === '--agents') {
261
+ if (valueNames.has(argument.slice(2))) {
175
262
  const value = argv[++index];
176
263
  if (!value || value.startsWith('--')) {
177
264
  throw new Error(`Missing value for ${argument}.`);
178
265
  }
179
- if (argument === '--effect')
180
- result.effect = value;
181
- else
182
- result.agents = value;
266
+ setValue(argument.slice(2), value);
183
267
  continue;
184
268
  }
185
- if (argument.startsWith('--effect=')) {
186
- result.effect = argument.slice('--effect='.length);
269
+ if (argument.startsWith('--') && argument.includes('=')) {
270
+ const [name, ...parts] = argument.slice(2).split('=');
271
+ if (!valueNames.has(name))
272
+ throw new Error(`Unknown option --${name}.`);
273
+ setValue(name, parts.join('='));
187
274
  continue;
188
275
  }
189
- if (argument.startsWith('--agents=')) {
190
- result.agents = argument.slice('--agents='.length);
276
+ if (argument === '--typed-css' || argument === '--clone-craft-ts' || argument === '--clone-effect-ts') {
277
+ if (argument === '--typed-css')
278
+ result.typedCss = true;
279
+ else if (argument === '--clone-craft-ts')
280
+ result.cloneCraftTs = true;
281
+ else
282
+ result.cloneEffectTs = true;
191
283
  continue;
192
284
  }
193
285
  if (argument === '--yes' || argument === '--force' || argument === '--json') {
@@ -201,8 +293,37 @@ function parseCreateArgs(argv) {
201
293
  throw new Error('create accepts one destination directory.');
202
294
  result.directory = argument;
203
295
  }
296
+ result.effect = values.get('effect');
297
+ result.frontendRuntime = values.get('frontend-runtime');
298
+ result.backendRuntime = values.get('backend-runtime');
299
+ result.effectScope = values.get('effect-scope');
300
+ result.agents = values.get('agents');
301
+ result.locales = values.get('locales');
302
+ result.defaultLocale = values.get('default-locale');
303
+ result.i18n = values.get('i18n');
304
+ result.designSystem = values.get('design-system');
305
+ result.workspace = values.get('workspace');
306
+ result.references = values.get('references');
307
+ result.referenceMode = values.get('reference-mode');
308
+ result.craftTsRef = values.get('craft-ts-ref');
309
+ result.effectTsRef = values.get('effect-ts-ref');
204
310
  return result;
205
311
  }
312
+ function parseLocales(value) {
313
+ const locales = value
314
+ .split(',')
315
+ .map((locale) => locale.trim())
316
+ .filter(Boolean);
317
+ return locales.length > 0 ? locales : ['en-US', 'fr-FR'];
318
+ }
319
+ async function selectCreateOption(readline, options, title, initialValue) {
320
+ readline.pause();
321
+ return selectOptionInteractively(options, title, initialValue, input, output);
322
+ }
323
+ async function selectCreateOptions(readline, options, title, initialSelection, minimumSelection = 0) {
324
+ readline.pause();
325
+ return selectOptionsInteractively(options, title, initialSelection, input, output, minimumSelection);
326
+ }
206
327
  async function runCreate(argv) {
207
328
  const parsed = parseCreateArgs(argv);
208
329
  if (parsed.help) {
@@ -211,33 +332,95 @@ async function runCreate(argv) {
211
332
  }
212
333
  const readline = createInterface({ input, output });
213
334
  try {
214
- // This is intentionally the first question in the interactive flow: the
215
- // Effect v4 choice changes both dependencies and the installed skills.
216
- const mode = createModeFromFlag(parsed.effect ??
217
- (parsed.flags.has('yes')
218
- ? 'none'
219
- : (await readline.question('Use EffectTS v4? [y/N] ')).trim().toLowerCase().startsWith('y')
220
- ? 'v4'
221
- : 'none'));
222
335
  const directory = parsed.directory ?? (await readline.question('Project directory: ')).trim();
223
336
  if (!directory)
224
337
  throw new Error('A destination directory is required.');
225
- const agentsValue = parsed.agents ??
226
- (parsed.flags.has('yes')
227
- ? undefined
228
- : await readline.question('Agent integrations [codex,cursor,claude-code,cloud-code] (empty = Codex): '));
229
- const agents = parseCreateAgents(agentsValue);
338
+ const interactive = Boolean(process.stdin.isTTY) && !parsed.flags.has('yes');
339
+ const legacyMode = parsed.effect === undefined
340
+ ? undefined
341
+ : createModeFromFlag(parsed.effect);
342
+ const frontendRuntime = parsed.frontendRuntime ?? legacyMode ?? (parsed.effectScope ? undefined : (interactive
343
+ ? await selectCreateOption(readline, CREATE_FRONTEND_OPTIONS, 'Frontend runtime (↑/↓ move, Enter confirm):', 'plain')
344
+ : 'plain'));
345
+ const backendRuntime = parsed.backendRuntime ?? (parsed.effectScope ? undefined : (interactive
346
+ ? await selectCreateOption(readline, CREATE_BACKEND_OPTIONS, 'Backend runtime (↑/↓ move, Enter confirm):', 'none')
347
+ : 'none'));
348
+ const i18n = parsed.i18n ?? (interactive
349
+ ? await selectCreateOption(readline, CREATE_I18N_OPTIONS, 'i18n (↑/↓ move, Enter confirm):', 'strict')
350
+ : 'strict');
351
+ const locales = parsed.locales !== undefined
352
+ ? parseLocales(parsed.locales)
353
+ : interactive && i18n !== 'none'
354
+ ? [...await selectCreateOptions(readline, CREATE_LOCALE_OPTIONS, 'Locales (↑/↓ move, Space toggle, Enter confirm):', ['en-US', 'fr-FR'], 1)]
355
+ : undefined;
356
+ const defaultLocale = parsed.defaultLocale ?? (interactive && i18n !== 'none'
357
+ ? await selectCreateOption(readline, (locales ?? ['en-US']).map((locale) => ({ value: locale, label: locale })), 'Default locale (↑/↓ move, Enter confirm):', locales?.[0] ?? 'en-US')
358
+ : undefined);
359
+ const designSystem = parsed.designSystem ?? (interactive
360
+ ? await selectCreateOption(readline, CREATE_DESIGN_SYSTEM_OPTIONS, 'Design system (↑/↓ move, Enter confirm):', 'basic')
361
+ : 'basic');
362
+ const typedCss = parsed.typedCss ?? (interactive
363
+ ? (await selectCreateOption(readline, CREATE_BOOLEAN_OPTIONS, 'Enable typed CSS? (↑/↓ move, Enter confirm):', 'yes')) === 'yes'
364
+ : true);
365
+ const workspace = parsed.workspace ?? (interactive
366
+ ? await selectCreateOption(readline, CREATE_WORKSPACE_OPTIONS, 'Workspace (↑/↓ move, Enter confirm):', 'standalone')
367
+ : undefined);
368
+ let references = parsed.references;
369
+ let referenceMode = parsed.referenceMode;
370
+ let cloneCraftTs = parsed.cloneCraftTs;
371
+ let cloneEffectTs = parsed.cloneEffectTs;
372
+ const effectEnabled = frontendRuntime === 'effect'
373
+ || backendRuntime === 'effect'
374
+ || (parsed.effectScope !== undefined && parsed.effectScope !== 'none');
375
+ if (interactive && references === undefined && cloneCraftTs === undefined && cloneEffectTs === undefined) {
376
+ cloneCraftTs = (await selectCreateOption(readline, CREATE_BOOLEAN_OPTIONS, 'Clone CraftTS sources for the AI? (↑/↓ move, Enter confirm):', 'yes')) === 'yes';
377
+ cloneEffectTs = effectEnabled
378
+ ? (await selectCreateOption(readline, CREATE_BOOLEAN_OPTIONS, 'Clone EffectTS sources for the AI? (↑/↓ move, Enter confirm):', 'yes')) === 'yes'
379
+ : false;
380
+ references = cloneEffectTs ? 'all' : cloneCraftTs ? 'craft-ts' : 'none';
381
+ }
382
+ if (interactive
383
+ && referenceMode === undefined
384
+ && ((references !== undefined && references !== 'none') || cloneCraftTs || cloneEffectTs)) {
385
+ referenceMode = await selectCreateOption(readline, CREATE_REFERENCE_MODE_OPTIONS, 'Reference mode (↑/↓ move, Enter confirm):', 'context');
386
+ }
387
+ let agents;
388
+ if (parsed.agents !== undefined) {
389
+ agents = parseCreateAgents(parsed.agents);
390
+ }
391
+ else if (interactive) {
392
+ agents = await selectAgentsInteractively(process.stdin, output);
393
+ }
394
+ else {
395
+ agents = parseCreateAgents(undefined);
396
+ }
230
397
  const result = await createCraftProject({
231
398
  directory,
232
- mode,
399
+ mode: legacyMode,
400
+ frontendRuntime,
401
+ backendRuntime,
402
+ effectScope: parsed.effectScope,
233
403
  agents,
404
+ locales,
405
+ defaultLocale,
406
+ i18n,
407
+ designSystem,
408
+ typedCss,
409
+ workspace,
410
+ references,
411
+ referenceMode,
412
+ craftTsRef: parsed.craftTsRef,
413
+ effectTsRef: parsed.effectTsRef,
414
+ cloneCraftTs,
415
+ cloneEffectTs,
234
416
  force: parsed.flags.has('force'),
235
417
  });
236
418
  if (parsed.flags.has('json')) {
237
419
  console.log(JSON.stringify(result, null, 2));
238
420
  }
239
421
  else {
240
- console.log(`Created ${result.mode === 'effect' ? 'Effect v4' : 'plain'} CraftTS app at ${result.directory}`);
422
+ console.log(`Created ${result.frontendRuntime === 'effect' ? 'Effect v4' : 'plain'} CraftTS app at ${result.directory}`);
423
+ console.log(`Runtime: frontend=${result.frontendRuntime}, backend=${result.backendRuntime}`);
241
424
  console.log(`Agents: ${result.agents.length > 0 ? result.agents.join(', ') : 'none'}`);
242
425
  console.log(`Next: cd ${result.directory} && npm install && npm run dev`);
243
426
  }
@@ -247,6 +430,21 @@ async function runCreate(argv) {
247
430
  readline.close();
248
431
  }
249
432
  }
433
+ function runI18nCommand(command) {
434
+ const executable = command === 'check' ? 'tsc' : 'vitest';
435
+ const args = command === 'check'
436
+ ? ['-p', 'tsconfig.app.json', '--noEmit', '--pretty', 'false']
437
+ : ['run', '--config', 'vitest.config.ts'];
438
+ const result = spawnSync(`node_modules/.bin/${executable}`, args, {
439
+ cwd: process.cwd(),
440
+ stdio: 'inherit',
441
+ });
442
+ if (result.error) {
443
+ console.error(`Unable to run i18n ${command}: ${result.error.message}`);
444
+ return 1;
445
+ }
446
+ return result.status ?? 1;
447
+ }
250
448
  function printResult(result, json) {
251
449
  if (json) {
252
450
  console.log(JSON.stringify(result, null, 2));
@@ -280,7 +478,9 @@ function printVerificationResult(result, json) {
280
478
  function printHelp() {
281
479
  console.log(`Usage:
282
480
  craft create [directory] [options]
481
+ craft i18n check|test
283
482
  craft graph [options]
483
+ craft security check [--strict] [--root <dir>]
284
484
  craft route add [path] [options]
285
485
  craft route split --parent <file#collection> --prefix <path> --target <file>
286
486
  craft route verify [options]
@@ -288,7 +488,24 @@ function printHelp() {
288
488
  Options:
289
489
  --effect <v4|none> Select the Effect v4 or plain CraftTS starter
290
490
  --no-effect Alias for --effect none
291
- --agents <list> codex,cursor,claude-code,cloud-code (or none)
491
+ --frontend-runtime <plain|effect>
492
+ --backend-runtime <none|promise|effect>
493
+ --effect-scope <none|frontend|backend|both>
494
+ --agents <list> codex,cursor,claude-code,gemini (cloud-code alias; or none)
495
+ --locales <list> Comma-separated locales (default: en-US,fr-FR)
496
+ --default-locale <locale> Initial locale (must be in --locales)
497
+ --i18n <strict|loose|none> Plural/catalogue validation mode
498
+ --no-i18n Disable i18n and its files/scripts
499
+ --design-system <basic|none>
500
+ --no-design-system
501
+ --typed-css / --no-typed-css
502
+ --workspace <standalone|nx>
503
+ --references <none|craft-ts|all>
504
+ --reference-mode <context|local|source>
505
+ --craft-ts-ref <git-ref> CraftTS reference tag/commit
506
+ --effect-ts-ref <git-ref> EffectTS reference tag/commit
507
+ --clone-craft-ts / --no-clone-craft-ts
508
+ --clone-effect-ts / --no-clone-effect-ts
292
509
  --force Merge into a non-empty destination directory
293
510
  --json Emit the creation result as JSON
294
511
  --root <dir> Workspace root (defaults to cwd)
@@ -1 +1 @@
1
- {"version":3,"file":"craft.js","sourceRoot":"","sources":["../../../../../libs/dev-tools/src/bin/craft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"craft.js","sourceRoot":"","sources":["../../../../../libs/dev-tools/src/bin/craft.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,39 @@
1
1
  'use strict';
2
2
 
3
- const { parseHyperscriptCall, hasProp, staticPropString } = require('./hyperscript-walk.cjs');
3
+ const {
4
+ parseHyperscriptCall,
5
+ hasProp,
6
+ staticPropString,
7
+ } = require('./hyperscript-walk.cjs');
8
+
9
+ function hasCraftRouterLinkPipe(node) {
10
+ const pipeMember = node.parent;
11
+ if (
12
+ !pipeMember ||
13
+ pipeMember.type !== 'MemberExpression' ||
14
+ pipeMember.computed ||
15
+ pipeMember.property.type !== 'Identifier' ||
16
+ pipeMember.property.name !== 'pipe'
17
+ ) {
18
+ return false;
19
+ }
20
+
21
+ const pipeCall = pipeMember.parent;
22
+ if (
23
+ !pipeCall ||
24
+ pipeCall.type !== 'CallExpression' ||
25
+ pipeCall.arguments.length !== 1
26
+ ) {
27
+ return false;
28
+ }
29
+
30
+ const directiveCall = pipeCall.arguments[0];
31
+ return (
32
+ directiveCall.type === 'CallExpression' &&
33
+ directiveCall.callee.type === 'Identifier' &&
34
+ directiveCall.callee.name === 'CraftRouterLink'
35
+ );
36
+ }
4
37
 
5
38
  module.exports = {
6
39
  meta: {
@@ -20,9 +53,10 @@ module.exports = {
20
53
  CallExpression(node) {
21
54
  const call = parseHyperscriptCall(node);
22
55
  if (!call || call.tag !== 'a') return;
23
- if (hasProp(call.props, 'href') || hasProp(call.props, 'craftRouterLink')) return;
56
+ if (hasProp(call.props, 'href') || hasCraftRouterLinkPipe(node)) return;
24
57
  const role = staticPropString(call.props, 'role');
25
- const hasClick = hasProp(call.props, 'click') || hasProp(call.props, 'onClick');
58
+ const hasClick =
59
+ hasProp(call.props, 'click') || hasProp(call.props, 'onClick');
26
60
  const hasKey =
27
61
  hasProp(call.props, 'keydown') ||
28
62
  hasProp(call.props, 'onKeydown') ||
@@ -3,7 +3,14 @@ const { createNameMatchRule } = require('./craft-name-match-utils.cjs');
3
3
  const namedRule = createNameMatchRule({
4
4
  calleeName: 'craftComputed',
5
5
  description:
6
- 'Require a matching craftComputed name outside insertion result objects; insertion keys provide the runtime name automatically.',
6
+ 'Require a matching craftComputed or computedEffect name outside insertion result objects; insertion keys provide the runtime name automatically.',
7
+ supportsObjectConfigForm: false,
8
+ });
9
+
10
+ const computedEffectNamedRule = createNameMatchRule({
11
+ calleeName: 'computedEffect',
12
+ description:
13
+ 'Require a matching computedEffect name outside insertion result objects; insertion keys provide the runtime name automatically.',
7
14
  supportsObjectConfigForm: false,
8
15
  });
9
16
 
@@ -11,11 +18,18 @@ module.exports = {
11
18
  ...namedRule,
12
19
  create(context) {
13
20
  const listeners = namedRule.create(context);
21
+ const computedEffectListeners = computedEffectNamedRule.create(context);
14
22
  return {
15
23
  ...listeners,
16
24
  CallExpression(node) {
17
25
  if (isInsertionResultProperty(node)) return;
18
- listeners.CallExpression?.(node);
26
+ if (node.callee.type !== 'Identifier') return;
27
+ if (node.callee.name === 'craftComputed') {
28
+ listeners.CallExpression?.(node);
29
+ }
30
+ if (node.callee.name === 'computedEffect') {
31
+ computedEffectListeners.CallExpression?.(node);
32
+ }
19
33
  },
20
34
  };
21
35
  },
@@ -51,9 +65,16 @@ function isInsertionResultProperty(node) {
51
65
  name &&
52
66
  (name.startsWith('insert') ||
53
67
  name === 'craftPipe' ||
54
- ['state', 'query', 'mutation', 'asyncProcess', 'queryParams'].includes(
55
- name,
56
- )),
68
+ [
69
+ 'state',
70
+ 'query',
71
+ 'mutation',
72
+ 'asyncProcess',
73
+ 'queryParams',
74
+ 'queryEffect',
75
+ 'mutationEffect',
76
+ 'asyncProcessEffect',
77
+ ].includes(name)),
57
78
  );
58
79
  }
59
80
  if (current.type === 'Program') break;
@@ -10,8 +10,10 @@ function createNameMatchRule({
10
10
  fixable: 'code',
11
11
  schema: [],
12
12
  messages: {
13
- missingName: `${calleeName} must be called with a string literal name matching '{{declaredName}}' as the first argument.`,
14
- mismatchedName: `${calleeName} first argument '{{actual}}' must match the declared name '{{declaredName}}'.`,
13
+ missingName:
14
+ "{{calleeName}} must be called with a string literal name matching '{{declaredName}}' as the first argument.",
15
+ mismatchedName:
16
+ "{{calleeName}} first argument '{{actual}}' must match the declared name '{{declaredName}}'.",
15
17
  },
16
18
  },
17
19
  create(context) {
@@ -37,7 +39,7 @@ function createNameMatchRule({
37
39
  context.report({
38
40
  node,
39
41
  messageId: 'missingName',
40
- data: { declaredName },
42
+ data: { calleeName, declaredName },
41
43
  fix(fixer) {
42
44
  const openParen = sourceCode.getTokenAfter(
43
45
  node.callee,
@@ -50,7 +52,10 @@ function createNameMatchRule({
50
52
  return;
51
53
  }
52
54
 
53
- if (supportsObjectConfigForm && firstArg.type === 'ObjectExpression') {
55
+ if (
56
+ supportsObjectConfigForm &&
57
+ firstArg.type === 'ObjectExpression'
58
+ ) {
54
59
  const nameProp = firstArg.properties.find(
55
60
  (p) =>
56
61
  p.type === 'Property' &&
@@ -62,7 +67,7 @@ function createNameMatchRule({
62
67
  context.report({
63
68
  node: firstArg,
64
69
  messageId: 'missingName',
65
- data: { declaredName },
70
+ data: { calleeName, declaredName },
66
71
  });
67
72
  return;
68
73
  }
@@ -75,7 +80,7 @@ function createNameMatchRule({
75
80
  context.report({
76
81
  node: nameValue,
77
82
  messageId: 'mismatchedName',
78
- data: { declaredName, actual },
83
+ data: { calleeName, declaredName, actual },
79
84
  fix(fixer) {
80
85
  return fixer.replaceText(nameValue, `'${declaredName}'`);
81
86
  },
@@ -84,7 +89,11 @@ function createNameMatchRule({
84
89
  context.report({
85
90
  node: nameValue,
86
91
  messageId: 'mismatchedName',
87
- data: { declaredName, actual: sourceCode.getText(nameValue) },
92
+ data: {
93
+ calleeName,
94
+ declaredName,
95
+ actual: sourceCode.getText(nameValue),
96
+ },
88
97
  });
89
98
  }
90
99
  return;
@@ -98,7 +107,7 @@ function createNameMatchRule({
98
107
  context.report({
99
108
  node: firstArg,
100
109
  messageId: 'mismatchedName',
101
- data: { declaredName, actual },
110
+ data: { calleeName, declaredName, actual },
102
111
  fix(fixer) {
103
112
  return fixer.replaceText(firstArg, `'${declaredName}'`);
104
113
  },
@@ -109,7 +118,7 @@ function createNameMatchRule({
109
118
  context.report({
110
119
  node: firstArg,
111
120
  messageId: 'missingName',
112
- data: { declaredName },
121
+ data: { calleeName, declaredName },
113
122
  fix(fixer) {
114
123
  return fixer.insertTextBefore(firstArg, `'${declaredName}', `);
115
124
  },
@@ -191,9 +191,9 @@ function hasDynamicAccessibleName(children) {
191
191
  if (children.type === 'CallExpression') {
192
192
  if (
193
193
  children.callee.type === 'Identifier' &&
194
- (children.callee.name === 'ifBlock' ||
195
- children.callee.name === 'matchBlock' ||
196
- children.callee.name === 'each')
194
+ (children.callee.name === 'ifNode' ||
195
+ children.callee.name === 'matchNode' ||
196
+ children.callee.name === 'forNode')
197
197
  ) {
198
198
  return true;
199
199
  }