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.
- package/LICENSE +21 -0
- package/README.md +350 -0
- package/bin/ioc.cjs +19 -0
- package/dist/cli/ioc.d.ts +3 -0
- package/dist/cli/ioc.d.ts.map +1 -0
- package/dist/cli/ioc.js +86 -0
- package/dist/cli/ioc.js.map +1 -0
- package/dist/cli/parseIocCli.d.ts +21 -0
- package/dist/cli/parseIocCli.d.ts.map +1 -0
- package/dist/cli/parseIocCli.js +76 -0
- package/dist/cli/parseIocCli.js.map +1 -0
- package/dist/config/iocConfig.d.ts +97 -0
- package/dist/config/iocConfig.d.ts.map +1 -0
- package/dist/config/iocConfig.js +65 -0
- package/dist/config/iocConfig.js.map +1 -0
- package/dist/config/loadIocConfig.d.ts +25 -0
- package/dist/config/loadIocConfig.d.ts.map +1 -0
- package/dist/config/loadIocConfig.js +245 -0
- package/dist/config/loadIocConfig.js.map +1 -0
- package/dist/config/parseDiscoveryScanDirs.d.ts +6 -0
- package/dist/config/parseDiscoveryScanDirs.d.ts.map +1 -0
- package/dist/config/parseDiscoveryScanDirs.js +78 -0
- package/dist/config/parseDiscoveryScanDirs.js.map +1 -0
- package/dist/core/defaultImplementationSelection.d.ts +14 -0
- package/dist/core/defaultImplementationSelection.d.ts.map +1 -0
- package/dist/core/defaultImplementationSelection.js +47 -0
- package/dist/core/defaultImplementationSelection.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/manifest.d.ts +79 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +3 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/resolver.d.ts +18 -0
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/core/resolver.js +27 -0
- package/dist/core/resolver.js.map +1 -0
- package/dist/generator/contractTypeSourceFile.d.ts +16 -0
- package/dist/generator/contractTypeSourceFile.d.ts.map +1 -0
- package/dist/generator/contractTypeSourceFile.js +236 -0
- package/dist/generator/contractTypeSourceFile.js.map +1 -0
- package/dist/generator/discoverFactories/discoverFactories.d.ts +18 -0
- package/dist/generator/discoverFactories/discoverFactories.d.ts.map +1 -0
- package/dist/generator/discoverFactories/discoverFactories.js +108 -0
- package/dist/generator/discoverFactories/discoverFactories.js.map +1 -0
- package/dist/generator/discoverFactories/discoveryOutcomeTypes.d.ts +47 -0
- package/dist/generator/discoverFactories/discoveryOutcomeTypes.d.ts.map +1 -0
- package/dist/generator/discoverFactories/discoveryOutcomeTypes.js +19 -0
- package/dist/generator/discoverFactories/discoveryOutcomeTypes.js.map +1 -0
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts +11 -0
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts.map +1 -0
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js +118 -0
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js.map +1 -0
- package/dist/generator/discoverFactories/scanFactoryFile.d.ts +18 -0
- package/dist/generator/discoverFactories/scanFactoryFile.d.ts.map +1 -0
- package/dist/generator/discoverFactories/scanFactoryFile.js +379 -0
- package/dist/generator/discoverFactories/scanFactoryFile.js.map +1 -0
- package/dist/generator/generateManifest.d.ts +13 -0
- package/dist/generator/generateManifest.d.ts.map +1 -0
- package/dist/generator/generateManifest.js +88 -0
- package/dist/generator/generateManifest.js.map +1 -0
- package/dist/generator/iocProgramContext.d.ts +11 -0
- package/dist/generator/iocProgramContext.d.ts.map +1 -0
- package/dist/generator/iocProgramContext.js +81 -0
- package/dist/generator/iocProgramContext.js.map +1 -0
- package/dist/generator/manifestOptions.d.ts +26 -0
- package/dist/generator/manifestOptions.d.ts.map +1 -0
- package/dist/generator/manifestOptions.js +86 -0
- package/dist/generator/manifestOptions.js.map +1 -0
- package/dist/generator/manifestPaths.d.ts +94 -0
- package/dist/generator/manifestPaths.d.ts.map +1 -0
- package/dist/generator/manifestPaths.js +377 -0
- package/dist/generator/manifestPaths.js.map +1 -0
- package/dist/generator/naming.d.ts +9 -0
- package/dist/generator/naming.d.ts.map +1 -0
- package/dist/generator/naming.js +46 -0
- package/dist/generator/naming.js.map +1 -0
- package/dist/generator/resolveRegistrationPlan.d.ts +66 -0
- package/dist/generator/resolveRegistrationPlan.d.ts.map +1 -0
- package/dist/generator/resolveRegistrationPlan.js +377 -0
- package/dist/generator/resolveRegistrationPlan.js.map +1 -0
- package/dist/generator/types.d.ts +37 -0
- package/dist/generator/types.d.ts.map +1 -0
- package/dist/generator/types.js +2 -0
- package/dist/generator/types.js.map +1 -0
- package/dist/generator/writeManifest.d.ts +19 -0
- package/dist/generator/writeManifest.d.ts.map +1 -0
- package/dist/generator/writeManifest.js +405 -0
- package/dist/generator/writeManifest.js.map +1 -0
- package/dist/groups/baseTypeAssignability.d.ts +48 -0
- package/dist/groups/baseTypeAssignability.d.ts.map +1 -0
- package/dist/groups/baseTypeAssignability.js +145 -0
- package/dist/groups/baseTypeAssignability.js.map +1 -0
- package/dist/groups/resolveGroupPlan.d.ts +85 -0
- package/dist/groups/resolveGroupPlan.d.ts.map +1 -0
- package/dist/groups/resolveGroupPlan.js +215 -0
- package/dist/groups/resolveGroupPlan.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/inspection/formatReports.d.ts +14 -0
- package/dist/inspection/formatReports.d.ts.map +1 -0
- package/dist/inspection/formatReports.js +115 -0
- package/dist/inspection/formatReports.js.map +1 -0
- package/dist/inspection/index.d.ts +8 -0
- package/dist/inspection/index.d.ts.map +1 -0
- package/dist/inspection/index.js +8 -0
- package/dist/inspection/index.js.map +1 -0
- package/dist/inspection/reports.d.ts +40 -0
- package/dist/inspection/reports.d.ts.map +1 -0
- package/dist/inspection/reports.js +95 -0
- package/dist/inspection/reports.js.map +1 -0
- package/dist/inspection/runDiscoveryAnalysis.d.ts +36 -0
- package/dist/inspection/runDiscoveryAnalysis.d.ts.map +1 -0
- package/dist/inspection/runDiscoveryAnalysis.js +48 -0
- package/dist/inspection/runDiscoveryAnalysis.js.map +1 -0
- package/dist/inspection/validateManifest.d.ts +8 -0
- package/dist/inspection/validateManifest.d.ts.map +1 -0
- package/dist/inspection/validateManifest.js +46 -0
- package/dist/inspection/validateManifest.js.map +1 -0
- package/dist/runtime/bootstrap.d.ts +13 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -0
- package/dist/runtime/bootstrap.js +259 -0
- package/dist/runtime/bootstrap.js.map +1 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/iocResolutionError.d.ts +54 -0
- package/dist/runtime/iocResolutionError.d.ts.map +1 -0
- package/dist/runtime/iocResolutionError.js +266 -0
- package/dist/runtime/iocResolutionError.js.map +1 -0
- package/dist/runtime/iocResolutionStack.d.ts +21 -0
- package/dist/runtime/iocResolutionStack.d.ts.map +1 -0
- package/dist/runtime/iocResolutionStack.js +17 -0
- package/dist/runtime/iocResolutionStack.js.map +1 -0
- package/dist/runtime/iocRuntimeErrors.d.ts +35 -0
- package/dist/runtime/iocRuntimeErrors.d.ts.map +1 -0
- package/dist/runtime/iocRuntimeErrors.js +27 -0
- package/dist/runtime/iocRuntimeErrors.js.map +1 -0
- package/dist/runtime/registrationKeyIndex.d.ts +12 -0
- package/dist/runtime/registrationKeyIndex.d.ts.map +1 -0
- package/dist/runtime/registrationKeyIndex.js +19 -0
- package/dist/runtime/registrationKeyIndex.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Turns discovered factories + `ioc.config` into a stable registration plan:
|
|
3
|
+
* merge overrides, validate global Awilix key collisions and access/collection slots, resolve
|
|
4
|
+
* default implementation per contract, attach lifetimes and metadata for codegen.
|
|
5
|
+
*/
|
|
6
|
+
import { getContractLevelConfig, getImplOverrideForImplementation, IOC_CONTRACT_CONFIG_KEY, isIocImplementationOverride, } from "../config/iocConfig.js";
|
|
7
|
+
import { resolveDiscoveryRootDefaultLifetime, resolveFactorySourceAbsPath, } from "./manifestPaths.js";
|
|
8
|
+
import { selectDefaultImplementationName } from "../core/defaultImplementationSelection.js";
|
|
9
|
+
import { contractNameToCollectionRegistrationKey, contractNameToDefaultRegistrationKey, } from "./naming.js";
|
|
10
|
+
const DEFAULT_LIFETIME = "singleton";
|
|
11
|
+
/**
|
|
12
|
+
* Maps config-only `name` into the internal `registrationKey` field; applies `lifetime` / `default`
|
|
13
|
+
* so merged {@link DiscoveredFactory} rows reflect `ioc.config` policy only (factory sources stay plain).
|
|
14
|
+
*/
|
|
15
|
+
export const normalizeIocOverride = (override) => {
|
|
16
|
+
const { name, lifetime, default: defaultFlag, ...rest } = override;
|
|
17
|
+
const out = { ...rest };
|
|
18
|
+
if (lifetime !== undefined) {
|
|
19
|
+
out.lifetime = lifetime;
|
|
20
|
+
}
|
|
21
|
+
if (name !== undefined) {
|
|
22
|
+
out.registrationKey = name;
|
|
23
|
+
}
|
|
24
|
+
if (Object.hasOwn(override, "default")) {
|
|
25
|
+
out.default = override.default;
|
|
26
|
+
}
|
|
27
|
+
else if (override.default !== undefined) {
|
|
28
|
+
out.default = override.default;
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
};
|
|
32
|
+
const mergeDiscoveredWithOverride = (factory, override) => {
|
|
33
|
+
if (override === undefined) {
|
|
34
|
+
return factory;
|
|
35
|
+
}
|
|
36
|
+
return { ...factory, ...normalizeIocOverride(override) };
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* If the contract's config sets `default` for any implementation (own or inherited via
|
|
40
|
+
* `[[Get]]`), config owns default selection for that contract: discovered `default` flags are
|
|
41
|
+
* ignored unless an override sets `default` on that implementation after merge.
|
|
42
|
+
*
|
|
43
|
+
* Uses `Object.hasOwn` for explicit `default: undefined` (config still owns policy) and
|
|
44
|
+
* `override.default !== undefined` so inherited `default: true|false` from prototypes / helpers
|
|
45
|
+
* is not ignored.
|
|
46
|
+
*/
|
|
47
|
+
const contractConfigSpecifiesDefault = (perContract) => {
|
|
48
|
+
if (perContract === undefined) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return Object.entries(perContract).some(([key, override]) => key !== IOC_CONTRACT_CONFIG_KEY &&
|
|
52
|
+
override !== undefined &&
|
|
53
|
+
isIocImplementationOverride(override) &&
|
|
54
|
+
(Object.hasOwn(override, "default") ||
|
|
55
|
+
override.default !== undefined));
|
|
56
|
+
};
|
|
57
|
+
const stripDiscoveredDefault = (factory) => {
|
|
58
|
+
const { default: _removed, ...rest } = factory;
|
|
59
|
+
return rest;
|
|
60
|
+
};
|
|
61
|
+
const listImplFactories = (factories) => Array.from(factories)
|
|
62
|
+
.sort((a, b) => a.implementationName.localeCompare(b.implementationName))
|
|
63
|
+
.map((factory) => `"${factory.implementationName}" (${factory.modulePath}, export ${factory.exportName})`)
|
|
64
|
+
.join("; ");
|
|
65
|
+
const selectDefaultImplementationKey = (contractName, mergedByImplName) => {
|
|
66
|
+
const factories = Array.from(mergedByImplName.values());
|
|
67
|
+
const withDefault = factories.filter((factory) => factory.default === true);
|
|
68
|
+
if (withDefault.length > 1) {
|
|
69
|
+
throw new Error(`[ioc] Contract ${JSON.stringify(contractName)} has multiple implementations marked default: true after applying ioc.config overrides: ${listImplFactories(withDefault)}. Mark exactly one with default: true under registrations[${JSON.stringify(contractName)}][implementationName], or reduce to a single implementation.`);
|
|
70
|
+
}
|
|
71
|
+
const rows = Array.from(mergedByImplName.entries()).map(([implementationName, factory]) => ({
|
|
72
|
+
implementationName,
|
|
73
|
+
registrationKey: factory.registrationKey,
|
|
74
|
+
...(factory.default === true ? { default: true } : {}),
|
|
75
|
+
}));
|
|
76
|
+
return selectDefaultImplementationName(contractName, rows);
|
|
77
|
+
};
|
|
78
|
+
const resolveLifetime = (factory) => {
|
|
79
|
+
if (factory.lifetime !== undefined) {
|
|
80
|
+
return factory.lifetime;
|
|
81
|
+
}
|
|
82
|
+
return DEFAULT_LIFETIME;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Resolve Awilix lifetime for one implementation. Single precedence chain (no duplicate fallbacks):
|
|
86
|
+
*
|
|
87
|
+
* 1. `registrations[Contract][implementation].lifetime` → source `factory-config` in inspect output (means **ioc.config**, not factory source)
|
|
88
|
+
* 2. Else discovery-root `discovery.scanDirs[].scope` for the factory file → source `discovery-root`
|
|
89
|
+
* 3. Else {@link resolveLifetime} (existing behavior: merged factory lifetime or `singleton`) → source `default`
|
|
90
|
+
*/
|
|
91
|
+
const resolvePlanLifetime = (factory, implOverride, lifetimeContext) => {
|
|
92
|
+
if (implOverride?.lifetime !== undefined) {
|
|
93
|
+
return {
|
|
94
|
+
lifetime: implOverride.lifetime,
|
|
95
|
+
...(lifetimeContext !== undefined
|
|
96
|
+
? { lifetimeSource: "factory-config" }
|
|
97
|
+
: {}),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (lifetimeContext !== undefined) {
|
|
101
|
+
const absPath = resolveFactorySourceAbsPath(factory.modulePath, lifetimeContext.projectRoot, lifetimeContext.scanDirs);
|
|
102
|
+
const fromRootScope = resolveDiscoveryRootDefaultLifetime(absPath, lifetimeContext.scanDirs);
|
|
103
|
+
if (fromRootScope !== undefined) {
|
|
104
|
+
return {
|
|
105
|
+
lifetime: fromRootScope,
|
|
106
|
+
lifetimeSource: "discovery-root",
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
lifetime: resolveLifetime(factory),
|
|
112
|
+
...(lifetimeContext !== undefined ? { lifetimeSource: "default" } : {}),
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
const assertUniqueContractTypeRelImport = (contractName, mergedByImplName) => {
|
|
116
|
+
let seen;
|
|
117
|
+
for (const factory of mergedByImplName.values()) {
|
|
118
|
+
if (seen === undefined) {
|
|
119
|
+
seen = factory.contractTypeRelImport;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (factory.contractTypeRelImport !== seen) {
|
|
123
|
+
throw new Error(`[ioc] contract "${contractName}": implementations disagree on contract type import source ("${seen}" vs "${factory.contractTypeRelImport}"). Factories: ${listImplFactories(Array.from(mergedByImplName.values()))}. Each factory must return the same contract type symbol.`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (seen === undefined) {
|
|
127
|
+
throw new Error(`[ioc] internal error: no implementations for "${contractName}"`);
|
|
128
|
+
}
|
|
129
|
+
return seen;
|
|
130
|
+
};
|
|
131
|
+
const mergeContractOverrides = (contractName, implByKey, config) => {
|
|
132
|
+
const perContract = config?.registrations?.[contractName];
|
|
133
|
+
const configOwnsDefault = contractConfigSpecifiesDefault(perContract);
|
|
134
|
+
const out = new Map();
|
|
135
|
+
for (const [implementationName, factory] of implByKey) {
|
|
136
|
+
const base = configOwnsDefault ? stripDiscoveredDefault(factory) : factory;
|
|
137
|
+
const override = getImplOverrideForImplementation(perContract, implementationName);
|
|
138
|
+
out.set(implementationName, mergeDiscoveredWithOverride(base, override));
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
};
|
|
142
|
+
export const validateConfigContractsExist = (config, contractNames) => {
|
|
143
|
+
if (config?.registrations === undefined) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
for (const contract of Object.keys(config.registrations)) {
|
|
147
|
+
if (!contractNames.has(contract)) {
|
|
148
|
+
throw new Error(`[ioc-config] registrations["${contract}"] refers to a contract that was not discovered. Discovered contracts: ${Array.from(contractNames).sort().join(", ")}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Every implementation key under `registrations[contract]` must match a discovered implementation
|
|
154
|
+
* name for that contract (stable factory / resolver key from discovery).
|
|
155
|
+
*/
|
|
156
|
+
const validateConfigImplementationKeys = (config, contractMap) => {
|
|
157
|
+
if (config?.registrations === undefined) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
for (const [contractName, implOverrides] of Object.entries(config.registrations)) {
|
|
161
|
+
const discovered = contractMap.get(contractName);
|
|
162
|
+
if (discovered === undefined) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
for (const implKey of Object.keys(implOverrides)) {
|
|
166
|
+
if (implKey === IOC_CONTRACT_CONFIG_KEY) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (!discovered.has(implKey)) {
|
|
170
|
+
throw new Error(`[ioc-config] registrations[${JSON.stringify(contractName)}][${JSON.stringify(implKey)}] is not a discovered implementation for that contract. Discovered implementations: ${Array.from(discovered.keys()).sort().join(", ")}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Config may set `default: true` on at most one implementation per contract (semantic rule; distinct
|
|
177
|
+
* from discovery defaults merged later).
|
|
178
|
+
*/
|
|
179
|
+
const validateAtMostOneConfigDefaultPerContract = (config) => {
|
|
180
|
+
if (config?.registrations === undefined) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
for (const [contractName, implOverrides] of Object.entries(config.registrations)) {
|
|
184
|
+
const withDefault = Object.entries(implOverrides).filter(([key, override]) => key !== IOC_CONTRACT_CONFIG_KEY &&
|
|
185
|
+
override !== undefined &&
|
|
186
|
+
isIocImplementationOverride(override) &&
|
|
187
|
+
override.default === true);
|
|
188
|
+
if (withDefault.length > 1) {
|
|
189
|
+
throw new Error(`[ioc-config] registrations[${JSON.stringify(contractName)}] sets default: true on multiple implementations (${withDefault
|
|
190
|
+
.map(([key]) => JSON.stringify(key))
|
|
191
|
+
.sort()
|
|
192
|
+
.join(", ")}). At most one default per contract.`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Effective Awilix key after overrides: `override.name` replaces the discovered
|
|
198
|
+
* `registrationKey`; there is no secondary alias under the old key.
|
|
199
|
+
*
|
|
200
|
+
* The container namespace is flat: implementation keys must be globally unique and must not use
|
|
201
|
+
* another contract’s default slot name (when that slot is registered as an alias) or a plural
|
|
202
|
+
* collection slot name for multi-implementation contracts.
|
|
203
|
+
*/
|
|
204
|
+
const validateGlobalNamespaceCollisions = (mergedByContract, config) => {
|
|
205
|
+
const keyOwner = new Map();
|
|
206
|
+
const claimImplKey = (key, ref) => {
|
|
207
|
+
const existing = keyOwner.get(key);
|
|
208
|
+
if (existing !== undefined) {
|
|
209
|
+
throw new Error(`[ioc-config] global registration name collision on ${JSON.stringify(key)}: ${existing.contractName}.${existing.implementationName} and ${ref.contractName}.${ref.implementationName} both resolve to that Awilix key. Adjust resolver metadata or registrations[].name overrides so keys are unique across all contracts.`);
|
|
210
|
+
}
|
|
211
|
+
keyOwner.set(key, ref);
|
|
212
|
+
};
|
|
213
|
+
for (const [contractName, merged] of mergedByContract) {
|
|
214
|
+
for (const [implementationName, factory] of merged) {
|
|
215
|
+
claimImplKey(factory.registrationKey, {
|
|
216
|
+
contractName,
|
|
217
|
+
implementationName,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const accessKeyByContract = new Map();
|
|
222
|
+
for (const contractName of mergedByContract.keys()) {
|
|
223
|
+
const convention = contractNameToDefaultRegistrationKey(contractName);
|
|
224
|
+
const { accessKey: configured } = getContractLevelConfig(config?.registrations?.[contractName], contractName);
|
|
225
|
+
accessKeyByContract.set(contractName, configured ?? convention);
|
|
226
|
+
}
|
|
227
|
+
const accessKeyOwnerContract = new Map();
|
|
228
|
+
for (const [contractName, accessKey] of accessKeyByContract) {
|
|
229
|
+
const existing = accessKeyOwnerContract.get(accessKey);
|
|
230
|
+
if (existing !== undefined) {
|
|
231
|
+
throw new Error(`[ioc-config] contract access key ${JSON.stringify(accessKey)} is used by both ${JSON.stringify(existing)} and ${JSON.stringify(contractName)} ($contract.accessKey must be unique across contracts).`);
|
|
232
|
+
}
|
|
233
|
+
accessKeyOwnerContract.set(accessKey, contractName);
|
|
234
|
+
}
|
|
235
|
+
for (const [contractName, accessKey] of accessKeyByContract) {
|
|
236
|
+
for (const [otherContractName, otherMerged] of mergedByContract) {
|
|
237
|
+
if (otherMerged.size <= 1) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
const collectionKey = contractNameToCollectionRegistrationKey(otherContractName);
|
|
241
|
+
if (accessKey === collectionKey) {
|
|
242
|
+
throw new Error(`[ioc-config] access key ${JSON.stringify(accessKey)} for contract ${JSON.stringify(contractName)} collides with the collection slot ${JSON.stringify(collectionKey)} for contract ${JSON.stringify(otherContractName)}.`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
for (const [contractName, merged] of mergedByContract) {
|
|
247
|
+
const accessKey = accessKeyByContract.get(contractName);
|
|
248
|
+
const defaultImplementationName = selectDefaultImplementationKey(contractName, merged);
|
|
249
|
+
const defaultKey = merged.get(defaultImplementationName).registrationKey;
|
|
250
|
+
const { accessKey: configuredAccessKey } = getContractLevelConfig(config?.registrations?.[contractName], contractName);
|
|
251
|
+
const accessKeyExplicitlyConfigured = configuredAccessKey !== undefined;
|
|
252
|
+
if (accessKeyExplicitlyConfigured && accessKey !== defaultKey) {
|
|
253
|
+
for (const [implementationName, factory] of merged) {
|
|
254
|
+
if (factory.registrationKey === accessKey) {
|
|
255
|
+
throw new Error(`[ioc-config] contract ${JSON.stringify(contractName)}: access key ${JSON.stringify(accessKey)} from $contract is reserved for the default-slot alias (default implementation registers as ${JSON.stringify(defaultKey)}), but implementation ${JSON.stringify(implementationName)} uses that key.`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
for (const [otherContractName, otherMerged] of mergedByContract) {
|
|
260
|
+
if (otherContractName === contractName) {
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
for (const [implementationName, factory] of otherMerged) {
|
|
264
|
+
if (factory.registrationKey !== accessKey) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
throw new Error(`[ioc-config] registration key ${JSON.stringify(accessKey)} is reserved as the contract default slot for ${JSON.stringify(contractName)} (the selected default implementation is registered as ${JSON.stringify(defaultKey)}). ${otherContractName}.${implementationName} cannot use ${JSON.stringify(accessKey)}. Choose a different resolver key or registrations[].name override.`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
for (const [contractName, merged] of mergedByContract) {
|
|
272
|
+
if (merged.size <= 1) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
const collectionKey = contractNameToCollectionRegistrationKey(contractName);
|
|
276
|
+
for (const [otherContractName, otherMerged] of mergedByContract) {
|
|
277
|
+
for (const [implementationName, factory] of otherMerged) {
|
|
278
|
+
if (factory.registrationKey === collectionKey) {
|
|
279
|
+
throw new Error(`[ioc-config] registration key ${JSON.stringify(collectionKey)} is reserved as the collection slot for contract ${JSON.stringify(contractName)}. ${otherContractName}.${implementationName} cannot use that key. Choose a different resolver key or registrations[].name override.`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* Semantic validation against discovery and the flat Awilix namespace. Reference checks and
|
|
287
|
+
* config-only default rules run first; merged maps are built once to compute effective registration
|
|
288
|
+
* keys and defaults for global collision checks, then the same merged maps are reused when
|
|
289
|
+
* building the plan.
|
|
290
|
+
*/
|
|
291
|
+
const validateIocConfigSemantics = (contractMap, config) => {
|
|
292
|
+
const contractNames = new Set(contractMap.keys());
|
|
293
|
+
validateConfigContractsExist(config, contractNames);
|
|
294
|
+
validateConfigImplementationKeys(config, contractMap);
|
|
295
|
+
validateAtMostOneConfigDefaultPerContract(config);
|
|
296
|
+
const mergedByContract = new Map();
|
|
297
|
+
for (const [contractName, implementations] of contractMap) {
|
|
298
|
+
const implByKey = new Map();
|
|
299
|
+
for (const [implementationName, factory] of implementations) {
|
|
300
|
+
implByKey.set(implementationName, factory);
|
|
301
|
+
}
|
|
302
|
+
mergedByContract.set(contractName, mergeContractOverrides(contractName, implByKey, config));
|
|
303
|
+
}
|
|
304
|
+
validateGlobalNamespaceCollisions(mergedByContract, config);
|
|
305
|
+
return mergedByContract;
|
|
306
|
+
};
|
|
307
|
+
/**
|
|
308
|
+
* Produces sorted `ResolvedContractRegistration[]` used by manifest serialization and group planning.
|
|
309
|
+
* Throws on any config/discovery inconsistency (unknown contracts, duplicate defaults, key collisions).
|
|
310
|
+
*/
|
|
311
|
+
export const buildRegistrationPlan = (contractMap, config, lifetimeContext) => {
|
|
312
|
+
const mergedByContract = validateIocConfigSemantics(contractMap, config);
|
|
313
|
+
const sortedContracts = Array.from(mergedByContract.keys()).sort((a, b) => a.localeCompare(b));
|
|
314
|
+
const out = [];
|
|
315
|
+
for (const contractName of sortedContracts) {
|
|
316
|
+
const mergedByImplName = mergedByContract.get(contractName);
|
|
317
|
+
const defaultImplementationName = selectDefaultImplementationKey(contractName, mergedByImplName);
|
|
318
|
+
const contractTypeRelImport = assertUniqueContractTypeRelImport(contractName, mergedByImplName);
|
|
319
|
+
const contractKey = contractNameToDefaultRegistrationKey(contractName);
|
|
320
|
+
const { accessKey: accessKeyOverride } = getContractLevelConfig(config?.registrations?.[contractName], contractName);
|
|
321
|
+
const accessKey = accessKeyOverride ?? contractKey;
|
|
322
|
+
const collectionKey = mergedByImplName.size > 1
|
|
323
|
+
? contractNameToCollectionRegistrationKey(contractName)
|
|
324
|
+
: undefined;
|
|
325
|
+
const implementationNames = Array.from(mergedByImplName.keys()).sort((a, b) => a.localeCompare(b));
|
|
326
|
+
const contractLevelAccessKeyApplied = accessKeyOverride !== undefined && accessKeyOverride !== contractKey;
|
|
327
|
+
const implementations = implementationNames.map((implementationName) => {
|
|
328
|
+
const factory = mergedByImplName.get(implementationName);
|
|
329
|
+
const implOverride = getImplOverrideForImplementation(config?.registrations?.[contractName], implementationName);
|
|
330
|
+
const configOverridesApplied = [];
|
|
331
|
+
if (implOverride?.name !== undefined) {
|
|
332
|
+
configOverridesApplied.push("name");
|
|
333
|
+
}
|
|
334
|
+
if (implOverride?.lifetime !== undefined) {
|
|
335
|
+
configOverridesApplied.push("lifetime");
|
|
336
|
+
}
|
|
337
|
+
if (implOverride?.default !== undefined) {
|
|
338
|
+
configOverridesApplied.push("default");
|
|
339
|
+
}
|
|
340
|
+
if (contractLevelAccessKeyApplied &&
|
|
341
|
+
implementationName === defaultImplementationName) {
|
|
342
|
+
configOverridesApplied.push("accessKey");
|
|
343
|
+
}
|
|
344
|
+
const { lifetime, lifetimeSource } = resolvePlanLifetime(factory, implOverride, lifetimeContext);
|
|
345
|
+
return {
|
|
346
|
+
implementationName,
|
|
347
|
+
exportName: factory.exportName,
|
|
348
|
+
modulePath: factory.modulePath,
|
|
349
|
+
relImport: factory.relImport,
|
|
350
|
+
registrationKey: factory.registrationKey,
|
|
351
|
+
lifetime,
|
|
352
|
+
...(lifetimeSource !== undefined ? { lifetimeSource } : {}),
|
|
353
|
+
...(factory.discoveredBy !== undefined
|
|
354
|
+
? { discoveredBy: factory.discoveredBy }
|
|
355
|
+
: {}),
|
|
356
|
+
...(configOverridesApplied.length > 0
|
|
357
|
+
? { configOverridesApplied }
|
|
358
|
+
: {}),
|
|
359
|
+
...(factory.dependencyContractNames !== undefined &&
|
|
360
|
+
factory.dependencyContractNames.length > 0
|
|
361
|
+
? { dependencyContractNames: factory.dependencyContractNames }
|
|
362
|
+
: {}),
|
|
363
|
+
};
|
|
364
|
+
});
|
|
365
|
+
out.push({
|
|
366
|
+
contractName,
|
|
367
|
+
contractTypeRelImport,
|
|
368
|
+
contractKey,
|
|
369
|
+
accessKey,
|
|
370
|
+
collectionKey,
|
|
371
|
+
defaultImplementationName,
|
|
372
|
+
implementations,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
return out;
|
|
376
|
+
};
|
|
377
|
+
//# sourceMappingURL=resolveRegistrationPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRegistrationPlan.js","sourceRoot":"","sources":["../../src/generator/resolveRegistrationPlan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,uBAAuB,EAKvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mCAAmC,EACnC,2BAA2B,GAE5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAE5F,OAAO,EACL,uCAAuC,EACvC,oCAAoC,GACrC,MAAM,aAAa,CAAC;AAsDrB,MAAM,gBAAgB,GAAgB,WAAW,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAAqB,EACO,EAAE;IAC9B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IACnE,MAAM,GAAG,GAA+B,EAAE,GAAG,IAAI,EAAE,CAAC;IAEpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,CAAC;SAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1C,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAClC,OAA0B,EAC1B,QAAiC,EACd,EAAE;IACrB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,8BAA8B,GAAG,CACrC,WAAoD,EAC3C,EAAE;IACX,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CACrC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAClB,GAAG,KAAK,uBAAuB;QAC/B,QAAQ,KAAK,SAAS;QACtB,2BAA2B,CAAC,QAAQ,CAAC;QACrC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;YACjC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CACpC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,OAA0B,EACP,EAAE;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAAuC,EAAU,EAAE,CAC5E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;KAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;KACxE,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,IAAI,OAAO,CAAC,kBAAkB,MAAM,OAAO,CAAC,UAAU,YAAY,OAAO,CAAC,UAAU,GAAG,CAC1F;KACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,MAAM,8BAA8B,GAAG,CACrC,YAAoB,EACpB,gBAAgD,EACxC,EAAE;IACV,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAE5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,2FAA2F,iBAAiB,CAAC,WAAW,CAAC,6DAA6D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,8DAA8D,CAC/T,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CACrD,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,kBAAkB;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CACH,CAAC;IAEF,OAAO,+BAA+B,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAA0B,EAAe,EAAE;IAClE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,CAC1B,OAA0B,EAC1B,YAAqC,EACrC,eAA4D,EACe,EAAE;IAC7E,IAAI,YAAY,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO;YACL,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,GAAG,CAAC,eAAe,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,cAAc,EAAE,gBAAyB,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,2BAA2B,CACzC,OAAO,CAAC,UAAU,EAClB,eAAe,CAAC,WAAW,EAC3B,eAAe,CAAC,QAAQ,CACzB,CAAC;QACF,MAAM,aAAa,GAAG,mCAAmC,CACvD,OAAO,EACP,eAAe,CAAC,QAAQ,CACzB,CAAC;QACF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;gBACL,QAAQ,EAAE,aAAa;gBACvB,cAAc,EAAE,gBAAgB;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC;QAClC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iCAAiC,GAAG,CACxC,YAAoB,EACpB,gBAAgD,EACxC,EAAE;IACV,IAAI,IAAwB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,OAAO,CAAC,qBAAqB,CAAC;YACrC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,mBAAmB,YAAY,gEAAgE,IAAI,SAAS,OAAO,CAAC,qBAAqB,kBAAkB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,2DAA2D,CAC/Q,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,iDAAiD,YAAY,GAAG,CACjE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,YAAoB,EACpB,SAAyC,EACzC,MAA6B,EACG,EAAE;IAClC,MAAM,WAAW,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEjD,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,MAAM,QAAQ,GAAG,gCAAgC,CAC/C,WAAW,EACX,kBAAkB,CACnB,CAAC;QAEF,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,2BAA2B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAA6B,EAC7B,aAA0B,EACpB,EAAE;IACR,IAAI,MAAM,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,0EAA0E,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/J,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,gCAAgC,GAAG,CACvC,MAA6B,EAC7B,WAAwD,EAClD,EAAE;IACR,IAAI,MAAM,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CACxD,MAAM,CAAC,aAAa,CACrB,EAAE,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,IAAI,OAAO,KAAK,uBAAuB,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,uFAAuF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/N,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,yCAAyC,GAAG,CAChD,MAA6B,EACvB,EAAE;IACR,IAAI,MAAM,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CACxD,MAAM,CAAC,aAAa,CACrB,EAAE,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAClB,GAAG,KAAK,uBAAuB;YAC/B,QAAQ,KAAK,SAAS;YACtB,2BAA2B,CAAC,QAAQ,CAAC;YACrC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAC5B,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,qDAAqD,WAAW;iBACvH,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACnC,IAAI,EAAE;iBACN,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACpD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAOF;;;;;;;GAOG;AACH,MAAM,iCAAiC,GAAG,CACxC,gBAA6D,EAC7D,MAA6B,EACvB,EAAE;IACR,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE5C,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,GAAY,EAAQ,EAAE;QACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,kBAAkB,QAAQ,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,kBAAkB,uIAAuI,CAC5T,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtD,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;YACnD,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE;gBACpC,YAAY;gBACZ,kBAAkB;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,YAAY,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,oCAAoC,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,sBAAsB,CACtD,MAAM,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EACrC,YAAY,CACb,CAAC;QAEF,mBAAmB,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,yDAAyD,CACvM,CAAC;QACJ,CAAC;QAED,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,mBAAmB,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;YAChE,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GACjB,uCAAuC,CAAC,iBAAiB,CAAC,CAAC;YAC7D,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAC1N,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QACzD,MAAM,yBAAyB,GAAG,8BAA8B,CAC9D,YAAY,EACZ,MAAM,CACP,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAE,CAAC,eAAe,CAAC;QAC1E,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,CAC/D,MAAM,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EACrC,YAAY,CACb,CAAC;QACF,MAAM,6BAA6B,GAAG,mBAAmB,KAAK,SAAS,CAAC;QAExE,IAAI,6BAA6B,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC9D,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+FAA+F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,CACpS,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;YAChE,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YAED,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;gBACxD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,0DAA0D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,iBAAiB,IAAI,kBAAkB,eAAe,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qEAAqE,CACtX,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,uCAAuC,CAAC,YAAY,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;YAChE,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC;gBACxD,IAAI,OAAO,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,oDAAoD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,iBAAiB,IAAI,kBAAkB,yFAAyF,CACpR,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,CACjC,WAAwD,EACxD,MAA6B,EACgB,EAAE;IAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAElD,4BAA4B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpD,gCAAgC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,yCAAyC,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0C,CAAC;IAE3E,KAAK,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;QACvD,KAAK,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;YAC5D,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,gBAAgB,CAAC,GAAG,CAClB,YAAY,EACZ,sBAAsB,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAE5D,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,WAAwD,EACxD,MAAkB,EAClB,eAAiD,EACjB,EAAE;IAClC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEzE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,MAAM,GAAG,GAAmC,EAAE,CAAC;IAE/C,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE,CAAC;QAC3C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QAE7D,MAAM,yBAAyB,GAAG,8BAA8B,CAC9D,YAAY,EACZ,gBAAgB,CACjB,CAAC;QAEF,MAAM,qBAAqB,GAAG,iCAAiC,CAC7D,YAAY,EACZ,gBAAgB,CACjB,CAAC;QAEF,MAAM,WAAW,GAAG,oCAAoC,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,CAC7D,MAAM,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EACrC,YAAY,CACb,CAAC;QACF,MAAM,SAAS,GAAG,iBAAiB,IAAI,WAAW,CAAC;QACnD,MAAM,aAAa,GACjB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,uCAAuC,CAAC,YAAY,CAAC;YACvD,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAClE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAC7B,CAAC;QAEF,MAAM,6BAA6B,GACjC,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,WAAW,CAAC;QAEvE,MAAM,eAAe,GACnB,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,gCAAgC,CACnD,MAAM,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EACrC,kBAAkB,CACnB,CAAC;YAEF,MAAM,sBAAsB,GAA6B,EAAE,CAAC;YAE5D,IAAI,YAAY,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,YAAY,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YACD,IACE,6BAA6B;gBAC7B,kBAAkB,KAAK,yBAAyB,EAChD,CAAC;gBACD,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,mBAAmB,CACtD,OAAO,EACP,YAAY,EACZ,eAAe,CAChB,CAAC;YAEF,OAAO;gBACL,kBAAkB;gBAClB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,QAAQ;gBACR,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;oBACxC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;oBACnC,CAAC,CAAC,EAAE,sBAAsB,EAAE;oBAC5B,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,CAAC,uBAAuB,KAAK,SAAS;oBACjD,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;oBACxC,CAAC,CAAC,EAAE,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,EAAE;oBAC9D,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,GAAG,CAAC,IAAI,CAAC;YACP,YAAY;YACZ,qBAAqB;YACrB,WAAW;YACX,SAAS;YACT,aAAa;YACb,yBAAyB;YACzB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { IocConfig, IocLifetime } from "../config/iocConfig.js";
|
|
3
|
+
import type { FactoryDiscoveryPaths } from "./manifestPaths.js";
|
|
4
|
+
/**
|
|
5
|
+
* One discovered factory export in a source file.
|
|
6
|
+
* `contractTypeRelImport` is the module that declares the contract type symbol
|
|
7
|
+
* (from the TypeScript checker), used for generated type-only imports — independent of default selection.
|
|
8
|
+
*/
|
|
9
|
+
export type DiscoveredFactory = {
|
|
10
|
+
contractName: string;
|
|
11
|
+
/**
|
|
12
|
+
* Module specifier for generated type-only imports: relative to the generated dir, a bare
|
|
13
|
+
* package name (e.g. `knex`), or a workspace alias — not a path through `node_modules`.
|
|
14
|
+
*/
|
|
15
|
+
contractTypeRelImport: string;
|
|
16
|
+
implementationName: string;
|
|
17
|
+
exportName: string;
|
|
18
|
+
registrationKey: string;
|
|
19
|
+
modulePath: string;
|
|
20
|
+
relImport: string;
|
|
21
|
+
default?: boolean;
|
|
22
|
+
lifetime?: IocLifetime;
|
|
23
|
+
/** Set when the export matched a discovery strategy. */
|
|
24
|
+
discoveredBy?: "naming";
|
|
25
|
+
/** Contract types inferred from the factory deps parameter (see manifest metadata). */
|
|
26
|
+
dependencyContractNames?: string[];
|
|
27
|
+
};
|
|
28
|
+
export type FactoryDiscoveryFileContext = {
|
|
29
|
+
absPath: string;
|
|
30
|
+
sourceFile: ts.SourceFile;
|
|
31
|
+
projectRoot: string;
|
|
32
|
+
factoryPrefix: string;
|
|
33
|
+
paths: FactoryDiscoveryPaths;
|
|
34
|
+
/** When set, `registrations[contract][implementation].name` participates in registration key resolution. */
|
|
35
|
+
iocConfig?: IocConfig;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,wDAAwD;IACxD,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,uFAAuF;IACvF,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,4GAA4G;IAC5G,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { DiscoveredFactory } from "./types.js";
|
|
3
|
+
import type { ResolvedContractRegistration } from "./resolveRegistrationPlan.js";
|
|
4
|
+
import type { IocGroupsManifest } from "../core/manifest.js";
|
|
5
|
+
import type { ResolvedScanDir } from "./manifestPaths.js";
|
|
6
|
+
export type IocRegistryTypesBuildContext = {
|
|
7
|
+
program: ts.Program;
|
|
8
|
+
generatedDir: string;
|
|
9
|
+
scanDirs: readonly ResolvedScanDir[];
|
|
10
|
+
};
|
|
11
|
+
export type WriteManifestOptions = {
|
|
12
|
+
registryTypesBuildContext?: IocRegistryTypesBuildContext;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Writes the two generated artifacts next to each other. `manifestImportFromPackage` is the
|
|
16
|
+
* package name (or path) used in the `import type` for `IocGeneratedContainerManifest`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const writeManifest: (acceptedFactories: DiscoveredFactory[], plans: ResolvedContractRegistration[], groupsManifest: IocGroupsManifest | undefined, manifestOutPath: string, manifestImportFromPackage: string, options?: WriteManifestOptions) => Promise<void>;
|
|
19
|
+
//# sourceMappingURL=writeManifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeManifest.d.ts","sourceRoot":"","sources":["../../src/generator/writeManifest.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,yBAAyB,CAAC,EAAE,4BAA4B,CAAC;CAC1D,CAAC;AAuhBF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,mBAAmB,iBAAiB,EAAE,EACtC,OAAO,4BAA4B,EAAE,EACrC,gBAAgB,iBAAiB,GAAG,SAAS,EAC7C,iBAAiB,MAAM,EACvB,2BAA2B,MAAM,EACjC,UAAU,oBAAoB,KAC7B,OAAO,CAAC,IAAI,CAgDd,CAAC"}
|