ioc-manifest 0.3.0

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 (148) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +350 -0
  3. package/bin/ioc.cjs +19 -0
  4. package/dist/cli/ioc.d.ts +3 -0
  5. package/dist/cli/ioc.d.ts.map +1 -0
  6. package/dist/cli/ioc.js +86 -0
  7. package/dist/cli/ioc.js.map +1 -0
  8. package/dist/cli/parseIocCli.d.ts +21 -0
  9. package/dist/cli/parseIocCli.d.ts.map +1 -0
  10. package/dist/cli/parseIocCli.js +76 -0
  11. package/dist/cli/parseIocCli.js.map +1 -0
  12. package/dist/config/iocConfig.d.ts +97 -0
  13. package/dist/config/iocConfig.d.ts.map +1 -0
  14. package/dist/config/iocConfig.js +65 -0
  15. package/dist/config/iocConfig.js.map +1 -0
  16. package/dist/config/loadIocConfig.d.ts +25 -0
  17. package/dist/config/loadIocConfig.d.ts.map +1 -0
  18. package/dist/config/loadIocConfig.js +245 -0
  19. package/dist/config/loadIocConfig.js.map +1 -0
  20. package/dist/config/parseDiscoveryScanDirs.d.ts +6 -0
  21. package/dist/config/parseDiscoveryScanDirs.d.ts.map +1 -0
  22. package/dist/config/parseDiscoveryScanDirs.js +78 -0
  23. package/dist/config/parseDiscoveryScanDirs.js.map +1 -0
  24. package/dist/core/defaultImplementationSelection.d.ts +14 -0
  25. package/dist/core/defaultImplementationSelection.d.ts.map +1 -0
  26. package/dist/core/defaultImplementationSelection.js +47 -0
  27. package/dist/core/defaultImplementationSelection.js.map +1 -0
  28. package/dist/core/index.d.ts +4 -0
  29. package/dist/core/index.d.ts.map +1 -0
  30. package/dist/core/index.js +3 -0
  31. package/dist/core/index.js.map +1 -0
  32. package/dist/core/manifest.d.ts +79 -0
  33. package/dist/core/manifest.d.ts.map +1 -0
  34. package/dist/core/manifest.js +3 -0
  35. package/dist/core/manifest.js.map +1 -0
  36. package/dist/core/resolver.d.ts +18 -0
  37. package/dist/core/resolver.d.ts.map +1 -0
  38. package/dist/core/resolver.js +27 -0
  39. package/dist/core/resolver.js.map +1 -0
  40. package/dist/generator/contractTypeSourceFile.d.ts +16 -0
  41. package/dist/generator/contractTypeSourceFile.d.ts.map +1 -0
  42. package/dist/generator/contractTypeSourceFile.js +236 -0
  43. package/dist/generator/contractTypeSourceFile.js.map +1 -0
  44. package/dist/generator/discoverFactories/discoverFactories.d.ts +18 -0
  45. package/dist/generator/discoverFactories/discoverFactories.d.ts.map +1 -0
  46. package/dist/generator/discoverFactories/discoverFactories.js +108 -0
  47. package/dist/generator/discoverFactories/discoverFactories.js.map +1 -0
  48. package/dist/generator/discoverFactories/discoveryOutcomeTypes.d.ts +47 -0
  49. package/dist/generator/discoverFactories/discoveryOutcomeTypes.d.ts.map +1 -0
  50. package/dist/generator/discoverFactories/discoveryOutcomeTypes.js +19 -0
  51. package/dist/generator/discoverFactories/discoveryOutcomeTypes.js.map +1 -0
  52. package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts +11 -0
  53. package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts.map +1 -0
  54. package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js +118 -0
  55. package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js.map +1 -0
  56. package/dist/generator/discoverFactories/scanFactoryFile.d.ts +18 -0
  57. package/dist/generator/discoverFactories/scanFactoryFile.d.ts.map +1 -0
  58. package/dist/generator/discoverFactories/scanFactoryFile.js +379 -0
  59. package/dist/generator/discoverFactories/scanFactoryFile.js.map +1 -0
  60. package/dist/generator/generateManifest.d.ts +13 -0
  61. package/dist/generator/generateManifest.d.ts.map +1 -0
  62. package/dist/generator/generateManifest.js +88 -0
  63. package/dist/generator/generateManifest.js.map +1 -0
  64. package/dist/generator/iocProgramContext.d.ts +11 -0
  65. package/dist/generator/iocProgramContext.d.ts.map +1 -0
  66. package/dist/generator/iocProgramContext.js +81 -0
  67. package/dist/generator/iocProgramContext.js.map +1 -0
  68. package/dist/generator/manifestOptions.d.ts +26 -0
  69. package/dist/generator/manifestOptions.d.ts.map +1 -0
  70. package/dist/generator/manifestOptions.js +86 -0
  71. package/dist/generator/manifestOptions.js.map +1 -0
  72. package/dist/generator/manifestPaths.d.ts +94 -0
  73. package/dist/generator/manifestPaths.d.ts.map +1 -0
  74. package/dist/generator/manifestPaths.js +377 -0
  75. package/dist/generator/manifestPaths.js.map +1 -0
  76. package/dist/generator/naming.d.ts +9 -0
  77. package/dist/generator/naming.d.ts.map +1 -0
  78. package/dist/generator/naming.js +46 -0
  79. package/dist/generator/naming.js.map +1 -0
  80. package/dist/generator/resolveRegistrationPlan.d.ts +66 -0
  81. package/dist/generator/resolveRegistrationPlan.d.ts.map +1 -0
  82. package/dist/generator/resolveRegistrationPlan.js +377 -0
  83. package/dist/generator/resolveRegistrationPlan.js.map +1 -0
  84. package/dist/generator/types.d.ts +37 -0
  85. package/dist/generator/types.d.ts.map +1 -0
  86. package/dist/generator/types.js +2 -0
  87. package/dist/generator/types.js.map +1 -0
  88. package/dist/generator/writeManifest.d.ts +19 -0
  89. package/dist/generator/writeManifest.d.ts.map +1 -0
  90. package/dist/generator/writeManifest.js +405 -0
  91. package/dist/generator/writeManifest.js.map +1 -0
  92. package/dist/groups/baseTypeAssignability.d.ts +48 -0
  93. package/dist/groups/baseTypeAssignability.d.ts.map +1 -0
  94. package/dist/groups/baseTypeAssignability.js +145 -0
  95. package/dist/groups/baseTypeAssignability.js.map +1 -0
  96. package/dist/groups/resolveGroupPlan.d.ts +85 -0
  97. package/dist/groups/resolveGroupPlan.d.ts.map +1 -0
  98. package/dist/groups/resolveGroupPlan.js +215 -0
  99. package/dist/groups/resolveGroupPlan.js.map +1 -0
  100. package/dist/index.d.ts +22 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +20 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/inspection/formatReports.d.ts +14 -0
  105. package/dist/inspection/formatReports.d.ts.map +1 -0
  106. package/dist/inspection/formatReports.js +115 -0
  107. package/dist/inspection/formatReports.js.map +1 -0
  108. package/dist/inspection/index.d.ts +8 -0
  109. package/dist/inspection/index.d.ts.map +1 -0
  110. package/dist/inspection/index.js +8 -0
  111. package/dist/inspection/index.js.map +1 -0
  112. package/dist/inspection/reports.d.ts +40 -0
  113. package/dist/inspection/reports.d.ts.map +1 -0
  114. package/dist/inspection/reports.js +95 -0
  115. package/dist/inspection/reports.js.map +1 -0
  116. package/dist/inspection/runDiscoveryAnalysis.d.ts +36 -0
  117. package/dist/inspection/runDiscoveryAnalysis.d.ts.map +1 -0
  118. package/dist/inspection/runDiscoveryAnalysis.js +48 -0
  119. package/dist/inspection/runDiscoveryAnalysis.js.map +1 -0
  120. package/dist/inspection/validateManifest.d.ts +8 -0
  121. package/dist/inspection/validateManifest.d.ts.map +1 -0
  122. package/dist/inspection/validateManifest.js +46 -0
  123. package/dist/inspection/validateManifest.js.map +1 -0
  124. package/dist/runtime/bootstrap.d.ts +13 -0
  125. package/dist/runtime/bootstrap.d.ts.map +1 -0
  126. package/dist/runtime/bootstrap.js +259 -0
  127. package/dist/runtime/bootstrap.js.map +1 -0
  128. package/dist/runtime/index.d.ts +4 -0
  129. package/dist/runtime/index.d.ts.map +1 -0
  130. package/dist/runtime/index.js +4 -0
  131. package/dist/runtime/index.js.map +1 -0
  132. package/dist/runtime/iocResolutionError.d.ts +54 -0
  133. package/dist/runtime/iocResolutionError.d.ts.map +1 -0
  134. package/dist/runtime/iocResolutionError.js +266 -0
  135. package/dist/runtime/iocResolutionError.js.map +1 -0
  136. package/dist/runtime/iocResolutionStack.d.ts +21 -0
  137. package/dist/runtime/iocResolutionStack.d.ts.map +1 -0
  138. package/dist/runtime/iocResolutionStack.js +17 -0
  139. package/dist/runtime/iocResolutionStack.js.map +1 -0
  140. package/dist/runtime/iocRuntimeErrors.d.ts +35 -0
  141. package/dist/runtime/iocRuntimeErrors.d.ts.map +1 -0
  142. package/dist/runtime/iocRuntimeErrors.js +27 -0
  143. package/dist/runtime/iocRuntimeErrors.js.map +1 -0
  144. package/dist/runtime/registrationKeyIndex.d.ts +12 -0
  145. package/dist/runtime/registrationKeyIndex.d.ts.map +1 -0
  146. package/dist/runtime/registrationKeyIndex.js +19 -0
  147. package/dist/runtime/registrationKeyIndex.js.map +1 -0
  148. package/package.json +67 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Discovery outcome types used by factory scanning and on-demand discovery analysis.
3
+ * Not part of the generated runtime manifest (keeps manifest size bounded).
4
+ */
5
+ export const IocDiscoverySkipReason = {
6
+ NO_MATCHING_EXPORT: "no_matching_export",
7
+ NO_FACTORY_PATTERN_IN_SOURCE: "no_factory_pattern_in_source",
8
+ INVALID_FACTORY_SIGNATURE: "invalid_factory_signature",
9
+ CONTRACT_NOT_FOUND: "contract_not_found",
10
+ CONTRACT_NOT_IMPORTED: "contract_not_imported",
11
+ CONTRACT_NOT_RESOLVED: "contract_not_resolved",
12
+ EXCLUDED_BY_CONFIG: "excluded_by_config",
13
+ UNSUPPORTED_PATTERN: "unsupported_pattern",
14
+ };
15
+ export const IocDiscoveryStatus = {
16
+ DISCOVERED: "discovered",
17
+ SKIPPED: "skipped",
18
+ };
19
+ //# sourceMappingURL=discoveryOutcomeTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discoveryOutcomeTypes.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/discoveryOutcomeTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,4BAA4B,EAAE,8BAA8B;IAC5D,yBAAyB,EAAE,2BAA2B;IACtD,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;CAClC,CAAC;AAKX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;CACV,CAAC"}
@@ -0,0 +1,11 @@
1
+ import ts from "typescript";
2
+ /**
3
+ * Infers dependency contract names from the factory's first parameter **object binding pattern**
4
+ * only: for `({ config, logger }: SomeCradleType)`, resolves the type of `config` and `logger` on
5
+ * the parameter type and collects symbols that match known contract names.
6
+ *
7
+ * Does **not** walk all properties of the cradle type (avoids listing the entire container graph).
8
+ * If the first parameter is not a top-level object binding pattern, returns [] (prefer omission).
9
+ */
10
+ export declare const inferDependencyContractNames: (checker: ts.TypeChecker, factoryDecl: ts.FunctionLike, knownContractNames: ReadonlySet<string>) => string[];
11
+ //# sourceMappingURL=inferFactoryDependencyContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFactoryDependencyContracts.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AA6E5B;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,CAAC,YAAY,EAC5B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACtC,MAAM,EAmDR,CAAC"}
@@ -0,0 +1,118 @@
1
+ import ts from "typescript";
2
+ const unwrapPromiseType = (checker, t) => {
3
+ const sym = t.getSymbol();
4
+ const symName = sym?.getName();
5
+ if (symName === "Promise") {
6
+ const args = checker.getTypeArguments(t);
7
+ if (args.length > 0) {
8
+ return unwrapPromiseType(checker, args[0]);
9
+ }
10
+ }
11
+ return t;
12
+ };
13
+ /**
14
+ * Property names read from the object binding pattern (first parameter only).
15
+ * - Rest elements (`...rest`) => omit (too broad).
16
+ * - Nested binding patterns => omit (not direct top-level cradle picks).
17
+ * - Computed / non-literal property names => omit.
18
+ */
19
+ const getBindingPatternPropertyNames = (pattern) => {
20
+ const names = [];
21
+ for (const el of pattern.elements) {
22
+ if (!ts.isBindingElement(el)) {
23
+ continue;
24
+ }
25
+ if (el.dotDotDotToken !== undefined) {
26
+ return "omit";
27
+ }
28
+ if (!ts.isIdentifier(el.name)) {
29
+ return "omit";
30
+ }
31
+ if (el.propertyName === undefined) {
32
+ names.push(el.name.text);
33
+ continue;
34
+ }
35
+ if (ts.isIdentifier(el.propertyName)) {
36
+ names.push(el.propertyName.text);
37
+ continue;
38
+ }
39
+ if (ts.isStringLiteral(el.propertyName)) {
40
+ names.push(el.propertyName.text);
41
+ continue;
42
+ }
43
+ return "omit";
44
+ }
45
+ return names;
46
+ };
47
+ const addContractNamesFromType = (checker, t, knownContractNames, out) => {
48
+ const apparent = unwrapPromiseType(checker, checker.getApparentType(t));
49
+ if (apparent.isUnion()) {
50
+ for (const u of apparent.types) {
51
+ addContractNamesFromType(checker, u, knownContractNames, out);
52
+ }
53
+ return;
54
+ }
55
+ if (apparent.isIntersection()) {
56
+ for (const u of apparent.types) {
57
+ addContractNamesFromType(checker, u, knownContractNames, out);
58
+ }
59
+ return;
60
+ }
61
+ const sym = apparent.aliasSymbol ?? apparent.getSymbol();
62
+ const name = sym?.getName();
63
+ if (name !== undefined && knownContractNames.has(name)) {
64
+ out.add(name);
65
+ }
66
+ };
67
+ /**
68
+ * Infers dependency contract names from the factory's first parameter **object binding pattern**
69
+ * only: for `({ config, logger }: SomeCradleType)`, resolves the type of `config` and `logger` on
70
+ * the parameter type and collects symbols that match known contract names.
71
+ *
72
+ * Does **not** walk all properties of the cradle type (avoids listing the entire container graph).
73
+ * If the first parameter is not a top-level object binding pattern, returns [] (prefer omission).
74
+ */
75
+ export const inferDependencyContractNames = (checker, factoryDecl, knownContractNames) => {
76
+ if (knownContractNames.size === 0) {
77
+ return [];
78
+ }
79
+ const signature = checker.getSignatureFromDeclaration(factoryDecl);
80
+ if (!signature) {
81
+ return [];
82
+ }
83
+ const params = signature.getParameters();
84
+ if (params.length === 0) {
85
+ return [];
86
+ }
87
+ const paramNode = factoryDecl.parameters[0];
88
+ if (!paramNode) {
89
+ return [];
90
+ }
91
+ if (!ts.isObjectBindingPattern(paramNode.name)) {
92
+ return [];
93
+ }
94
+ const boundNames = getBindingPatternPropertyNames(paramNode.name);
95
+ if (boundNames === "omit") {
96
+ return [];
97
+ }
98
+ if (boundNames.length === 0) {
99
+ return [];
100
+ }
101
+ const p0 = params[0];
102
+ const paramType = checker.getTypeOfSymbolAtLocation(p0, paramNode);
103
+ const resolvedParam = checker.getApparentType(paramType);
104
+ if (resolvedParam.getCallSignatures().length > 0) {
105
+ return [];
106
+ }
107
+ const out = new Set();
108
+ for (const propName of boundNames) {
109
+ const prop = checker.getPropertyOfType(resolvedParam, propName);
110
+ if (!prop) {
111
+ continue;
112
+ }
113
+ const propType = checker.getTypeOfSymbol(prop);
114
+ addContractNamesFromType(checker, propType, knownContractNames, out);
115
+ }
116
+ return Array.from(out).sort((a, b) => a.localeCompare(b));
117
+ };
118
+ //# sourceMappingURL=inferFactoryDependencyContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFactoryDependencyContracts.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import ts from "typescript";
2
+ import { type IocDiscoveryOutcome } from "./discoveryOutcomeTypes.js";
3
+ import type { DiscoveredFactory, FactoryDiscoveryFileContext } from "../types.js";
4
+ /** Structural facts about a source file, collected in one AST walk. */
5
+ export type FileAnalysis = {
6
+ exportedNames: Set<string>;
7
+ localTypes: Set<string>;
8
+ importedIds: Set<string>;
9
+ factoryDeclByExport: Map<string, ts.FunctionLike>;
10
+ };
11
+ export declare const collectFileAnalysisForFactoryDiscovery: (sourceFile: ts.SourceFile) => FileAnalysis;
12
+ export type ScanFactoryFileResult = {
13
+ modulePath: string;
14
+ outcomes: IocDiscoveryOutcome[];
15
+ discovered: DiscoveredFactory[];
16
+ };
17
+ export declare const scanFactoryFile: (context: FactoryDiscoveryFileContext, checker: ts.TypeChecker) => ScanFactoryFileResult;
18
+ //# sourceMappingURL=scanFactoryFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanFactoryFile.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/scanFactoryFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;CACnD,CAAC;AAwLF,eAAO,MAAM,sCAAsC,GACjD,YAAY,EAAE,CAAC,UAAU,KACxB,YAyGF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC,CAAC;AA0BF,eAAO,MAAM,eAAe,GAC1B,SAAS,2BAA2B,EACpC,SAAS,EAAE,CAAC,WAAW,KACtB,qBA4LF,CAAC"}
@@ -0,0 +1,379 @@
1
+ import path from "node:path";
2
+ import ts from "typescript";
3
+ import { getImplOverrideForImplementation } from "../../config/iocConfig.js";
4
+ import { resolveRegistrationKeyForFactory } from "../../core/resolver.js";
5
+ import { IocDiscoverySkipReason, IocDiscoveryStatus, } from "./discoveryOutcomeTypes.js";
6
+ import { computeDiscoveryModulePath, computeManifestModuleSpecifier, } from "../manifestPaths.js";
7
+ const intrinsicNames = new Set([
8
+ "string",
9
+ "number",
10
+ "boolean",
11
+ "void",
12
+ "undefined",
13
+ "null",
14
+ "never",
15
+ "unknown",
16
+ "any",
17
+ "bigint",
18
+ "symbol",
19
+ ]);
20
+ const unwrapPromiseType = (checker, t) => {
21
+ const sym = t.getSymbol();
22
+ const symName = sym?.getName();
23
+ if (symName === "Promise") {
24
+ const args = checker.getTypeArguments(t);
25
+ if (args.length > 0) {
26
+ return unwrapPromiseType(checker, args[0]);
27
+ }
28
+ }
29
+ return t;
30
+ };
31
+ const implementationNameFromFactoryExport = (exportName, factoryPrefix) => {
32
+ if (!exportName.startsWith(factoryPrefix)) {
33
+ return undefined;
34
+ }
35
+ const rest = exportName.slice(factoryPrefix.length);
36
+ if (rest.length === 0) {
37
+ return undefined;
38
+ }
39
+ return rest.charAt(0).toLowerCase() + rest.slice(1);
40
+ };
41
+ const walkToImportDeclaration = (decl) => {
42
+ let node = decl;
43
+ while (node !== undefined) {
44
+ if (ts.isImportDeclaration(node)) {
45
+ return node;
46
+ }
47
+ node = node.parent;
48
+ }
49
+ return undefined;
50
+ };
51
+ /**
52
+ * When the factory's return type comes from a bare import (e.g. `knex`, `@koa/router`), recover
53
+ * that module specifier so generated imports do not walk through `node_modules` paths.
54
+ */
55
+ const tryRecoverPreferredModuleSpecifier = (checker, returnType, factorySourceFile) => {
56
+ const t0 = unwrapPromiseType(checker, returnType);
57
+ const t = checker.getApparentType(t0);
58
+ if (t.isUnion()) {
59
+ return undefined;
60
+ }
61
+ const trySymbol = (sym) => {
62
+ if (sym === undefined) {
63
+ return undefined;
64
+ }
65
+ const decls = sym.declarations ?? [];
66
+ for (const decl of decls) {
67
+ if (decl.getSourceFile() !== factorySourceFile) {
68
+ continue;
69
+ }
70
+ const imp = walkToImportDeclaration(decl);
71
+ if (imp !== undefined && ts.isStringLiteralLike(imp.moduleSpecifier)) {
72
+ return imp.moduleSpecifier.text;
73
+ }
74
+ }
75
+ return undefined;
76
+ };
77
+ const fromAlias = trySymbol(t.aliasSymbol);
78
+ if (fromAlias !== undefined) {
79
+ return fromAlias;
80
+ }
81
+ const sym = t.getSymbol();
82
+ const fromSym = trySymbol(sym);
83
+ if (fromSym !== undefined) {
84
+ return fromSym;
85
+ }
86
+ if (sym !== undefined && sym.flags & ts.SymbolFlags.Alias) {
87
+ const aliased = checker.getAliasedSymbol(sym);
88
+ const fromAliased = trySymbol(aliased);
89
+ if (fromAliased !== undefined) {
90
+ return fromAliased;
91
+ }
92
+ }
93
+ return undefined;
94
+ };
95
+ const contractNameFromReturnType = (checker, returnType) => {
96
+ const t0 = unwrapPromiseType(checker, returnType);
97
+ const t = checker.getApparentType(t0);
98
+ if (t.isUnion()) {
99
+ return undefined;
100
+ }
101
+ const symbol = t.aliasSymbol ?? t.getSymbol();
102
+ if (!symbol) {
103
+ return undefined;
104
+ }
105
+ const name = symbol.getName();
106
+ if (!name || intrinsicNames.has(name)) {
107
+ return undefined;
108
+ }
109
+ return name;
110
+ };
111
+ /**
112
+ * Source file where the contract type symbol is declared (follows aliases/imports via the checker).
113
+ */
114
+ const getContractTypeDeclarationSourceFile = (checker, returnType) => {
115
+ const t0 = unwrapPromiseType(checker, returnType);
116
+ const t = checker.getApparentType(t0);
117
+ if (t.isUnion()) {
118
+ return undefined;
119
+ }
120
+ let symbol = t.aliasSymbol ?? t.getSymbol();
121
+ if (!symbol) {
122
+ return undefined;
123
+ }
124
+ if (symbol.flags & ts.SymbolFlags.Alias) {
125
+ symbol = checker.getAliasedSymbol(symbol);
126
+ }
127
+ const decl = symbol.declarations?.[0];
128
+ if (!decl) {
129
+ return undefined;
130
+ }
131
+ return decl.getSourceFile();
132
+ };
133
+ const relProjectPath = (projectRoot, absPath) => path.relative(projectRoot, absPath).replace(/\\/g, "/");
134
+ const isExportedNode = (node) => {
135
+ const modifiers = ts.canHaveModifiers(node)
136
+ ? ts.getModifiers(node)
137
+ : undefined;
138
+ return !!modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
139
+ };
140
+ const unwrapExpression = (expr) => {
141
+ if (ts.isParenthesizedExpression(expr)) {
142
+ return unwrapExpression(expr.expression);
143
+ }
144
+ if (ts.isAsExpression(expr)) {
145
+ return unwrapExpression(expr.expression);
146
+ }
147
+ return expr;
148
+ };
149
+ export const collectFileAnalysisForFactoryDiscovery = (sourceFile) => {
150
+ const exportedNames = new Set();
151
+ const localTypes = new Set();
152
+ const importedIds = new Set();
153
+ const factoryDeclByExport = new Map();
154
+ const visit = (node) => {
155
+ if (ts.isVariableStatement(node) && isExportedNode(node)) {
156
+ for (const decl of node.declarationList.declarations) {
157
+ if (ts.isIdentifier(decl.name)) {
158
+ const exportName = decl.name.text;
159
+ exportedNames.add(exportName);
160
+ if (!decl.initializer || factoryDeclByExport.has(exportName)) {
161
+ continue;
162
+ }
163
+ const initUnwrapped = unwrapExpression(decl.initializer);
164
+ if (ts.isArrowFunction(initUnwrapped)) {
165
+ factoryDeclByExport.set(exportName, initUnwrapped);
166
+ continue;
167
+ }
168
+ if (ts.isFunctionExpression(initUnwrapped)) {
169
+ factoryDeclByExport.set(exportName, initUnwrapped);
170
+ continue;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ if ((ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node)) &&
176
+ node.name &&
177
+ isExportedNode(node)) {
178
+ exportedNames.add(node.name.text);
179
+ }
180
+ if (ts.isFunctionDeclaration(node) &&
181
+ node.name &&
182
+ isExportedNode(node) &&
183
+ !factoryDeclByExport.has(node.name.text)) {
184
+ factoryDeclByExport.set(node.name.text, node);
185
+ }
186
+ if (ts.isExportDeclaration(node) &&
187
+ node.exportClause &&
188
+ ts.isNamedExports(node.exportClause)) {
189
+ for (const element of node.exportClause.elements) {
190
+ exportedNames.add(element.name.text);
191
+ }
192
+ }
193
+ if (ts.isInterfaceDeclaration(node) && isExportedNode(node) && node.name) {
194
+ localTypes.add(node.name.text);
195
+ }
196
+ if (ts.isTypeAliasDeclaration(node) && isExportedNode(node)) {
197
+ localTypes.add(node.name.text);
198
+ }
199
+ if (ts.isExportDeclaration(node) &&
200
+ node.exportClause &&
201
+ ts.isNamedExports(node.exportClause)) {
202
+ for (const el of node.exportClause.elements) {
203
+ localTypes.add(el.name.text);
204
+ }
205
+ }
206
+ if (ts.isImportDeclaration(node)) {
207
+ const clause = node.importClause;
208
+ if (clause) {
209
+ if (clause.name) {
210
+ importedIds.add(clause.name.text);
211
+ }
212
+ if (clause.namedBindings) {
213
+ if (ts.isNamespaceImport(clause.namedBindings)) {
214
+ importedIds.add(clause.namedBindings.name.text);
215
+ }
216
+ else if (ts.isNamedImports(clause.namedBindings)) {
217
+ for (const el of clause.namedBindings.elements) {
218
+ importedIds.add(el.name.text);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ ts.forEachChild(node, visit);
225
+ };
226
+ visit(sourceFile);
227
+ return {
228
+ exportedNames,
229
+ localTypes,
230
+ importedIds,
231
+ factoryDeclByExport,
232
+ };
233
+ };
234
+ const matchFactoryExport = (exportName, factoryPrefix) => {
235
+ const implementationName = implementationNameFromFactoryExport(exportName, factoryPrefix);
236
+ if (!implementationName || implementationName.length === 0) {
237
+ return undefined;
238
+ }
239
+ return {
240
+ matchedBy: "naming",
241
+ implementationName,
242
+ };
243
+ };
244
+ export const scanFactoryFile = (context, checker) => {
245
+ const { absPath, sourceFile, projectRoot, factoryPrefix, iocConfig, paths: { scanDirs, generatedDir }, } = context;
246
+ const modulePath = computeDiscoveryModulePath(absPath, projectRoot, scanDirs);
247
+ const discovered = [];
248
+ const outcomes = [];
249
+ const sourceText = sourceFile.getText();
250
+ const shouldScan = sourceText.includes(factoryPrefix);
251
+ if (!shouldScan) {
252
+ outcomes.push({
253
+ scope: "file",
254
+ status: IocDiscoveryStatus.SKIPPED,
255
+ skipReason: IocDiscoverySkipReason.NO_FACTORY_PATTERN_IN_SOURCE,
256
+ });
257
+ return { modulePath, outcomes, discovered };
258
+ }
259
+ const analysis = collectFileAnalysisForFactoryDiscovery(sourceFile);
260
+ const isContractInScope = (contract) => analysis.localTypes.has(contract) || analysis.importedIds.has(contract);
261
+ const fileLabel = relProjectPath(projectRoot, absPath);
262
+ const candidateExports = Array.from(analysis.exportedNames)
263
+ .sort((a, b) => a.localeCompare(b))
264
+ .filter((exportName) => matchFactoryExport(exportName, factoryPrefix) !== undefined);
265
+ if (candidateExports.length === 0) {
266
+ outcomes.push({
267
+ scope: "file",
268
+ status: IocDiscoveryStatus.SKIPPED,
269
+ skipReason: IocDiscoverySkipReason.NO_MATCHING_EXPORT,
270
+ });
271
+ return { modulePath, outcomes, discovered };
272
+ }
273
+ for (const exportName of candidateExports) {
274
+ const match = matchFactoryExport(exportName, factoryPrefix);
275
+ if (!match) {
276
+ continue;
277
+ }
278
+ const implementationName = match.implementationName;
279
+ const factoryDecl = analysis.factoryDeclByExport.get(exportName);
280
+ if (!factoryDecl) {
281
+ outcomes.push({
282
+ scope: "export",
283
+ exportName,
284
+ status: IocDiscoveryStatus.SKIPPED,
285
+ skipReason: IocDiscoverySkipReason.INVALID_FACTORY_SIGNATURE,
286
+ });
287
+ continue;
288
+ }
289
+ const signature = checker.getSignatureFromDeclaration(factoryDecl);
290
+ if (!signature) {
291
+ outcomes.push({
292
+ scope: "export",
293
+ exportName,
294
+ status: IocDiscoveryStatus.SKIPPED,
295
+ skipReason: IocDiscoverySkipReason.INVALID_FACTORY_SIGNATURE,
296
+ });
297
+ continue;
298
+ }
299
+ const returnType = checker.getReturnTypeOfSignature(signature);
300
+ const contractName = contractNameFromReturnType(checker, returnType);
301
+ if (!contractName) {
302
+ outcomes.push({
303
+ scope: "export",
304
+ exportName,
305
+ status: IocDiscoveryStatus.SKIPPED,
306
+ skipReason: IocDiscoverySkipReason.CONTRACT_NOT_RESOLVED,
307
+ });
308
+ continue;
309
+ }
310
+ const contractDeclSource = getContractTypeDeclarationSourceFile(checker, returnType);
311
+ if (!contractDeclSource) {
312
+ outcomes.push({
313
+ scope: "export",
314
+ exportName,
315
+ status: IocDiscoveryStatus.SKIPPED,
316
+ skipReason: IocDiscoverySkipReason.CONTRACT_NOT_FOUND,
317
+ contractName,
318
+ });
319
+ continue;
320
+ }
321
+ const contractTypeRelImport = computeManifestModuleSpecifier(contractDeclSource.fileName, generatedDir, scanDirs, {
322
+ preferredModuleSpecifier: tryRecoverPreferredModuleSpecifier(checker, returnType, sourceFile),
323
+ workspacePackageImportBases: context.paths.workspacePackageImportBases,
324
+ projectRoot: context.projectRoot,
325
+ });
326
+ if (!isContractInScope(contractName)) {
327
+ outcomes.push({
328
+ scope: "export",
329
+ exportName,
330
+ status: IocDiscoveryStatus.SKIPPED,
331
+ skipReason: IocDiscoverySkipReason.CONTRACT_NOT_IMPORTED,
332
+ contractName,
333
+ });
334
+ continue;
335
+ }
336
+ const configRegistrationName = getImplOverrideForImplementation(iocConfig?.registrations?.[contractName], implementationName)?.name;
337
+ let registrationKey;
338
+ try {
339
+ registrationKey = resolveRegistrationKeyForFactory(exportName, configRegistrationName, contractName, {
340
+ modulePath: fileLabel,
341
+ contractName,
342
+ exportName,
343
+ });
344
+ }
345
+ catch {
346
+ outcomes.push({
347
+ scope: "export",
348
+ exportName,
349
+ status: IocDiscoveryStatus.SKIPPED,
350
+ skipReason: IocDiscoverySkipReason.UNSUPPORTED_PATTERN,
351
+ contractName,
352
+ });
353
+ continue;
354
+ }
355
+ discovered.push({
356
+ contractName,
357
+ contractTypeRelImport,
358
+ implementationName,
359
+ exportName,
360
+ registrationKey,
361
+ modulePath,
362
+ relImport: computeManifestModuleSpecifier(absPath, generatedDir, scanDirs, {
363
+ projectRoot: context.projectRoot,
364
+ }),
365
+ discoveredBy: match.matchedBy,
366
+ });
367
+ outcomes.push({
368
+ scope: "export",
369
+ exportName,
370
+ status: IocDiscoveryStatus.DISCOVERED,
371
+ contractName,
372
+ implementationName,
373
+ registrationKey,
374
+ discoveredBy: match.matchedBy,
375
+ });
376
+ }
377
+ return { modulePath, outcomes, discovered };
378
+ };
379
+ //# sourceMappingURL=scanFactoryFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanFactoryFile.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/scanFactoryFile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAc7B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,SAAS;IACT,KAAK;IACL,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,OAAuB,EAAE,CAAU,EAAW,EAAE;IACzE,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAqB,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,mCAAmC,GAAG,CAC1C,UAAkB,EAClB,aAAqB,EACD,EAAE;IACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAC9B,IAAa,EACqB,EAAE;IACpC,IAAI,IAAI,GAAwB,IAAI,CAAC;IACrC,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,kCAAkC,GAAG,CACzC,OAAuB,EACvB,UAAmB,EACnB,iBAAgC,EACZ,EAAE;IACtB,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAA0B,EAAsB,EAAE;QACnE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAC/C,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrE,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CACjC,OAAuB,EACvB,UAAmB,EACC,EAAE;IACtB,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,oCAAoC,GAAG,CAC3C,OAAuB,EACvB,UAAmB,EACQ,EAAE;IAC7B,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,OAAe,EAAU,EAAE,CACtE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAE1D,MAAM,cAAc,GAAG,CAAC,IAAa,EAAW,EAAE;IAChD,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAmB,EAAiB,EAAE;IAC9D,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACpD,UAAyB,EACX,EAAE;IAChB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE/D,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBACrD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAE9B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC7D,SAAS;oBACX,CAAC;oBAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzD,IAAI,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;wBACtC,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;wBACnD,SAAS;oBACX,CAAC;oBACD,IAAI,EAAE,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC3C,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;wBACnD,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IACE,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI;YACT,cAAc,CAAC,IAAI,CAAC,EACpB,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,IAAI;YACT,cAAc,CAAC,IAAI,CAAC;YACpB,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACxC,CAAC;YACD,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,IACE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY;YACjB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EACpC,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACjD,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IACE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY;YACjB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EACpC,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC5C,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChB,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;gBAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACzB,IAAI,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC/C,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,CAAC;yBAAM,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;wBACnD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;4BAC/C,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,KAAK,CAAC,UAAU,CAAC,CAAC;IAElB,OAAO;QACL,aAAa;QACb,UAAU;QACV,WAAW;QACX,mBAAmB;KACpB,CAAC;AACJ,CAAC,CAAC;AAaF,MAAM,kBAAkB,GAAG,CACzB,UAAkB,EAClB,aAAqB,EACO,EAAE;IAC9B,MAAM,kBAAkB,GAAG,mCAAmC,CAC5D,UAAU,EACV,aAAa,CACd,CAAC;IAEF,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,kBAAkB;KACnB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAoC,EACpC,OAAuB,EACA,EAAE;IACzB,MAAM,EACJ,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,GAClC,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,0BAA0B,CAC3C,OAAO,EACP,WAAW,EACX,QAAQ,CACT,CAAC;IACF,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAE3C,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,kBAAkB,CAAC,OAAO;YAClC,UAAU,EAAE,sBAAsB,CAAC,4BAA4B;SAChE,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG,sCAAsC,CAAC,UAAU,CAAC,CAAC;IAEpE,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAW,EAAE,CACtD,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;SACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAClC,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CACb,kBAAkB,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,SAAS,CAC9D,CAAC;IAEJ,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,kBAAkB,CAAC,OAAO;YAClC,UAAU,EAAE,sBAAsB,CAAC,kBAAkB;SACtD,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;QACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,yBAAyB;aAC7D,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,yBAAyB;aAC7D,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAErE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,qBAAqB;aACzD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,oCAAoC,CAC7D,OAAO,EACP,UAAU,CACX,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,kBAAkB;gBACrD,YAAY;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,qBAAqB,GAAG,8BAA8B,CAC1D,kBAAkB,CAAC,QAAQ,EAC3B,YAAY,EACZ,QAAQ,EACR;YACE,wBAAwB,EAAE,kCAAkC,CAC1D,OAAO,EACP,UAAU,EACV,UAAU,CACX;YACD,2BAA2B,EAAE,OAAO,CAAC,KAAK,CAAC,2BAA2B;YACtE,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CACF,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,qBAAqB;gBACxD,YAAY;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,sBAAsB,GAAG,gCAAgC,CAC7D,SAAS,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EACxC,kBAAkB,CACnB,EAAE,IAAI,CAAC;QAER,IAAI,eAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,eAAe,GAAG,gCAAgC,CAChD,UAAU,EACV,sBAAsB,EACtB,YAAY,EACZ;gBACE,UAAU,EAAE,SAAS;gBACrB,YAAY;gBACZ,UAAU;aACX,CACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU;gBACV,MAAM,EAAE,kBAAkB,CAAC,OAAO;gBAClC,UAAU,EAAE,sBAAsB,CAAC,mBAAmB;gBACtD,YAAY;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,UAAU,CAAC,IAAI,CAAC;YACd,YAAY;YACZ,qBAAqB;YACrB,kBAAkB;YAClB,UAAU;YACV,eAAe;YACf,UAAU;YACV,SAAS,EAAE,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE;gBACzE,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC;YACF,YAAY,EAAE,KAAK,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,QAAQ;YACf,UAAU;YACV,MAAM,EAAE,kBAAkB,CAAC,UAAU;YACrC,YAAY;YACZ,kBAAkB;YAClB,eAAe;YACf,YAAY,EAAE,KAAK,CAAC,SAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ManifestOptions } from "./manifestOptions.js";
2
+ import type { ManifestRuntimePaths } from "./manifestPaths.js";
3
+ /**
4
+ * Full generation pipeline for a consuming project. Idempotent writes use atomic rename.
5
+ *
6
+ * @param overrides - Optional paths, glob patterns, factory prefix, or explicit `iocConfigPath`.
7
+ * When `ioc.config.ts` is absent, defaults from {@link resolveManifestOptions} apply.
8
+ */
9
+ export declare const generateManifest: (overrides?: Partial<Omit<ManifestOptions, "paths">> & {
10
+ paths?: Partial<ManifestRuntimePaths>;
11
+ iocConfigPath?: string;
12
+ }) => Promise<void>;
13
+ //# sourceMappingURL=generateManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateManifest.d.ts","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAoC/D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,YAAY,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,GAAG;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,KACA,OAAO,CAAC,IAAI,CAwFd,CAAC"}