ioc-manifest 1.1.5 → 1.2.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 +12 -18
- package/dist/generator/resolveLifetimeMarkers.d.ts.map +1 -1
- package/dist/generator/resolveLifetimeMarkers.js +4 -5
- package/dist/generator/resolveLifetimeMarkers.js.map +1 -1
- package/dist/groups/baseTypeAssignability.d.ts +6 -1
- package/dist/groups/baseTypeAssignability.d.ts.map +1 -1
- package/dist/groups/baseTypeAssignability.js +103 -8
- package/dist/groups/baseTypeAssignability.js.map +1 -1
- package/dist/groups/resolveGroupPlan.d.ts +1 -4
- package/dist/groups/resolveGroupPlan.d.ts.map +1 -1
- package/dist/groups/resolveGroupPlan.js +17 -6
- package/dist/groups/resolveGroupPlan.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -344,7 +344,7 @@ Under each contract name, keys are implementation names from discovery (`buildFo
|
|
|
344
344
|
|
|
345
345
|
### `lifetimeMarkers`
|
|
346
346
|
|
|
347
|
-
Declare marker interfaces that map to Awilix lifetimes. Any factory whose return type
|
|
347
|
+
Declare marker interfaces that map to Awilix lifetimes. Any factory whose return type **declares** heritage to a marker (via `extends` or a type-alias `&` intersection) inherits that lifetime automatically.
|
|
348
348
|
|
|
349
349
|
```ts
|
|
350
350
|
lifetimeMarkers: {
|
|
@@ -355,7 +355,7 @@ lifetimeMarkers: {
|
|
|
355
355
|
|
|
356
356
|
Keys are interface or type-alias names visible in the package's TypeScript program at codegen. Values are `singleton`, `scoped`, or `transient`. An empty object `{}` skips marker analysis.
|
|
357
357
|
|
|
358
|
-
|
|
358
|
+
Markers match by **declared inheritance**, not structural shape. Use `extends IScoped` on service or contract interfaces (or `type Foo = Bar & IScoped`). Empty marker interfaces are fine. See [Lifetime markers](#lifetime-markers).
|
|
359
359
|
|
|
360
360
|
**Lifetime precedence** (highest first):
|
|
361
361
|
|
|
@@ -699,25 +699,19 @@ The basics — factory discovery, typed cradle, automatic collections — cover
|
|
|
699
699
|
|
|
700
700
|
### Lifetime markers
|
|
701
701
|
|
|
702
|
-
When services are organized by domain (`src/users/`, `src/orders/`) rather than by lifetime category, folder-scoped lifetimes fit poorly. **Lifetime markers** express cross-cutting lifetime policy via marker interfaces — the same
|
|
702
|
+
When services are organized by domain (`src/users/`, `src/orders/`) rather than by lifetime category, folder-scoped lifetimes fit poorly. **Lifetime markers** express cross-cutting lifetime policy via marker interfaces — the same **nominal** membership rules groups use (declared `extends`, not structural assignability).
|
|
703
703
|
|
|
704
704
|
#### Defining a marker
|
|
705
705
|
|
|
706
|
-
A marker is an
|
|
706
|
+
A marker is typically an empty interface (or a type alias you intersect with). Selective matching comes from **where you attach `extends`**, not from branding:
|
|
707
707
|
|
|
708
708
|
```ts
|
|
709
709
|
// shared types
|
|
710
|
-
export interface IScoped {
|
|
711
|
-
readonly __iocLifetimeScoped: true;
|
|
712
|
-
}
|
|
710
|
+
export interface IScoped {}
|
|
713
711
|
|
|
714
|
-
export interface ITransient {
|
|
715
|
-
readonly __iocLifetimeTransient: true;
|
|
716
|
-
}
|
|
712
|
+
export interface ITransient {}
|
|
717
713
|
```
|
|
718
714
|
|
|
719
|
-
The branding property is a compile-time tag. It never appears at runtime — your implementations satisfy it via the type system without setting the field on the actual object.
|
|
720
|
-
|
|
721
715
|
#### Declaring markers
|
|
722
716
|
|
|
723
717
|
Map marker types to lifetimes in `ioc.config`:
|
|
@@ -739,7 +733,7 @@ Three attachment points, in order of locality. The pattern that fits your code b
|
|
|
739
733
|
|
|
740
734
|
```ts
|
|
741
735
|
export interface RequestTracingLogger extends LoggingService, IScoped {
|
|
742
|
-
|
|
736
|
+
ping: () => string;
|
|
743
737
|
}
|
|
744
738
|
```
|
|
745
739
|
|
|
@@ -747,7 +741,6 @@ export interface RequestTracingLogger extends LoggingService, IScoped {
|
|
|
747
741
|
|
|
748
742
|
```ts
|
|
749
743
|
export interface LoggingService extends IScoped {
|
|
750
|
-
readonly __iocLifetimeScoped: true;
|
|
751
744
|
log: (msg: string) => void;
|
|
752
745
|
}
|
|
753
746
|
```
|
|
@@ -756,7 +749,6 @@ export interface LoggingService extends IScoped {
|
|
|
756
749
|
|
|
757
750
|
```ts
|
|
758
751
|
export interface DiscountStrategy extends IScoped {
|
|
759
|
-
readonly __iocLifetimeScoped: true;
|
|
760
752
|
applies: (order: Order) => boolean;
|
|
761
753
|
calculate: (order: Order) => number;
|
|
762
754
|
}
|
|
@@ -804,7 +796,7 @@ Per-implementation overrides in `registrations` and lifetime markers take preced
|
|
|
804
796
|
|
|
805
797
|
### Groups
|
|
806
798
|
|
|
807
|
-
Groups
|
|
799
|
+
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.
|
|
808
800
|
|
|
809
801
|
#### Collection groups: the strategy pattern
|
|
810
802
|
|
|
@@ -834,7 +826,7 @@ groups: {
|
|
|
834
826
|
},
|
|
835
827
|
```
|
|
836
828
|
|
|
837
|
-
Now `container.resolve("discountStrategies")` gives you `ReadonlyArray<DiscountStrategy>` — every implementation
|
|
829
|
+
Now `container.resolve("discountStrategies")` gives you `ReadonlyArray<DiscountStrategy>` — every implementation whose contract type declares `extends DiscountStrategy`, discovered automatically. Your strategy runner just iterates through the array:
|
|
838
830
|
|
|
839
831
|
```ts
|
|
840
832
|
type PricingEngineDeps = {
|
|
@@ -936,7 +928,9 @@ Either way, factory source code doesn't change.
|
|
|
936
928
|
|
|
937
929
|
**Library-mode invocation of `ioc validate`** — prints an informational message and exits 0. Validate is a cross-manifest tool; a library has no cross-manifest concerns to validate.
|
|
938
930
|
|
|
939
|
-
**
|
|
931
|
+
**My factory isn't in the group (or didn't get the marker lifetime)** — membership is **nominal**: the contract or return type must declare `extends YourBase` (or `type Foo = Bar & YourMarker`). Structural similarity is not enough. Common mistakes: forgetting `extends` on the service interface; using a union return type such as `Foo | undefined` on the contract — unions are not heritage, so `type Contract = Impl | undefined` will not join a group whose base is `Impl` unless you use `interface Contract extends Impl` instead.
|
|
932
|
+
|
|
933
|
+
**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.
|
|
940
934
|
|
|
941
935
|
---
|
|
942
936
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveLifetimeMarkers.d.ts","sourceRoot":"","sources":["../../src/generator/resolveLifetimeMarkers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveLifetimeMarkers.d.ts","sourceRoot":"","sources":["../../src/generator/resolveLifetimeMarkers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAClE,oBAAoB,EAAE,CACpB,aAAa,EAAE,EAAE,CAAC,IAAI,EACtB,MAAM,EAAE,sBAAsB,KAC3B,OAAO,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,wBAAwB,GACnC,SAAS,iBAAiB,KACzB,MAAuD,CAAC;AAgC3D,eAAO,MAAM,0BAA0B,GACrC,SAAS,EAAE,CAAC,OAAO,EACnB,iBAAiB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAC3C,SAAS,sBAAsB,EAiBjC,CAAC;AA0EF,MAAM,MAAM,yCAAyC,GAAG;IACtD,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,4BAA4B,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAC7C,WAAW,SAAS,iBAAiB,EAAE,EACvC,iBAAiB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EACxD,SAAS,yCAAyC,KACjD,WAAW,CAAC,MAAM,EAAE,WAAW,CAqEjC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,mCAAmC,GAC9C,SAAS,EAAE,CAAC,OAAO,EACnB,iBAAiB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,KACvD,IAQF,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Resolves factory lifetimes from `lifetimeMarkers` config via return-type
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* discovery, not marker checks.
|
|
3
|
+
* nominal heritage matching. Reuses {@link resolveDeclaredBaseType} from groups; user-facing
|
|
4
|
+
* cost is dominated by factory discovery, not marker checks.
|
|
6
5
|
*/
|
|
7
6
|
import path from "node:path";
|
|
8
|
-
import { resolveDeclaredBaseType } from "../groups/baseTypeAssignability.js";
|
|
7
|
+
import { isNominallyAssignable, resolveDeclaredBaseType, } from "../groups/baseTypeAssignability.js";
|
|
9
8
|
import { collectFileAnalysisForFactoryDiscovery } from "./discoverFactories/scanFactoryFile.js";
|
|
10
9
|
import { resolveFactorySourceAbsPath, } from "./manifestPaths.js";
|
|
11
10
|
const normalizePath = (p) => path.normalize(p);
|
|
@@ -48,7 +47,7 @@ const defaultMarkerResolutionDeps = (program, markers) => {
|
|
|
48
47
|
}
|
|
49
48
|
return marker;
|
|
50
49
|
},
|
|
51
|
-
isAssignableToMarker: (candidateType, marker) => checker
|
|
50
|
+
isAssignableToMarker: (candidateType, marker) => isNominallyAssignable(checker, candidateType, marker.type),
|
|
52
51
|
};
|
|
53
52
|
};
|
|
54
53
|
const collectMatchingMarkers = (returnType, markers, deps) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveLifetimeMarkers.js","sourceRoot":"","sources":["../../src/generator/resolveLifetimeMarkers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolveLifetimeMarkers.js","sourceRoot":"","sources":["../../src/generator/resolveLifetimeMarkers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,sCAAsC,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EACL,2BAA2B,GAG5B,MAAM,oBAAoB,CAAC;AAsB5B,MAAM,aAAa,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAA0B,EAClB,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;AAE3D,MAAM,qBAAqB,GAAG,CAC5B,OAA0B,EAC1B,WAA4B,EAC5B,UAAyB,EACzB,WAAmB,EACX,EAAE;IACV,MAAM,GAAG,GACP,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;IAClE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACzC,OAA0B,EAC1B,QAAgB,EAChB,OAAuC,EAC/B,EAAE;IACV,MAAM,WAAW,GAAG,OAAO;SACxB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,QAAQ,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,EAAE,CAC5C;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,kBAAkB,OAAO,CAAC,UAAU,QAAQ,QAAQ;EAC3D,WAAW;kLACqK,CAAC;AACnL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAmB,EACnB,eAA4C,EACT,EAAE;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,MAAM,GAAG,GAA6B,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CACjE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACjC,EAAE,CAAC;QACF,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAClC,OAAmB,EACnB,OAA0C,EACZ,EAAE;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,iBAAiB,EAAE,CAAC,UAAkB,EAA0B,EAAE;YAChE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,iDAAiD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAC9E,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,oBAAoB,EAAE,CACpB,aAAsB,EACtB,MAA8B,EACrB,EAAE,CACX,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,UAAmB,EACnB,OAA0C,EAC1C,IAAkC,EACX,EAAE;IACzB,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAC3B,OAAmB,EACnB,OAA0B,EAC1B,cAAqC,EACrC,gBAAoD,EAC/B,EAAE;IACvB,MAAM,OAAO,GAAG,aAAa,CAC3B,2BAA2B,CACzB,OAAO,CAAC,UAAU,EAClB,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,QAAQ,CACxB,CACF,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,sCAAsC,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC,CAAC;AAUF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,SAAuC,EACvC,eAAwD,EACxD,OAAkD,EAChB,EAAE;IACpC,IACE,eAAe,KAAK,SAAS;QAC7B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EACzC,CAAC;QACD,6EAA6E;QAC7E,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACvE,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACrE,MAAM,IAAI,GACR,YAAY,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1C,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,cAAc,GAA0B;QAC5C,WAAW;QACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE3C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,oBAAoB,CACrC,OAAO,EACP,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAC;QACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,aAAa,CAC3B,2BAA2B,CACzB,OAAO,CAAC,UAAU,EAClB,WAAW,EACX,QAAQ,CACT,CACF,CAAC;YACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GACZ,UAAU,KAAK,SAAS;gBACtB,CAAC,CAAC,sCAAsC,CAAC,UAAU,CAAC;gBACpD,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,WAAW,GAAG,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1E,MAAM,QAAQ,GACZ,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;gBACnD,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC;gBACtE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,kCAAkC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAC/D,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,OAAmB,EACnB,eAAwD,EAClD,EAAE;IACR,IACE,eAAe,KAAK,SAAS;QAC7B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EACzC,CAAC;QACD,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACvD,CAAC,CAAC"}
|
|
@@ -24,9 +24,14 @@ export declare const getContractDeclaredType: (checker: ts.TypeChecker, program:
|
|
|
24
24
|
* Multiple declarations in different files are rejected as ambiguous.
|
|
25
25
|
*/
|
|
26
26
|
export declare const resolveDeclaredBaseType: (program: ts.Program, checker: ts.TypeChecker, typeName: string) => BaseTypeResolution;
|
|
27
|
+
/**
|
|
28
|
+
* Whether `candidate` declares (transitively) nominal heritage to `base` via `extends` or
|
|
29
|
+
* type-alias intersection — not structural shape matching.
|
|
30
|
+
*/
|
|
31
|
+
export declare const isNominallyAssignable: (checker: ts.TypeChecker, candidate: ts.Type, base: ts.Type) => boolean;
|
|
27
32
|
/**
|
|
28
33
|
* Whether `candidateType` is structurally assignable to a top-level type named `baseTypeName`
|
|
29
|
-
* in the program (excluding node_modules). Used
|
|
34
|
+
* in the program (excluding node_modules). Used for contract-shape validation, not group membership.
|
|
30
35
|
*/
|
|
31
36
|
export declare const isTypeAssignableToNamedBase: (checker: ts.TypeChecker, program: ts.Program, candidateType: ts.Type, baseTypeName: string) => {
|
|
32
37
|
ok: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseTypeAssignability.d.ts","sourceRoot":"","sources":["../../src/groups/baseTypeAssignability.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,8BAA8B,GAAG;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAqBF,eAAO,MAAM,uBAAuB,GAClC,SAAS,EAAE,CAAC,WAAW,EACvB,SAAS,EAAE,CAAC,OAAO,EACnB,cAAc,MAAM,EACpB,UAAU,SAAS,eAAe,EAAE,EACpC,MAAM,4BAA4B,KACjC,EAAE,CAAC,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"baseTypeAssignability.d.ts","sourceRoot":"","sources":["../../src/groups/baseTypeAssignability.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EACV,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,8BAA8B,GAAG;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAqBF,eAAO,MAAM,uBAAuB,GAClC,SAAS,EAAE,CAAC,WAAW,EACvB,SAAS,EAAE,CAAC,OAAO,EACnB,cAAc,MAAM,EACpB,UAAU,SAAS,eAAe,EAAE,EACpC,MAAM,4BAA4B,KACjC,EAAE,CAAC,IAAI,GAAG,SAuBZ,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,EAAE,CAAC,OAAO,EACnB,SAAS,EAAE,CAAC,WAAW,EACvB,UAAU,MAAM,KACf,kBAsCF,CAAC;AAyGF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,EAAE,CAAC,WAAW,EACvB,WAAW,EAAE,CAAC,IAAI,EAClB,MAAM,EAAE,CAAC,IAAI,KACZ,OAmBF,CAAC;AA8BF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACtC,SAAS,EAAE,CAAC,WAAW,EACvB,SAAS,EAAE,CAAC,OAAO,EACnB,eAAe,EAAE,CAAC,IAAI,EACtB,cAAc,MAAM,KACnB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAS7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,GAC7C,MAAM,4BAA4B,EAClC,MAAM,2BAA2B,KAChC,OAEyD,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,4CAA4C,GACvD,SAAS,EAAE,CAAC,WAAW,EACvB,SAAS,EAAE,CAAC,OAAO,EACnB,cAAc,MAAM,EACpB,UAAU,SAAS,eAAe,EAAE,EACpC,OAAO,SAAS,4BAA4B,EAAE,EAC9C,UAAU,EAAE,CAAC,IAAI,EACjB,aAAa,CACX,IAAI,EAAE,4BAA4B,EAClC,IAAI,EAAE,2BAA2B,KAC9B,OAAO,KACX,8BAA8B,EA4BhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6CAA6C,GACxD,SAAS,EAAE,CAAC,WAAW,EACvB,SAAS,EAAE,CAAC,OAAO,EACnB,cAAc,MAAM,EACpB,UAAU,SAAS,eAAe,EAAE,EACpC,OAAO,SAAS,4BAA4B,EAAE,EAC9C,UAAU,EAAE,CAAC,IAAI,KAChB,0BAA0B,EAgC5B,CAAC"}
|
|
@@ -30,9 +30,8 @@ export const getContractDeclaredType = (checker, program, generatedDir, scanDirs
|
|
|
30
30
|
return undefined;
|
|
31
31
|
}
|
|
32
32
|
const declared = checker.getDeclaredTypeOfSymbol(sym);
|
|
33
|
-
// Strip `null` / `undefined`
|
|
34
|
-
//
|
|
35
|
-
// as a distinct assignability failure at the union level.
|
|
33
|
+
// Strip `null` / `undefined` for callers that need the non-nullish declared shape. Nominal
|
|
34
|
+
// group membership uses getContractDeclaredTypeRaw so union aliases do not confer heritage.
|
|
36
35
|
return checker.getNonNullableType(declared);
|
|
37
36
|
};
|
|
38
37
|
/**
|
|
@@ -76,9 +75,105 @@ export const resolveDeclaredBaseType = (program, checker, typeName) => {
|
|
|
76
75
|
}
|
|
77
76
|
return { ok: true, type: loneType };
|
|
78
77
|
};
|
|
78
|
+
const getNamedSymbolForType = (type) => {
|
|
79
|
+
const sym = type.aliasSymbol ?? type.getSymbol();
|
|
80
|
+
if (sym === undefined) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
if (sym.flags & ts.SymbolFlags.Transient) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return sym;
|
|
87
|
+
};
|
|
88
|
+
const typeNodeDeclaresNominalHeritageToBase = (checker, typeNode, baseSym, visited) => {
|
|
89
|
+
if (ts.isIntersectionTypeNode(typeNode)) {
|
|
90
|
+
for (const part of typeNode.types) {
|
|
91
|
+
if (typeNodeDeclaresNominalHeritageToBase(checker, part, baseSym, visited)) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (ts.isTypeReferenceNode(typeNode)) {
|
|
98
|
+
const heritageSym = checker.getSymbolAtLocation(typeNode.typeName);
|
|
99
|
+
if (heritageSym === undefined) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return symbolDeclaresNominalHeritageToBase(checker, heritageSym, baseSym, visited);
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
};
|
|
106
|
+
const symbolDeclaresNominalHeritageToBase = (checker, candidateSym, baseSym, visited) => {
|
|
107
|
+
if (candidateSym === baseSym) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
if (visited.has(candidateSym)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
visited.add(candidateSym);
|
|
114
|
+
for (const decl of candidateSym.declarations ?? []) {
|
|
115
|
+
if (ts.isInterfaceDeclaration(decl)) {
|
|
116
|
+
for (const clause of decl.heritageClauses ?? []) {
|
|
117
|
+
for (const heritageType of clause.types) {
|
|
118
|
+
const heritageSym = checker.getSymbolAtLocation(heritageType.expression);
|
|
119
|
+
if (heritageSym === undefined) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (heritageSym === baseSym) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
if (symbolDeclaresNominalHeritageToBase(checker, heritageSym, baseSym, visited)) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (ts.isTypeAliasDeclaration(decl)) {
|
|
133
|
+
if (typeNodeDeclaresNominalHeritageToBase(checker, decl.type, baseSym, visited)) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Whether `candidate` declares (transitively) nominal heritage to `base` via `extends` or
|
|
142
|
+
* type-alias intersection — not structural shape matching.
|
|
143
|
+
*/
|
|
144
|
+
export const isNominallyAssignable = (checker, candidate, base) => {
|
|
145
|
+
const baseSym = getNamedSymbolForType(base);
|
|
146
|
+
if (baseSym === undefined) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const candidateSym = getNamedSymbolForType(candidate);
|
|
150
|
+
if (candidateSym === undefined) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
if (candidateSym === baseSym) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
const visited = new Set();
|
|
157
|
+
return symbolDeclaresNominalHeritageToBase(checker, candidateSym, baseSym, visited);
|
|
158
|
+
};
|
|
159
|
+
const getContractDeclaredTypeRaw = (checker, program, generatedDir, scanDirs, plan) => {
|
|
160
|
+
const sourceFile = resolveContractTypeSourceFile(program, generatedDir, plan.contractTypeRelImport, scanDirs, plan.contractName);
|
|
161
|
+
if (sourceFile === undefined) {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
const decl = getTopLevelTypeDeclaration(sourceFile, plan.contractName);
|
|
165
|
+
if (decl === undefined) {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
const sym = checker.getSymbolAtLocation(decl.name);
|
|
169
|
+
if (sym === undefined) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
return checker.getDeclaredTypeOfSymbol(sym);
|
|
173
|
+
};
|
|
79
174
|
/**
|
|
80
175
|
* Whether `candidateType` is structurally assignable to a top-level type named `baseTypeName`
|
|
81
|
-
* in the program (excluding node_modules). Used
|
|
176
|
+
* in the program (excluding node_modules). Used for contract-shape validation, not group membership.
|
|
82
177
|
*/
|
|
83
178
|
export const isTypeAssignableToNamedBase = (checker, program, candidateType, baseTypeName) => {
|
|
84
179
|
const resolved = resolveDeclaredBaseType(program, checker, baseTypeName);
|
|
@@ -108,11 +203,11 @@ export const shouldIncludeImplInCollectionGroup = (plan, impl) => impl.registrat
|
|
|
108
203
|
export const collectImplementationMembersAssignableToBase = (checker, program, generatedDir, scanDirs, plans, baseType, filterImpl) => {
|
|
109
204
|
const members = [];
|
|
110
205
|
for (const plan of plans) {
|
|
111
|
-
const contractType =
|
|
206
|
+
const contractType = getContractDeclaredTypeRaw(checker, program, generatedDir, scanDirs, plan);
|
|
112
207
|
if (contractType === undefined) {
|
|
113
208
|
continue;
|
|
114
209
|
}
|
|
115
|
-
if (!checker
|
|
210
|
+
if (!isNominallyAssignable(checker, contractType, baseType)) {
|
|
116
211
|
continue;
|
|
117
212
|
}
|
|
118
213
|
for (const impl of plan.implementations) {
|
|
@@ -136,11 +231,11 @@ export const collectImplementationMembersAssignableToBase = (checker, program, g
|
|
|
136
231
|
export const collectContractDefaultMembersAssignableToBase = (checker, program, generatedDir, scanDirs, plans, baseType) => {
|
|
137
232
|
const members = [];
|
|
138
233
|
for (const plan of plans) {
|
|
139
|
-
const contractType =
|
|
234
|
+
const contractType = getContractDeclaredTypeRaw(checker, program, generatedDir, scanDirs, plan);
|
|
140
235
|
if (contractType === undefined) {
|
|
141
236
|
continue;
|
|
142
237
|
}
|
|
143
|
-
if (!checker
|
|
238
|
+
if (!isNominallyAssignable(checker, contractType, baseType)) {
|
|
144
239
|
continue;
|
|
145
240
|
}
|
|
146
241
|
const defaultImpl = plan.implementations.find((impl) => impl.implementationName === plan.defaultImplementationName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseTypeAssignability.js","sourceRoot":"","sources":["../../src/groups/baseTypeAssignability.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAuBvF,MAAM,0BAA0B,GAAG,CACjC,UAAyB,EACzB,QAAgB,EAC+C,EAAE;IACjE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnE,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAuB,EACvB,OAAmB,EACnB,YAAoB,EACpB,QAAoC,EACpC,IAAkC,EACb,EAAE;IACvB,MAAM,UAAU,GAAG,6BAA6B,CAC9C,OAAO,EACP,YAAY,EACZ,IAAI,CAAC,qBAAqB,EAC1B,QAAQ,EACR,IAAI,CAAC,YAAY,CAClB,CAAC;IACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACtD,
|
|
1
|
+
{"version":3,"file":"baseTypeAssignability.js","sourceRoot":"","sources":["../../src/groups/baseTypeAssignability.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,10 +42,6 @@ export type GroupPlanIssue = {
|
|
|
42
42
|
kind: "group_unknown_base_type";
|
|
43
43
|
groupName: string;
|
|
44
44
|
message: string;
|
|
45
|
-
} | {
|
|
46
|
-
kind: "group_no_matches";
|
|
47
|
-
groupName: string;
|
|
48
|
-
baseType: string;
|
|
49
45
|
} | {
|
|
50
46
|
kind: "group_duplicate_contract_key";
|
|
51
47
|
groupName: string;
|
|
@@ -67,6 +63,7 @@ export declare const groupPlanToManifestNode: (plan: GroupPlan) => IocGroupNodeM
|
|
|
67
63
|
export declare const groupPlanToManifestRoot: (plan: GroupPlan) => IocGroupRootManifest;
|
|
68
64
|
export declare const formatGroupPlanIssue: (issue: GroupPlanIssue) => string;
|
|
69
65
|
export declare const formatGroupPlanIssues: (issues: readonly GroupPlanIssue[]) => string;
|
|
66
|
+
export declare const formatEmptyGroupWarning: (groupName: string, baseType: string) => string;
|
|
70
67
|
/**
|
|
71
68
|
* Validates group definitions and emits the manifest subtree for generated `ioc-manifest.ts`.
|
|
72
69
|
* Requires `discovery` (TypeScript program + `generatedDir` + `scanDirs`) whenever `groups` is set.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveGroupPlan.d.ts","sourceRoot":"","sources":["../../src/groups/resolveGroupPlan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAKL,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAE5F,mGAAmG;AACnG,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEjE,MAAM,MAAM,SAAS,GACjB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACpD,GACD;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAChD,CAAC;AAEN,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;
|
|
1
|
+
{"version":3,"file":"resolveGroupPlan.d.ts","sourceRoot":"","sources":["../../src/groups/resolveGroupPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,8 +81,6 @@ export const formatGroupPlanIssue = (issue) => {
|
|
|
81
81
|
return `[ioc-config] groups.${JSON.stringify(issue.groupName)} must be { kind: "collection" | "object", baseType: string }`;
|
|
82
82
|
case "group_unknown_base_type":
|
|
83
83
|
return `[ioc-config] groups.${JSON.stringify(issue.groupName)}: ${issue.message}`;
|
|
84
|
-
case "group_no_matches":
|
|
85
|
-
return `[ioc-config] groups.${JSON.stringify(issue.groupName)}: no implementations found for base type ${JSON.stringify(issue.baseType)}`;
|
|
86
84
|
case "group_duplicate_contract_key":
|
|
87
85
|
return `[ioc-config] groups.${JSON.stringify(issue.groupName)}: duplicate contract key ${JSON.stringify(issue.contractKey)} in object group`;
|
|
88
86
|
case "group_root_key_collision":
|
|
@@ -98,6 +96,11 @@ export const formatGroupPlanIssue = (issue) => {
|
|
|
98
96
|
}
|
|
99
97
|
};
|
|
100
98
|
export const formatGroupPlanIssues = (issues) => issues.map((issue) => formatGroupPlanIssue(issue)).join("\n");
|
|
99
|
+
export const formatEmptyGroupWarning = (groupName, baseType) => `[ioc-warn] Group ${JSON.stringify(groupName)} base type ${JSON.stringify(baseType)} has no declared extenders in this package.\n` +
|
|
100
|
+
`The group will be empty. If you expected members, ensure your implementations declare \`extends ${baseType}\`.`;
|
|
101
|
+
const warnOnEmptyGroup = (groupName, baseType) => {
|
|
102
|
+
console.warn(formatEmptyGroupWarning(groupName, baseType));
|
|
103
|
+
};
|
|
101
104
|
const runGroupPlan = (groups, plans, discovery) => {
|
|
102
105
|
if (!isRecord(groups)) {
|
|
103
106
|
return { ok: false, issues: [{ kind: "groups_not_object" }] };
|
|
@@ -149,10 +152,14 @@ const runGroupPlan = (groups, plans, discovery) => {
|
|
|
149
152
|
if (entry.kind === "object") {
|
|
150
153
|
const objectMembers = collectContractDefaultMembersAssignableToBase(checker, discovery.program, discovery.generatedDir, discovery.scanDirs, plans, resolvedBase.type);
|
|
151
154
|
if (objectMembers.length === 0) {
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
warnOnEmptyGroup(groupName, entry.baseType);
|
|
156
|
+
reserved.add(groupName);
|
|
157
|
+
groupPlans.push({
|
|
154
158
|
groupName,
|
|
159
|
+
kind: "object",
|
|
155
160
|
baseType: entry.baseType,
|
|
161
|
+
baseTypeId: canonical.baseTypeId,
|
|
162
|
+
members: [],
|
|
156
163
|
});
|
|
157
164
|
continue;
|
|
158
165
|
}
|
|
@@ -173,10 +180,14 @@ const runGroupPlan = (groups, plans, discovery) => {
|
|
|
173
180
|
}
|
|
174
181
|
const members = collectImplementationMembersAssignableToBase(checker, discovery.program, discovery.generatedDir, discovery.scanDirs, plans, resolvedBase.type, shouldIncludeImplInCollectionGroup);
|
|
175
182
|
if (members.length === 0) {
|
|
176
|
-
|
|
177
|
-
|
|
183
|
+
warnOnEmptyGroup(groupName, entry.baseType);
|
|
184
|
+
reserved.add(groupName);
|
|
185
|
+
groupPlans.push({
|
|
178
186
|
groupName,
|
|
187
|
+
kind: "collection",
|
|
179
188
|
baseType: entry.baseType,
|
|
189
|
+
baseTypeId: canonical.baseTypeId,
|
|
190
|
+
members: [],
|
|
180
191
|
});
|
|
181
192
|
continue;
|
|
182
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveGroupPlan.js","sourceRoot":"","sources":["../../src/groups/resolveGroupPlan.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,6CAA6C,EAC7C,4CAA4C,EAC5C,uBAAuB,EACvB,kCAAkC,GAGnC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2CAA2C,GAI5C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveGroupPlan.js","sourceRoot":"","sources":["../../src/groups/resolveGroupPlan.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,6CAA6C,EAC7C,4CAA4C,EAC5C,uBAAuB,EACvB,kCAAkC,GAGnC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2CAA2C,GAI5C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAsDlC,MAAM,yBAAyB,GAAG,CAChC,KAA8C,EACjC,EAAE;IACf,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAyB,EAAE,CACjE,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,QAAQ,CAAC;AAE/C,MAAM,uBAAuB,GAAG,CAC9B,SAAiB,EACjB,GAAY,EACgB,EAAE;IAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAE9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,CAC9C,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAe,EACO,EAAE;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,GAAG,GACP,EAAE,CAAC;IAEL,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;YACxB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAe,EACO,EAAE,CAAC,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,UAAU,EAAE,IAAI,CAAC,UAAU;IAC3B,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,CACrC,SAAiB,EACjB,OAA8C,EAGP,EAAE;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE,8BAA8B;oBACpC,SAAS;oBACT,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAqB,EAAU,EAAE;IACpE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,mBAAmB;YACtB,OAAO,gDAAgD,CAAC;QAE1D,KAAK,qBAAqB;YACxB,OAAO,uBAAuB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,8DAA8D,CAAC;QAE9H,KAAK,yBAAyB;YAC5B,OAAO,uBAAuB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAEpF,KAAK,8BAA8B;YACjC,OAAO,uBAAuB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAE/I,KAAK,0BAA0B;YAC7B,OAAO,gCAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC;QAEvH,KAAK,kCAAkC;YACrC,OAAO,gCAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,gFAAgF,CAAC;QAEnJ,KAAK,iCAAiC;YACpC,OAAO,kLAAkL,CAAC;QAE5L,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,KAAK,CAAC;YAChC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAiC,EACzB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAAiB,EACjB,QAAgB,EACR,EAAE,CACV,oBAAoB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,+CAA+C;IAClI,mGAAmG,QAAQ,KAAK,CAAC;AAEnH,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAQ,EAAE;IACrE,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,MAAe,EACf,KAA8C,EAC9C,SAAiD,EAGP,EAAE;IAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,IAAI,2CAA2C,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1E,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GAAG,uBAAuB,CAC7C,SAAS,EACT,MAAM,CAAC,SAAS,CAAC,CAClB,CAAC;QACF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAuB,CAAC;QACtD,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEjF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,yBAAyB;gBAC/B,SAAS;gBACT,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,uBAAuB,CAC1C,SAAS,CAAC,OAAO,EACjB,OAAO,EACP,KAAK,CAAC,QAAQ,CACf,CAAC;QACF,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE;YAClC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,8BAA8B,CAC5B,SAAS,CAAC,OAAO,EACjB,OAAO,EACP,SAAS,CAAC,UAAU,CACrB,CAAC;QAEN,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,yBAAyB;gBAC/B,SAAS;gBACT,OAAO,EAAE,YAAY,CAAC,OAAO;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,6CAA6C,CACjE,OAAO,EACP,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,QAAQ,EAClB,KAAK,EACL,YAAY,CAAC,IAAI,CAClB,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5C,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC;oBACd,SAAS;oBACT,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,8BAA8B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS;gBACT,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,4CAA4C,CAC1D,OAAO,EACP,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,YAAY,EACtB,SAAS,CAAC,QAAQ,EAClB,KAAK,EACL,YAAY,CAAC,IAAI,EACjB,kCAAkC,CACnC,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC;gBACd,SAAS;gBACT,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC;YACd,SAAS;YACT,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAe,EACf,KAA8C,EAC9C,SAAiD,EACpB,EAAE;IAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC,CAAC;AAgBF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,MAAe,EACf,KAA8C,EAC9C,SAAiD,EAC9B,EAAE;IACrB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ioc-manifest",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Build-time factory discovery and codegen: generates a typed Awilix (PROXY) registration manifest from TypeScript sources with ioc.config as the single policy surface.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|