ioc-manifest 1.4.1 → 1.5.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/README.md +86 -6
- package/dist/config/iocConfig.d.ts +4 -0
- package/dist/config/iocConfig.d.ts.map +1 -1
- package/dist/config/iocConfig.js +3 -0
- package/dist/config/iocConfig.js.map +1 -1
- package/dist/generator/analyzeDemandSupply/index.d.ts.map +1 -1
- package/dist/generator/analyzeDemandSupply/index.js +103 -13
- package/dist/generator/analyzeDemandSupply/index.js.map +1 -1
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.d.ts +9 -0
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.d.ts.map +1 -0
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.js +122 -0
- package/dist/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.js.map +1 -0
- package/dist/generator/discoverFactories/discoverFactories.d.ts.map +1 -1
- package/dist/generator/discoverFactories/discoverFactories.js +8 -4
- package/dist/generator/discoverFactories/discoverFactories.js.map +1 -1
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts +16 -0
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.d.ts.map +1 -1
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js +29 -14
- package/dist/generator/discoverFactories/inferFactoryDependencyContracts.js.map +1 -1
- package/dist/generator/generateManifest.d.ts.map +1 -1
- package/dist/generator/generateManifest.js +6 -0
- package/dist/generator/generateManifest.js.map +1 -1
- package/dist/generator/resolveRegistrationPlan.d.ts.map +1 -1
- package/dist/generator/resolveRegistrationPlan.js +1 -1
- package/dist/generator/resolveRegistrationPlan.js.map +1 -1
- package/dist/generator/types.d.ts +3 -0
- package/dist/generator/types.d.ts.map +1 -1
- package/dist/generator/validateLifetimeInversionsAtCodegen.d.ts +10 -0
- package/dist/generator/validateLifetimeInversionsAtCodegen.d.ts.map +1 -0
- package/dist/generator/validateLifetimeInversionsAtCodegen.js +179 -0
- package/dist/generator/validateLifetimeInversionsAtCodegen.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ The approach is loosely inspired by [StructureMap](https://structuremap.github.i
|
|
|
40
40
|
- **Externals are explicit** — every dependency a package expects from outside is tracked in a generated `IocExternals` interface
|
|
41
41
|
- **Cross-package composition** — apps in a monorepo can compose manifests from multiple packages with no scanning across boundaries
|
|
42
42
|
- **Compile-time satisfaction checks** — when composing, TypeScript fails compilation if any composed package's externals aren't satisfied
|
|
43
|
+
- **Lifetime-inversion safety** — generation fails when a longer-lived service would freeze a shorter-lived dependency (a singleton holding a scoped repository), catching a whole class of stale-state bugs statically
|
|
43
44
|
- **`ioc validate`** — a CI-friendly command that reports every cross-manifest problem at once
|
|
44
45
|
- **Works in dev and prod** — discovers from TypeScript source during development, and works just as well against a bundled single-file production build (see [Dev and production builds](#dev-and-production-builds))
|
|
45
46
|
|
|
@@ -341,12 +342,13 @@ registrations: {
|
|
|
341
342
|
|
|
342
343
|
Under each contract name, keys are implementation names from discovery (`buildFoo` → `foo`). The reserved `$contract` key holds contract-level options.
|
|
343
344
|
|
|
344
|
-
| Per-implementation field | Effect
|
|
345
|
-
| ------------------------ |
|
|
346
|
-
| `name` | Overrides the Awilix registration key
|
|
347
|
-
| `lifetime` | `"singleton"` \| `"scoped"` \| `"transient"`
|
|
348
|
-
| `default` | `true` to select this implementation as the contract default
|
|
349
|
-
| `source` | (app mode only) Resolve same-key conflicts across composed manifests. See [Cross-package composition](#cross-package-composition).
|
|
345
|
+
| Per-implementation field | Effect |
|
|
346
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
347
|
+
| `name` | Overrides the Awilix registration key |
|
|
348
|
+
| `lifetime` | `"singleton"` \| `"scoped"` \| `"transient"` |
|
|
349
|
+
| `default` | `true` to select this implementation as the contract default |
|
|
350
|
+
| `source` | (app mode only) Resolve same-key conflicts across composed manifests. See [Cross-package composition](#cross-package-composition). |
|
|
351
|
+
| `allowLifetimeInversion` | Opt out of the lifetime-inversion check for this implementation. `true` allows all shorter-lived dependencies; a `string[]` allows only the listed demanded keys. See [Lifetime inversion checks](#lifetime-inversion-checks). |
|
|
350
352
|
|
|
351
353
|
| `$contract` field | Effect |
|
|
352
354
|
| ----------------- | ----------------------------------------------------------------------------------------------- |
|
|
@@ -835,6 +837,50 @@ This came out of a real pattern: in a GraphQL API, services and repositories are
|
|
|
835
837
|
|
|
836
838
|
Per-implementation overrides in `registrations` and lifetime markers take precedence over folder scope.
|
|
837
839
|
|
|
840
|
+
### Lifetime inversion checks
|
|
841
|
+
|
|
842
|
+
Awilix lifetimes have an ordering: a `singleton` lives for the life of the container, a `scoped` instance lives for one scope (typically one request), a `transient` is rebuilt on every resolve. When a longer-lived registration depends on a shorter-lived one, the longer-lived service captures a single instance of that dependency at first construction and reuses it forever — quietly defeating the shorter lifetime.
|
|
843
|
+
|
|
844
|
+
The classic case: a `singleton` that depends on a `scoped` repository holding a per-request unit-of-work. The singleton is built once, captures one repository, and every later request writes through that first request's transaction. Nothing throws; the state just silently goes stale. The consumer doesn't even have to touch the scoped resource — holding something that holds it is enough.
|
|
845
|
+
|
|
846
|
+
`ioc generate` catches this statically. It walks every dependency edge over the resolved graph and flags any edge where the dependency is shorter-lived than the consumer:
|
|
847
|
+
|
|
848
|
+
- **`singleton → scoped`** is an **error** — generation fails. This includes a scoped dependency reached through a group (a group with a scoped member) or a scope-provided key (per-request, so effectively scoped). It is almost never intentional.
|
|
849
|
+
- **`singleton → transient`** and **`scoped → transient`** are **warnings** (`[ioc]`-prefixed). A singleton legitimately holding a transient factory it constructs from per use is a real pattern, so these surface for review without blocking.
|
|
850
|
+
|
|
851
|
+
The check resolves each demanded key precisely — a specific registration key, a contract's default slot, a collection, a group's members, or a scope-provided key — so it names the exact dependency rather than guessing across a contract's implementations. Findings aggregate: every warning prints, and if there are errors, generation throws once with the full list rather than failing on the first one.
|
|
852
|
+
|
|
853
|
+
A typical error:
|
|
854
|
+
|
|
855
|
+
```
|
|
856
|
+
Lifetime inversion: 'grantSync' (singleton) depends on 'grantRepository' (scoped). A singleton freezes its scoped dependency at first construction, reusing it across all scopes. Register 'grantSync' as scoped (or shorter), or mark it intentional with registrations['Grant'].grantSync.allowLifetimeInversion.
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
The usual fix is the obvious one — the consumer should be `scoped`:
|
|
860
|
+
|
|
861
|
+
```ts
|
|
862
|
+
registrations: {
|
|
863
|
+
GrantSync: {
|
|
864
|
+
grantSync: { lifetime: "scoped" },
|
|
865
|
+
},
|
|
866
|
+
},
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
**Intentional inversions.** If an inversion is deliberate — a singleton that holds a transient factory and constructs from it per call — opt out with `allowLifetimeInversion` on that implementation:
|
|
870
|
+
|
|
871
|
+
```ts
|
|
872
|
+
registrations: {
|
|
873
|
+
ConnectionPool: {
|
|
874
|
+
// allow all shorter-lived deps for this implementation:
|
|
875
|
+
connectionPool: { allowLifetimeInversion: true },
|
|
876
|
+
// or allow only specific demanded keys (preferred):
|
|
877
|
+
// connectionPool: { allowLifetimeInversion: ["connectionFactory"] },
|
|
878
|
+
},
|
|
879
|
+
},
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
Prefer the `string[]` form. `true` silences every inversion for that consumer — including ones you introduce later and didn't mean to. Listing the keys you're knowingly inverting keeps the rest of the check live. The field is config-only and never appears in the generated manifest.
|
|
883
|
+
|
|
838
884
|
### Groups
|
|
839
885
|
|
|
840
886
|
Groups collect implementations whose **contract types declare** `extends` on a shared base type (nominal membership — same rules as lifetime markers). There are two kinds — `collection` and `object` — and they solve different real-world problems. A group with no local members emits `[ioc-warn]` but still generates; members may come from other composed packages.
|
|
@@ -921,6 +967,38 @@ Now `container.resolve("readServices")` returns an object keyed by each contract
|
|
|
921
967
|
|
|
922
968
|
The generator validates that group names don't collide with implementation keys, access keys, or collection keys. If a base type has no assignable implementations, generation fails with an actionable error. Cross-manifest group composition is covered in [Cross-package composition](#cross-package-composition).
|
|
923
969
|
|
|
970
|
+
#### Consuming a group from the same package
|
|
971
|
+
|
|
972
|
+
A factory can consume a group declared in its own package. The group's aggregate type — the array for a collection, the keyed object for an object group — is generated, so there's no hand-written type to import. You name it by indexing the generated cradle inside your deps type:
|
|
973
|
+
|
|
974
|
+
```ts
|
|
975
|
+
import type { IocGeneratedCradle } from "./generated/ioc-registry.types.js";
|
|
976
|
+
import type { NotificationService } from "./channel-contracts.js";
|
|
977
|
+
|
|
978
|
+
type NotificationServiceDeps = {
|
|
979
|
+
channels: IocGeneratedCradle["channels"];
|
|
980
|
+
};
|
|
981
|
+
|
|
982
|
+
export const buildNotificationService = ({
|
|
983
|
+
channels,
|
|
984
|
+
}: NotificationServiceDeps): NotificationService => ({
|
|
985
|
+
notifyAll: (to) => {
|
|
986
|
+
channels.emailChannel.sendEmail(to);
|
|
987
|
+
channels.smsChannel.sendSms(to);
|
|
988
|
+
},
|
|
989
|
+
});
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
This is the one sanctioned use of `IocGeneratedCradle` in a factory. The [named-deps-type rule](#1-create-factories) still holds: the parameter binds to a named type (`NotificationServiceDeps`), and `IocGeneratedCradle["channels"]` appears only as a _type reference inside it_, to name the otherwise-unnameable group type. You still cannot bind the parameter directly to the cradle (`({ channels }: IocGeneratedCradle)`).
|
|
993
|
+
|
|
994
|
+
For an object group, members are keyed by their convention name — `channels.emailChannel`, `channels.smsChannel`, the same registration keys derived from `buildEmailChannel` and `buildSmsChannel`. A collection group indexes to `ReadonlyArray<BaseType>` instead.
|
|
995
|
+
|
|
996
|
+
A few things work as you'd expect:
|
|
997
|
+
|
|
998
|
+
- **Aliased imports.** `import { IocGeneratedCradle as Cradle }`, then `Cradle["channels"]`, resolves identically.
|
|
999
|
+
- **Cold start.** The reference resolves from your source, not from a previously generated file — so first-run generation, or generation after deleting the generated directory, works. There's no chicken-and-egg dependency on prior output.
|
|
1000
|
+
- **Typos throw.** Indexing a key that is neither a registration nor a declared group — `IocGeneratedCradle["channel"]` when the group is `channels` — fails generation with a diagnostic naming the offending key, instead of silently resolving to `unknown`.
|
|
1001
|
+
|
|
924
1002
|
### Environment-specific configs
|
|
925
1003
|
|
|
926
1004
|
The separation between factory code and `ioc.config.ts` makes it straightforward to swap implementations by environment. Your factories don't change — the config (or the set of composed manifests) is the only thing that differs.
|
|
@@ -973,6 +1051,8 @@ Either way, factory source code doesn't change.
|
|
|
973
1051
|
|
|
974
1052
|
**Every factory in the package got the same lifetime** (v1.1.x and earlier) — that was structural matching on empty markers. Upgrade to v1.2.0+ and use `extends` on the types that should be scoped; empty markers are safe when inheritance is declared explicitly.
|
|
975
1053
|
|
|
1054
|
+
**A singleton silently reuses a per-request dependency** — if a `singleton` depends (directly or through a chain) on a `scoped` or scope-provided value, it captures one instance at first construction and never refreshes it; per-request state goes stale with no runtime error. `ioc generate` fails on `singleton → scoped` edges for exactly this reason. Make the consumer `scoped`, or mark deliberate cases with `allowLifetimeInversion`. See [Lifetime inversion checks](#lifetime-inversion-checks).
|
|
1055
|
+
|
|
976
1056
|
---
|
|
977
1057
|
|
|
978
1058
|
## Design philosophy
|
|
@@ -27,6 +27,10 @@ export type IocOverride = {
|
|
|
27
27
|
* `'local'` or a package name from `composedManifests`.
|
|
28
28
|
*/
|
|
29
29
|
source?: "local" | string;
|
|
30
|
+
/** Knowingly allow this implementation to depend on shorter-lived deps.
|
|
31
|
+
`true` suppresses all inversions for this consumer; a string[] suppresses
|
|
32
|
+
only those demanded keys (preferred — keeps other inversions visible). */
|
|
33
|
+
allowLifetimeInversion?: boolean | readonly string[];
|
|
30
34
|
};
|
|
31
35
|
export type IocRegistrationsPerContract = Record<string, IocOverride | IocContractMetadata>;
|
|
32
36
|
export declare const parseContractLevelConfig: (entry: unknown, pathForError: string) => IocContractMetadata;
|
|
@@ -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;AAErE,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,EAAG,WAAoB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,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;
|
|
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;AAErE,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE/D,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,EAAG,WAAoB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,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,mBA8BF,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
|
@@ -43,6 +43,9 @@ export const isIocImplementationOverride = (value) => {
|
|
|
43
43
|
if ("name" in value || "lifetime" in value || "default" in value) {
|
|
44
44
|
return true;
|
|
45
45
|
}
|
|
46
|
+
if ("allowLifetimeInversion" in value) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
46
49
|
if ("accessKey" in value) {
|
|
47
50
|
return false;
|
|
48
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iocConfig.js","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"AAIA,4GAA4G;AAC5G,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"iocConfig.js","sourceRoot":"","sources":["../../src/config/iocConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAarD,OAAO,KAAK,EACV,0BAA0B,EAI3B,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAsLtF,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,SAAS,iBAAiB,EAAE,EACvC,SAAS,0BAA0B,KAClC,0BA0PF,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { collectFileAnalysisForFactoryDiscovery } from "../discoverFactories/sca
|
|
|
3
3
|
import { resolveFactorySourceAbsPath, } from "../manifestPaths.js";
|
|
4
4
|
import { emitTypeReference, formatTypeDisplay, isUnresolvableDepsPropertyType, tryEmitTypeReference, } from "./emitTypeReference.js";
|
|
5
5
|
import { validateNamedDepsType } from "./enforceNamedDepsType.js";
|
|
6
|
+
import { depsPropertyTypeNodeByName, tryParseIocGeneratedCradleIndexedAccessKey, } from "./resolveIocGeneratedCradleIndexedAccess.js";
|
|
6
7
|
const normalizePath = (p) => path.normalize(p);
|
|
7
8
|
const typesMutuallyAgree = (checker, a, b) => checker.isTypeAssignableTo(a, b) && checker.isTypeAssignableTo(b, a);
|
|
8
9
|
const collectLocalSupplierKeys = (factories, groupsManifest) => {
|
|
@@ -54,6 +55,50 @@ const formatUnresolvableDepsError = (projectRoot, loc, propName, detail) => {
|
|
|
54
55
|
const rel = path.relative(projectRoot, abs).replace(/\\/g, "/");
|
|
55
56
|
return `[ioc] Factory ${JSON.stringify(loc.exportName)} at ${rel}:${loc.line} references an unresolvable deps type for property ${JSON.stringify(propName)}: ${detail}`;
|
|
56
57
|
};
|
|
58
|
+
const formatUnknownConsumedCradleKeyError = (projectRoot, loc, propName, key) => {
|
|
59
|
+
const abs = path.join(projectRoot, loc.modulePath);
|
|
60
|
+
const rel = path.relative(projectRoot, abs).replace(/\\/g, "/");
|
|
61
|
+
return `[ioc] Factory ${JSON.stringify(loc.exportName)} at ${rel}:${loc.line} references consumed cradle key ${JSON.stringify(key)} on property ${JSON.stringify(propName)} that is not a known registration or group`;
|
|
62
|
+
};
|
|
63
|
+
const resolveFactoryContext = (factory, sourceFileByPath, projectRoot, scanDirs) => {
|
|
64
|
+
const absPath = normalizePath(resolveFactorySourceAbsPath(factory.modulePath, projectRoot, scanDirs));
|
|
65
|
+
const sourceFile = sourceFileByPath.get(absPath);
|
|
66
|
+
if (sourceFile === undefined) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const analysis = collectFileAnalysisForFactoryDiscovery(sourceFile);
|
|
70
|
+
const factoryDecl = analysis.factoryDeclByExport.get(factory.exportName);
|
|
71
|
+
if (factoryDecl === undefined) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
return { factory, factoryDecl, sourceFile };
|
|
75
|
+
};
|
|
76
|
+
const supplyTypeRefForFactory = (checker, factory, factoryDecl, emitCtx) => {
|
|
77
|
+
const signature = checker.getSignatureFromDeclaration(factoryDecl);
|
|
78
|
+
if (!signature) {
|
|
79
|
+
return {
|
|
80
|
+
typeName: factory.contractName,
|
|
81
|
+
imports: [
|
|
82
|
+
{
|
|
83
|
+
typeName: factory.contractName,
|
|
84
|
+
relImport: factory.contractTypeRelImport,
|
|
85
|
+
useDefaultImport: false,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const returnType = checker.getReturnTypeOfSignature(signature);
|
|
91
|
+
return (emitTypeReference(checker, returnType, emitCtx) ?? {
|
|
92
|
+
typeName: factory.contractName,
|
|
93
|
+
imports: [
|
|
94
|
+
{
|
|
95
|
+
typeName: factory.contractName,
|
|
96
|
+
relImport: factory.contractTypeRelImport,
|
|
97
|
+
useDefaultImport: false,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
};
|
|
57
102
|
const mergeEntry = (map, key, typeRef, classification) => {
|
|
58
103
|
const existing = map.get(key);
|
|
59
104
|
if (existing !== undefined) {
|
|
@@ -83,6 +128,13 @@ export const analyzeDemandSupply = (factories, options) => {
|
|
|
83
128
|
}
|
|
84
129
|
const demandByKey = new Map();
|
|
85
130
|
const cradleMap = new Map();
|
|
131
|
+
const factoryByRegistrationKey = new Map();
|
|
132
|
+
for (const factory of factories) {
|
|
133
|
+
const ctx = resolveFactoryContext(factory, sourceFileByPath, projectRoot, scanDirs);
|
|
134
|
+
if (ctx !== undefined) {
|
|
135
|
+
factoryByRegistrationKey.set(factory.registrationKey, ctx);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
86
138
|
for (const factory of factories) {
|
|
87
139
|
const absPath = normalizePath(resolveFactorySourceAbsPath(factory.modulePath, projectRoot, scanDirs));
|
|
88
140
|
const sourceFile = sourceFileByPath.get(absPath);
|
|
@@ -103,19 +155,8 @@ export const analyzeDemandSupply = (factories, options) => {
|
|
|
103
155
|
contextSourceFile: sourceFile,
|
|
104
156
|
};
|
|
105
157
|
const signature = checker.getSignatureFromDeclaration(factoryDecl);
|
|
106
|
-
if (signature) {
|
|
107
|
-
const
|
|
108
|
-
const supplyRef = emitTypeReference(checker, returnType, emitCtx) ??
|
|
109
|
-
{
|
|
110
|
-
typeName: factory.contractName,
|
|
111
|
-
imports: [
|
|
112
|
-
{
|
|
113
|
-
typeName: factory.contractName,
|
|
114
|
-
relImport: factory.contractTypeRelImport,
|
|
115
|
-
useDefaultImport: false,
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
};
|
|
158
|
+
if (signature !== undefined) {
|
|
159
|
+
const supplyRef = supplyTypeRefForFactory(checker, factory, factoryDecl, emitCtx);
|
|
119
160
|
mergeEntry(cradleMap, factory.registrationKey, supplyRef, localSupplierKeys.has(factory.registrationKey) ? "local" : "external");
|
|
120
161
|
}
|
|
121
162
|
if (factoryDecl.parameters.length === 0) {
|
|
@@ -125,8 +166,57 @@ export const analyzeDemandSupply = (factories, options) => {
|
|
|
125
166
|
if (!named.ok) {
|
|
126
167
|
throw new Error(named.message);
|
|
127
168
|
}
|
|
169
|
+
const propTypeNodes = depsPropertyTypeNodeByName(checker, named.depsType);
|
|
128
170
|
const props = collectDepsProperties(checker, named.depsType);
|
|
129
171
|
for (const { name: propName, type: propType } of props) {
|
|
172
|
+
const consumedCradleKey = tryParseIocGeneratedCradleIndexedAccessKey(checker, propTypeNodes.get(propName));
|
|
173
|
+
if (consumedCradleKey !== undefined) {
|
|
174
|
+
if (groupsManifest?.[consumedCradleKey] !== undefined) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const supplier = factoryByRegistrationKey.get(consumedCradleKey);
|
|
178
|
+
if (supplier === undefined) {
|
|
179
|
+
// Hard-abort: one factory with an invalid consumed cradle key blocks the entire gen
|
|
180
|
+
// run (same policy as unresolvable deps and type conflicts in this pass).
|
|
181
|
+
throw new Error(formatUnknownConsumedCradleKeyError(projectRoot, loc, propName, consumedCradleKey));
|
|
182
|
+
}
|
|
183
|
+
const supplierEmitCtx = {
|
|
184
|
+
program,
|
|
185
|
+
projectRoot,
|
|
186
|
+
scanDirs,
|
|
187
|
+
generatedDir,
|
|
188
|
+
contextSourceFile: supplier.sourceFile,
|
|
189
|
+
};
|
|
190
|
+
const supplierSignature = checker.getSignatureFromDeclaration(supplier.factoryDecl);
|
|
191
|
+
const supplierReturnType = supplierSignature !== undefined
|
|
192
|
+
? checker.getReturnTypeOfSignature(supplierSignature)
|
|
193
|
+
: propType;
|
|
194
|
+
const resolvedTypeRef = supplyTypeRefForFactory(checker, supplier.factory, supplier.factoryDecl, supplierEmitCtx);
|
|
195
|
+
const classification = localSupplierKeys.has(propName)
|
|
196
|
+
? "local"
|
|
197
|
+
: "external";
|
|
198
|
+
const existing = demandByKey.get(propName);
|
|
199
|
+
if (existing !== undefined) {
|
|
200
|
+
if (!typesMutuallyAgree(checker, existing.type, supplierReturnType)) {
|
|
201
|
+
throw new Error(formatTypeConflictError(propName, {
|
|
202
|
+
factory: existing.factory,
|
|
203
|
+
typeDisplay: formatTypeDisplay(checker, existing.type),
|
|
204
|
+
}, {
|
|
205
|
+
factory: loc,
|
|
206
|
+
typeDisplay: formatTypeDisplay(checker, supplierReturnType),
|
|
207
|
+
}, projectRoot));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
demandByKey.set(propName, {
|
|
212
|
+
type: supplierReturnType,
|
|
213
|
+
factory: loc,
|
|
214
|
+
typeRef: resolvedTypeRef,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
mergeEntry(cradleMap, propName, resolvedTypeRef, classification);
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
130
220
|
if (isUnresolvableDepsPropertyType(checker, propType, emitCtx)) {
|
|
131
221
|
throw new Error(formatUnresolvableDepsError(projectRoot, loc, propName, formatTypeDisplay(checker, propType)));
|
|
132
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
export declare const resolveDepsPropertyTypeNode: (typeNode: ts.TypeNode | undefined, checker: ts.TypeChecker, depth?: number) => ts.TypeNode | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* When a deps property is typed as `IocGeneratedCradle['literalKey']`, returns `literalKey`
|
|
5
|
+
* without resolving through the (possibly circular/stale) generated cradle file.
|
|
6
|
+
*/
|
|
7
|
+
export declare const tryParseIocGeneratedCradleIndexedAccessKey: (checker: ts.TypeChecker, typeNode: ts.TypeNode | undefined) => string | undefined;
|
|
8
|
+
export declare const depsPropertyTypeNodeByName: (checker: ts.TypeChecker, depsType: ts.Type) => Map<string, ts.TypeNode>;
|
|
9
|
+
//# sourceMappingURL=resolveIocGeneratedCradleIndexedAccess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveIocGeneratedCradleIndexedAccess.d.ts","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAiE5B,eAAO,MAAM,2BAA2B,GACtC,UAAU,EAAE,CAAC,QAAQ,GAAG,SAAS,EACjC,SAAS,EAAE,CAAC,WAAW,EACvB,cAAS,KACR,EAAE,CAAC,QAAQ,GAAG,SAiBhB,CAAC;AA2CF;;;GAGG;AACH,eAAO,MAAM,0CAA0C,GACrD,SAAS,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,CAAC,QAAQ,GAAG,SAAS,KAChC,MAAM,GAAG,SAgBX,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,CAAC,IAAI,KAChB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAMzB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
const IOC_GENERATED_CRADLE_NAME = "IocGeneratedCradle";
|
|
3
|
+
const propertyNameText = (name) => {
|
|
4
|
+
if (ts.isIdentifier(name)) {
|
|
5
|
+
return name.text;
|
|
6
|
+
}
|
|
7
|
+
if (ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {
|
|
8
|
+
return name.text;
|
|
9
|
+
}
|
|
10
|
+
return undefined;
|
|
11
|
+
};
|
|
12
|
+
const getDepsTypeDeclaration = (checker, depsType) => {
|
|
13
|
+
const apparent = checker.getApparentType(depsType);
|
|
14
|
+
let symbol = apparent.aliasSymbol ?? apparent.getSymbol();
|
|
15
|
+
if (!symbol) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
if (symbol.flags & ts.SymbolFlags.Alias) {
|
|
19
|
+
symbol = checker.getAliasedSymbol(symbol);
|
|
20
|
+
}
|
|
21
|
+
const decl = symbol.declarations?.[0];
|
|
22
|
+
if (decl !== undefined &&
|
|
23
|
+
(ts.isInterfaceDeclaration(decl) || ts.isTypeAliasDeclaration(decl))) {
|
|
24
|
+
return decl;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
};
|
|
28
|
+
const collectPropertyTypeNodes = (decl) => {
|
|
29
|
+
const out = new Map();
|
|
30
|
+
const members = ts.isInterfaceDeclaration(decl)
|
|
31
|
+
? decl.members
|
|
32
|
+
: ts.isTypeLiteralNode(decl.type)
|
|
33
|
+
? decl.type.members
|
|
34
|
+
: undefined;
|
|
35
|
+
if (members === undefined) {
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
for (const member of members) {
|
|
39
|
+
if (!ts.isPropertySignature(member) || member.type === undefined) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const name = member.name !== undefined ? propertyNameText(member.name) : undefined;
|
|
43
|
+
if (name === undefined) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
out.set(name, member.type);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
};
|
|
50
|
+
export const resolveDepsPropertyTypeNode = (typeNode, checker, depth = 0) => {
|
|
51
|
+
if (typeNode === undefined || depth > 8) {
|
|
52
|
+
return typeNode;
|
|
53
|
+
}
|
|
54
|
+
if (ts.isTypeReferenceNode(typeNode) &&
|
|
55
|
+
(typeNode.typeArguments === undefined || typeNode.typeArguments.length === 0)) {
|
|
56
|
+
const symbol = checker.getSymbolAtLocation(typeNode.typeName);
|
|
57
|
+
const aliasDecl = symbol?.declarations?.[0];
|
|
58
|
+
if (aliasDecl !== undefined && ts.isTypeAliasDeclaration(aliasDecl)) {
|
|
59
|
+
return resolveDepsPropertyTypeNode(aliasDecl.type, checker, depth + 1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return typeNode;
|
|
63
|
+
};
|
|
64
|
+
const isIocGeneratedCradleImportBinding = (checker, typeName) => {
|
|
65
|
+
if (!ts.isIdentifier(typeName)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (typeName.text === IOC_GENERATED_CRADLE_NAME) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
const symbol = checker.getSymbolAtLocation(typeName);
|
|
72
|
+
if (symbol === undefined) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
for (const decl of symbol.declarations ?? []) {
|
|
76
|
+
if (!ts.isImportSpecifier(decl)) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const importedName = decl.propertyName !== undefined && ts.isIdentifier(decl.propertyName)
|
|
80
|
+
? decl.propertyName.text
|
|
81
|
+
: ts.isIdentifier(decl.name)
|
|
82
|
+
? decl.name.text
|
|
83
|
+
: undefined;
|
|
84
|
+
if (importedName === IOC_GENERATED_CRADLE_NAME) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
};
|
|
90
|
+
const isIocGeneratedCradleTypeNode = (checker, node) => {
|
|
91
|
+
if (!ts.isTypeReferenceNode(node)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return isIocGeneratedCradleImportBinding(checker, node.typeName);
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* When a deps property is typed as `IocGeneratedCradle['literalKey']`, returns `literalKey`
|
|
98
|
+
* without resolving through the (possibly circular/stale) generated cradle file.
|
|
99
|
+
*/
|
|
100
|
+
export const tryParseIocGeneratedCradleIndexedAccessKey = (checker, typeNode) => {
|
|
101
|
+
const resolved = resolveDepsPropertyTypeNode(typeNode, checker);
|
|
102
|
+
if (resolved === undefined || !ts.isIndexedAccessTypeNode(resolved)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
if (!isIocGeneratedCradleTypeNode(checker, resolved.objectType)) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const indexType = resolved.indexType;
|
|
109
|
+
if (ts.isLiteralTypeNode(indexType) &&
|
|
110
|
+
ts.isStringLiteral(indexType.literal)) {
|
|
111
|
+
return indexType.literal.text;
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
};
|
|
115
|
+
export const depsPropertyTypeNodeByName = (checker, depsType) => {
|
|
116
|
+
const decl = getDepsTypeDeclaration(checker, depsType);
|
|
117
|
+
if (decl === undefined) {
|
|
118
|
+
return new Map();
|
|
119
|
+
}
|
|
120
|
+
return collectPropertyTypeNodes(decl);
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=resolveIocGeneratedCradleIndexedAccess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveIocGeneratedCradleIndexedAccess.js","sourceRoot":"","sources":["../../../src/generator/analyzeDemandSupply/resolveIocGeneratedCradleIndexedAccess.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discoverFactories.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/discoverFactories.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,4BAA4B,CAAC;AAiBpC,MAAM,MAAM,0BAA0B,GAAG;IACvC,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"discoverFactories.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/discoverFactories.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,4BAA4B,CAAC;AAiBpC,MAAM,MAAM,0BAA0B,GAAG;IACvC,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA6CF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,MAAM,EAAE,EACf,SAAS,EAAE,CAAC,OAAO,EACnB,aAAa,MAAM,EACnB,eAAe,MAAM,EACrB,gBAAgB,qBAAqB,EACrC,YAAY,SAAS,EACrB,aAAa,0BAA0B,KACtC;IACD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzD,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,cAAc,EAAE,yBAAyB,CAAC;CAwF3C,CAAC"}
|
|
@@ -6,7 +6,7 @@ import path from "node:path";
|
|
|
6
6
|
import { resolveFactorySourceAbsPath, } from "../manifestPaths.js";
|
|
7
7
|
import { collectFileAnalysisForFactoryDiscovery } from "./scanFactoryFile.js";
|
|
8
8
|
import { scanFactoryFile } from "./scanFactoryFile.js";
|
|
9
|
-
import {
|
|
9
|
+
import { inferFactoryDependencies } from "./inferFactoryDependencyContracts.js";
|
|
10
10
|
const normalizePath = (p) => path.normalize(p);
|
|
11
11
|
const buildSourceFileIndex = (program) => {
|
|
12
12
|
const index = new Map();
|
|
@@ -31,9 +31,13 @@ const enrichDependencyContracts = (program, acceptedFactories, contractNames, di
|
|
|
31
31
|
if (!decl) {
|
|
32
32
|
continue;
|
|
33
33
|
}
|
|
34
|
-
const
|
|
35
|
-
if (
|
|
36
|
-
f.dependencyContractNames =
|
|
34
|
+
const inferred = inferFactoryDependencies(checker, decl, contractNames);
|
|
35
|
+
if (inferred.contractNames.length > 0) {
|
|
36
|
+
f.dependencyContractNames = inferred.contractNames;
|
|
37
|
+
}
|
|
38
|
+
if (inferred.dependencyKeys !== undefined &&
|
|
39
|
+
inferred.dependencyKeys.length > 0) {
|
|
40
|
+
f.dependencyKeys = inferred.dependencyKeys;
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discoverFactories.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/discoverFactories.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EACL,2BAA2B,GAE5B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"discoverFactories.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/discoverFactories.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
export type InferredFactoryDependencies = {
|
|
3
|
+
contractNames: string[];
|
|
4
|
+
/** Cradle keys from the binding pattern; omitted when rest/nested/computed rules apply. */
|
|
5
|
+
dependencyKeys?: string[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Infers dependency contract names and cradle keys from the factory's first parameter **object
|
|
9
|
+
* binding pattern** only: for `({ config, logger }: SomeCradleType)`, resolves the type of
|
|
10
|
+
* `config` and `logger` on the parameter type and collects symbols that match known contract
|
|
11
|
+
* names; `dependencyKeys` holds the destructured property names (e.g. `config`, `logger`).
|
|
12
|
+
*
|
|
13
|
+
* Does **not** walk all properties of the cradle type (avoids listing the entire container graph).
|
|
14
|
+
* If the first parameter is not a top-level object binding pattern, returns empty contract names
|
|
15
|
+
* and omits keys (prefer omission).
|
|
16
|
+
*/
|
|
17
|
+
export declare const inferFactoryDependencies: (checker: ts.TypeChecker, factoryDecl: ts.FunctionLike, knownContractNames: ReadonlySet<string>) => InferredFactoryDependencies;
|
|
2
18
|
/**
|
|
3
19
|
* Infers dependency contract names from the factory's first parameter **object binding pattern**
|
|
4
20
|
* only: for `({ config, logger }: SomeCradleType)`, resolves the type of `config` and `logger` on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferFactoryDependencyContracts.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AA6E5B;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,CAAC,YAAY,EAC5B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACtC,MAAM,
|
|
1
|
+
{"version":3,"file":"inferFactoryDependencyContracts.d.ts","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AA6E5B,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,CAAC,YAAY,EAC5B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACtC,2BAwDF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,SAAS,EAAE,CAAC,WAAW,EACvB,aAAa,EAAE,CAAC,YAAY,EAC5B,oBAAoB,WAAW,CAAC,MAAM,CAAC,KACtC,MAAM,EACyE,CAAC"}
|
|
@@ -65,44 +65,47 @@ const addContractNamesFromType = (checker, t, knownContractNames, out) => {
|
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
/**
|
|
68
|
-
* Infers dependency contract names from the factory's first parameter **object
|
|
69
|
-
* only: for `({ config, logger }: SomeCradleType)`, resolves the type of
|
|
70
|
-
* the parameter type and collects symbols that match known contract
|
|
68
|
+
* Infers dependency contract names and cradle keys from the factory's first parameter **object
|
|
69
|
+
* binding pattern** only: for `({ config, logger }: SomeCradleType)`, resolves the type of
|
|
70
|
+
* `config` and `logger` on the parameter type and collects symbols that match known contract
|
|
71
|
+
* names; `dependencyKeys` holds the destructured property names (e.g. `config`, `logger`).
|
|
71
72
|
*
|
|
72
73
|
* Does **not** walk all properties of the cradle type (avoids listing the entire container graph).
|
|
73
|
-
* If the first parameter is not a top-level object binding pattern, returns
|
|
74
|
+
* If the first parameter is not a top-level object binding pattern, returns empty contract names
|
|
75
|
+
* and omits keys (prefer omission).
|
|
74
76
|
*/
|
|
75
|
-
export const
|
|
77
|
+
export const inferFactoryDependencies = (checker, factoryDecl, knownContractNames) => {
|
|
78
|
+
const empty = { contractNames: [] };
|
|
76
79
|
if (knownContractNames.size === 0) {
|
|
77
|
-
return
|
|
80
|
+
return empty;
|
|
78
81
|
}
|
|
79
82
|
const signature = checker.getSignatureFromDeclaration(factoryDecl);
|
|
80
83
|
if (!signature) {
|
|
81
|
-
return
|
|
84
|
+
return empty;
|
|
82
85
|
}
|
|
83
86
|
const params = signature.getParameters();
|
|
84
87
|
if (params.length === 0) {
|
|
85
|
-
return
|
|
88
|
+
return empty;
|
|
86
89
|
}
|
|
87
90
|
const paramNode = factoryDecl.parameters[0];
|
|
88
91
|
if (!paramNode) {
|
|
89
|
-
return
|
|
92
|
+
return empty;
|
|
90
93
|
}
|
|
91
94
|
if (!ts.isObjectBindingPattern(paramNode.name)) {
|
|
92
|
-
return
|
|
95
|
+
return empty;
|
|
93
96
|
}
|
|
94
97
|
const boundNames = getBindingPatternPropertyNames(paramNode.name);
|
|
95
98
|
if (boundNames === "omit") {
|
|
96
|
-
return
|
|
99
|
+
return empty;
|
|
97
100
|
}
|
|
98
101
|
if (boundNames.length === 0) {
|
|
99
|
-
return
|
|
102
|
+
return empty;
|
|
100
103
|
}
|
|
101
104
|
const p0 = params[0];
|
|
102
105
|
const paramType = checker.getTypeOfSymbolAtLocation(p0, paramNode);
|
|
103
106
|
const resolvedParam = checker.getApparentType(paramType);
|
|
104
107
|
if (resolvedParam.getCallSignatures().length > 0) {
|
|
105
|
-
return
|
|
108
|
+
return empty;
|
|
106
109
|
}
|
|
107
110
|
const out = new Set();
|
|
108
111
|
for (const propName of boundNames) {
|
|
@@ -113,6 +116,18 @@ export const inferDependencyContractNames = (checker, factoryDecl, knownContract
|
|
|
113
116
|
const propType = checker.getTypeOfSymbol(prop);
|
|
114
117
|
addContractNamesFromType(checker, propType, knownContractNames, out);
|
|
115
118
|
}
|
|
116
|
-
return
|
|
119
|
+
return {
|
|
120
|
+
contractNames: Array.from(out).sort((a, b) => a.localeCompare(b)),
|
|
121
|
+
dependencyKeys: boundNames,
|
|
122
|
+
};
|
|
117
123
|
};
|
|
124
|
+
/**
|
|
125
|
+
* Infers dependency contract names from the factory's first parameter **object binding pattern**
|
|
126
|
+
* only: for `({ config, logger }: SomeCradleType)`, resolves the type of `config` and `logger` on
|
|
127
|
+
* the parameter type and collects symbols that match known contract names.
|
|
128
|
+
*
|
|
129
|
+
* Does **not** walk all properties of the cradle type (avoids listing the entire container graph).
|
|
130
|
+
* If the first parameter is not a top-level object binding pattern, returns [] (prefer omission).
|
|
131
|
+
*/
|
|
132
|
+
export const inferDependencyContractNames = (checker, factoryDecl, knownContractNames) => inferFactoryDependencies(checker, factoryDecl, knownContractNames).contractNames;
|
|
118
133
|
//# sourceMappingURL=inferFactoryDependencyContracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferFactoryDependencyContracts.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,iBAAiB,GAAG,CAAC,OAAuB,EAAE,CAAU,EAAW,EAAE;IACzE,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAqB,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,8BAA8B,GAAG,CACrC,OAAgC,EACb,EAAE;IACrB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC/B,OAAuB,EACvB,CAAU,EACV,kBAAuC,EACvC,GAAgB,EACV,EAAE;IACR,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/B,wBAAwB,CAAC,OAAO,EAAE,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC/B,wBAAwB,CAAC,OAAO,EAAE,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"inferFactoryDependencyContracts.js","sourceRoot":"","sources":["../../../src/generator/discoverFactories/inferFactoryDependencyContracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateManifest.d.ts","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"AAqBA,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":"AAqBA,OAAO,EAEL,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAgE/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,CAiNd,CAAC"}
|
|
@@ -23,6 +23,7 @@ import { buildComposedManifestSource, removeComposedManifestIfPresent, } from ".
|
|
|
23
23
|
import { loadComposedPackageSpecs } from "./loadComposedPackageExternalKeys.js";
|
|
24
24
|
import { resolveLifetimeMarkersForFactories } from "./resolveLifetimeMarkers.js";
|
|
25
25
|
import { validateScopeProvidedAtCodegen } from "./validateScopeProvidedAtCodegen.js";
|
|
26
|
+
import { validateLifetimeInversionsAtCodegen } from "./validateLifetimeInversionsAtCodegen.js";
|
|
26
27
|
const require = createRequire(import.meta.url);
|
|
27
28
|
const packageJson = require("../../package.json");
|
|
28
29
|
const packageName = typeof packageJson.name === "string" && packageJson.name.length > 0
|
|
@@ -101,6 +102,10 @@ export const generateManifest = async (overrides) => {
|
|
|
101
102
|
generatedDir,
|
|
102
103
|
scanDirs,
|
|
103
104
|
});
|
|
105
|
+
// Ordering invariant: `buildGroupPlan` must finish before `analyzeDemandSupply`.
|
|
106
|
+
// Demand analysis resolves `IocGeneratedCradle['<key>']` against `groupsManifest` and
|
|
107
|
+
// the factory supply map; calling demand analysis first yields spurious
|
|
108
|
+
// "not a known registration or group" errors on valid group consumers.
|
|
104
109
|
const demandSupply = analyzeDemandSupply(acceptedFactories, {
|
|
105
110
|
program,
|
|
106
111
|
projectRoot,
|
|
@@ -110,6 +115,7 @@ export const generateManifest = async (overrides) => {
|
|
|
110
115
|
scopeProvided: config?.scopeProvided,
|
|
111
116
|
});
|
|
112
117
|
validateScopeProvidedAtCodegen(config?.scopeProvided ?? [], demandSupply);
|
|
118
|
+
validateLifetimeInversionsAtCodegen(acceptedFactories, plans, groupResult?.manifest, demandSupply, config);
|
|
113
119
|
if (demandSupply.scopeProvidedKeys.length > 0) {
|
|
114
120
|
console.log(`[ioc] scope-provided values: ${demandSupply.scopeProvidedKeys.join(", ")} — register these onto the request child scope at runtime before resolving dependent services.`);
|
|
115
121
|
}
|
|
@@ -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,sBAAsB,EACtB,6CAA6C,GAC9C,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iCAAiC,EAEjC,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,aAAa,EACb,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,uCAAuC,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,4CAA4C,EAAE,MAAM,yCAAyC,CAAC;AACvG,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"generateManifest.js","sourceRoot":"","sources":["../../src/generator/generateManifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveRegistrationPlan.d.ts","sourceRoot":"","sources":["../../src/generator/resolveRegistrationPlan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,4HAA4H;AAC5H,MAAM,MAAM,6BAA6B,GACrC,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,SAAS,CAAC;AAEd,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,6BAA6B,CAAC;IACtD,wEAAwE;IACxE,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,mHAAmH;IACnH,cAAc,CAAC,EAAE,6BAA6B,CAAC;IAC/C,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,iGAAiG;IACjG,sBAAsB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3D,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2FAA2F;IAC3F,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,2BAA2B,EAAE,CAAC;CAChD,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,WAAW,KACpB,OAAO,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"resolveRegistrationPlan.d.ts","sourceRoot":"","sources":["../../src/generator/resolveRegistrationPlan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,4HAA4H;AAC5H,MAAM,MAAM,6BAA6B,GACrC,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,SAAS,CAAC;AAEd,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,iEAAiE;IACjE,qBAAqB,CAAC,EAAE,6BAA6B,CAAC;IACtD,wEAAwE;IACxE,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,mHAAmH;IACnH,cAAc,CAAC,EAAE,6BAA6B,CAAC;IAC/C,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,iGAAiG;IACjG,sBAAsB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3D,uBAAuB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,6FAA6F;IAC7F,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2FAA2F;IAC3F,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,2BAA2B,EAAE,CAAC;CAChD,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,WAAW,KACpB,OAAO,CAAC,iBAAiB,CAwB3B,CAAC;AAoQF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,SAAS,GAAG,SAAS,EAC7B,oBAAoB,GAAG,CAAC,MAAM,CAAC,EAC/B,wBAAwB,6BAA6B,KACpD,IAqCF,CAAC;AAsPF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,EACxD,SAAS,SAAS,EAClB,kBAAkB,+BAA+B,KAChD,4BAA4B,EA6G9B,CAAC"}
|
|
@@ -13,7 +13,7 @@ const DEFAULT_LIFETIME = "singleton";
|
|
|
13
13
|
* so merged {@link DiscoveredFactory} rows reflect `ioc.config` policy only (factory sources stay plain).
|
|
14
14
|
*/
|
|
15
15
|
export const normalizeIocOverride = (override) => {
|
|
16
|
-
const { name, lifetime, default: defaultFlag, source: _source, ...rest } = override;
|
|
16
|
+
const { name, lifetime, default: defaultFlag, source: _source, allowLifetimeInversion: _allowLifetimeInversion, ...rest } = override;
|
|
17
17
|
const out = { ...rest };
|
|
18
18
|
if (lifetime !== undefined) {
|
|
19
19
|
out.lifetime = lifetime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveRegistrationPlan.js","sourceRoot":"","sources":["../../src/generator/resolveRegistrationPlan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolveRegistrationPlan.js","sourceRoot":"","sources":["../../src/generator/resolveRegistrationPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,9 @@ export type DiscoveredFactory = {
|
|
|
24
24
|
discoveredBy?: "naming";
|
|
25
25
|
/** Contract types inferred from the factory deps parameter (see manifest metadata). */
|
|
26
26
|
dependencyContractNames?: string[];
|
|
27
|
+
/** Cradle keys demanded by this factory's deps destructuring (gen-time edge for
|
|
28
|
+
lifetime-inversion analysis). Same omit rules as dependencyContractNames. */
|
|
29
|
+
dependencyKeys?: string[];
|
|
27
30
|
};
|
|
28
31
|
export type FactoryDiscoveryFileContext = {
|
|
29
32
|
absPath: string;
|
|
@@ -1 +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;
|
|
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;IACnC;oFACgF;IAChF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,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,10 @@
|
|
|
1
|
+
import { type IocConfig } from "../config/iocConfig.js";
|
|
2
|
+
import type { IocGroupsManifest } from "../core/manifest.js";
|
|
3
|
+
import type { DemandSupplyAnalysisResult } from "./analyzeDemandSupply/index.js";
|
|
4
|
+
import type { ResolvedContractRegistration } from "./resolveRegistrationPlan.js";
|
|
5
|
+
import type { DiscoveredFactory } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generation-time lifetime-inversion checks using factory `dependencyKeys` and resolved plan lifetimes.
|
|
8
|
+
*/
|
|
9
|
+
export declare const validateLifetimeInversionsAtCodegen: (acceptedFactories: readonly DiscoveredFactory[], plans: readonly ResolvedContractRegistration[], groupsManifest: IocGroupsManifest | undefined, demandSupply: DemandSupplyAnalysisResult, config: IocConfig | undefined) => void;
|
|
10
|
+
//# sourceMappingURL=validateLifetimeInversionsAtCodegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateLifetimeInversionsAtCodegen.d.ts","sourceRoot":"","sources":["../../src/generator/validateLifetimeInversionsAtCodegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAyMpD;;GAEG;AACH,eAAO,MAAM,mCAAmC,GAC9C,mBAAmB,SAAS,iBAAiB,EAAE,EAC/C,OAAO,SAAS,4BAA4B,EAAE,EAC9C,gBAAgB,iBAAiB,GAAG,SAAS,EAC7C,cAAc,0BAA0B,EACxC,QAAQ,SAAS,GAAG,SAAS,KAC5B,IA0EF,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { getImplOverrideForImplementation, } from "../config/iocConfig.js";
|
|
2
|
+
const LIFETIME_RANK = {
|
|
3
|
+
singleton: 3,
|
|
4
|
+
scoped: 2,
|
|
5
|
+
transient: 1,
|
|
6
|
+
};
|
|
7
|
+
const isInversion = (consumerLifetime, depLifetime) => LIFETIME_RANK[depLifetime] < LIFETIME_RANK[consumerLifetime];
|
|
8
|
+
const inversionSeverity = (consumerLifetime, depLifetime) => {
|
|
9
|
+
if (!isInversion(consumerLifetime, depLifetime)) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
if (consumerLifetime === "singleton" && depLifetime === "scoped") {
|
|
13
|
+
return "error";
|
|
14
|
+
}
|
|
15
|
+
return "warn";
|
|
16
|
+
};
|
|
17
|
+
const formatDepPhrase = (inv) => {
|
|
18
|
+
if (inv.via === "scope-provided") {
|
|
19
|
+
return `'${inv.depKey}' (scope-provided, per-request)`;
|
|
20
|
+
}
|
|
21
|
+
if (inv.via.startsWith("group:") && inv.memberKey !== undefined) {
|
|
22
|
+
return `'${inv.memberKey}' (${inv.depLifetime})`;
|
|
23
|
+
}
|
|
24
|
+
return `'${inv.depKey}' (${inv.depLifetime})`;
|
|
25
|
+
};
|
|
26
|
+
const formatInversionMessage = (inv) => {
|
|
27
|
+
const depPhrase = formatDepPhrase(inv);
|
|
28
|
+
let message = `Lifetime inversion: '${inv.consumerKey}' (${inv.consumerLifetime}) depends on ${depPhrase}.`;
|
|
29
|
+
if (inv.severity === "error") {
|
|
30
|
+
message +=
|
|
31
|
+
" A singleton freezes its scoped dependency at first construction, reusing it across all scopes.";
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
message +=
|
|
35
|
+
" A longer-lived consumer should not depend on a shorter-lived dependency.";
|
|
36
|
+
}
|
|
37
|
+
message += ` Register '${inv.consumerKey}' as scoped (or shorter), or mark it intentional with registrations['<Contract>'].<impl>.allowLifetimeInversion.`;
|
|
38
|
+
if (inv.via.startsWith("group:")) {
|
|
39
|
+
const groupKey = inv.via.slice("group:".length);
|
|
40
|
+
message += ` via group '${groupKey}' member '${inv.memberKey ?? inv.depKey}'.`;
|
|
41
|
+
}
|
|
42
|
+
return message;
|
|
43
|
+
};
|
|
44
|
+
const collectGroupMemberLeaves = (manifest) => {
|
|
45
|
+
if (Array.isArray(manifest.members)) {
|
|
46
|
+
return manifest.members.map((member) => ({
|
|
47
|
+
memberKey: member.registrationKey,
|
|
48
|
+
registrationKey: member.registrationKey,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
return Object.entries(manifest.members).map(([memberKey, leaf]) => ({
|
|
52
|
+
memberKey,
|
|
53
|
+
registrationKey: leaf.registrationKey,
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
const buildLifetimeLookups = (plans) => {
|
|
57
|
+
const regLifetime = new Map();
|
|
58
|
+
const accessKeyToDefaultLifetime = new Map();
|
|
59
|
+
const collectionKeyToLifetimes = new Map();
|
|
60
|
+
for (const plan of plans) {
|
|
61
|
+
for (const impl of plan.implementations) {
|
|
62
|
+
regLifetime.set(impl.registrationKey, impl.lifetime);
|
|
63
|
+
}
|
|
64
|
+
const defaultImpl = plan.implementations.find((impl) => impl.implementationName === plan.defaultImplementationName);
|
|
65
|
+
if (defaultImpl !== undefined) {
|
|
66
|
+
accessKeyToDefaultLifetime.set(plan.accessKey, defaultImpl.lifetime);
|
|
67
|
+
}
|
|
68
|
+
if (plan.collectionKey !== undefined) {
|
|
69
|
+
collectionKeyToLifetimes.set(plan.collectionKey, plan.implementations.map((impl) => impl.lifetime));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { regLifetime, accessKeyToDefaultLifetime, collectionKeyToLifetimes };
|
|
73
|
+
};
|
|
74
|
+
const resolveDepCandidates = (key, regLifetime, accessKeyToDefaultLifetime, collectionKeyToLifetimes, groupsManifest, externalKeys, scopeProvidedKeys) => {
|
|
75
|
+
if (externalKeys.has(key)) {
|
|
76
|
+
return "skip";
|
|
77
|
+
}
|
|
78
|
+
if (scopeProvidedKeys.has(key)) {
|
|
79
|
+
return [{ depLifetime: "scoped", via: "scope-provided" }];
|
|
80
|
+
}
|
|
81
|
+
const groupRoot = groupsManifest?.[key];
|
|
82
|
+
if (groupRoot !== undefined) {
|
|
83
|
+
const candidates = [];
|
|
84
|
+
for (const member of collectGroupMemberLeaves(groupRoot)) {
|
|
85
|
+
const depLifetime = regLifetime.get(member.registrationKey);
|
|
86
|
+
if (depLifetime === undefined) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
candidates.push({
|
|
90
|
+
depLifetime,
|
|
91
|
+
via: `group:${key}`,
|
|
92
|
+
memberKey: member.memberKey,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return candidates.length > 0 ? candidates : "skip";
|
|
96
|
+
}
|
|
97
|
+
const directLifetime = regLifetime.get(key);
|
|
98
|
+
if (directLifetime !== undefined) {
|
|
99
|
+
return [{ depLifetime: directLifetime, via: "direct" }];
|
|
100
|
+
}
|
|
101
|
+
const accessLifetime = accessKeyToDefaultLifetime.get(key);
|
|
102
|
+
if (accessLifetime !== undefined) {
|
|
103
|
+
return [{ depLifetime: accessLifetime, via: "direct" }];
|
|
104
|
+
}
|
|
105
|
+
const collectionLifetimes = collectionKeyToLifetimes.get(key);
|
|
106
|
+
if (collectionLifetimes !== undefined) {
|
|
107
|
+
return collectionLifetimes.map((depLifetime) => ({
|
|
108
|
+
depLifetime,
|
|
109
|
+
via: "direct",
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
return "skip";
|
|
113
|
+
};
|
|
114
|
+
const isSuppressed = (factory, depKey, config) => {
|
|
115
|
+
const allow = getImplOverrideForImplementation(config?.registrations?.[factory.contractName], factory.implementationName)?.allowLifetimeInversion;
|
|
116
|
+
if (allow === true) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (Array.isArray(allow)) {
|
|
120
|
+
return allow.includes(depKey);
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Generation-time lifetime-inversion checks using factory `dependencyKeys` and resolved plan lifetimes.
|
|
126
|
+
*/
|
|
127
|
+
export const validateLifetimeInversionsAtCodegen = (acceptedFactories, plans, groupsManifest, demandSupply, config) => {
|
|
128
|
+
const { regLifetime, accessKeyToDefaultLifetime, collectionKeyToLifetimes } = buildLifetimeLookups(plans);
|
|
129
|
+
const externalKeys = new Set(demandSupply.externalKeys);
|
|
130
|
+
const scopeProvidedKeys = new Set(demandSupply.scopeProvidedKeys);
|
|
131
|
+
const inversions = [];
|
|
132
|
+
for (const factory of acceptedFactories) {
|
|
133
|
+
const consumerLifetime = regLifetime.get(factory.registrationKey);
|
|
134
|
+
if (consumerLifetime === undefined) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const dependencyKeys = factory.dependencyKeys;
|
|
138
|
+
if (dependencyKeys === undefined || dependencyKeys.length === 0) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
for (const depKey of dependencyKeys) {
|
|
142
|
+
if (isSuppressed(factory, depKey, config)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const resolved = resolveDepCandidates(depKey, regLifetime, accessKeyToDefaultLifetime, collectionKeyToLifetimes, groupsManifest, externalKeys, scopeProvidedKeys);
|
|
146
|
+
if (resolved === "skip") {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
for (const candidate of resolved) {
|
|
150
|
+
const severity = inversionSeverity(consumerLifetime, candidate.depLifetime);
|
|
151
|
+
if (severity === undefined) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
inversions.push({
|
|
155
|
+
consumerKey: factory.registrationKey,
|
|
156
|
+
consumerLifetime,
|
|
157
|
+
depKey,
|
|
158
|
+
depLifetime: candidate.depLifetime,
|
|
159
|
+
via: candidate.via,
|
|
160
|
+
memberKey: candidate.memberKey,
|
|
161
|
+
severity,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
for (const inv of inversions) {
|
|
167
|
+
if (inv.severity !== "warn") {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
console.warn(`[ioc] ${formatInversionMessage(inv)}`);
|
|
171
|
+
}
|
|
172
|
+
const errors = inversions.filter((inv) => inv.severity === "error");
|
|
173
|
+
if (errors.length === 0) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
throw new Error(`${errors.map(formatInversionMessage).join("\n")}\n` +
|
|
177
|
+
"Suppress intentionally with registrations[ContractName].implementationName.allowLifetimeInversion in ioc.config.");
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=validateLifetimeInversionsAtCodegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateLifetimeInversionsAtCodegen.js","sourceRoot":"","sources":["../../src/generator/validateLifetimeInversionsAtCodegen.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,GAGjC,MAAM,wBAAwB,CAAC;AAMhC,MAAM,aAAa,GAAgC;IACjD,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,CAAC;AAoBF,MAAM,WAAW,GAAG,CAClB,gBAA6B,EAC7B,WAAwB,EACf,EAAE,CACX,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAE/D,MAAM,iBAAiB,GAAG,CACxB,gBAA6B,EAC7B,WAAwB,EACM,EAAE;IAChC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,gBAAgB,KAAK,WAAW,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,GAAsB,EAAU,EAAE;IACzD,IAAI,GAAG,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACjC,OAAO,IAAI,GAAG,CAAC,MAAM,iCAAiC,CAAC;IACzD,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,IAAI,GAAG,CAAC,SAAS,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,GAAsB,EAAU,EAAE;IAChE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,GACT,wBAAwB,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,gBAAgB,gBAAgB,SAAS,GAAG,CAAC;IAEhG,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO;YACL,iGAAiG,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,OAAO;YACL,2EAA2E,CAAC;IAChF,CAAC;IAED,OAAO,IAAI,cAAc,GAAG,CAAC,WAAW,kHAAkH,CAAC;IAE3J,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,eAAe,QAAQ,aAAa,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;IACjF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC/B,QAAmC,EACe,EAAE;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvC,SAAS,EAAE,MAAM,CAAC,eAAe;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClE,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,KAA8C,EAK9C,EAAE;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAuB,CAAC;IAClE,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,yBAAyB,CACrE,CAAC;QACF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,wBAAwB,CAAC,GAAG,CAC1B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,GAAW,EACX,WAAqC,EACrC,0BAAoD,EACpD,wBAAoD,EACpD,cAA6C,EAC7C,YAAiC,EACjC,iBAAsC,EACb,EAAE;IAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAmB,EAAE,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC5D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YACD,UAAU,CAAC,IAAI,CAAC;gBACd,WAAW;gBACX,GAAG,EAAE,SAAS,GAAG,EAAE;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,cAAc,GAAG,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/C,WAAW;YACX,GAAG,EAAE,QAAiB;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,OAA0B,EAC1B,MAAc,EACd,MAA6B,EACpB,EAAE;IACX,MAAM,KAAK,GAAG,gCAAgC,CAC5C,MAAM,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAC7C,OAAO,CAAC,kBAAkB,CAC3B,EAAE,sBAAsB,CAAC;IAE1B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,iBAA+C,EAC/C,KAA8C,EAC9C,cAA6C,EAC7C,YAAwC,EACxC,MAA6B,EACvB,EAAE;IACR,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,GACzE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAClE,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9C,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,SAAS;QACX,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,oBAAoB,CACnC,MAAM,EACN,WAAW,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,iBAAiB,CAClB,CAAC;YACF,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,iBAAiB,CAChC,gBAAgB,EAChB,SAAS,CAAC,WAAW,CACtB,CAAC;gBACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,SAAS;gBACX,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,OAAO,CAAC,eAAe;oBACpC,gBAAgB;oBAChB,MAAM;oBACN,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAClD,kHAAkH,CACrH,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ioc-manifest",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "B uild-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": {
|
|
7
7
|
"type": "git",
|