ioc-manifest 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/dist/generator/generateManifest.d.ts.map +1 -1
- package/dist/generator/generateManifest.js +77 -72
- package/dist/generator/generateManifest.js.map +1 -1
- package/dist/generator/iocProgramContext.d.ts +14 -1
- package/dist/generator/iocProgramContext.d.ts.map +1 -1
- package/dist/generator/iocProgramContext.js +41 -16
- package/dist/generator/iocProgramContext.js.map +1 -1
- package/dist/inspection/runDiscoveryAnalysis.d.ts.map +1 -1
- package/dist/inspection/runDiscoveryAnalysis.js +18 -10
- package/dist/inspection/runDiscoveryAnalysis.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -97,7 +97,17 @@ export const buildUserService = ({
|
|
|
97
97
|
});
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
The named
|
|
100
|
+
The named-deps-type pattern is required. Factories cannot destructure directly from `IocGeneratedCradle`, and inline object literals (`({ foo, bar }: { foo: Foo; bar: Bar })`) aren't allowed either — codegen will reject both. The rule is: the first parameter must be a named `interface` or `type` alias.
|
|
101
|
+
|
|
102
|
+
Three reasons:
|
|
103
|
+
|
|
104
|
+
1. **The cradle is generated from your factories' declarations.** A factory declaring its inputs by referencing the cradle would be a chicken-and-egg loop — the cradle doesn't exist yet at the moment codegen reads the factory.
|
|
105
|
+
|
|
106
|
+
2. **The deps type is the factory's testable contract.** Exporting `type UserServiceDeps = { ... }` means tests can `import type { UserServiceDeps }`, build a literal satisfying it, and call the factory directly with no container at all (see [Testing](#testing) below). Inline literals aren't importable — tests would have to reconstruct the same shape by hand in every file, and that drifts.
|
|
107
|
+
|
|
108
|
+
3. **The deps type is documentation.** When someone opens the file, the named declaration sits at the top and says exactly what the factory consumes. Inline literals bury the contract inside the function signature, where it competes for attention with parameter names and the return type.
|
|
109
|
+
|
|
110
|
+
The cost is one extra line per factory. That's the deal.
|
|
101
111
|
|
|
102
112
|
### 2. Configure
|
|
103
113
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateManifest.d.ts","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateManifest.d.ts","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA6D/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,CA+Kd,CAAC"}
|
|
@@ -9,13 +9,13 @@ import { createRequire } from "node:module";
|
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import { tryLoadIocConfig, resolveIocConfigPath, resolveProjectRootFromIocConfigPath, } from "../config/loadIocConfig.js";
|
|
11
11
|
import { discoverFactories } from "./discoverFactories/discoverFactories.js";
|
|
12
|
-
import { createIocProgramForDiscovery, getDiscoveryTargetFiles,
|
|
12
|
+
import { createIocProgramForDiscovery, getDiscoveryTargetFiles, logDiscoveryProgramErrorDiagnosticsForFailure, } from "./iocProgramContext.js";
|
|
13
13
|
import { mergeManifestOptionsWithIocConfig, resolveManifestOptions, } from "./manifestOptions.js";
|
|
14
14
|
import { analyzeDemandSupply } from "./analyzeDemandSupply/index.js";
|
|
15
15
|
import { buildRegistrationPlan } from "./resolveRegistrationPlan.js";
|
|
16
16
|
import { buildManifestArtifactSources, writeGeneratedFilesAtomically, } from "./writeManifest.js";
|
|
17
17
|
import { buildGroupPlan } from "../groups/resolveGroupPlan.js";
|
|
18
|
-
import { isAppMode, isLibraryMode, resolveManifestExportPath } from "../config/iocMode.js";
|
|
18
|
+
import { isAppMode, isLibraryMode, resolveManifestExportPath, } from "../config/iocMode.js";
|
|
19
19
|
import { loadComposedManifestContractNames } from "./loadComposedManifestContracts.js";
|
|
20
20
|
import { validateGroupBaseTypeAliasKeysAtCodegen } from "./loadComposedManifestGroups.js";
|
|
21
21
|
import { buildComposedRegistrationOverridesFromConfig } from "./buildComposedRegistrationOverrides.js";
|
|
@@ -80,85 +80,90 @@ export const generateManifest = async (overrides) => {
|
|
|
80
80
|
await fs.mkdir(generatedDir, { recursive: true });
|
|
81
81
|
const files = await getDiscoveryTargetFiles(scanDirs, includePatterns, excludePatterns, generatedDir);
|
|
82
82
|
const program = createIocProgramForDiscovery(projectRoot, files);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
program,
|
|
95
|
-
generatedDir,
|
|
96
|
-
scanDirs,
|
|
97
|
-
});
|
|
98
|
-
const demandSupply = analyzeDemandSupply(acceptedFactories, {
|
|
99
|
-
program,
|
|
100
|
-
projectRoot,
|
|
101
|
-
scanDirs,
|
|
102
|
-
generatedDir,
|
|
103
|
-
groupsManifest: groupResult?.manifest,
|
|
104
|
-
});
|
|
105
|
-
const writeOptions = {
|
|
106
|
-
demandSupply,
|
|
107
|
-
registryTypesBuildContext: {
|
|
83
|
+
try {
|
|
84
|
+
const { contractMap, acceptedFactories } = discoverFactories(files, program, projectRoot, factoryExportPrefix, { projectRoot, scanDirs, generatedDir }, config);
|
|
85
|
+
const composedContractNames = config !== undefined && isAppMode(config)
|
|
86
|
+
? await loadComposedManifestContractNames(projectRoot, config.composedManifests)
|
|
87
|
+
: undefined;
|
|
88
|
+
const plans = buildRegistrationPlan(contractMap, config, {
|
|
89
|
+
projectRoot,
|
|
90
|
+
scanDirs,
|
|
91
|
+
composedContractNames,
|
|
92
|
+
});
|
|
93
|
+
const groupResult = buildGroupPlan(config?.groups, plans, {
|
|
108
94
|
program,
|
|
109
95
|
generatedDir,
|
|
110
96
|
scanDirs,
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
{ path: artifactSources.typesPath, contents: artifactSources.typesSource },
|
|
117
|
-
];
|
|
118
|
-
let composedOutPath;
|
|
119
|
-
if (config !== undefined && isAppMode(config)) {
|
|
120
|
-
const configPath = resolveIocConfigPath(resolvedProjectRoot, overrides?.iocConfigPath);
|
|
121
|
-
await validateGroupBaseTypeAliasKeysAtCodegen(resolvedProjectRoot, config, configPath);
|
|
122
|
-
const composedPackages = resolveComposedPackageSpecs(config.composedManifests);
|
|
123
|
-
const composedOverrides = buildComposedRegistrationOverridesFromConfig(config);
|
|
124
|
-
composedOutPath = path.join(generatedDir, "ioc-composed.ts");
|
|
125
|
-
const composedSource = buildComposedManifestSource({
|
|
97
|
+
});
|
|
98
|
+
const demandSupply = analyzeDemandSupply(acceptedFactories, {
|
|
99
|
+
program,
|
|
100
|
+
projectRoot,
|
|
101
|
+
scanDirs,
|
|
126
102
|
generatedDir,
|
|
127
|
-
|
|
128
|
-
overrides: composedOverrides,
|
|
103
|
+
groupsManifest: groupResult?.manifest,
|
|
129
104
|
});
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
105
|
+
const writeOptions = {
|
|
106
|
+
demandSupply,
|
|
107
|
+
registryTypesBuildContext: {
|
|
108
|
+
program,
|
|
109
|
+
generatedDir,
|
|
110
|
+
scanDirs,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const artifactSources = buildManifestArtifactSources(acceptedFactories, plans, groupResult?.manifest, manifestOutPath, packageName, writeOptions);
|
|
114
|
+
const filesToWrite = [
|
|
115
|
+
{ path: manifestOutPath, contents: artifactSources.mainSource },
|
|
116
|
+
{ path: artifactSources.typesPath, contents: artifactSources.typesSource },
|
|
117
|
+
];
|
|
118
|
+
let composedOutPath;
|
|
119
|
+
if (config !== undefined && isAppMode(config)) {
|
|
120
|
+
const configPath = resolveIocConfigPath(resolvedProjectRoot, overrides?.iocConfigPath);
|
|
121
|
+
await validateGroupBaseTypeAliasKeysAtCodegen(resolvedProjectRoot, config, configPath);
|
|
122
|
+
const composedPackages = resolveComposedPackageSpecs(config.composedManifests);
|
|
123
|
+
const composedOverrides = buildComposedRegistrationOverridesFromConfig(config);
|
|
124
|
+
composedOutPath = path.join(generatedDir, "ioc-composed.ts");
|
|
125
|
+
const composedSource = buildComposedManifestSource({
|
|
126
|
+
generatedDir,
|
|
127
|
+
composedPackages,
|
|
128
|
+
overrides: composedOverrides,
|
|
129
|
+
});
|
|
130
|
+
filesToWrite.push({ path: composedOutPath, contents: composedSource });
|
|
138
131
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
formatGeneratedFileWithPrettier(composedOutPath, projectRoot);
|
|
148
|
-
}
|
|
149
|
-
const relManifest = path.relative(projectRoot, manifestOutPath);
|
|
150
|
-
console.log(`Generated ${relManifest} — ${acceptedFactories.length} module factory(ies), ${contractMap.size} contract(s).`);
|
|
151
|
-
if (config !== undefined && isLibraryMode(config)) {
|
|
152
|
-
console.log(`Manifest export path (configure package.json exports): ${resolveManifestExportPath(config)}`);
|
|
153
|
-
}
|
|
154
|
-
if (config !== undefined && isAppMode(config)) {
|
|
155
|
-
console.log(`App mode: composed ${config.composedManifests.length} package manifest(s)`);
|
|
156
|
-
for (const pkg of config.composedManifests) {
|
|
157
|
-
console.log(` - ${pkg} → import from '${pkg}/iocManifest'`);
|
|
132
|
+
try {
|
|
133
|
+
await writeGeneratedFilesAtomically(filesToWrite);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (composedOutPath !== undefined) {
|
|
137
|
+
await removeComposedManifestIfPresent(generatedDir);
|
|
138
|
+
}
|
|
139
|
+
throw error;
|
|
158
140
|
}
|
|
141
|
+
if (config === undefined || isLibraryMode(config)) {
|
|
142
|
+
await removeComposedManifestIfPresent(generatedDir);
|
|
143
|
+
}
|
|
144
|
+
formatGeneratedFileWithPrettier(manifestOutPath, projectRoot);
|
|
145
|
+
formatGeneratedFileWithPrettier(artifactSources.typesPath, projectRoot);
|
|
159
146
|
if (composedOutPath !== undefined) {
|
|
160
|
-
|
|
147
|
+
formatGeneratedFileWithPrettier(composedOutPath, projectRoot);
|
|
148
|
+
}
|
|
149
|
+
const relManifest = path.relative(projectRoot, manifestOutPath);
|
|
150
|
+
console.log(`Generated ${relManifest} — ${acceptedFactories.length} module factory(ies), ${contractMap.size} contract(s).`);
|
|
151
|
+
if (config !== undefined && isLibraryMode(config)) {
|
|
152
|
+
console.log(`Manifest export path (configure package.json exports): ${resolveManifestExportPath(config)}`);
|
|
153
|
+
}
|
|
154
|
+
if (config !== undefined && isAppMode(config)) {
|
|
155
|
+
console.log(`App mode: composed ${config.composedManifests.length} package manifest(s)`);
|
|
156
|
+
for (const pkg of config.composedManifests) {
|
|
157
|
+
console.log(` - ${pkg} → import from '${pkg}/iocManifest'`);
|
|
158
|
+
}
|
|
159
|
+
if (composedOutPath !== undefined) {
|
|
160
|
+
console.log(`Generated ${path.relative(projectRoot, composedOutPath)}`);
|
|
161
|
+
}
|
|
161
162
|
}
|
|
162
163
|
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
logDiscoveryProgramErrorDiagnosticsForFailure(program, projectRoot, files, error);
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
163
168
|
};
|
|
164
169
|
//# sourceMappingURL=generateManifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateManifest.js","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mCAAmC,GACpC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"generateManifest.js","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,18 @@ export declare const getDiscoveryTargetFiles: (scanDirs: ResolvedScanDir[], incl
|
|
|
7
7
|
* discovery targets). Compiler options (paths, module resolution) match your project build.
|
|
8
8
|
*/
|
|
9
9
|
export declare const createIocProgramForDiscovery: (projectRoot: string, rootNames: string[]) => ts.Program;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Formatted TypeScript errors for discovery target files only (not warnings).
|
|
12
|
+
* Returns an empty string when there are no relevant errors.
|
|
13
|
+
*/
|
|
14
|
+
export declare const formatDiscoveryProgramErrorDiagnostics: (program: ts.Program, projectRoot: string, rootNames: readonly string[]) => string;
|
|
15
|
+
/**
|
|
16
|
+
* True when codegen failed in a step where TypeScript program diagnostics are likely
|
|
17
|
+
* the root cause (as opposed to config, duplicate keys, etc.).
|
|
18
|
+
*/
|
|
19
|
+
export declare const isCodegenFailureCausedByTypeScript: (error: unknown) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Logs discovery-scoped TS errors when `error` is type-check related and diagnostics exist.
|
|
22
|
+
*/
|
|
23
|
+
export declare const logDiscoveryProgramErrorDiagnosticsForFailure: (program: ts.Program, projectRoot: string, rootNames: readonly string[], error: unknown) => void;
|
|
11
24
|
//# sourceMappingURL=iocProgramContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iocProgramContext.d.ts","sourceRoot":"","sources":["../../src/generator/iocProgramContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAI5B,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB,GAClC,UAAU,eAAe,EAAE,EAC3B,iBAAiB,MAAM,EAAE,EACzB,iBAAiB,MAAM,EAAE,EACzB,cAAc,MAAM,KACnB,OAAO,CAAC,MAAM,EAAE,CAgBlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,MAAM,EACnB,WAAW,MAAM,EAAE,KAClB,EAAE,CAAC,OAoCL,CAAC;
|
|
1
|
+
{"version":3,"file":"iocProgramContext.d.ts","sourceRoot":"","sources":["../../src/generator/iocProgramContext.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAI5B,6FAA6F;AAC7F,eAAO,MAAM,uBAAuB,GAClC,UAAU,eAAe,EAAE,EAC3B,iBAAiB,MAAM,EAAE,EACzB,iBAAiB,MAAM,EAAE,EACzB,cAAc,MAAM,KACnB,OAAO,CAAC,MAAM,EAAE,CAgBlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,MAAM,EACnB,WAAW,MAAM,EAAE,KAClB,EAAE,CAAC,OAoCL,CAAC;AAqBF;;;GAGG;AACH,eAAO,MAAM,sCAAsC,GACjD,SAAS,EAAE,CAAC,OAAO,EACnB,aAAa,MAAM,EACnB,WAAW,SAAS,MAAM,EAAE,KAC3B,MAgBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,GAC7C,OAAO,OAAO,KACb,OAYF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6CAA6C,GACxD,SAAS,EAAE,CAAC,OAAO,EACnB,aAAa,MAAM,EACnB,WAAW,SAAS,MAAM,EAAE,EAC5B,OAAO,OAAO,KACb,IAiBF,CAAC"}
|
|
@@ -48,7 +48,24 @@ export const createIocProgramForDiscovery = (projectRoot, rootNames) => {
|
|
|
48
48
|
}
|
|
49
49
|
return ts.createProgram({ rootNames, options: parsed.options });
|
|
50
50
|
};
|
|
51
|
-
const
|
|
51
|
+
const collectDiscoveryProgramErrorDiagnostics = (program, rootNames) => {
|
|
52
|
+
const relevantRootFiles = new Set(rootNames.map((fileName) => normalizePath(fileName)));
|
|
53
|
+
return ts.getPreEmitDiagnostics(program).filter((diagnostic) => {
|
|
54
|
+
if (diagnostic.category !== ts.DiagnosticCategory.Error) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
if (diagnostic.file === undefined) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return relevantRootFiles.has(normalizePath(diagnostic.file.fileName));
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Formatted TypeScript errors for discovery target files only (not warnings).
|
|
65
|
+
* Returns an empty string when there are no relevant errors.
|
|
66
|
+
*/
|
|
67
|
+
export const formatDiscoveryProgramErrorDiagnostics = (program, projectRoot, rootNames) => {
|
|
68
|
+
const diagnostics = collectDiscoveryProgramErrorDiagnostics(program, rootNames);
|
|
52
69
|
if (diagnostics.length === 0) {
|
|
53
70
|
return "";
|
|
54
71
|
}
|
|
@@ -59,23 +76,31 @@ const formatDiagnostics = (diagnostics, projectRoot) => {
|
|
|
59
76
|
};
|
|
60
77
|
return ts.formatDiagnosticsWithColorAndContext(diagnostics, formatHost);
|
|
61
78
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return
|
|
69
|
-
}
|
|
70
|
-
|
|
79
|
+
/**
|
|
80
|
+
* True when codegen failed in a step where TypeScript program diagnostics are likely
|
|
81
|
+
* the root cause (as opposed to config, duplicate keys, etc.).
|
|
82
|
+
*/
|
|
83
|
+
export const isCodegenFailureCausedByTypeScript = (error) => {
|
|
84
|
+
if (!(error instanceof Error)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const message = error.message;
|
|
88
|
+
return (message.includes("not in the TypeScript program") ||
|
|
89
|
+
message.includes("cannot type-check") ||
|
|
90
|
+
message.includes("Conflicting types for demanded key") ||
|
|
91
|
+
message.includes("references an unresolvable type in deps"));
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Logs discovery-scoped TS errors when `error` is type-check related and diagnostics exist.
|
|
95
|
+
*/
|
|
96
|
+
export const logDiscoveryProgramErrorDiagnosticsForFailure = (program, projectRoot, rootNames, error) => {
|
|
97
|
+
if (!isCodegenFailureCausedByTypeScript(error)) {
|
|
71
98
|
return;
|
|
72
99
|
}
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const rendered = formatDiagnostics(diagnostics, projectRoot);
|
|
77
|
-
if (rendered.length > 0) {
|
|
78
|
-
console.warn(rendered);
|
|
100
|
+
const rendered = formatDiscoveryProgramErrorDiagnostics(program, projectRoot, rootNames);
|
|
101
|
+
if (rendered.length === 0) {
|
|
102
|
+
return;
|
|
79
103
|
}
|
|
104
|
+
console.error(`[ioc] TypeScript errors in discovery target file(s):\n${rendered}`);
|
|
80
105
|
};
|
|
81
106
|
//# sourceMappingURL=iocProgramContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iocProgramContext.js","sourceRoot":"","sources":["../../src/generator/iocProgramContext.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"iocProgramContext.js","sourceRoot":"","sources":["../../src/generator/iocProgramContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runDiscoveryAnalysis.d.ts","sourceRoot":"","sources":["../../src/inspection/runDiscoveryAnalysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAE5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAY/D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzD,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAU,OAAO;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACvC,KAAG,OAAO,CAAC,2BAA2B,CAmBtC,CAAC;
|
|
1
|
+
{"version":3,"file":"runDiscoveryAnalysis.d.ts","sourceRoot":"","sources":["../../src/inspection/runDiscoveryAnalysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAE5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAY/D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzD,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAU,OAAO;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACvC,KAAG,OAAO,CAAC,2BAA2B,CAmBtC,CAAC;AAuDF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAU,OAAO;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC,2FAA2F;IAC3F,eAAe,CAAC,EAAE,2BAA2B,CAAC;CAC/C,KAAG,OAAO,CAAC,uBAAuB,CAIlC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import path from "node:path";
|
|
|
2
2
|
import { buildRegistrationPlan } from "../generator/resolveRegistrationPlan.js";
|
|
3
3
|
import { resolveIocConfigPath, resolveProjectRootFromIocConfigPath, tryLoadIocConfig, } from "../config/loadIocConfig.js";
|
|
4
4
|
import { discoverFactories } from "../generator/discoverFactories/discoverFactories.js";
|
|
5
|
-
import { createIocProgramForDiscovery, getDiscoveryTargetFiles,
|
|
5
|
+
import { createIocProgramForDiscovery, getDiscoveryTargetFiles, logDiscoveryProgramErrorDiagnosticsForFailure, } from "../generator/iocProgramContext.js";
|
|
6
6
|
import { mergeManifestOptionsWithIocConfig, resolveManifestOptions, } from "../generator/manifestOptions.js";
|
|
7
7
|
export const resolveDiscoveryManifestContext = async (opts) => {
|
|
8
8
|
const searchStart = path.resolve(opts?.searchStartDir ?? opts?.paths?.projectRoot ?? process.cwd());
|
|
@@ -27,15 +27,23 @@ const runDiscoveryFromResolution = async (resolved) => {
|
|
|
27
27
|
const { paths: { projectRoot, scanDirs, generatedDir }, includePatterns, excludePatterns, factoryExportPrefix, } = options;
|
|
28
28
|
const files = await getDiscoveryTargetFiles(scanDirs, includePatterns, excludePatterns, generatedDir);
|
|
29
29
|
const program = createIocProgramForDiscovery(projectRoot, files);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
try {
|
|
31
|
+
const { contractMap, acceptedFactories, discoveryFiles } = discoverFactories(files, program, projectRoot, factoryExportPrefix, { projectRoot, scanDirs, generatedDir }, config ?? undefined, { collectFileRecords: true });
|
|
32
|
+
const registrationPlan = buildRegistrationPlan(contractMap, config, {
|
|
33
|
+
projectRoot,
|
|
34
|
+
scanDirs,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
discoveryFiles,
|
|
38
|
+
contractMap,
|
|
39
|
+
acceptedFactories,
|
|
40
|
+
registrationPlan,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logDiscoveryProgramErrorDiagnosticsForFailure(program, projectRoot, files, error);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
39
47
|
};
|
|
40
48
|
/**
|
|
41
49
|
* Re-runs factory discovery from source (and TypeScript) for inspection / CLI.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runDiscoveryAnalysis.js","sourceRoot":"","sources":["../../src/inspection/runDiscoveryAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,EACL,oBAAoB,EACpB,mCAAmC,EACnC,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"runDiscoveryAnalysis.js","sourceRoot":"","sources":["../../src/inspection/runDiscoveryAnalysis.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ioc-manifest",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Build-time factory discovery and codegen: generates a typed Awilix (PROXY) registration manifest from TypeScript sources with ioc.config as the single policy surface.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|