ioc-manifest 2.4.0 → 2.6.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/dist/config/iocConfig.d.ts +1 -2
- package/dist/config/iocConfig.d.ts.map +1 -1
- package/dist/config/iocConfig.js +9 -25
- package/dist/config/iocConfig.js.map +1 -1
- package/dist/config/iocConfigSchema.d.ts +70 -0
- package/dist/config/iocConfigSchema.d.ts.map +1 -0
- package/dist/config/iocConfigSchema.js +403 -0
- package/dist/config/iocConfigSchema.js.map +1 -0
- package/dist/config/loadIocConfig.d.ts +1 -1
- package/dist/config/loadIocConfig.d.ts.map +1 -1
- package/dist/config/loadIocConfig.js +24 -277
- package/dist/config/loadIocConfig.js.map +1 -1
- package/dist/config/parseDiscoveryScanDirs.d.ts +1 -0
- package/dist/config/parseDiscoveryScanDirs.d.ts.map +1 -1
- package/dist/config/parseDiscoveryScanDirs.js +16 -53
- package/dist/config/parseDiscoveryScanDirs.js.map +1 -1
- package/dist/generator/analyzeDemandSupply/index.js +1 -1
- package/dist/generator/analyzeDemandSupply/index.js.map +1 -1
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.d.ts.map +1 -1
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.js +1 -6
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.js.map +1 -1
- package/dist/generator/analyzeDemandSupply/types.d.ts +2 -22
- package/dist/generator/analyzeDemandSupply/types.d.ts.map +1 -1
- package/dist/generator/discoverFactories/scanFactoryFile.js +2 -2
- package/dist/generator/discoverFactories/scanFactoryFile.js.map +1 -1
- package/dist/generator/emit/emitTypeReference.d.ts.map +1 -0
- package/dist/generator/{analyzeDemandSupply → emit}/emitTypeReference.js +5 -22
- package/dist/generator/emit/emitTypeReference.js.map +1 -0
- package/dist/generator/emit/index.d.ts +11 -0
- package/dist/generator/emit/index.d.ts.map +1 -0
- package/dist/generator/emit/index.js +10 -0
- package/dist/generator/emit/index.js.map +1 -0
- package/dist/generator/{recoverPreferredModuleSpecifier.d.ts → emit/recoverPreferredModuleSpecifier.d.ts} +11 -3
- package/dist/generator/emit/recoverPreferredModuleSpecifier.d.ts.map +1 -0
- package/dist/generator/{recoverPreferredModuleSpecifier.js → emit/recoverPreferredModuleSpecifier.js} +5 -3
- package/dist/generator/emit/recoverPreferredModuleSpecifier.js.map +1 -0
- package/dist/generator/emit/types.d.ts +24 -0
- package/dist/generator/emit/types.d.ts.map +1 -0
- package/dist/generator/emit/types.js +2 -0
- package/dist/generator/emit/types.js.map +1 -0
- package/dist/generator/generateManifest.d.ts.map +1 -1
- package/dist/generator/generateManifest.js +19 -2
- package/dist/generator/generateManifest.js.map +1 -1
- package/dist/generator/generatedRegistrySpecifier.d.ts +24 -0
- package/dist/generator/generatedRegistrySpecifier.d.ts.map +1 -0
- package/dist/generator/generatedRegistrySpecifier.js +61 -0
- package/dist/generator/generatedRegistrySpecifier.js.map +1 -0
- package/dist/generator/validateGeneratedReferencesAtCodegen.d.ts +14 -0
- package/dist/generator/validateGeneratedReferencesAtCodegen.d.ts.map +1 -0
- package/dist/generator/validateGeneratedReferencesAtCodegen.js +79 -0
- package/dist/generator/validateGeneratedReferencesAtCodegen.js.map +1 -0
- package/dist/generator/validateNonEmptyGroupsAtCodegen.d.ts +27 -0
- package/dist/generator/validateNonEmptyGroupsAtCodegen.d.ts.map +1 -0
- package/dist/generator/validateNonEmptyGroupsAtCodegen.js +43 -0
- package/dist/generator/validateNonEmptyGroupsAtCodegen.js.map +1 -0
- package/dist/generator/warnUnusableFactoryExports.d.ts +20 -0
- package/dist/generator/warnUnusableFactoryExports.d.ts.map +1 -0
- package/dist/generator/warnUnusableFactoryExports.js +61 -0
- package/dist/generator/warnUnusableFactoryExports.js.map +1 -0
- package/dist/groups/boundedGroupCollectionType.js +1 -1
- package/dist/groups/boundedGroupCollectionType.js.map +1 -1
- package/dist/groups/resolveGroupPlan.d.ts +6 -0
- package/dist/groups/resolveGroupPlan.d.ts.map +1 -1
- package/dist/groups/resolveGroupPlan.js +7 -1
- package/dist/groups/resolveGroupPlan.js.map +1 -1
- package/dist/index.d.ts +13 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -14
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/generator/analyzeDemandSupply/emitTypeReference.d.ts.map +0 -1
- package/dist/generator/analyzeDemandSupply/emitTypeReference.js.map +0 -1
- package/dist/generator/recoverPreferredModuleSpecifier.d.ts.map +0 -1
- package/dist/generator/recoverPreferredModuleSpecifier.js.map +0 -1
- /package/dist/generator/{analyzeDemandSupply → emit}/emitTypeReference.d.ts +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { IocGroupsConfig } from "../groups/resolveGroupPlan.js";
|
|
2
|
+
export { IOC_CONTRACT_CONFIG_KEY } from "./iocConfigSchema.js";
|
|
2
3
|
export type IocLifetime = "singleton" | "scoped" | "transient";
|
|
3
|
-
/** Reserved key under `registrations[ContractName]` for contract-level metadata (not an implementation). */
|
|
4
|
-
export declare const IOC_CONTRACT_CONFIG_KEY: "$contract";
|
|
5
4
|
/**
|
|
6
5
|
* Contract-level options under `registrations[ContractName][IOC_CONTRACT_CONFIG_KEY]`.
|
|
7
6
|
* Separate from per-implementation {@link IocOverride} entries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iocConfig.d.ts","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"iocConfig.d.ts","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B;;iFAE6E;IAC7E,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,WAAW,GAAG,mBAAmB,CAClC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,EACd,cAAc,MAAM,KACnB,mBAiBF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,aAAa,2BAA2B,GAAG,SAAS,EACpD,eAAe,MAAM,KACpB,mBAYF,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,2BAA2B,GACtC,OAAO,WAAW,GAAG,mBAAmB,KACvC,KAAK,IAAI,WAcX,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,aAAa,2BAA2B,GAAG,SAAS,EACpD,oBAAoB,MAAM,KACzB,WAAW,GAAG,SAYhB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE;QACT,QAAQ,EAAE,oBAAoB,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,6FAA6F;QAC7F,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC5D;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,KAAG,SAAmB,CAAC"}
|
package/dist/config/iocConfig.js
CHANGED
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
import { contractMetadataSchema, formatContractMetadataIssues, IOC_CONTRACT_CONFIG_KEY, } from "./iocConfigSchema.js";
|
|
2
|
+
export { IOC_CONTRACT_CONFIG_KEY } from "./iocConfigSchema.js";
|
|
3
3
|
export const parseContractLevelConfig = (entry, pathForError) => {
|
|
4
4
|
if (entry === undefined) {
|
|
5
5
|
return {};
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const rec = entry;
|
|
11
|
-
for (const k of Object.keys(rec)) {
|
|
12
|
-
if (k !== "accessKey" && k !== "allowDivergentName") {
|
|
13
|
-
throw new Error(`[ioc-config] ${pathForError} has unknown property ${JSON.stringify(k)} (only accessKey and allowDivergentName are allowed)`);
|
|
14
|
-
}
|
|
7
|
+
const parsed = contractMetadataSchema.safeParse(entry);
|
|
8
|
+
if (!parsed.success) {
|
|
9
|
+
throw new Error(formatContractMetadataIssues(parsed.error, pathForError));
|
|
15
10
|
}
|
|
16
11
|
const out = {};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (typeof accessKey !== "string" || accessKey.length === 0) {
|
|
20
|
-
throw new Error(`[ioc-config] ${pathForError}.accessKey must be a non-empty string when set`);
|
|
21
|
-
}
|
|
22
|
-
if (accessKey === IOC_CONTRACT_CONFIG_KEY) {
|
|
23
|
-
throw new Error(`[ioc-config] ${pathForError}.accessKey cannot be ${JSON.stringify(IOC_CONTRACT_CONFIG_KEY)} (reserved)`);
|
|
24
|
-
}
|
|
25
|
-
out.accessKey = accessKey;
|
|
12
|
+
if (parsed.data.accessKey !== undefined) {
|
|
13
|
+
out.accessKey = parsed.data.accessKey;
|
|
26
14
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (typeof allowDivergentName !== "boolean") {
|
|
30
|
-
throw new Error(`[ioc-config] ${pathForError}.allowDivergentName must be a boolean when set`);
|
|
31
|
-
}
|
|
32
|
-
out.allowDivergentName = allowDivergentName;
|
|
15
|
+
if (parsed.data.allowDivergentName !== undefined) {
|
|
16
|
+
out.allowDivergentName = parsed.data.allowDivergentName;
|
|
33
17
|
}
|
|
34
18
|
return out;
|
|
35
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iocConfig.js","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iocConfig.js","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The single validation artifact for `ioc.config`: a zod schema with `.strict()` at
|
|
3
|
+
* every object level, so unknown keys are rejected BY CONSTRUCTION — a config key can no longer be
|
|
4
|
+
* silently ignored (or wrongly rejected) by omission from a hand-maintained whitelist, the failure
|
|
5
|
+
* mode behind the `baseTypeArg` (2.2.1), `allowLifetimeInversion` (2.3.6), and `allowEmpty` bugs.
|
|
6
|
+
* Shape checks live on the same schema nodes as the key sets, and the issue formatters below render
|
|
7
|
+
* the same `[ioc-config] <label> <key path> <expected shape>` messages the previous hand validators
|
|
8
|
+
* produced.
|
|
9
|
+
*
|
|
10
|
+
* Cross-field rules that need no I/O (app/library-mode exclusivity, `source` membership, duplicate
|
|
11
|
+
* detection) run in the schema's refinements. Checks that read the filesystem (self-composition via
|
|
12
|
+
* `package.json`) remain in `loadIocConfig`.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
/** Reserved key under `registrations[ContractName]` for contract-level metadata (not an implementation). */
|
|
16
|
+
export declare const IOC_CONTRACT_CONFIG_KEY: "$contract";
|
|
17
|
+
type RelativeIssue = {
|
|
18
|
+
path: (string | number)[];
|
|
19
|
+
message: string;
|
|
20
|
+
standalone?: boolean;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Issues for an authored `discovery.scanDirs` value, with paths relative to the value itself.
|
|
24
|
+
* Shared by the config schema (via `ctx.addIssue`, which prefixes `discovery.scanDirs`) and by
|
|
25
|
+
* {@link import("./parseDiscoveryScanDirs.js").parseDiscoveryScanDirs} for standalone use.
|
|
26
|
+
*/
|
|
27
|
+
export declare const collectDiscoveryScanDirsIssues: (raw: unknown) => RelativeIssue[];
|
|
28
|
+
export declare const contractMetadataSchema: z.ZodObject<{
|
|
29
|
+
accessKey: z.ZodOptional<z.ZodString>;
|
|
30
|
+
allowDivergentName: z.ZodOptional<z.ZodBoolean>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
export declare const GROUP_ENTRY_ALLOWED_KEYS: readonly ["kind", "baseType", "baseTypeArg", "allowEmpty"];
|
|
33
|
+
export declare const iocConfigSchema: z.ZodObject<{
|
|
34
|
+
discovery: z.ZodObject<{
|
|
35
|
+
scanDirs: z.ZodUnknown;
|
|
36
|
+
includes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
37
|
+
excludes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
38
|
+
factoryPrefix: z.ZodOptional<z.ZodString>;
|
|
39
|
+
generatedDir: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, z.core.$strict>;
|
|
41
|
+
composedManifests: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
42
|
+
manifestExportPath: z.ZodOptional<z.ZodString>;
|
|
43
|
+
packageName: z.ZodOptional<z.ZodString>;
|
|
44
|
+
registrations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
45
|
+
groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
46
|
+
kind: z.ZodEnum<{
|
|
47
|
+
object: "object";
|
|
48
|
+
collection: "collection";
|
|
49
|
+
}>;
|
|
50
|
+
baseType: z.ZodString;
|
|
51
|
+
baseTypeArg: z.ZodOptional<z.ZodString>;
|
|
52
|
+
allowEmpty: z.ZodOptional<z.ZodBoolean>;
|
|
53
|
+
}, z.core.$strict>>>;
|
|
54
|
+
groupBaseTypeAliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
|
|
55
|
+
lifetimeMarkers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
56
|
+
singleton: "singleton";
|
|
57
|
+
scoped: "scoped";
|
|
58
|
+
transient: "transient";
|
|
59
|
+
}>>>;
|
|
60
|
+
scopeProvided: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
61
|
+
}, z.core.$strict>;
|
|
62
|
+
export declare const formatIocConfigIssues: (error: z.ZodError, sourceLabel: string) => string;
|
|
63
|
+
/**
|
|
64
|
+
* Formats issues from {@link contractMetadataSchema} against a caller-supplied path label
|
|
65
|
+
* (`registrations["Contract"]["$contract"]`), preserving the messages of the previous
|
|
66
|
+
* hand-rolled `parseContractLevelConfig`.
|
|
67
|
+
*/
|
|
68
|
+
export declare const formatContractMetadataIssues: (error: z.ZodError, pathForError: string) => string;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=iocConfigSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iocConfigSchema.d.ts","sourceRoot":"","sources":["../../src/config/iocConfigSchema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,EAAG,WAAoB,CAAC;AAiC5D,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAAI,KAAK,OAAO,KAAG,aAAa,EAwD1E,CAAC;AAqDF,eAAO,MAAM,sBAAsB;;;kBASxB,CAAC;AA6DZ,eAAO,MAAM,wBAAwB,4DAK3B,CAAC;AA2EX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgFxB,CAAC;AA4EL,eAAO,MAAM,qBAAqB,GAChC,OAAO,CAAC,CAAC,QAAQ,EACjB,aAAa,MAAM,KAClB,MACmF,CAAC;AAEvF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,OAAO,CAAC,CAAC,QAAQ,EACjB,cAAc,MAAM,KACnB,MAeY,CAAC"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview The single validation artifact for `ioc.config`: a zod schema with `.strict()` at
|
|
3
|
+
* every object level, so unknown keys are rejected BY CONSTRUCTION — a config key can no longer be
|
|
4
|
+
* silently ignored (or wrongly rejected) by omission from a hand-maintained whitelist, the failure
|
|
5
|
+
* mode behind the `baseTypeArg` (2.2.1), `allowLifetimeInversion` (2.3.6), and `allowEmpty` bugs.
|
|
6
|
+
* Shape checks live on the same schema nodes as the key sets, and the issue formatters below render
|
|
7
|
+
* the same `[ioc-config] <label> <key path> <expected shape>` messages the previous hand validators
|
|
8
|
+
* produced.
|
|
9
|
+
*
|
|
10
|
+
* Cross-field rules that need no I/O (app/library-mode exclusivity, `source` membership, duplicate
|
|
11
|
+
* detection) run in the schema's refinements. Checks that read the filesystem (self-composition via
|
|
12
|
+
* `package.json`) remain in `loadIocConfig`.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
/** Reserved key under `registrations[ContractName]` for contract-level metadata (not an implementation). */
|
|
16
|
+
export const IOC_CONTRACT_CONFIG_KEY = "$contract";
|
|
17
|
+
const nonEmptyString = (message) => z.string({ error: message }).min(1, { error: message });
|
|
18
|
+
const lifetime = (message) => z.enum(["singleton", "scoped", "transient"], { error: message });
|
|
19
|
+
/** Issue params marking a message as complete after the source label (no key-path prefix). */
|
|
20
|
+
const STANDALONE = { standalone: true };
|
|
21
|
+
const isStandaloneIssue = (issue) => issue.code === "custom" &&
|
|
22
|
+
issue.params?.standalone === true;
|
|
23
|
+
// ---------------------------------------------------------------------------------------------
|
|
24
|
+
// discovery.scanDirs
|
|
25
|
+
// ---------------------------------------------------------------------------------------------
|
|
26
|
+
const REMOVED_SCAN_DIR_KEYS = {
|
|
27
|
+
importPrefix: "discovery.scanDirs[].importPrefix was removed in v2; use composedManifests instead.",
|
|
28
|
+
importMode: "discovery.scanDirs[].importMode was removed in v2; use composedManifests instead.",
|
|
29
|
+
};
|
|
30
|
+
const scanDirSpecSchema = z
|
|
31
|
+
.object({
|
|
32
|
+
path: nonEmptyString("must be a non-empty string"),
|
|
33
|
+
scope: lifetime("must be singleton | scoped | transient when set").optional(),
|
|
34
|
+
})
|
|
35
|
+
.strict();
|
|
36
|
+
/**
|
|
37
|
+
* Issues for an authored `discovery.scanDirs` value, with paths relative to the value itself.
|
|
38
|
+
* Shared by the config schema (via `ctx.addIssue`, which prefixes `discovery.scanDirs`) and by
|
|
39
|
+
* {@link import("./parseDiscoveryScanDirs.js").parseDiscoveryScanDirs} for standalone use.
|
|
40
|
+
*/
|
|
41
|
+
export const collectDiscoveryScanDirsIssues = (raw) => {
|
|
42
|
+
if (typeof raw === "string") {
|
|
43
|
+
return raw.length === 0
|
|
44
|
+
? [{ path: [], message: "must be a non-empty string when a string is used" }]
|
|
45
|
+
: [];
|
|
46
|
+
}
|
|
47
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
48
|
+
return [
|
|
49
|
+
{ path: [], message: "must be a non-empty string, string[], or object[]" },
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
const issues = [];
|
|
53
|
+
for (let i = 0; i < raw.length; i += 1) {
|
|
54
|
+
const el = raw[i];
|
|
55
|
+
if (typeof el === "string") {
|
|
56
|
+
if (el.length === 0) {
|
|
57
|
+
issues.push({ path: [i], message: "must be a non-empty string" });
|
|
58
|
+
}
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (typeof el !== "object" || el === null || Array.isArray(el)) {
|
|
62
|
+
issues.push({ path: [i], message: "must be a string or an object with path" });
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const removedKey = Object.keys(el).find((k) => REMOVED_SCAN_DIR_KEYS[k] !== undefined);
|
|
66
|
+
if (removedKey !== undefined) {
|
|
67
|
+
issues.push({
|
|
68
|
+
path: [],
|
|
69
|
+
message: REMOVED_SCAN_DIR_KEYS[removedKey],
|
|
70
|
+
standalone: true,
|
|
71
|
+
});
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const parsed = scanDirSpecSchema.safeParse(el);
|
|
75
|
+
if (!parsed.success) {
|
|
76
|
+
for (const issue of parsed.error.issues) {
|
|
77
|
+
if (issue.code === "unrecognized_keys") {
|
|
78
|
+
for (const key of issue.keys) {
|
|
79
|
+
issues.push({
|
|
80
|
+
path: [i],
|
|
81
|
+
message: `has unknown property ${JSON.stringify(key)}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
issues.push({ path: [i, ...issue.path], message: issue.message });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return issues;
|
|
91
|
+
};
|
|
92
|
+
const scanDirsSchema = z.unknown().superRefine((raw, ctx) => {
|
|
93
|
+
for (const issue of collectDiscoveryScanDirsIssues(raw)) {
|
|
94
|
+
ctx.addIssue({
|
|
95
|
+
code: "custom",
|
|
96
|
+
message: issue.message,
|
|
97
|
+
path: issue.path,
|
|
98
|
+
...(issue.standalone === true ? { params: STANDALONE } : {}),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
// ---------------------------------------------------------------------------------------------
|
|
103
|
+
// discovery
|
|
104
|
+
// ---------------------------------------------------------------------------------------------
|
|
105
|
+
const stringArray = () => z.array(z.string({ error: "must be a string" }), {
|
|
106
|
+
error: `must be string[] when set`,
|
|
107
|
+
});
|
|
108
|
+
const discoverySchema = z
|
|
109
|
+
.object({
|
|
110
|
+
scanDirs: scanDirsSchema,
|
|
111
|
+
includes: stringArray().optional(),
|
|
112
|
+
excludes: stringArray().optional(),
|
|
113
|
+
factoryPrefix: nonEmptyString("must be a non-empty string when set").optional(),
|
|
114
|
+
generatedDir: nonEmptyString("must be a non-empty string when set").optional(),
|
|
115
|
+
}, { error: "is missing discovery" })
|
|
116
|
+
.strict();
|
|
117
|
+
// ---------------------------------------------------------------------------------------------
|
|
118
|
+
// registrations
|
|
119
|
+
// ---------------------------------------------------------------------------------------------
|
|
120
|
+
const implOverrideSchema = z
|
|
121
|
+
.object({
|
|
122
|
+
name: nonEmptyString("must be a non-empty string when set").optional(),
|
|
123
|
+
lifetime: lifetime("must be singleton | scoped | transient when set").optional(),
|
|
124
|
+
default: z.boolean({ error: "must be a boolean when set" }).optional(),
|
|
125
|
+
source: nonEmptyString("must be a non-empty string when set").optional(),
|
|
126
|
+
allowLifetimeInversion: z
|
|
127
|
+
.union([z.boolean(), z.array(nonEmptyString("must be a non-empty string"))], {
|
|
128
|
+
error: "must be a boolean or a non-empty string[] when set",
|
|
129
|
+
})
|
|
130
|
+
.optional(),
|
|
131
|
+
})
|
|
132
|
+
.strict();
|
|
133
|
+
export const contractMetadataSchema = z
|
|
134
|
+
.object({
|
|
135
|
+
accessKey: nonEmptyString("must be a non-empty string when set")
|
|
136
|
+
.refine((key) => key !== IOC_CONTRACT_CONFIG_KEY, {
|
|
137
|
+
error: `cannot be ${JSON.stringify(IOC_CONTRACT_CONFIG_KEY)} (reserved)`,
|
|
138
|
+
})
|
|
139
|
+
.optional(),
|
|
140
|
+
allowDivergentName: z.boolean({ error: "must be a boolean when set" }).optional(),
|
|
141
|
+
})
|
|
142
|
+
.strict();
|
|
143
|
+
const CONTRACT_METADATA_UNKNOWN_KEY_SUFFIX = " (only accessKey and allowDivergentName are allowed)";
|
|
144
|
+
const registrationsSchema = z
|
|
145
|
+
.record(z.string(), z.record(z.string(), z.unknown(), { error: "must be an object" }), { error: "must be an object" })
|
|
146
|
+
.superRefine((registrations, ctx) => {
|
|
147
|
+
for (const [contractName, perImplementation] of Object.entries(registrations)) {
|
|
148
|
+
for (const [implementationName, override] of Object.entries(perImplementation)) {
|
|
149
|
+
const entryPath = [contractName, implementationName];
|
|
150
|
+
if (typeof override !== "object" ||
|
|
151
|
+
override === null ||
|
|
152
|
+
Array.isArray(override)) {
|
|
153
|
+
ctx.addIssue({ code: "custom", message: "must be an object", path: entryPath });
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const entrySchema = implementationName === IOC_CONTRACT_CONFIG_KEY
|
|
157
|
+
? contractMetadataSchema
|
|
158
|
+
: implOverrideSchema;
|
|
159
|
+
const parsed = entrySchema.safeParse(override);
|
|
160
|
+
if (parsed.success) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
for (const issue of parsed.error.issues) {
|
|
164
|
+
if (issue.code === "unrecognized_keys") {
|
|
165
|
+
const suffix = implementationName === IOC_CONTRACT_CONFIG_KEY
|
|
166
|
+
? CONTRACT_METADATA_UNKNOWN_KEY_SUFFIX
|
|
167
|
+
: "";
|
|
168
|
+
for (const key of issue.keys) {
|
|
169
|
+
ctx.addIssue({
|
|
170
|
+
code: "custom",
|
|
171
|
+
message: `has unknown property ${JSON.stringify(key)}${suffix}`,
|
|
172
|
+
path: entryPath,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
ctx.addIssue({
|
|
178
|
+
code: "custom",
|
|
179
|
+
message: issue.message,
|
|
180
|
+
path: [...entryPath, ...issue.path],
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
// ---------------------------------------------------------------------------------------------
|
|
187
|
+
// groups / groupBaseTypeAliases / lifetimeMarkers / scopeProvided / composedManifests
|
|
188
|
+
// ---------------------------------------------------------------------------------------------
|
|
189
|
+
export const GROUP_ENTRY_ALLOWED_KEYS = [
|
|
190
|
+
"kind",
|
|
191
|
+
"baseType",
|
|
192
|
+
"baseTypeArg",
|
|
193
|
+
"allowEmpty",
|
|
194
|
+
];
|
|
195
|
+
const groupEntrySchema = z
|
|
196
|
+
.object({
|
|
197
|
+
kind: z.enum(["collection", "object"], {
|
|
198
|
+
error: `must be "collection" or "object"`,
|
|
199
|
+
}),
|
|
200
|
+
baseType: nonEmptyString("must be a non-empty string"),
|
|
201
|
+
baseTypeArg: nonEmptyString("must be a non-empty string when set").optional(),
|
|
202
|
+
allowEmpty: z.boolean({ error: "must be a boolean when set" }).optional(),
|
|
203
|
+
})
|
|
204
|
+
.strict();
|
|
205
|
+
const groupsSchema = z.record(z.string(), groupEntrySchema, {
|
|
206
|
+
error: "must be an object",
|
|
207
|
+
});
|
|
208
|
+
const groupBaseTypeAliasesSchema = z.record(z.string(), z
|
|
209
|
+
.array(nonEmptyString("must be a non-empty string"), {
|
|
210
|
+
error: "must be a string array",
|
|
211
|
+
})
|
|
212
|
+
.min(2, { error: "must contain at least 2 canonical identifier strings" }), { error: "must be an object when set" });
|
|
213
|
+
const lifetimeMarkersSchema = z.record(z.string({ error: "keys must be non-empty strings" }).min(1, {
|
|
214
|
+
error: "keys must be non-empty strings",
|
|
215
|
+
}), lifetime("must be singleton | scoped | transient"), { error: "must be an object when set" });
|
|
216
|
+
const scopeProvidedSchema = z
|
|
217
|
+
.array(nonEmptyString("must be a non-empty string"), {
|
|
218
|
+
error: "must be an array when set",
|
|
219
|
+
})
|
|
220
|
+
.superRefine((keys, ctx) => {
|
|
221
|
+
const seen = new Set();
|
|
222
|
+
for (const key of keys) {
|
|
223
|
+
if (seen.has(key)) {
|
|
224
|
+
ctx.addIssue({
|
|
225
|
+
code: "custom",
|
|
226
|
+
message: `contains duplicate entry ${JSON.stringify(key)}`,
|
|
227
|
+
path: [],
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
seen.add(key);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
const composedManifestsSchema = z
|
|
234
|
+
.array(z.string({ error: "must be a string" }), {
|
|
235
|
+
error: "must be string[] when set",
|
|
236
|
+
})
|
|
237
|
+
.superRefine((packages, ctx) => {
|
|
238
|
+
const seen = new Set();
|
|
239
|
+
for (const pkg of packages) {
|
|
240
|
+
if (seen.has(pkg)) {
|
|
241
|
+
ctx.addIssue({
|
|
242
|
+
code: "custom",
|
|
243
|
+
message: `contains duplicate entry ${JSON.stringify(pkg)}`,
|
|
244
|
+
path: [],
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
seen.add(pkg);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
// ---------------------------------------------------------------------------------------------
|
|
251
|
+
// top level
|
|
252
|
+
// ---------------------------------------------------------------------------------------------
|
|
253
|
+
export const iocConfigSchema = z
|
|
254
|
+
.object({
|
|
255
|
+
discovery: discoverySchema,
|
|
256
|
+
composedManifests: composedManifestsSchema.optional(),
|
|
257
|
+
manifestExportPath: nonEmptyString("must be a non-empty string when set").optional(),
|
|
258
|
+
packageName: nonEmptyString("must be a non-empty string when set").optional(),
|
|
259
|
+
registrations: registrationsSchema.optional(),
|
|
260
|
+
groups: groupsSchema.optional(),
|
|
261
|
+
groupBaseTypeAliases: groupBaseTypeAliasesSchema.optional(),
|
|
262
|
+
lifetimeMarkers: lifetimeMarkersSchema.optional(),
|
|
263
|
+
scopeProvided: scopeProvidedSchema.optional(),
|
|
264
|
+
})
|
|
265
|
+
.strict()
|
|
266
|
+
.superRefine((config, ctx) => {
|
|
267
|
+
const composedManifests = config.composedManifests;
|
|
268
|
+
const inAppMode = composedManifests !== undefined && composedManifests.length > 0;
|
|
269
|
+
const composedSet = new Set(composedManifests ?? []);
|
|
270
|
+
if (inAppMode && config.manifestExportPath !== undefined) {
|
|
271
|
+
ctx.addIssue({
|
|
272
|
+
code: "custom",
|
|
273
|
+
message: "is only valid in library mode; remove it or remove composedManifests for app mode",
|
|
274
|
+
path: ["manifestExportPath"],
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
if (config.groupBaseTypeAliases !== undefined && !inAppMode) {
|
|
278
|
+
ctx.addIssue({
|
|
279
|
+
code: "custom",
|
|
280
|
+
message: "is only valid in app mode (when composedManifests is set)",
|
|
281
|
+
path: ["groupBaseTypeAliases"],
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
if (config.registrations !== undefined) {
|
|
285
|
+
for (const [contractName, perImplementation] of Object.entries(config.registrations)) {
|
|
286
|
+
for (const [implementationName, override] of Object.entries(perImplementation)) {
|
|
287
|
+
if (implementationName === IOC_CONTRACT_CONFIG_KEY) {
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
if (typeof override !== "object" ||
|
|
291
|
+
override === null ||
|
|
292
|
+
!("source" in override)) {
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const sourcePath = [
|
|
296
|
+
"registrations",
|
|
297
|
+
contractName,
|
|
298
|
+
implementationName,
|
|
299
|
+
"source",
|
|
300
|
+
];
|
|
301
|
+
if (!inAppMode) {
|
|
302
|
+
ctx.addIssue({
|
|
303
|
+
code: "custom",
|
|
304
|
+
message: "is only valid when composedManifests is set (app mode)",
|
|
305
|
+
path: sourcePath,
|
|
306
|
+
});
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
const source = override.source;
|
|
310
|
+
if (typeof source !== "string" || source === "local") {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
if (!composedSet.has(source)) {
|
|
314
|
+
ctx.addIssue({
|
|
315
|
+
code: "custom",
|
|
316
|
+
message: `references ${JSON.stringify(source)}, which is not listed in composedManifests`,
|
|
317
|
+
path: sourcePath,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
// ---------------------------------------------------------------------------------------------
|
|
325
|
+
// issue formatting
|
|
326
|
+
// ---------------------------------------------------------------------------------------------
|
|
327
|
+
/**
|
|
328
|
+
* Renders an issue path in the house formats of the previous hand validators:
|
|
329
|
+
* `registrations["Contract"]["impl"].lifetime`, `groups."name".baseTypeArg`,
|
|
330
|
+
* `lifetimeMarkers."IScoped"`, `discovery.scanDirs[0].scope`, `scopeProvided[1]`.
|
|
331
|
+
*/
|
|
332
|
+
const renderConfigPath = (path) => {
|
|
333
|
+
const segments = path.filter((seg) => typeof seg !== "symbol");
|
|
334
|
+
const first = segments[0];
|
|
335
|
+
let out = "";
|
|
336
|
+
for (let i = 0; i < segments.length; i += 1) {
|
|
337
|
+
const seg = segments[i];
|
|
338
|
+
if (typeof seg === "number") {
|
|
339
|
+
out += `[${seg}]`;
|
|
340
|
+
}
|
|
341
|
+
else if (i === 0) {
|
|
342
|
+
out += seg;
|
|
343
|
+
}
|
|
344
|
+
else if (first === "registrations" && i <= 2) {
|
|
345
|
+
out += `[${JSON.stringify(seg)}]`;
|
|
346
|
+
}
|
|
347
|
+
else if ((first === "groups" ||
|
|
348
|
+
first === "lifetimeMarkers" ||
|
|
349
|
+
first === "groupBaseTypeAliases") &&
|
|
350
|
+
i === 1) {
|
|
351
|
+
out += `.${JSON.stringify(seg)}`;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
out += `.${seg}`;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return out;
|
|
358
|
+
};
|
|
359
|
+
const GROUP_ENTRY_UNKNOWN_KEY_SUFFIX = ` (only ${GROUP_ENTRY_ALLOWED_KEYS.slice(0, -1).join(", ")} and ${GROUP_ENTRY_ALLOWED_KEYS.at(-1)} are allowed)`;
|
|
360
|
+
const formatIocConfigIssue = (issue, sourceLabel) => {
|
|
361
|
+
if (issue.code === "unrecognized_keys") {
|
|
362
|
+
return issue.keys.map((key) => {
|
|
363
|
+
if (issue.path.length === 1 &&
|
|
364
|
+
issue.path[0] === "discovery" &&
|
|
365
|
+
key === "workspacePackageImportBases") {
|
|
366
|
+
return `[ioc-config] ${sourceLabel} discovery.workspacePackageImportBases was removed in v2; use composedManifests instead.`;
|
|
367
|
+
}
|
|
368
|
+
const suffix = issue.path.length === 2 && issue.path[0] === "groups"
|
|
369
|
+
? GROUP_ENTRY_UNKNOWN_KEY_SUFFIX
|
|
370
|
+
: "";
|
|
371
|
+
const prefix = issue.path.length === 0 ? "" : `${renderConfigPath(issue.path)} `;
|
|
372
|
+
return `[ioc-config] ${sourceLabel} ${prefix}has unknown property ${JSON.stringify(key)}${suffix}`;
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
if (isStandaloneIssue(issue) || issue.message === "is missing discovery") {
|
|
376
|
+
return [`[ioc-config] ${sourceLabel} ${issue.message}`];
|
|
377
|
+
}
|
|
378
|
+
const rendered = renderConfigPath(issue.path);
|
|
379
|
+
return [
|
|
380
|
+
rendered.length === 0
|
|
381
|
+
? `[ioc-config] ${sourceLabel} ${issue.message}`
|
|
382
|
+
: `[ioc-config] ${sourceLabel} ${rendered} ${issue.message}`,
|
|
383
|
+
];
|
|
384
|
+
};
|
|
385
|
+
export const formatIocConfigIssues = (error, sourceLabel) => error.issues.flatMap((issue) => formatIocConfigIssue(issue, sourceLabel)).join("\n");
|
|
386
|
+
/**
|
|
387
|
+
* Formats issues from {@link contractMetadataSchema} against a caller-supplied path label
|
|
388
|
+
* (`registrations["Contract"]["$contract"]`), preserving the messages of the previous
|
|
389
|
+
* hand-rolled `parseContractLevelConfig`.
|
|
390
|
+
*/
|
|
391
|
+
export const formatContractMetadataIssues = (error, pathForError) => error.issues
|
|
392
|
+
.flatMap((issue) => {
|
|
393
|
+
if (issue.code === "unrecognized_keys") {
|
|
394
|
+
return issue.keys.map((key) => `[ioc-config] ${pathForError} has unknown property ${JSON.stringify(key)}${CONTRACT_METADATA_UNKNOWN_KEY_SUFFIX}`);
|
|
395
|
+
}
|
|
396
|
+
if (issue.code === "invalid_type" && issue.path.length === 0) {
|
|
397
|
+
return [`[ioc-config] ${pathForError} must be an object`];
|
|
398
|
+
}
|
|
399
|
+
const rel = issue.path.length === 0 ? "" : `.${issue.path.join(".")}`;
|
|
400
|
+
return [`[ioc-config] ${pathForError}${rel} ${issue.message}`];
|
|
401
|
+
})
|
|
402
|
+
.join("\n");
|
|
403
|
+
//# sourceMappingURL=iocConfigSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iocConfigSchema.js","sourceRoot":"","sources":["../../src/config/iocConfigSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { IocConfig } from "./iocConfig.js";
|
|
2
2
|
export declare const loadIocConfig: (absoluteConfigPath: string) => Promise<IocConfig>;
|
|
3
3
|
/**
|
|
4
4
|
* IoC package root inferred from where `ioc.config` lives: if the config file is under a `src`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadIocConfig.d.ts","sourceRoot":"","sources":["../../src/config/loadIocConfig.ts"],"names":[],"mappings":"AAUA,OAAO,
|
|
1
|
+
{"version":3,"file":"loadIocConfig.d.ts","sourceRoot":"","sources":["../../src/config/loadIocConfig.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgLhD,eAAO,MAAM,aAAa,GACxB,oBAAoB,MAAM,KACzB,OAAO,CAAC,SAAS,CAWnB,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,GAC9C,oBAAoB,MAAM,KACzB,MAKF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,MAAM,EACtB,eAAe,MAAM,KACpB,MAwDF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,SAAS,GAAG,SAAS,CAQ/B,CAAC"}
|