@venizia/ignis-boot 0.2.0 → 0.2.1-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 (107) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/bun/auto-group.d.ts +22 -0
  3. package/dist/cjs/bun/auto-group.d.ts.map +1 -0
  4. package/dist/cjs/bun/auto-group.js +50 -0
  5. package/dist/cjs/bun/auto-group.js.map +1 -0
  6. package/dist/cjs/bun/auto-loader.d.ts +9 -0
  7. package/dist/cjs/bun/auto-loader.d.ts.map +1 -0
  8. package/dist/cjs/bun/auto-loader.js +26 -0
  9. package/dist/cjs/bun/auto-loader.js.map +1 -0
  10. package/dist/cjs/bun/auto.d.ts +5 -0
  11. package/dist/cjs/bun/auto.d.ts.map +1 -0
  12. package/dist/cjs/bun/auto.js +11 -0
  13. package/dist/cjs/bun/auto.js.map +1 -0
  14. package/dist/cjs/bun/group-resolver.d.ts +15 -0
  15. package/dist/cjs/bun/group-resolver.d.ts.map +1 -0
  16. package/dist/cjs/bun/group-resolver.js +38 -0
  17. package/dist/cjs/bun/group-resolver.js.map +1 -0
  18. package/dist/cjs/bun/index.d.ts +6 -0
  19. package/dist/cjs/bun/index.d.ts.map +1 -0
  20. package/dist/cjs/bun/index.js +22 -0
  21. package/dist/cjs/bun/index.js.map +1 -0
  22. package/dist/cjs/bun/plugin.d.ts +39 -0
  23. package/dist/cjs/bun/plugin.d.ts.map +1 -0
  24. package/dist/cjs/bun/plugin.js +224 -0
  25. package/dist/cjs/bun/plugin.js.map +1 -0
  26. package/dist/cjs/bun/sources.d.ts +17 -0
  27. package/dist/cjs/bun/sources.d.ts.map +1 -0
  28. package/dist/cjs/bun/sources.js +48 -0
  29. package/dist/cjs/bun/sources.js.map +1 -0
  30. package/dist/cjs/clis/artifacts.js +4 -2
  31. package/dist/cjs/clis/artifacts.js.map +1 -1
  32. package/dist/cjs/generator/common/constants.d.ts +9 -0
  33. package/dist/cjs/generator/common/constants.d.ts.map +1 -1
  34. package/dist/cjs/generator/common/constants.js +13 -2
  35. package/dist/cjs/generator/common/constants.js.map +1 -1
  36. package/dist/cjs/generator/common/types.d.ts +16 -1
  37. package/dist/cjs/generator/common/types.d.ts.map +1 -1
  38. package/dist/cjs/generator/emitter.d.ts +12 -0
  39. package/dist/cjs/generator/emitter.d.ts.map +1 -1
  40. package/dist/cjs/generator/emitter.js +19 -5
  41. package/dist/cjs/generator/emitter.js.map +1 -1
  42. package/dist/cjs/generator/index.d.ts +2 -0
  43. package/dist/cjs/generator/index.d.ts.map +1 -1
  44. package/dist/cjs/generator/index.js +12 -6
  45. package/dist/cjs/generator/index.js.map +1 -1
  46. package/dist/cjs/generator/reexport.d.ts +28 -0
  47. package/dist/cjs/generator/reexport.d.ts.map +1 -0
  48. package/dist/cjs/generator/reexport.js +131 -0
  49. package/dist/cjs/generator/reexport.js.map +1 -0
  50. package/dist/cjs/generator/scanner.d.ts +3 -1
  51. package/dist/cjs/generator/scanner.d.ts.map +1 -1
  52. package/dist/cjs/generator/scanner.js +62 -10
  53. package/dist/cjs/generator/scanner.js.map +1 -1
  54. package/dist/esm/bun/auto-group.d.ts +22 -0
  55. package/dist/esm/bun/auto-group.d.ts.map +1 -0
  56. package/dist/esm/bun/auto-group.js +46 -0
  57. package/dist/esm/bun/auto-group.js.map +1 -0
  58. package/dist/esm/bun/auto-loader.d.ts +9 -0
  59. package/dist/esm/bun/auto-loader.d.ts.map +1 -0
  60. package/dist/esm/bun/auto-loader.js +22 -0
  61. package/dist/esm/bun/auto-loader.js.map +1 -0
  62. package/dist/esm/bun/auto.d.ts +5 -0
  63. package/dist/esm/bun/auto.d.ts.map +1 -0
  64. package/dist/esm/bun/auto.js +9 -0
  65. package/dist/esm/bun/auto.js.map +1 -0
  66. package/dist/esm/bun/group-resolver.d.ts +15 -0
  67. package/dist/esm/bun/group-resolver.d.ts.map +1 -0
  68. package/dist/esm/bun/group-resolver.js +34 -0
  69. package/dist/esm/bun/group-resolver.js.map +1 -0
  70. package/dist/esm/bun/index.d.ts +6 -0
  71. package/dist/esm/bun/index.d.ts.map +1 -0
  72. package/dist/esm/bun/index.js +6 -0
  73. package/dist/esm/bun/index.js.map +1 -0
  74. package/dist/esm/bun/plugin.d.ts +39 -0
  75. package/dist/esm/bun/plugin.d.ts.map +1 -0
  76. package/dist/esm/bun/plugin.js +217 -0
  77. package/dist/esm/bun/plugin.js.map +1 -0
  78. package/dist/esm/bun/sources.d.ts +17 -0
  79. package/dist/esm/bun/sources.d.ts.map +1 -0
  80. package/dist/esm/bun/sources.js +44 -0
  81. package/dist/esm/bun/sources.js.map +1 -0
  82. package/dist/esm/clis/artifacts.js +5 -3
  83. package/dist/esm/clis/artifacts.js.map +1 -1
  84. package/dist/esm/generator/common/constants.d.ts +9 -0
  85. package/dist/esm/generator/common/constants.d.ts.map +1 -1
  86. package/dist/esm/generator/common/constants.js +11 -1
  87. package/dist/esm/generator/common/constants.js.map +1 -1
  88. package/dist/esm/generator/common/types.d.ts +16 -1
  89. package/dist/esm/generator/common/types.d.ts.map +1 -1
  90. package/dist/esm/generator/emitter.d.ts +12 -0
  91. package/dist/esm/generator/emitter.d.ts.map +1 -1
  92. package/dist/esm/generator/emitter.js +19 -5
  93. package/dist/esm/generator/emitter.js.map +1 -1
  94. package/dist/esm/generator/index.d.ts +2 -0
  95. package/dist/esm/generator/index.d.ts.map +1 -1
  96. package/dist/esm/generator/index.js +12 -6
  97. package/dist/esm/generator/index.js.map +1 -1
  98. package/dist/esm/generator/reexport.d.ts +28 -0
  99. package/dist/esm/generator/reexport.d.ts.map +1 -0
  100. package/dist/esm/generator/reexport.js +124 -0
  101. package/dist/esm/generator/reexport.js.map +1 -0
  102. package/dist/esm/generator/scanner.d.ts +3 -1
  103. package/dist/esm/generator/scanner.d.ts.map +1 -1
  104. package/dist/esm/generator/scanner.js +63 -11
  105. package/dist/esm/generator/scanner.js.map +1 -1
  106. package/dist/esm/package.json +3 -1
  107. package/package.json +23 -14
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArtifactSources = void 0;
4
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const generator_1 = require("../generator");
8
+ /** Where a package's artifacts live: the `src` beside its nearest `package.json`, and the classes under one of its directories. One scan per package per process. */
9
+ class ArtifactSources {
10
+ static { this.scans = new Map(); }
11
+ /** The `src` beside the nearest `package.json` at or above `from` (default: the working directory). */
12
+ static packageSource(opts = {}) {
13
+ const start = (0, node_path_1.resolve)(opts.from ?? process.cwd());
14
+ let directory = start;
15
+ while (!(0, node_fs_1.existsSync)((0, node_path_1.join)(directory, 'package.json'))) {
16
+ const parent = (0, node_path_1.dirname)(directory);
17
+ if (parent === directory) {
18
+ return (0, node_path_1.join)(start, 'src');
19
+ }
20
+ directory = parent;
21
+ }
22
+ return (0, node_path_1.join)(directory, 'src');
23
+ }
24
+ /** The decorated classes under a directory named `folder` in the package whose source holds `site`. A site outside that source (a `dist` copy) is refused: its classes would be a second identity of the ones the package runs. */
25
+ static folderArtifacts(opts) {
26
+ const packageSource = ArtifactSources.packageSource({ from: (0, node_path_1.dirname)(opts.site) });
27
+ if (!(0, node_path_1.resolve)(opts.site).startsWith(`${packageSource}${node_path_1.sep}`)) {
28
+ throw (0, ignis_helpers_1.getError)({
29
+ message: `[ArtifactGroup] '${opts.folder}' is defined at ${opts.site}, outside the package source ${packageSource} | A package consumed through dist must ship its groups filled by its own build (IgnisArtifactsPlugin), or be consumed from source`,
30
+ });
31
+ }
32
+ let artifacts = ArtifactSources.scans.get(packageSource);
33
+ if (!artifacts) {
34
+ artifacts = generator_1.ArtifactScanner.getInstance().scanWithReport({
35
+ root: packageSource,
36
+ followReexports: true,
37
+ }).artifacts;
38
+ ArtifactSources.scans.set(packageSource, artifacts);
39
+ }
40
+ return artifacts.filter(artifact => (0, node_path_1.relative)(packageSource, artifact.filePath).split(node_path_1.sep).slice(0, -1).includes(opts.folder));
41
+ }
42
+ /** Forgets every cached scan - for a long-lived process that rebuilds (a watch mode). */
43
+ static clear() {
44
+ ArtifactSources.scans.clear();
45
+ }
46
+ }
47
+ exports.ArtifactSources = ArtifactSources;
48
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/bun/sources.ts"],"names":[],"mappings":";;;AAAA,0DAAkD;AAClD,qCAAqC;AACrC,yCAAkE;AAClE,4CAAsE;AAEtE,qKAAqK;AACrK,MAAa,eAAe;aACF,UAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEtE,uGAAuG;IACvG,MAAM,CAAC,aAAa,CAAC,OAA0B,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,IAAA,gBAAI,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QACD,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,mOAAmO;IACnO,MAAM,CAAC,eAAe,CAAC,IAAsC;QAC3D,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,aAAa,GAAG,eAAG,EAAE,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,oBAAoB,IAAI,CAAC,MAAM,mBAAmB,IAAI,CAAC,IAAI,gCAAgC,aAAa,oIAAoI;aACtP,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,2BAAe,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;gBACvD,IAAI,EAAE,aAAa;gBACnB,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC,SAAS,CAAC;YACb,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACjC,IAAA,oBAAQ,EAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,eAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,MAAM,CAAC,KAAK;QACV,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;;AA3CH,0CA4CC"}
@@ -5,7 +5,7 @@ require("../common/install-quiet-logger");
5
5
  const node_path_1 = require("node:path");
6
6
  const node_util_1 = require("node:util");
7
7
  const generator_1 = require("../generator");
8
- const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts]';
8
+ const USAGE = 'ignis-artifacts <generate|check> [--root src] [--out src/generated/artifacts.ts] [--ignore a,b] [--export GeneratedArtifacts] [--source-module <specifier>]...';
9
9
  const { positionals, values } = (0, node_util_1.parseArgs)({
10
10
  args: process.argv.slice(2),
11
11
  allowPositionals: true,
@@ -14,6 +14,7 @@ const { positionals, values } = (0, node_util_1.parseArgs)({
14
14
  out: { type: 'string', default: 'src/generated/artifacts.ts' },
15
15
  ignore: { type: 'string' },
16
16
  export: { type: 'string', default: 'GeneratedArtifacts' },
17
+ 'source-module': { type: 'string', multiple: true },
17
18
  },
18
19
  });
19
20
  const options = {
@@ -24,6 +25,7 @@ const options = {
24
25
  .map(pattern => pattern.trim())
25
26
  .filter(Boolean),
26
27
  exportName: values.export,
28
+ sourceModules: values['source-module'],
27
29
  };
28
30
  /** One stderr line per decorated class a user `--ignore` pattern hid; silence when nothing is hidden. */
29
31
  const warnIgnored = (opts) => {
@@ -47,7 +49,7 @@ const run = () => {
47
49
  console.log(`fresh ${options.out}`);
48
50
  return 0;
49
51
  }
50
- console.error(`stale ${options.out} - run: ignis-artifacts generate --root ${options.root} --out ${options.out}`);
52
+ console.error(`stale ${options.out} - run: ${generator_1.ArtifactIndexEmitter.renderCommand(options)}`);
51
53
  return 1;
52
54
  }
53
55
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":";;;AACA,0CAAwC;AACxC,yCAAqC;AACrC,yCAAsC;AACtC,4CAAyE;AAGzE,MAAM,KAAK,GACT,+HAA+H,CAAC;AAElI,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC;IACxC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4BAA4B,EAAE;QAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;KAC1D;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACnB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM;CAC1B,CAAC;AAEF,yGAAyG;AACzG,MAAM,WAAW,GAAG,CAAC,IAAmD,EAAQ,EAAE;IAChF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CACX,YAAY,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,QAAQ,IAAA,oBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,gDAAgD,CAC/I,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,GAAG,GAAG,GAAW,EAAE;IACvB,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,cAAc,CACrG,CAAC;YACF,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,IAAA,8BAAkB,EAAC,OAAO,CAAC,CAAC;YAC3C,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,OAAO,CAAC,KAAK,CACX,SAAS,OAAO,CAAC,GAAG,2CAA2C,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,GAAG,EAAE,CACnG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/clis/artifacts.ts"],"names":[],"mappings":"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"}
@@ -43,4 +43,13 @@ export declare class ArtifactStereotypes {
43
43
  field: TArtifactIndexField;
44
44
  }>;
45
45
  }
46
+ /** Why a decorated class was left out of the index - reported, never silent. */
47
+ export declare class ScanSkipReasons {
48
+ static readonly ABSTRACT = "abstract";
49
+ static readonly NOT_EXPORTED = "not-exported";
50
+ static readonly IGNORED = "ignored";
51
+ static readonly SCHEME_SET: Set<string>;
52
+ static isValid(value: string): boolean;
53
+ }
54
+ export type TScanSkipReason = TConstValue<typeof ScanSkipReasons>;
46
55
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,iIAAiI;AACjI,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAQvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,4HAA4H;AAC5H,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAE5C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAOvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,qBAAa,mBAAmB;IAC9B,oGAAoG;IACpG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAQnE;IAEF,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAgB;IAE9C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAE9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,cAAc,SAAiC;IAE/D,MAAM,CAAC,QAAQ,CAAC,cAAc,WAK5B;IAEF;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAO5F;CACH"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,iIAAiI;AACjI,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAEhC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAQvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,4HAA4H;AAC5H,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,oBAAoB;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAE5C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAOvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAE1E,qBAAa,mBAAmB;IAC9B,oGAAoG;IACpG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAQnE;IAEF,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAgB;IAE9C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoE;IAE9F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAItC,MAAM,CAAC,QAAQ,CAAC,cAAc,SAA4C;IAE1E,MAAM,CAAC,QAAQ,CAAC,cAAc,WAK5B;IAEF;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAO5F;CACH;AAED,gFAAgF;AAChF,qBAAa,eAAe;IAC1B,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,YAAY,kBAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IAEpC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAqE;IAE/F,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ArtifactStereotypes = exports.ArtifactIndexFields = exports.ArtifactTypes = void 0;
3
+ exports.ScanSkipReasons = exports.ArtifactStereotypes = exports.ArtifactIndexFields = exports.ArtifactTypes = void 0;
4
4
  /** Mirrors the kernel's `ArtifactTypes` values; boot must not depend on kernel (`{boot, kernel} -> core` in the build chain). */
5
5
  class ArtifactTypes {
6
6
  static { this.CONFIGURATION = 'configuration'; }
@@ -61,7 +61,7 @@ class ArtifactStereotypes {
61
61
  static isValid(value) {
62
62
  return this.SCHEME_SET.has(value);
63
63
  }
64
- static { this.SOURCE_MODULES = /^@venizia\/ignis(-kernel)?$/; }
64
+ static { this.SOURCE_MODULES = /^@venizia\/ignis(?:-kernel)?(?:\/.+)?$/; }
65
65
  static { this.DEFAULT_IGNORE = [
66
66
  '**/__tests__/**',
67
67
  '**/*.test.ts',
@@ -84,4 +84,15 @@ class ArtifactStereotypes {
84
84
  ]; }
85
85
  }
86
86
  exports.ArtifactStereotypes = ArtifactStereotypes;
87
+ /** Why a decorated class was left out of the index - reported, never silent. */
88
+ class ScanSkipReasons {
89
+ static { this.ABSTRACT = 'abstract'; }
90
+ static { this.NOT_EXPORTED = 'not-exported'; }
91
+ static { this.IGNORED = 'ignored'; }
92
+ static { this.SCHEME_SET = new Set([this.ABSTRACT, this.NOT_EXPORTED, this.IGNORED]); }
93
+ static isValid(value) {
94
+ return this.SCHEME_SET.has(value);
95
+ }
96
+ }
97
+ exports.ScanSkipReasons = ScanSkipReasons;
87
98
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/generator/common/constants.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { TArtifactType } from './constants';
1
+ import type { AnyType, TClass } from '@venizia/ignis-helpers';
2
+ import type { TArtifactIndexField, TArtifactType, TScanSkipReason } from './constants';
2
3
  export interface IScannedArtifact {
3
4
  className: string;
4
5
  /** Absolute path of the declaring file. */
@@ -9,10 +10,24 @@ export interface IScanOptions {
9
10
  root: string;
10
11
  /** Glob patterns relative to `root`; defaults to `ArtifactStereotypes.DEFAULT_IGNORE`. */
11
12
  ignore?: string[];
13
+ /** Module specifiers, matched exactly, whose stereotype imports also count - a package that re-exports the decorators. Adds to `ArtifactStereotypes.SOURCE_MODULES`. */
14
+ sourceModules?: string[];
15
+ /** Recognise a stereotype imported from any module whose exports lead, through `export *` and renaming re-exports, to a source module - a framework that re-exports the kernel's decorators. */
16
+ followReexports?: boolean;
17
+ }
18
+ /** A decorated class the index leaves out, and why. */
19
+ export interface IScanSkipped {
20
+ className: string;
21
+ filePath: string;
22
+ reason: TScanSkipReason;
12
23
  }
13
24
  /** The index content plus what a caller's `ignore` silently left out: decorated classes under a user pattern, never under a default one. */
14
25
  export interface IScanReport {
15
26
  artifacts: IScannedArtifact[];
16
27
  ignored: IScannedArtifact[];
28
+ /** Every decorated class left out - abstract, not a named export, or under a user ignore pattern. */
29
+ skipped: IScanSkipped[];
17
30
  }
31
+ /** The object a generated index exports - structurally the kernel's `IArtifactIndex` (boot does not depend on the kernel). */
32
+ export type TGeneratedArtifactIndex = Partial<Record<TArtifactIndexField, ReadonlyArray<TClass<AnyType>>>>;
18
33
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,4IAA4I;AAC5I,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/generator/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wKAAwK;IACxK,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gMAAgM;IAChM,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,4IAA4I;AAC5I,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qGAAqG;IACrG,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,8HAA8H;AAC9H,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAC5D,CAAC"}
@@ -4,22 +4,34 @@ export declare class ArtifactIndexEmitter {
4
4
  /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
5
5
  static readonly PRINT_WIDTH = 100;
6
6
  static readonly DEFAULT_EXPORT_NAME = "GeneratedArtifacts";
7
+ /** The `ignis-artifacts generate` command for these options - the header and the CLI's stale hint print the same one. */
8
+ static renderCommand(opts: {
9
+ root: string;
10
+ out: string;
11
+ ignore?: string[];
12
+ exportName?: string;
13
+ sourceModules?: string[];
14
+ }): string;
7
15
  /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
8
16
  static renderHeader(opts: {
9
17
  root: string;
10
18
  out: string;
11
19
  ignore?: string[];
12
20
  exportName?: string;
21
+ sourceModules?: string[];
13
22
  }): string;
14
23
  static render(opts: {
15
24
  artifacts: IScannedArtifact[];
16
25
  outFile: string;
17
26
  exportName: string;
27
+ /** Absolute import paths - for a virtual module, which has no directory to resolve a relative one from. */
28
+ absoluteImports?: boolean;
18
29
  /** The CLI arguments as given, for the header; `outFile` above is the resolved path used for import specifiers. */
19
30
  command: {
20
31
  root: string;
21
32
  out: string;
22
33
  ignore?: string[];
34
+ sourceModules?: string[];
23
35
  };
24
36
  }): string;
25
37
  /** One line while it fits the repo's prettier width, else one name per line - so `prettier -l` on the generated file stays quiet. */
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF,iKAAiK;AACjK,qBAAa,oBAAoB;IAC/B,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,WAAW,OAAO;IAElC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,wBAAwB;IAE3D,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,MAAM;IAYV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,mHAAmH;QACnH,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAC3D,GAAG,MAAM;IAgCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAI1B"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF,iKAAiK;AACjK,qBAAa,oBAAoB;IAC/B,sEAAsE;IACtE,MAAM,CAAC,QAAQ,CAAC,WAAW,OAAO;IAElC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,wBAAwB;IAE3D,yHAAyH;IACzH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,MAAM;IAeV,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,GAAG,MAAM;IAIV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,2GAA2G;QAC3G,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,mHAAmH;QACnH,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACrF,GAAG,MAAM;IAoCV,qIAAqI;IACrI,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,UAAU;CAO1B"}
@@ -8,9 +8,9 @@ class ArtifactIndexEmitter {
8
8
  /** Mirrors `printWidth` in @venizia/dev-configs prettier settings. */
9
9
  static { this.PRINT_WIDTH = 100; }
10
10
  static { this.DEFAULT_EXPORT_NAME = 'GeneratedArtifacts'; }
11
- /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
12
- static renderHeader(opts) {
13
- const { root, out, ignore = [], exportName } = opts;
11
+ /** The `ignis-artifacts generate` command for these options - the header and the CLI's stale hint print the same one. */
12
+ static renderCommand(opts) {
13
+ const { root, out, ignore = [], exportName, sourceModules = [] } = opts;
14
14
  const flags = [`--root ${root}`, `--out ${out}`];
15
15
  if (ignore.length > 0) {
16
16
  flags.push(`--ignore ${ignore.join(',')}`);
@@ -18,7 +18,14 @@ class ArtifactIndexEmitter {
18
18
  if (exportName && exportName !== ArtifactIndexEmitter.DEFAULT_EXPORT_NAME) {
19
19
  flags.push(`--export ${exportName}`);
20
20
  }
21
- return `// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ignis-artifacts generate ${flags.join(' ')}`;
21
+ for (const sourceModule of sourceModules) {
22
+ flags.push(`--source-module ${sourceModule}`);
23
+ }
24
+ return `ignis-artifacts generate ${flags.join(' ')}`;
25
+ }
26
+ /** The exact command that regenerates the file, so the header never points at another path than the one the build used. */
27
+ static renderHeader(opts) {
28
+ return `// AUTO-GENERATED by @venizia/ignis-boot - do not edit. Regenerate: ${ArtifactIndexEmitter.renderCommand(opts)}`;
22
29
  }
23
30
  static render(opts) {
24
31
  const { artifacts, outFile, exportName, command } = opts;
@@ -26,7 +33,11 @@ class ArtifactIndexEmitter {
26
33
  const imports = emitted
27
34
  .map(artifact => ({
28
35
  name: artifact.className,
29
- path: ArtifactIndexEmitter.importPath({ from: outFile, to: artifact.filePath }),
36
+ path: ArtifactIndexEmitter.importPath({
37
+ from: outFile,
38
+ to: artifact.filePath,
39
+ isAbsolute: opts.absoluteImports ?? false,
40
+ }),
30
41
  }))
31
42
  .sort((a, b) => a.path.localeCompare(b.path) || a.name.localeCompare(b.name))
32
43
  .map(entry => `import { ${entry.name} } from '${entry.path}';`);
@@ -57,6 +68,9 @@ class ArtifactIndexEmitter {
57
68
  return [` ${field}: [`, ...names.map(name => ` ${name},`), ' ],'];
58
69
  }
59
70
  static importPath(opts) {
71
+ if (opts.isAbsolute) {
72
+ return opts.to.split(node_path_1.sep).join('/').replace(/\.ts$/, '');
73
+ }
60
74
  const raw = (0, node_path_1.relative)((0, node_path_1.dirname)(opts.from), opts.to).split(node_path_1.sep).join('/').replace(/\.ts$/, '');
61
75
  return raw.startsWith('.') ? raw : `./${raw}`;
62
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/generator/emitter.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AACnD,qCAAqF;AAErF,iKAAiK;AACjK,MAAa,oBAAoB;IAC/B,sEAAsE;aACtD,gBAAW,GAAG,GAAG,CAAC;aAElB,wBAAmB,GAAG,oBAAoB,CAAC;IAE3D,yHAAyH;IACzH,MAAM,CAAC,aAAa,CAAC,IAMpB;QACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,UAAU,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QACxE,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,UAAU,IAAI,UAAU,KAAK,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,4BAA4B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,2HAA2H;IAC3H,MAAM,CAAC,YAAY,CAAC,IAMnB;QACC,OAAO,uEAAuE,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3H,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAQb;QACC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAa,CAAC,KAAK,CAAC,CAAC;QAEpF,MAAM,OAAO,GAAG,OAAO;aACpB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,EAAE,QAAQ,CAAC,SAAS;YACxB,IAAI,EAAE,oBAAoB,CAAC,UAAU,CAAC;gBACpC,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ,CAAC,QAAQ;gBACrB,UAAU,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;aAC1C,CAAC;SACH,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5E,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,4BAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACxE,MAAM,KAAK,GAAG,OAAO;iBAClB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;iBAC1C,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;iBACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtC,OAAO,oBAAoB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,oBAAoB,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC;YAC7D,GAAG,OAAO;YACV,EAAE;YACF,gBAAgB,UAAU,MAAM;YAChC,GAAG,MAAM;YACT,IAAI;YACJ,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,qIAAqI;IAC7H,MAAM,CAAC,WAAW,CAAC,IAAwC;QACjE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAExD,IAAI,UAAU,CAAC,MAAM,IAAI,oBAAoB,CAAC,WAAW,EAAE,CAAC;YAC1D,OAAO,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,IAAuD;QAC/E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,eAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,oBAAQ,EAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,eAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5F,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;IAChD,CAAC;;AArGH,oDAsGC"}
@@ -5,6 +5,8 @@ export interface IGenerateOptions {
5
5
  ignore?: string[];
6
6
  /** Name of the exported constant; default `GeneratedArtifacts`. */
7
7
  exportName?: string;
8
+ /** Extra module specifiers whose stereotype imports count; see `IScanOptions.sourceModules`. */
9
+ sourceModules?: string[];
8
10
  }
9
11
  /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
10
12
  export declare const generateArtifactIndex: (opts: IGenerateOptions) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,WAa1C,CAAC;AAKF,4GAA4G;AAC5G,eAAO,MAAM,kBAAkB,GAC7B,MAAM,gBAAgB,KACrB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAQ7B,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAuBD,0GAA0G;AAC1G,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,KACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,WAa1C,CAAC;AAKF,4GAA4G;AAC5G,eAAO,MAAM,kBAAkB,GAC7B,MAAM,gBAAgB,KACrB;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAQ7B,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -20,29 +20,35 @@ const node_path_1 = require("node:path");
20
20
  const emitter_1 = require("./emitter");
21
21
  const scanner_1 = require("./scanner");
22
22
  const render = (opts) => {
23
- const { artifacts, ignored } = scanner_1.ArtifactScanner.getInstance().scanWithReport({
23
+ const { artifacts, ignored, skipped } = scanner_1.ArtifactScanner.getInstance().scanWithReport({
24
24
  root: opts.root,
25
25
  ignore: opts.ignore,
26
+ sourceModules: opts.sourceModules,
26
27
  });
27
28
  const content = emitter_1.ArtifactIndexEmitter.render({
28
29
  artifacts,
29
30
  outFile: (0, node_path_1.resolve)(opts.out),
30
31
  exportName: opts.exportName ?? emitter_1.ArtifactIndexEmitter.DEFAULT_EXPORT_NAME,
31
- command: { root: opts.root, out: opts.out, ignore: opts.ignore },
32
+ command: {
33
+ root: opts.root,
34
+ out: opts.out,
35
+ ignore: opts.ignore,
36
+ sourceModules: opts.sourceModules,
37
+ },
32
38
  });
33
- return { content, artifacts, ignored };
39
+ return { content, artifacts, ignored, skipped };
34
40
  };
35
41
  /** Writes the index only when its content changed, so an unchanged tree leaves the file's mtime alone. */
36
42
  const generateArtifactIndex = (opts) => {
37
- const { content, artifacts, ignored } = render(opts);
43
+ const { content, artifacts, ignored, skipped } = render(opts);
38
44
  const out = (0, node_path_1.resolve)(opts.out);
39
45
  const current = (0, node_fs_1.existsSync)(out) ? (0, node_fs_1.readFileSync)(out, 'utf8') : undefined;
40
46
  if (current === content) {
41
- return { content, artifacts, ignored, written: false };
47
+ return { content, artifacts, ignored, skipped, written: false };
42
48
  }
43
49
  (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(out), { recursive: true });
44
50
  (0, node_fs_1.writeFileSync)(out, content);
45
- return { content, artifacts, ignored, written: true };
51
+ return { content, artifacts, ignored, skipped, written: true };
46
52
  };
47
53
  exports.generateArtifactIndex = generateArtifactIndex;
48
54
  /** Everything below the first line: the header only records the command, so a flag change alone must not read as drift. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAA6E;AAC7E,yCAA6C;AAE7C,uCAAiD;AACjD,uCAA4C;AAU5C,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAqC,EAAE;IAC3E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,yBAAe,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC;QAC1E,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,8BAAoB,CAAC,MAAM,CAAC;QAC1C,SAAS;QACT,OAAO,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,8BAAoB,CAAC,mBAAmB;QACvE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;KACjE,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,0GAA0G;AACnG,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EAC+B,EAAE;IACvD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAExE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAA,uBAAa,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEF,2HAA2H;AAC3H,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErF,4GAA4G;AACrG,MAAM,kBAAkB,GAAG,CAChC,IAAsB,EAMtB,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEF,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers';
2
+ /** Follows a named import through `export *` and renaming re-exports until it reaches a source module, so a framework that re-exports the kernel's decorators is recognised. Reads declarations only; never builds a type-checked program. */
3
+ export declare class StereotypeReexportResolver extends BaseHelper {
4
+ static readonly MAX_DEPTH = 10;
5
+ private readonly options;
6
+ private readonly sourceModules;
7
+ /** One scan reads the same barrels many times: resolutions, parsed files and answers are memoized per resolver. */
8
+ private readonly resolutions;
9
+ private readonly sources;
10
+ private readonly origins;
11
+ constructor(opts: {
12
+ root: string;
13
+ sourceModules: Set<string>;
14
+ });
15
+ /** The nearest tsconfig's options (for `paths` aliases), with bundler resolution as the fallback. */
16
+ private static compilerOptionsFor;
17
+ /** The kernel name `name` (exported by `specifier`, as seen from `fromFile`) originates as, or `undefined` when the chain never reaches a source module. */
18
+ originOf(opts: {
19
+ fromFile: string;
20
+ specifier: string;
21
+ name: string;
22
+ }): string | undefined;
23
+ private resolveFile;
24
+ private parse;
25
+ private isSourceModule;
26
+ private follow;
27
+ }
28
+ //# sourceMappingURL=reexport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reexport.d.ts","sourceRoot":"","sources":["../../../src/generator/reexport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMpD,8OAA8O;AAC9O,qBAAa,0BAA2B,SAAQ,UAAU;IACxD,MAAM,CAAC,QAAQ,CAAC,SAAS,MAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAC5C,mHAAmH;IACnH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAErD,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE;IAM9D,qGAAqG;IACrG,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAmBjC,4JAA4J;IAC5J,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,SAAS;IAQzF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,MAAM;CA8Ef"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StereotypeReexportResolver = void 0;
7
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const typescript_1 = __importDefault(require("typescript"));
11
+ const common_1 = require("./common");
12
+ /** Follows a named import through `export *` and renaming re-exports until it reaches a source module, so a framework that re-exports the kernel's decorators is recognised. Reads declarations only; never builds a type-checked program. */
13
+ class StereotypeReexportResolver extends ignis_helpers_1.BaseHelper {
14
+ static { this.MAX_DEPTH = 10; }
15
+ constructor(opts) {
16
+ super({ scope: StereotypeReexportResolver.name });
17
+ /** One scan reads the same barrels many times: resolutions, parsed files and answers are memoized per resolver. */
18
+ this.resolutions = new Map();
19
+ this.sources = new Map();
20
+ this.origins = new Map();
21
+ this.sourceModules = opts.sourceModules;
22
+ this.options = StereotypeReexportResolver.compilerOptionsFor({ root: opts.root });
23
+ }
24
+ /** The nearest tsconfig's options (for `paths` aliases), with bundler resolution as the fallback. */
25
+ static compilerOptionsFor(opts) {
26
+ const configPath = typescript_1.default.findConfigFile(opts.root, typescript_1.default.sys.fileExists);
27
+ const fallback = {
28
+ module: typescript_1.default.ModuleKind.ESNext,
29
+ moduleResolution: typescript_1.default.ModuleResolutionKind.Bundler,
30
+ allowJs: true,
31
+ };
32
+ if (!configPath) {
33
+ return fallback;
34
+ }
35
+ const parsed = typescript_1.default.parseJsonConfigFileContent(typescript_1.default.readConfigFile(configPath, typescript_1.default.sys.readFile).config, typescript_1.default.sys, (0, node_path_1.dirname)(configPath));
36
+ return { ...fallback, ...parsed.options };
37
+ }
38
+ /** The kernel name `name` (exported by `specifier`, as seen from `fromFile`) originates as, or `undefined` when the chain never reaches a source module. */
39
+ originOf(opts) {
40
+ const key = `${(0, node_path_1.dirname)(opts.fromFile)}|${opts.specifier}|${opts.name}`;
41
+ if (!this.origins.has(key)) {
42
+ this.origins.set(key, this.follow({ ...opts, depth: 0, seen: new Set() }));
43
+ }
44
+ return this.origins.get(key);
45
+ }
46
+ resolveFile(opts) {
47
+ const key = `${(0, node_path_1.dirname)(opts.fromFile)}|${opts.specifier}`;
48
+ if (!this.resolutions.has(key)) {
49
+ this.resolutions.set(key, typescript_1.default.resolveModuleName(opts.specifier, opts.fromFile, this.options, typescript_1.default.sys).resolvedModule
50
+ ?.resolvedFileName);
51
+ }
52
+ return this.resolutions.get(key);
53
+ }
54
+ parse(opts) {
55
+ let source = this.sources.get(opts.file);
56
+ if (!source) {
57
+ source = typescript_1.default.createSourceFile(opts.file, (0, node_fs_1.readFileSync)(opts.file, 'utf8'), typescript_1.default.ScriptTarget.Latest, true);
58
+ this.sources.set(opts.file, source);
59
+ }
60
+ return source;
61
+ }
62
+ isSourceModule(opts) {
63
+ return (common_1.ArtifactStereotypes.SOURCE_MODULES.test(opts.specifier) ||
64
+ this.sourceModules.has(opts.specifier));
65
+ }
66
+ follow(opts) {
67
+ const { fromFile, specifier, name, depth, seen } = opts;
68
+ if (this.isSourceModule({ specifier })) {
69
+ return name;
70
+ }
71
+ if (depth >= StereotypeReexportResolver.MAX_DEPTH) {
72
+ return undefined;
73
+ }
74
+ const resolved = this.resolveFile({ fromFile, specifier });
75
+ const visit = `${resolved}#${name}`;
76
+ if (!resolved || seen.has(visit)) {
77
+ return undefined;
78
+ }
79
+ seen.add(visit);
80
+ const source = this.parse({ file: resolved });
81
+ const next = (target) => this.follow({ fromFile: resolved, ...target, depth: depth + 1, seen });
82
+ const importedBy = new Map();
83
+ for (const statement of source.statements) {
84
+ if (!typescript_1.default.isImportDeclaration(statement) || !typescript_1.default.isStringLiteral(statement.moduleSpecifier)) {
85
+ continue;
86
+ }
87
+ const bindings = statement.importClause?.namedBindings;
88
+ if (!bindings || !typescript_1.default.isNamedImports(bindings)) {
89
+ continue;
90
+ }
91
+ for (const element of bindings.elements) {
92
+ importedBy.set(element.name.text, {
93
+ specifier: statement.moduleSpecifier.text,
94
+ name: (element.propertyName ?? element.name).text,
95
+ });
96
+ }
97
+ }
98
+ for (const statement of source.statements) {
99
+ if (!typescript_1.default.isExportDeclaration(statement) || statement.isTypeOnly) {
100
+ continue;
101
+ }
102
+ const fromSpecifier = statement.moduleSpecifier && typescript_1.default.isStringLiteral(statement.moduleSpecifier)
103
+ ? statement.moduleSpecifier.text
104
+ : undefined;
105
+ if (!statement.exportClause) {
106
+ const origin = fromSpecifier ? next({ specifier: fromSpecifier, name }) : undefined;
107
+ if (origin) {
108
+ return origin;
109
+ }
110
+ continue;
111
+ }
112
+ if (!typescript_1.default.isNamedExports(statement.exportClause)) {
113
+ continue;
114
+ }
115
+ for (const element of statement.exportClause.elements) {
116
+ if (element.name.text !== name) {
117
+ continue;
118
+ }
119
+ const original = (element.propertyName ?? element.name).text;
120
+ if (fromSpecifier) {
121
+ return next({ specifier: fromSpecifier, name: original });
122
+ }
123
+ const imported = importedBy.get(original);
124
+ return imported ? next(imported) : undefined;
125
+ }
126
+ }
127
+ return undefined;
128
+ }
129
+ }
130
+ exports.StereotypeReexportResolver = StereotypeReexportResolver;
131
+ //# sourceMappingURL=reexport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reexport.js","sourceRoot":"","sources":["../../../src/generator/reexport.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,10 @@ export declare class ArtifactScanner extends BaseHelper {
14
14
  /** `kept` feeds the index; `hidden` is what only a user pattern excluded (a default pattern wins, so tests and generated files are never reported). */
15
15
  private partitionSourceFiles;
16
16
  private scanFile;
17
- /** local identifier -> stereotype name, for named imports from an IGNIS module (aliases resolved). */
17
+ /** local identifier -> stereotype name, for named imports from an IGNIS module or a caller-named source module (aliases resolved). */
18
18
  private collectStereotypeImports;
19
+ /** The identifiers called as decorators on the file's top-level classes (`@service()`, `@kit.service()` is not followed). */
20
+ private collectClassDecoratorNames;
19
21
  private collectExportClauseNames;
20
22
  private artifactTypesOf;
21
23
  private typeOfInjectableCall;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAElB,yGAAyG;AACzG,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAkB;IAE1C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAIrC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE;IAI5C,+JAA+J;IAC/J,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW;IAY/C,oIAAoI;IACpI,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAMrB,uJAAuJ;IACvJ,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,QAAQ;IAiEhB,sGAAsG;IACtG,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,cAAc;CAMvB"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/generator/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAEtB,MAAM,UAAU,CAAC;AAGlB,yGAAyG;AACzG,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAkB;IAE1C,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAIrC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,EAAE;IAI5C,+JAA+J;IAC/J,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW;IA4B/C,oIAAoI;IACpI,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,aAAa;IAMrB,uJAAuJ;IACvJ,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,QAAQ;IAgFhB,sIAAsI;IACtI,OAAO,CAAC,wBAAwB;IAkDhC,6HAA6H;IAC7H,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,cAAc;CAMvB"}