@craft-ng/dev-tools 0.5.0-beta.5 → 0.6.0-beta.1

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 (94) hide show
  1. package/README.md +198 -23
  2. package/generators.json +26 -0
  3. package/package.json +23 -2
  4. package/src/bin/craft-migrate-primitives.d.ts +2 -0
  5. package/src/bin/craft-migrate-primitives.js +71 -0
  6. package/src/bin/craft-migrate-primitives.js.map +1 -0
  7. package/src/bin/craft-migrate-routes.d.ts +2 -0
  8. package/src/bin/craft-migrate-routes.js +77 -0
  9. package/src/bin/craft-migrate-routes.js.map +1 -0
  10. package/src/bin/craft-migrate-services.d.ts +2 -0
  11. package/src/bin/craft-migrate-services.js +75 -0
  12. package/src/bin/craft-migrate-services.js.map +1 -0
  13. package/src/bin/craft-migrate.d.ts +2 -0
  14. package/src/bin/craft-migrate.js +90 -0
  15. package/src/bin/craft-migrate.js.map +1 -0
  16. package/src/bin/craft.d.ts +2 -0
  17. package/src/bin/craft.js +166 -0
  18. package/src/bin/craft.js.map +1 -0
  19. package/src/eslint-rules/craft-computed-name-match.cjs +8 -125
  20. package/src/eslint-rules/craft-method-name-match.cjs +8 -166
  21. package/src/eslint-rules/craft-name-match-utils.cjs +179 -0
  22. package/src/eslint-rules/craft-signal-source-name-match.cjs +8 -0
  23. package/src/eslint-rules/craft-source-name-match.cjs +8 -0
  24. package/src/eslint-rules/global-exception-registry-match.cjs +78 -13
  25. package/src/eslint-rules/index.cjs +10 -2
  26. package/src/eslint-rules/require-cascade-route-di-check.cjs +223 -0
  27. package/src/eslint-rules/require-exception-component-di-check.cjs +66 -10
  28. package/src/eslint-rules/require-lazy-load-with-retry.cjs +148 -0
  29. package/src/eslint-rules/require-primitive-generator-unwrap.cjs +267 -0
  30. package/src/generators/route/compat.d.ts +3 -0
  31. package/src/generators/route/compat.js +6 -0
  32. package/src/generators/route/compat.js.map +1 -0
  33. package/src/generators/route/generator.d.ts +31 -0
  34. package/src/generators/route/generator.js +434 -0
  35. package/src/generators/route/generator.js.map +1 -0
  36. package/src/generators/route/schema.json +50 -0
  37. package/src/generators/route/split-schema.json +19 -0
  38. package/src/index.d.ts +9 -0
  39. package/src/index.js +9 -0
  40. package/src/index.js.map +1 -1
  41. package/src/scripts/angular-brand-codemod.d.ts +17 -0
  42. package/src/scripts/angular-brand-codemod.js +44 -8
  43. package/src/scripts/angular-brand-codemod.js.map +1 -1
  44. package/src/scripts/angular-brand-codemod.spec.ts +3 -3
  45. package/src/scripts/angular-brand-codemod.ts +78 -7
  46. package/src/scripts/migrate.d.ts +32 -0
  47. package/src/scripts/migrate.js +67 -0
  48. package/src/scripts/migrate.js.map +1 -0
  49. package/src/scripts/migrate.ts +128 -0
  50. package/src/scripts/migration-workspace.d.ts +2 -0
  51. package/src/scripts/migration-workspace.js +72 -0
  52. package/src/scripts/migration-workspace.js.map +1 -0
  53. package/src/scripts/migration-workspace.ts +93 -0
  54. package/src/scripts/primitives/migrate-primitive-generators.d.ts +27 -0
  55. package/src/scripts/primitives/migrate-primitive-generators.js +315 -0
  56. package/src/scripts/primitives/migrate-primitive-generators.js.map +1 -0
  57. package/src/scripts/primitives/migrate-primitive-generators.ts +402 -0
  58. package/src/scripts/primitives/migrate-primitives.d.ts +27 -0
  59. package/src/scripts/primitives/migrate-primitives.js +386 -0
  60. package/src/scripts/primitives/migrate-primitives.js.map +1 -0
  61. package/src/scripts/primitives/migrate-primitives.spec.ts +322 -0
  62. package/src/scripts/primitives/migrate-primitives.ts +601 -0
  63. package/src/scripts/primitives/migration-diagnostic.d.ts +8 -0
  64. package/src/scripts/primitives/migration-diagnostic.js +2 -0
  65. package/src/scripts/primitives/migration-diagnostic.js.map +1 -0
  66. package/src/scripts/primitives/migration-diagnostic.ts +14 -0
  67. package/src/scripts/routes/migrate-routes.d.ts +34 -0
  68. package/src/scripts/routes/migrate-routes.js +669 -0
  69. package/src/scripts/routes/migrate-routes.js.map +1 -0
  70. package/src/scripts/routes/migrate-routes.spec.ts +264 -0
  71. package/src/scripts/routes/migrate-routes.ts +895 -0
  72. package/src/scripts/routes/migration-diagnostic.d.ts +16 -0
  73. package/src/scripts/routes/migration-diagnostic.js +2 -0
  74. package/src/scripts/routes/migration-diagnostic.js.map +1 -0
  75. package/src/scripts/routes/migration-diagnostic.ts +25 -0
  76. package/src/scripts/routes/route-command.d.ts +75 -0
  77. package/src/scripts/routes/route-command.js +1187 -0
  78. package/src/scripts/routes/route-command.js.map +1 -0
  79. package/src/scripts/routes/route-command.spec.ts +553 -0
  80. package/src/scripts/routes/route-command.ts +1790 -0
  81. package/src/scripts/services/config.d.ts +2 -0
  82. package/src/scripts/services/config.js +39 -0
  83. package/src/scripts/services/config.js.map +1 -0
  84. package/src/scripts/services/config.ts +60 -0
  85. package/src/scripts/services/migrate-services.d.ts +29 -0
  86. package/src/scripts/services/migrate-services.js +929 -0
  87. package/src/scripts/services/migrate-services.js.map +1 -0
  88. package/src/scripts/services/migrate-services.spec.ts +761 -0
  89. package/src/scripts/services/migrate-services.ts +1333 -0
  90. package/src/scripts/services/migration-diagnostic.d.ts +8 -0
  91. package/src/scripts/services/migration-diagnostic.js +2 -0
  92. package/src/scripts/services/migration-diagnostic.js.map +1 -0
  93. package/src/scripts/services/migration-diagnostic.ts +28 -0
  94. package/src/eslint-rules/require-track-on-dependent-primitives.cjs +0 -219
@@ -0,0 +1,2 @@
1
+ import { CraftDevToolsConfig } from '../angular-brand-codemod.js';
2
+ export declare function loadCraftDevToolsConfig(searchFromDir: string, explicitPath?: string): CraftDevToolsConfig;
@@ -0,0 +1,39 @@
1
+ import { existsSync, readFileSync, statSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import { dirname, resolve } from 'node:path';
4
+ import ts from 'typescript';
5
+ import { defineAngularBrandConfig, defineCraftDevToolsConfig, discoverAngularBrandConfigFilePath, } from '../angular-brand-codemod.js';
6
+ export function loadCraftDevToolsConfig(searchFromDir, explicitPath) {
7
+ var _a;
8
+ const filePath = explicitPath
9
+ ? resolve(explicitPath)
10
+ : discoverAngularBrandConfigFilePath(searchFromDir);
11
+ if (!filePath)
12
+ return {};
13
+ if (!existsSync(filePath) || !statSync(filePath).isFile()) {
14
+ throw new Error(`Craft dev-tools config file not found at "${filePath}".`);
15
+ }
16
+ const sourceText = readFileSync(filePath, 'utf8');
17
+ const output = ts.transpileModule(sourceText, {
18
+ compilerOptions: {
19
+ module: ts.ModuleKind.CommonJS,
20
+ target: ts.ScriptTarget.ES2022,
21
+ esModuleInterop: true,
22
+ },
23
+ fileName: filePath,
24
+ }).outputText;
25
+ const module = { exports: {} };
26
+ const localRequire = createRequire(filePath);
27
+ const execute = new Function('exports', 'require', 'module', '__filename', '__dirname', output);
28
+ execute(module.exports, (specifier) => specifier === '@craft-ng/dev-tools'
29
+ ? { defineAngularBrandConfig, defineCraftDevToolsConfig }
30
+ : localRequire(specifier), module, filePath, dirname(filePath));
31
+ const exported = (_a = module.exports['default']) !== null && _a !== void 0 ? _a : module.exports;
32
+ if (!exported || typeof exported !== 'object') {
33
+ throw new Error(`Invalid Craft dev-tools config at "${filePath}".`);
34
+ }
35
+ return 'brand' in exported || 'serviceMigration' in exported
36
+ ? exported
37
+ : { brand: exported };
38
+ }
39
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../../libs/dev-tools/src/scripts/services/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAEL,wBAAwB,EACxB,yBAAyB,EACzB,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,MAAM,UAAU,uBAAuB,CACrC,aAAqB,EACrB,YAAqB;;IAErB,MAAM,QAAQ,GAAG,YAAY;QAC3B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACvB,CAAC,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;QAC5C,eAAe,EAAE;YACf,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;YAC9B,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,eAAe,EAAE,IAAI;SACtB;QACD,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC,UAAU,CAAC;IACd,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAA6B,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,QAAQ,CAC1B,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,CACyB,CAAC;IAClC,OAAO,CACL,MAAM,CAAC,OAAO,EACd,CAAC,SAAiB,EAAE,EAAE,CACpB,SAAS,KAAK,qBAAqB;QACjC,CAAC,CAAC,EAAE,wBAAwB,EAAE,yBAAyB,EAAE;QACzD,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,OAAO,CAAC,QAAQ,CAAC,CAClB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mCAAI,MAAM,CAAC,OAAO,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,IAAI,QAAQ,IAAI,kBAAkB,IAAI,QAAQ;QAC1D,CAAC,CAAE,QAAgC;QACnC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { existsSync, readFileSync, statSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import { dirname, resolve } from 'node:path';
4
+ import ts from 'typescript';
5
+ import {
6
+ CraftDevToolsConfig,
7
+ defineAngularBrandConfig,
8
+ defineCraftDevToolsConfig,
9
+ discoverAngularBrandConfigFilePath,
10
+ } from '../angular-brand-codemod.js';
11
+
12
+ export function loadCraftDevToolsConfig(
13
+ searchFromDir: string,
14
+ explicitPath?: string,
15
+ ): CraftDevToolsConfig {
16
+ const filePath = explicitPath
17
+ ? resolve(explicitPath)
18
+ : discoverAngularBrandConfigFilePath(searchFromDir);
19
+ if (!filePath) return {};
20
+ if (!existsSync(filePath) || !statSync(filePath).isFile()) {
21
+ throw new Error(`Craft dev-tools config file not found at "${filePath}".`);
22
+ }
23
+
24
+ const sourceText = readFileSync(filePath, 'utf8');
25
+ const output = ts.transpileModule(sourceText, {
26
+ compilerOptions: {
27
+ module: ts.ModuleKind.CommonJS,
28
+ target: ts.ScriptTarget.ES2022,
29
+ esModuleInterop: true,
30
+ },
31
+ fileName: filePath,
32
+ }).outputText;
33
+ const module = { exports: {} as Record<string, unknown> };
34
+ const localRequire = createRequire(filePath);
35
+ const execute = new Function(
36
+ 'exports',
37
+ 'require',
38
+ 'module',
39
+ '__filename',
40
+ '__dirname',
41
+ output,
42
+ ) as (...args: unknown[]) => void;
43
+ execute(
44
+ module.exports,
45
+ (specifier: string) =>
46
+ specifier === '@craft-ng/dev-tools'
47
+ ? { defineAngularBrandConfig, defineCraftDevToolsConfig }
48
+ : localRequire(specifier),
49
+ module,
50
+ filePath,
51
+ dirname(filePath),
52
+ );
53
+ const exported = module.exports['default'] ?? module.exports;
54
+ if (!exported || typeof exported !== 'object') {
55
+ throw new Error(`Invalid Craft dev-tools config at "${filePath}".`);
56
+ }
57
+ return 'brand' in exported || 'serviceMigration' in exported
58
+ ? (exported as CraftDevToolsConfig)
59
+ : { brand: exported };
60
+ }
@@ -0,0 +1,29 @@
1
+ import type { ServiceMigrationDiagnostic } from './migration-diagnostic.js';
2
+ export type MigrateServicesOptions = {
3
+ rootDir?: string;
4
+ tsConfigFilePath?: string;
5
+ configFilePath?: string;
6
+ files?: readonly string[];
7
+ write?: boolean;
8
+ check?: boolean;
9
+ json?: boolean;
10
+ jsonFilePath?: string;
11
+ failOnManual?: boolean;
12
+ eslint?: boolean;
13
+ log?: (message: string) => void;
14
+ };
15
+ export type MigratedServiceFile = {
16
+ filePath: string;
17
+ changed: boolean;
18
+ symbols: string[];
19
+ companions: string[];
20
+ };
21
+ export type MigrateServicesResult = {
22
+ changedFiles: string[];
23
+ files: MigratedServiceFile[];
24
+ diagnostics: ServiceMigrationDiagnostic[];
25
+ remainingLegacyServices: number;
26
+ eslintRan: boolean;
27
+ exitCode: number;
28
+ };
29
+ export declare function runServicesMigration(options?: MigrateServicesOptions): Promise<MigrateServicesResult>;