@layerzerolabs/base-definitions 0.0.18 → 0.0.20

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.
Files changed (50) hide show
  1. package/.turbo/turbo-build.log +34 -34
  2. package/.turbo/turbo-lint.log +1 -1
  3. package/.turbo/turbo-test.log +4 -4
  4. package/dist/{O4SGLGEI.js → JJBD65HU.js} +12 -2
  5. package/dist/JJBD65HU.js.map +1 -0
  6. package/dist/{67HCA6YT.cjs → JKTGUQY4.cjs} +12 -2
  7. package/dist/JKTGUQY4.cjs.map +1 -0
  8. package/dist/{VO33UEHJ.cjs → LBRYOOPE.cjs} +5 -5
  9. package/dist/LBRYOOPE.cjs.map +1 -0
  10. package/dist/{LXFPNTIJ.cjs → MOTHALOU.cjs} +2 -2
  11. package/dist/MOTHALOU.cjs.map +1 -0
  12. package/dist/{S2FOVFOI.js → RFHQF55L.js} +5 -5
  13. package/dist/RFHQF55L.js.map +1 -0
  14. package/dist/{MELXRRC4.js → T6VE3ZX4.js} +3 -3
  15. package/dist/T6VE3ZX4.js.map +1 -0
  16. package/dist/{E2YEEYRA.cjs → Y5HYTYQJ.cjs} +4 -4
  17. package/dist/Y5HYTYQJ.cjs.map +1 -0
  18. package/dist/{RWF76TF5.js → YDEUCMM5.js} +2 -2
  19. package/dist/YDEUCMM5.js.map +1 -0
  20. package/dist/definitions.cjs +4 -4
  21. package/dist/definitions.d.ts +2 -0
  22. package/dist/definitions.d.ts.map +1 -1
  23. package/dist/definitions.js +1 -1
  24. package/dist/index.cjs +10 -10
  25. package/dist/index.js +4 -4
  26. package/dist/lzyringe.cjs +2 -2
  27. package/dist/lzyringe.d.ts +5 -1
  28. package/dist/lzyringe.d.ts.map +1 -1
  29. package/dist/lzyringe.js +1 -1
  30. package/dist/registrarBuilder.cjs +2 -2
  31. package/dist/registrarBuilder.d.ts +8 -8
  32. package/dist/registrarBuilder.d.ts.map +1 -1
  33. package/dist/registrarBuilder.js +1 -1
  34. package/dist/utils.cjs +3 -3
  35. package/dist/utils.d.ts +2 -1
  36. package/dist/utils.d.ts.map +1 -1
  37. package/dist/utils.js +2 -2
  38. package/package.json +7 -7
  39. package/src/definitions.ts +1 -1
  40. package/src/lzyringe.ts +9 -1
  41. package/src/registrarBuilder.ts +21 -27
  42. package/src/utils.ts +2 -1
  43. package/dist/67HCA6YT.cjs.map +0 -1
  44. package/dist/E2YEEYRA.cjs.map +0 -1
  45. package/dist/LXFPNTIJ.cjs.map +0 -1
  46. package/dist/MELXRRC4.js.map +0 -1
  47. package/dist/O4SGLGEI.js.map +0 -1
  48. package/dist/RWF76TF5.js.map +0 -1
  49. package/dist/S2FOVFOI.js.map +0 -1
  50. package/dist/VO33UEHJ.cjs.map +0 -1
@@ -1,54 +1,54 @@
1
1
 
2
- > @layerzerolabs/base-definitions@0.0.2 build /home/runner/work/monorepo-internal/monorepo-internal/packages/definitions/base-definitions
2
+ > @layerzerolabs/base-definitions@0.0.2 build /home/runner/work/monorepo-internal/monorepo-internal/packages/framework/definitions/base-definitions
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/definitions.ts, src/index.ts, src/lzyringe.ts, src/registrarBuilder.ts, src/utils.ts
6
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v8.4.0
8
- CLI Using tsup config: /home/runner/work/monorepo-internal/monorepo-internal/packages/definitions/base-definitions/tsup.config.ts
8
+ CLI Using tsup config: /home/runner/work/monorepo-internal/monorepo-internal/packages/framework/definitions/base-definitions/tsup.config.ts
9
9
  CLI Target: es2022
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
+ CJS dist/definitions.cjs 594.00 B
14
+ CJS dist/index.cjs 1.12 KB
15
+ CJS dist/Y5HYTYQJ.cjs 862.00 B
16
+ CJS dist/LBRYOOPE.cjs 4.11 KB
17
+ CJS dist/JKTGUQY4.cjs 1.70 KB
18
+ CJS dist/utils.cjs 341.00 B
19
+ CJS dist/YJF4D23A.cjs 245.00 B
20
+ CJS dist/lzyringe.cjs 302.00 B
21
+ CJS dist/MOTHALOU.cjs 1.21 KB
22
+ CJS dist/registrarBuilder.cjs 320.00 B
23
+ CJS dist/Y5HYTYQJ.cjs.map 1.89 KB
24
+ CJS dist/LBRYOOPE.cjs.map 11.37 KB
25
+ CJS dist/index.cjs.map 70.00 B
26
+ CJS dist/JKTGUQY4.cjs.map 3.78 KB
27
+ CJS dist/definitions.cjs.map 76.00 B
28
+ CJS dist/YJF4D23A.cjs.map 73.00 B
29
+ CJS dist/utils.cjs.map 70.00 B
30
+ CJS dist/lzyringe.cjs.map 73.00 B
31
+ CJS dist/MOTHALOU.cjs.map 9.25 KB
32
+ CJS dist/registrarBuilder.cjs.map 81.00 B
33
+ CJS ⚡️ Build success in 146ms
13
34
  ESM dist/definitions.js 193.00 B
14
35
  ESM dist/index.js 338.00 B
15
- ESM dist/S2FOVFOI.js 3.98 KB
16
- ESM dist/O4SGLGEI.js 1.40 KB
17
36
  ESM dist/lzyringe.js 146.00 B
18
- ESM dist/utils.js 173.00 B
19
- ESM dist/MELXRRC4.js 783.00 B
20
37
  ESM dist/registrarBuilder.js 163.00 B
38
+ ESM dist/JJBD65HU.js 1.65 KB
39
+ ESM dist/utils.js 173.00 B
40
+ ESM dist/RFHQF55L.js 4.01 KB
41
+ ESM dist/T6VE3ZX4.js 783.00 B
42
+ ESM dist/YDEUCMM5.js 1.04 KB
21
43
  ESM dist/VUOMXK5T.js 222.00 B
22
- ESM dist/RWF76TF5.js 1.04 KB
23
44
  ESM dist/definitions.js.map 75.00 B
24
45
  ESM dist/index.js.map 69.00 B
25
- ESM dist/O4SGLGEI.js.map 3.25 KB
26
46
  ESM dist/lzyringe.js.map 72.00 B
27
- ESM dist/S2FOVFOI.js.map 11.46 KB
47
+ ESM dist/JJBD65HU.js.map 3.78 KB
28
48
  ESM dist/utils.js.map 69.00 B
29
- ESM dist/MELXRRC4.js.map 1.80 KB
30
- ESM dist/VUOMXK5T.js.map 72.00 B
31
- ESM dist/RWF76TF5.js.map 9.19 KB
32
49
  ESM dist/registrarBuilder.js.map 80.00 B
33
- ESM ⚡️ Build success in 274ms
34
- CJS dist/index.cjs 1.12 KB
35
- CJS dist/lzyringe.cjs 304.00 B
36
- CJS dist/registrarBuilder.cjs 320.00 B
37
- CJS dist/67HCA6YT.cjs 1.45 KB
38
- CJS dist/VO33UEHJ.cjs 4.08 KB
39
- CJS dist/utils.cjs 341.00 B
40
- CJS dist/E2YEEYRA.cjs 862.00 B
41
- CJS dist/definitions.cjs 594.00 B
42
- CJS dist/YJF4D23A.cjs 245.00 B
43
- CJS dist/LXFPNTIJ.cjs 1.21 KB
44
- CJS dist/lzyringe.cjs.map 73.00 B
45
- CJS dist/67HCA6YT.cjs.map 3.26 KB
46
- CJS dist/VO33UEHJ.cjs.map 11.48 KB
47
- CJS dist/utils.cjs.map 70.00 B
48
- CJS dist/E2YEEYRA.cjs.map 1.82 KB
49
- CJS dist/definitions.cjs.map 76.00 B
50
- CJS dist/YJF4D23A.cjs.map 73.00 B
51
- CJS dist/registrarBuilder.cjs.map 81.00 B
52
- CJS dist/LXFPNTIJ.cjs.map 9.21 KB
53
- CJS dist/index.cjs.map 70.00 B
54
- CJS ⚡️ Build success in 275ms
50
+ ESM dist/RFHQF55L.js.map 11.36 KB
51
+ ESM dist/VUOMXK5T.js.map 72.00 B
52
+ ESM dist/T6VE3ZX4.js.map 1.87 KB
53
+ ESM dist/YDEUCMM5.js.map 9.24 KB
54
+ ESM ⚡️ Build success in 147ms
@@ -1,4 +1,4 @@
1
1
 
2
- > @layerzerolabs/base-definitions@0.0.2 lint /home/runner/work/monorepo-internal/monorepo-internal/packages/definitions/base-definitions
2
+ > @layerzerolabs/base-definitions@0.0.2 lint /home/runner/work/monorepo-internal/monorepo-internal/packages/framework/definitions/base-definitions
3
3
  > eslint . --max-warnings 0
4
4
 
@@ -1,14 +1,14 @@
1
1
 
2
- > @layerzerolabs/base-definitions@0.0.2 test /home/runner/work/monorepo-internal/monorepo-internal/packages/definitions/base-definitions
2
+ > @layerzerolabs/base-definitions@0.0.2 test /home/runner/work/monorepo-internal/monorepo-internal/packages/framework/definitions/base-definitions
3
3
  > vitest --run --pass-with-no-tests
4
4
 
5
5
 
6
-  RUN  v3.2.3 /home/runner/work/monorepo-internal/monorepo-internal/packages/definitions/base-definitions
6
+  RUN  v3.2.3 /home/runner/work/monorepo-internal/monorepo-internal/packages/framework/definitions/base-definitions
7
7
 
8
8
  ✓ test/registrarBuilder.test.ts (4 tests) 6ms
9
9
 
10
10
   Test Files  1 passed (1)
11
11
   Tests  4 passed (4)
12
-  Start at  18:58:06
13
-  Duration  423ms (transform 86ms, setup 0ms, collect 81ms, tests 6ms, environment 0ms, prepare 133ms)
12
+  Start at  22:36:01
13
+  Duration  472ms (transform 107ms, setup 0ms, collect 91ms, tests 6ms, environment 0ms, prepare 141ms)
14
14
 
@@ -26,6 +26,16 @@ var DependencyStore = class {
26
26
  value
27
27
  };
28
28
  }
29
+ /** Registers a promise value that will be resolved literally by resolve()
30
+ * @throws if already registered
31
+ */
32
+ registerPromise(key, value) {
33
+ this.throwIfRegistered(key);
34
+ this.store[key] = {
35
+ type: "value",
36
+ value
37
+ };
38
+ }
29
39
  /** Registers a factory function that will be called by resolve()
30
40
  * @throws if already registered
31
41
  */
@@ -58,5 +68,5 @@ var DependencyStore = class {
58
68
  };
59
69
 
60
70
  export { DependencyStore };
61
- //# sourceMappingURL=O4SGLGEI.js.map
62
- //# sourceMappingURL=O4SGLGEI.js.map
71
+ //# sourceMappingURL=JJBD65HU.js.map
72
+ //# sourceMappingURL=JJBD65HU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lzyringe.ts"],"names":["DependencyStore","store","throwIfRegistered","key","Error","throwIfUnregistered","register","value","type","registerPromise","registerFactory","factory","unregister","undefined","invalidate","resolve","stored"],"mappings":";;;AAUO,IAAMA,kBAAN,MAAMA;EAAb;;;AACYC,EAAAA,KAAAA,GAA8C,EAAC;AAE/CC,EAAAA,iBAAAA,CAAkBC,GAAAA,EAAa;AACnC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,sBAAAA,CAA2B,CAAA;AAClD,IAAA;AACJ,EAAA;AAEQE,EAAAA,mBAAAA,CAAoBF,GAAAA,EAAa;AACrC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,kBAAAA,CAAuB,CAAA;AAC9C,IAAA;AACJ,EAAA;;;;AAKOG,EAAAA,QAAAA,CAAYH,KAAaI,KAAAA,EAA2C;AACvE,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOE,EAAAA,eAAAA,CAAgBN,KAAaI,KAAAA,EAAqB;AACrD,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOG,EAAAA,eAAAA,CAAgBP,KAAaQ,OAAAA,EAAoB;AACpD,IAAA,IAAA,CAAKT,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,SAAA;MAAWD,KAAAA,EAAOI;AAAQ,KAAA;AACxD,EAAA;;;;AAKOC,EAAAA,UAAAA,CAAWT,GAAAA,EAAa;AAC3B,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAOU,MAAAA;AACtB,EAAA;;;;EAKOC,UAAAA,GAAa;AAChB,IAAA,IAAA,CAAKb,QAAQ,EAAC;AAClB,EAAA;;AAGOc,EAAAA,OAAAA,CAAQZ,GAAAA,EAAa;AACxB,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,MAAMa,MAAAA,GAAS,IAAA,CAAKf,KAAAA,CAAME,GAAAA,CAAAA;AAC1B,IAAA,OAAOa,OAAOR,IAAAA,KAAS,SAAA,GAAYQ,MAAAA,CAAOT,KAAAA,KAAUS,MAAAA,CAAOT,KAAAA;AAC/D,EAAA;AACJ","file":"JJBD65HU.js","sourcesContent":["type StoreValue = {\n type: 'value';\n value: any;\n};\ntype StoreFactory = {\n type: 'factory';\n value: () => any;\n};\ntype StoreAny = StoreValue | StoreFactory;\n\nexport class DependencyStore {\n private store: Record<string, StoreAny | undefined> = {};\n\n private throwIfRegistered(key: string) {\n if (this.store[key] != null) {\n throw new Error(`${key} is already registered`);\n }\n }\n\n private throwIfUnregistered(key: string) {\n if (this.store[key] == null) {\n throw new Error(`${key} is not registered`);\n }\n }\n\n /** Registers a value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public register<T>(key: string, value: T extends Promise<any> ? never : T) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a promise value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public registerPromise(key: string, value: Promise<any>) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a factory function that will be called by resolve()\n * @throws if already registered\n */\n public registerFactory(key: string, factory: () => any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'factory', value: factory };\n }\n\n /** Unregisters a key\n * @throws if not registered\n */\n public unregister(key: string) {\n this.throwIfUnregistered(key);\n this.store[key] = undefined;\n }\n\n /**\n * Drops all registered values\n */\n public invalidate() {\n this.store = {};\n }\n\n /** Resolves a key to a value */\n public resolve(key: string) {\n this.throwIfUnregistered(key);\n const stored = this.store[key]!;\n return stored.type === 'factory' ? stored.value() : stored.value;\n }\n}\n"]}
@@ -28,6 +28,16 @@ var DependencyStore = class {
28
28
  value
29
29
  };
30
30
  }
31
+ /** Registers a promise value that will be resolved literally by resolve()
32
+ * @throws if already registered
33
+ */
34
+ registerPromise(key, value) {
35
+ this.throwIfRegistered(key);
36
+ this.store[key] = {
37
+ type: "value",
38
+ value
39
+ };
40
+ }
31
41
  /** Registers a factory function that will be called by resolve()
32
42
  * @throws if already registered
33
43
  */
@@ -60,5 +70,5 @@ var DependencyStore = class {
60
70
  };
61
71
 
62
72
  exports.DependencyStore = DependencyStore;
63
- //# sourceMappingURL=67HCA6YT.cjs.map
64
- //# sourceMappingURL=67HCA6YT.cjs.map
73
+ //# sourceMappingURL=JKTGUQY4.cjs.map
74
+ //# sourceMappingURL=JKTGUQY4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lzyringe.ts"],"names":["DependencyStore","store","throwIfRegistered","key","Error","throwIfUnregistered","register","value","type","registerPromise","registerFactory","factory","unregister","undefined","invalidate","resolve","stored"],"mappings":";;;;;AAUO,IAAMA,kBAAN,MAAMA;EAAb;;;AACYC,EAAAA,KAAAA,GAA8C,EAAC;AAE/CC,EAAAA,iBAAAA,CAAkBC,GAAAA,EAAa;AACnC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,sBAAAA,CAA2B,CAAA;AAClD,IAAA;AACJ,EAAA;AAEQE,EAAAA,mBAAAA,CAAoBF,GAAAA,EAAa;AACrC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,kBAAAA,CAAuB,CAAA;AAC9C,IAAA;AACJ,EAAA;;;;AAKOG,EAAAA,QAAAA,CAAYH,KAAaI,KAAAA,EAA2C;AACvE,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOE,EAAAA,eAAAA,CAAgBN,KAAaI,KAAAA,EAAqB;AACrD,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOG,EAAAA,eAAAA,CAAgBP,KAAaQ,OAAAA,EAAoB;AACpD,IAAA,IAAA,CAAKT,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,SAAA;MAAWD,KAAAA,EAAOI;AAAQ,KAAA;AACxD,EAAA;;;;AAKOC,EAAAA,UAAAA,CAAWT,GAAAA,EAAa;AAC3B,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAOU,MAAAA;AACtB,EAAA;;;;EAKOC,UAAAA,GAAa;AAChB,IAAA,IAAA,CAAKb,QAAQ,EAAC;AAClB,EAAA;;AAGOc,EAAAA,OAAAA,CAAQZ,GAAAA,EAAa;AACxB,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,MAAMa,MAAAA,GAAS,IAAA,CAAKf,KAAAA,CAAME,GAAAA,CAAAA;AAC1B,IAAA,OAAOa,OAAOR,IAAAA,KAAS,SAAA,GAAYQ,MAAAA,CAAOT,KAAAA,KAAUS,MAAAA,CAAOT,KAAAA;AAC/D,EAAA;AACJ","file":"JKTGUQY4.cjs","sourcesContent":["type StoreValue = {\n type: 'value';\n value: any;\n};\ntype StoreFactory = {\n type: 'factory';\n value: () => any;\n};\ntype StoreAny = StoreValue | StoreFactory;\n\nexport class DependencyStore {\n private store: Record<string, StoreAny | undefined> = {};\n\n private throwIfRegistered(key: string) {\n if (this.store[key] != null) {\n throw new Error(`${key} is already registered`);\n }\n }\n\n private throwIfUnregistered(key: string) {\n if (this.store[key] == null) {\n throw new Error(`${key} is not registered`);\n }\n }\n\n /** Registers a value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public register<T>(key: string, value: T extends Promise<any> ? never : T) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a promise value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public registerPromise(key: string, value: Promise<any>) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a factory function that will be called by resolve()\n * @throws if already registered\n */\n public registerFactory(key: string, factory: () => any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'factory', value: factory };\n }\n\n /** Unregisters a key\n * @throws if not registered\n */\n public unregister(key: string) {\n this.throwIfUnregistered(key);\n this.store[key] = undefined;\n }\n\n /**\n * Drops all registered values\n */\n public invalidate() {\n this.store = {};\n }\n\n /** Resolves a key to a value */\n public resolve(key: string) {\n this.throwIfUnregistered(key);\n const stored = this.store[key]!;\n return stored.type === 'factory' ? stored.value() : stored.value;\n }\n}\n"]}
@@ -111,18 +111,18 @@ var RegistrarBuilder = class {
111
111
  }
112
112
  return node;
113
113
  }, "mergedNodePrehandler");
114
- const mergedNodeHandler = /* @__PURE__ */ YJF4D23A_cjs.__name(async (node) => {
114
+ const mergedNodeHandler = /* @__PURE__ */ YJF4D23A_cjs.__name(async (node, ancestry) => {
115
115
  for (const { nodeClass, identifier, fn } of this.classHandlers) {
116
116
  if (node instanceof nodeClass) {
117
117
  return {
118
118
  key: identifier,
119
- value: await fn(node)
119
+ value: await fn(node, ancestry)
120
120
  };
121
121
  }
122
122
  }
123
123
  return {
124
124
  key: "default",
125
- value: await this.defaultHandler(node)
125
+ value: await this.defaultHandler(node, ancestry)
126
126
  };
127
127
  }, "mergedNodeHandler");
128
128
  return {
@@ -132,5 +132,5 @@ var RegistrarBuilder = class {
132
132
  };
133
133
 
134
134
  exports.RegistrarBuilder = RegistrarBuilder;
135
- //# sourceMappingURL=VO33UEHJ.cjs.map
136
- //# sourceMappingURL=VO33UEHJ.cjs.map
135
+ //# sourceMappingURL=LBRYOOPE.cjs.map
136
+ //# sourceMappingURL=LBRYOOPE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/registrarBuilder.ts"],"names":["RegistrarBuilder","defaultHandler","node","Error","JSON","stringify","classHandlers","classAliases","addClassHandler","nodeClass","identifier","fn","find","fromNodeClass","i","handler","prototype","isPrototypeOf","splice","push","addClassAlias","getToNode","alias","addDefault","build","mergedNodePrehandler","toNode","mergedNodeHandler","__name","ancestry","key","value","traverseDependencies","dfs"],"mappings":";;;;;AAoBO,IAAMA,mBAAN,MAAMA;EAjBb;;;AAkBcC,EAAAA,cAAAA;EACV,WAAA,GAAc;AACV,IAAA,IAAA,CAAKA,cAAAA,GAAiB,OAAOC,IAAAA,KAAAA;AACzB,MAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,0EAAA,EAA6EC,KAAKC,SAAAA,CAAUH,IAAAA,CAAAA,CAAAA,CAAO,CAAA;AAE3G,IAAA,CAAA;AACJ,EAAA;AAEUI,EAAAA,aAAAA,GAIJ,EAAA;AAEIC,EAAAA,YAAAA,GAGJ,EAAA;;;;;;;EAQCC,eAAAA,CAILC,SAAAA,EAAuBC,YAAwBC,EAAAA,EAAc;AAC3D,IAAA,IAAI,IAAA,CAAKJ,aAAaK,IAAAA,CAAK,CAAC,EAAEC,aAAAA,EAAa,KAAOA,aAAAA,KAAkBJ,SAAAA,CAAAA,EAAY;AAC5E,MAAA,MAAM,IAAIN,MACN,CAAA,8FAAA,CAAgG,CAAA;AAExG,IAAA;AAEA,IAAA,IAAIW,CAAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAWC,OAAAA,IAAW,KAAKT,aAAAA,EAAe;AAEtC,MAAA,IAAIS,OAAAA,CAAQN,cAAcA,SAAAA,EAAW;AACjC,QAAA,IAAA,CAAKH,aAAAA,CAAcQ,CAAAA,CAAAA,GAAK;AACpBL,UAAAA,SAAAA;AACAC,UAAAA,UAAAA;AACAC,UAAAA;AACJ,SAAA;AAEA,QAAA,OAAO,IAAA;AAKX,MAAA;AAIA,MAAA,IAAII,QAAQN,SAAAA,CAAUO,SAAAA,CAAUC,aAAAA,CAAcR,SAAAA,CAAUO,SAAS,CAAA,EAAG;AAChE,QAAA,IAAA,CAAKV,aAAAA,CAAcY,MAAAA,CAAOJ,CAAAA,EAAG,CAAA,EAAG;AAC5BL,UAAAA,SAAAA;AACAC,UAAAA,UAAAA;AACAC,UAAAA;SACJ,CAAA;AAEA,QAAA,OAAO,IAAA;AAKX,MAAA;AACAG,MAAAA,CAAAA,EAAAA;AACJ,IAAA;AAEA,IAAA,IAAA,CAAKR,cAAca,IAAAA,CAAK;AACpBV,MAAAA,SAAAA;AACAC,MAAAA,UAAAA;AACAC,MAAAA;KACJ,CAAA;AAEA,IAAA,OAAO,IAAA;AAKX,EAAA;;;;;;;;;;;;;;AAeOS,EAAAA,aAAAA,CACHP,eACAQ,SAAAA,EACF;AACE,IAAA,IAAI,IAAA,CAAKf,cAAcM,IAAAA,CAAK,CAAC,EAAEH,SAAAA,EAAS,KAAOA,SAAAA,KAAcI,aAAAA,CAAAA,EAAgB;AACzE,MAAA,MAAM,IAAIV,MAAM,CAAA,6DAAA,CAA+D,CAAA;AACnF,IAAA;AAEA,IAAA,IAAIW,CAAAA,GAAI,CAAA;AACR,IAAA,KAAA,MAAWQ,KAAAA,IAAS,KAAKf,YAAAA,EAAc;AAEnC,MAAA,IAAIe,KAAAA,CAAMT,kBAAkBA,aAAAA,EAAe;AACvC,QAAA,IAAA,CAAKN,YAAAA,CAAaO,CAAAA,CAAAA,GAAK;AACnBD,UAAAA,aAAAA;AACAQ,UAAAA;AACJ,SAAA;AAEA,QAAA,OAAO,IAAA;AACX,MAAA;AAIA,MAAA,IAAIC,MAAMT,aAAAA,CAAcG,SAAAA,CAAUC,aAAAA,CAAcJ,aAAAA,CAAcG,SAAS,CAAA,EAAG;AACtE,QAAA,IAAA,CAAKT,YAAAA,CAAaW,MAAAA,CAAOJ,CAAAA,EAAG,CAAA,EAAG;AAC3BD,UAAAA,aAAAA;AACAQ,UAAAA;SACJ,CAAA;AAEA,QAAA,OAAO,IAAA;AACX,MAAA;AACAP,MAAAA,CAAAA,EAAAA;AACJ,IAAA;AAEA,IAAA,IAAA,CAAKP,aAAaY,IAAAA,CAAK;AACnBN,MAAAA,aAAAA;AACAQ,MAAAA;KACJ,CAAA;AAEA,IAAA,OAAO,IAAA;AACX,EAAA;;;;;;AAOOE,EAAAA,UAAAA,CAAWZ,EAAAA,EAA+D;AAC7E,IAAA,IAAA,CAAKV,cAAAA,GAAiBU,EAAAA;AACtB,IAAA,OAAO,IAAA;AACX,EAAA;EAEOa,KAAAA,GAAiC;AACpC,IAAA,MAAMC,oBAAAA,wCAAwBvB,IAAAA,KAAAA;AAC1B,MAAA,KAAA,MAAW,EAAEW,aAAAA,EAAeQ,SAAAA,EAAWK,MAAAA,EAAM,IAAM,KAAKnB,YAAAA,EAAc;AAClE,QAAA,IAAIL,gBAAgBW,aAAAA,EAAe;AAC/B,UAAA,OAAOa,OAAOxB,IAAAA,CAAAA;AAClB,QAAA;AACJ,MAAA;AACA,MAAA,OAAOA,IAAAA;IACX,CAAA,EAP6B,sBAAA,CAAA;AAS7B,IAAA,MAAMyB,iBAAAA,mBAAoBC,mBAAA,CAAA,OAAO1B,IAAAA,EAAsB2B,QAAAA,KAAAA;AACnD,MAAA,KAAA,MAAW,EAAEpB,SAAAA,EAAWC,UAAAA,EAAYC,EAAAA,EAAE,IAAM,KAAKL,aAAAA,EAAe;AAC5D,QAAA,IAAIJ,gBAAgBO,SAAAA,EAAW;AAC3B,UAAA,OAAO;YACHqB,GAAAA,EAAKpB,UAAAA;YACLqB,KAAAA,EAAO,MAAMpB,EAAAA,CAAGT,IAAAA,EAAM2B,QAAAA;AAC1B,WAAA;AACJ,QAAA;AACJ,MAAA;AAEA,MAAA,OAAO;QACHC,GAAAA,EAAK,SAAA;AACLC,QAAAA,KAAAA,EAAO,MAAM,IAAA,CAAK9B,cAAAA,CAAeC,IAAAA,EAAM2B,QAAAA;AAC3C,OAAA;IACJ,CAAA,EAd0B,mBAAA,CAAA;AAe1B,IAAA,OAAO;MACHG,oBAAAA,kBAAsBJ,mBAAA,CAAA,OAAO1B,SACzB,MAAM+B,OAAAA,CAAkB/B,MAAMyB,iBAAAA,EAAmBF,oBAAAA,GAAAA,EAD/B,sBAAA;AAE1B,KAAA;AACJ,EAAA;AACJ","file":"LBRYOOPE.cjs","sourcesContent":["import type { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type { Registrar } from '@layerzerolabs/dfs';\nexport type { Registrar };\nimport { dfs } from '@layerzerolabs/dfs';\n\ntype NodeClass = new (...args: any[]) => DependencyNode;\ntype AbstractNodeClass = abstract new (...args: any[]) => DependencyNode;\n\n/**\n * A builder class for a {@link Registrar}.\n * Builds a registrar that switches on node class--i.e., enables defining\n * specific registration behaviour for specific node classes.\n * Intelligently handles inheritance, always using the most specific\n * handler defined for any given class.\n * The registrar built shall return an object that maps from a handler ID,\n * to a map from node name to the return of each handler,\n * e.g., { objectNodes: { myObjectNode: 'my handler return' }}.\n * This can be used to extract a specific resolved value after resolving the tree,\n * given that the handlers return the resolved nodes.\n */\nexport class RegistrarBuilder<_ReturnTypes> {\n protected defaultHandler: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;\n constructor() {\n this.defaultHandler = async (node: DependencyNode) => {\n throw new Error(\n `This registrar does not provide a handler for the dependency type used by ${JSON.stringify(node)}`,\n );\n };\n }\n\n protected classHandlers: {\n nodeClass: AbstractNodeClass;\n identifier: string;\n fn: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;\n }[] = [];\n\n protected classAliases: {\n fromNodeClass: AbstractNodeClass;\n getToNode: (from: DependencyNode) => DependencyNode;\n }[] = [];\n\n /**\n * Add a function fn to be called on all nodes of class\n * @param nodeClass\n * @param identifier\n * @param fn\n */\n public addClassHandler<\n Identifier extends string,\n _NodeClass extends NodeClass,\n Function extends (node: InstanceType<_NodeClass>, ancestry: DependencyNode[]) => any,\n >(nodeClass: _NodeClass, identifier: Identifier, fn: Function) {\n if (this.classAliases.find(({ fromNodeClass }) => fromNodeClass === nodeClass)) {\n throw new Error(\n `Cannot define a handler for a class that is aliased to something else. This would be pointless`,\n );\n }\n\n let i = 0;\n for (const handler of this.classHandlers) {\n //check if we are overriding an existing handler\n if (handler.nodeClass === nodeClass) {\n this.classHandlers[i] = {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n };\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n //check if the new handler has an ordering requirement against an existing handler\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (handler.nodeClass.prototype.isPrototypeOf(nodeClass.prototype)) {\n this.classHandlers.splice(i, 0, {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n i++;\n }\n\n this.classHandlers.push({\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n\n /**\n * Alias some class *from*, such that any node of that class in the tree will be\n * treated as though it were some other node *to*. The *to* node is given as a\n * function returning a class instance, so that its dependencies, name, etc can be fixed.\n * The registrar will ignore the dependencies of the original node, and follow the alias's\n * dependencies instead.\n *\n * Additionally, this method does not affect the typing of the registrar. The output type\n * of the build() method will not reflect the alias.\n *\n * @param fromNodeClass alias instances of this class\n * @param getToNode method that returns the *to* part of the alias\n */\n public addClassAlias<FromNodeClass extends AbstractNodeClass>(\n fromNodeClass: FromNodeClass,\n getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode,\n ) {\n if (this.classHandlers.find(({ nodeClass }) => nodeClass === fromNodeClass)) {\n throw new Error(`Cannot define an alias for a class that already has a handler`);\n }\n\n let i = 0;\n for (const alias of this.classAliases) {\n //check if we are overriding an existing alias\n if (alias.fromNodeClass === fromNodeClass) {\n this.classAliases[i] = {\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n };\n\n return this;\n }\n //check if the new alias has an ordering requirement against an existing alias\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (alias.fromNodeClass.prototype.isPrototypeOf(fromNodeClass.prototype)) {\n this.classAliases.splice(i, 0, {\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n });\n\n return this;\n }\n i++;\n }\n\n this.classAliases.push({\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n });\n\n return this;\n }\n\n /**\n * Add a default function fn to be used on nodes whose types do not have handlers.\n * If this is not set, the default behaviour will be to throw\n * @param fn\n */\n public addDefault(fn: (node: DependencyNode, ancestry: DependencyNode[]) => any) {\n this.defaultHandler = fn;\n return this;\n }\n\n public build(): Registrar<_ReturnTypes> {\n const mergedNodePrehandler = (node: DependencyNode) => {\n for (const { fromNodeClass, getToNode: toNode } of this.classAliases) {\n if (node instanceof fromNodeClass) {\n return toNode(node);\n }\n }\n return node;\n };\n\n const mergedNodeHandler = async (node: DependencyNode, ancestry: DependencyNode[]) => {\n for (const { nodeClass, identifier, fn } of this.classHandlers) {\n if (node instanceof nodeClass) {\n return {\n key: identifier,\n value: await fn(node, ancestry),\n };\n }\n }\n\n return {\n key: 'default',\n value: await this.defaultHandler(node, ancestry),\n };\n };\n return {\n traverseDependencies: async (node: DependencyNode) =>\n await dfs<_ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),\n };\n }\n}\n"]}
@@ -34,5 +34,5 @@ var serializeDimensions = /* @__PURE__ */ YJF4D23A_cjs.__name((dim = {}) => {
34
34
  exports.FactoryDefinition = FactoryDefinition;
35
35
  exports.ObjectDefinition = ObjectDefinition;
36
36
  exports.serializeDimensions = serializeDimensions;
37
- //# sourceMappingURL=LXFPNTIJ.cjs.map
38
- //# sourceMappingURL=LXFPNTIJ.cjs.map
37
+ //# sourceMappingURL=MOTHALOU.cjs.map
38
+ //# sourceMappingURL=MOTHALOU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/definitions.ts"],"names":["FactoryDefinition","DependencyNode","dimensions","dimensionToSchemaMap","getFactory","args","ObjectDefinition","schema","serializeDimensions","__name","dim","Object","keys","length","entries","sort","map","dimName","dimVal","join"],"mappings":";;;;;AAsEO,IAAMA,iBAAAA,GAAN,cAKGC,8BAAAA,CAAAA;EAvEV;;;AAwEoBC,EAAAA,UAAAA;AACAC,EAAAA,oBAAAA;AACAC,EAAAA,UAAAA;AAChB,EAAA,WAAA,CAAY,EACRF,UAAAA,EACAC,oBAAAA,EACAC,UAAAA,EACA,GAAGC,MAAAA,EAKmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKH,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKC,oBAAAA,GAAuBA,oBAAAA;AAC5B,IAAA,IAAA,CAAKC,UAAAA,GAAaA,UAAAA;AACtB,EAAA;AACJ;AAYO,IAAeE,gBAAAA,GAAf,cAIGL,8BAAAA,CAAAA;EA1GV;;;AA2GoBM,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAY,EACRA,MAAAA,EACA,GAAGF,IAAAA,EAAAA,EAGmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKE,MAAAA,GAASA,MAAAA;AAClB,EAAA;AACJ;AAsEO,IAAMC,mBAAAA,mBAAsBC,mBAAA,CAAA,CAACC,GAAAA,GAAc,EAAC,KAAC;AAChD,EAAA,OAAOC,MAAAA,CAAOC,IAAAA,CAAKF,GAAAA,CAAAA,CAAKG,MAAAA,GAClBF,MAAAA,CAAOG,OAAAA,CAAQJ,GAAAA,CAAAA,CACVK,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,OAAAA,EAASC,MAAAA,CAAAA,KAAY,CAAA,EAAGD,OAAAA,CAAAA,CAAAA,EAAWC,MAAAA,CAAAA,CAAAA,EAAU,EAAA,CAAA,CACnDC,IAAAA,CAAK,GAAA,CAAA,GACV,OAAA;AACV,CAAA,EAPmC,qBAAA","file":"MOTHALOU.cjs","sourcesContent":["import type { z } from 'zod/v4';\n\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { Dependencies } from '@layerzerolabs/dependency-graph';\nimport { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type {\n AdvancedRecord,\n AdvancedRecordLookup,\n Merge,\n MethodNameOf,\n RemoveNever,\n UnionToIntersection,\n} from '@layerzerolabs/typescript-utils';\n\nexport type DimensionToSchemaMap<DimConstraint extends object = object> = {\n byDimension?: AdvancedRecord<DimConstraint, z.ZodType>;\n base: z.ZodType;\n};\n\nexport type GetModelFromSchema<DMap extends DimensionToSchemaMap, Dim> =\n AdvancedRecordLookup<DMap['byDimension'], Dim> extends never\n ? z.infer<DMap['base']>\n : Merge<z.infer<DMap['base']>, z.infer<AdvancedRecordLookup<DMap['byDimension'], Dim>>>;\n\ntype GetImplFunctionWithConditionalOptionalDim<Dim, Return> = {} extends Dim\n ? (dim?: Dim) => Return\n : (dim: Dim) => Return;\n\ntype GetImplOverloads<\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = UnionToIntersection<\n | {\n [I in keyof DMap['byDimension']]: DMap['byDimension'][I] extends readonly [infer K, any]\n ? {\n getImpl: GetImplFunctionWithConditionalOptionalDim<\n K,\n GetModelFromSchema<DMap, K>\n >;\n }\n : never;\n }[keyof DMap['byDimension']]\n | { getImpl: GetImplFunctionWithConditionalOptionalDim<z.infer<Dim>, z.infer<DMap['base']>> }\n>;\n\nexport type Factory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = { name: string; implKeys: string[]; dimensionToSchemaMap: DMap } & GetImplOverloads<Dim, DMap>;\n\nexport type GetFactory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = () => Factory<_Dependencies, Dim, DMap> | Promise<Factory<_Dependencies, Dim, DMap>>;\n\n/**\n * Factory definitions are a type of dependency node that shall be resolved to a *factory*.\n * A factory is an object that provides a getImpl method which accepts some parameters *dim*,\n * and returns some object getImplMetadata.getModel(dim).\n * That is, a factory definition is given by the set of parameters it uses to get its implementations,\n * and a function defining the schema it will return for each set of parameters.\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param dimensions a Zod schema for the parameters this factory operates on.\n * @param dimensionToSchemaMap A map from dimension objects to the Zod schema for the implementation.\n * @param getFactory a method that should return an object with a getImpl method that returns\n * entities adhering to the schema for the corresponding getModel call\n */\nexport class FactoryDefinition<\n Name extends string,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly dimensions: Dim;\n public readonly dimensionToSchemaMap: DMap;\n public readonly getFactory: GetFactory<_Dependencies, Dim, DMap>;\n constructor({\n dimensions,\n dimensionToSchemaMap,\n getFactory,\n ...args\n }: {\n dimensions: Dim;\n dimensionToSchemaMap: DMap;\n getFactory: GetFactory<_Dependencies, Dim, DMap>;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.dimensions = dimensions;\n this.dimensionToSchemaMap = dimensionToSchemaMap;\n this.getFactory = getFactory;\n }\n}\n\n/**\n * An object definition is a dependency node that refers to some entity\n * matching a given schema. That is, it may be resolved to any entity\n * that adheres to the {@link schema}.\n * The object definition is abstract, as it cannot be meaningfully resolved without\n * additional information. For an example of an object definition, see ReflexiveObjectDefinition or ContextDefinition\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param schema a Zod schema defining the expected resolution for this definition\n */\nexport abstract class ObjectDefinition<\n Name extends string,\n Schema extends z.ZodSchema,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly schema: Schema;\n\n constructor({\n schema,\n ...args\n }: {\n schema: Schema;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.schema = schema;\n }\n}\n\nexport type Definition<Name extends string> =\n | FactoryDefinition<Name, any, any, any>\n | ObjectDefinition<Name, any, any>;\n\n/**\n * Infers the expected type of a definition once it has been resolved\n */\nexport type ResolvedDefinition<Definition extends DependencyNode<any, any>> =\n Definition extends ObjectDefinition<any, infer Schema, any>\n ? z.infer<Schema>\n : Definition extends FactoryDefinition<any, infer Dim, infer DMap, any>\n ? Factory<Definition['dependencies'], Dim, DMap>\n : Definition extends FactoryDefinition<any, any, any, any>\n ? Factory<\n Definition['dependencies'],\n Definition['dimensions'],\n Definition['dimensionToSchemaMap']\n >\n : unknown;\n\n/**\n * Given a record from string to definition, maps each definition T to ResolvedDefinition<T>\n */\nexport type ResolvedDefinitionMap<Deps extends Dependencies> = {\n [Key in keyof Deps]: ResolvedDefinition<Deps[Key]>;\n};\n\n/**\n * For some factory definition F and some dimension D s.t. D ⊇ F.dimensions, infers the expected return type of\n * ResolvedDefinition<F>.getImpl(D)\n */\nexport type ResolvedFactoryImplementation<Definition extends DependencyNode<any, any>, Dim> =\n Definition extends FactoryDefinition<any, any, any, any>\n ? GetModelFromSchema<Definition['dimensionToSchemaMap'], Dim>\n : never;\n\n/**\n * Given a record from string to definition and some dimension D, maps each definition T to ResolvedFactoryImplementation<T, D>\n */\nexport type ResolvedFactoryImplementationMap<Deps extends Dependencies, Dim> = RemoveNever<{\n [Key in keyof Deps]: ResolvedFactoryImplementation<Deps[Key], Dim>;\n}>;\n\ntype ActivityFactoryContext<\n _FactoryDefinition extends FactoryDefinition<any, any, any, any>,\n Dim,\n> = {\n getFunctionPointer: _FactoryDefinition extends FactoryDefinition<any, any, any, any>\n ? <MethodName extends MethodNameOf<ResolvedFactoryImplementation<_FactoryDefinition, Dim>>>(\n methodName: MethodName,\n ) => FunctionPointer<ResolvedFactoryImplementation<_FactoryDefinition, Dim>[MethodName]>\n : never;\n};\n\n/**\n * The parameters that shall be received by a factory's implementation getter\n */\nexport type Context<_FactoryDefinition extends FactoryDefinition<any, any, any, any>, Dim> = {\n name: _FactoryDefinition extends FactoryDefinition<infer Name, any, any, any> ? Name : never;\n dependencies: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedDefinitionMap<Deps>\n : never;\n dim: Dim;\n impls: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedFactoryImplementationMap<Deps, Dim>\n : never;\n} & ActivityFactoryContext<_FactoryDefinition, Dim>;\n\nexport const serializeDimensions = (dim: object = {}) => {\n return Object.keys(dim).length\n ? Object.entries(dim)\n .sort()\n .map(([dimName, dimVal]) => `${dimName}_${dimVal}`, '')\n .join('&')\n : '_base';\n};\n"]}
@@ -109,18 +109,18 @@ var RegistrarBuilder = class {
109
109
  }
110
110
  return node;
111
111
  }, "mergedNodePrehandler");
112
- const mergedNodeHandler = /* @__PURE__ */ __name(async (node) => {
112
+ const mergedNodeHandler = /* @__PURE__ */ __name(async (node, ancestry) => {
113
113
  for (const { nodeClass, identifier, fn } of this.classHandlers) {
114
114
  if (node instanceof nodeClass) {
115
115
  return {
116
116
  key: identifier,
117
- value: await fn(node)
117
+ value: await fn(node, ancestry)
118
118
  };
119
119
  }
120
120
  }
121
121
  return {
122
122
  key: "default",
123
- value: await this.defaultHandler(node)
123
+ value: await this.defaultHandler(node, ancestry)
124
124
  };
125
125
  }, "mergedNodeHandler");
126
126
  return {
@@ -130,5 +130,5 @@ var RegistrarBuilder = class {
130
130
  };
131
131
 
132
132
  export { RegistrarBuilder };
133
- //# sourceMappingURL=S2FOVFOI.js.map
134
- //# sourceMappingURL=S2FOVFOI.js.map
133
+ //# sourceMappingURL=RFHQF55L.js.map
134
+ //# sourceMappingURL=RFHQF55L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/registrarBuilder.ts"],"names":["RegistrarBuilder","defaultHandler","node","Error","JSON","stringify","classHandlers","classAliases","addClassHandler","nodeClass","identifier","fn","find","fromNodeClass","i","handler","prototype","isPrototypeOf","splice","push","addClassAlias","getToNode","alias","addDefault","build","mergedNodePrehandler","toNode","mergedNodeHandler","ancestry","key","value","traverseDependencies","dfs"],"mappings":"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","file":"RFHQF55L.js","sourcesContent":["import type { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type { Registrar } from '@layerzerolabs/dfs';\nexport type { Registrar };\nimport { dfs } from '@layerzerolabs/dfs';\n\ntype NodeClass = new (...args: any[]) => DependencyNode;\ntype AbstractNodeClass = abstract new (...args: any[]) => DependencyNode;\n\n/**\n * A builder class for a {@link Registrar}.\n * Builds a registrar that switches on node class--i.e., enables defining\n * specific registration behaviour for specific node classes.\n * Intelligently handles inheritance, always using the most specific\n * handler defined for any given class.\n * The registrar built shall return an object that maps from a handler ID,\n * to a map from node name to the return of each handler,\n * e.g., { objectNodes: { myObjectNode: 'my handler return' }}.\n * This can be used to extract a specific resolved value after resolving the tree,\n * given that the handlers return the resolved nodes.\n */\nexport class RegistrarBuilder<_ReturnTypes> {\n protected defaultHandler: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;\n constructor() {\n this.defaultHandler = async (node: DependencyNode) => {\n throw new Error(\n `This registrar does not provide a handler for the dependency type used by ${JSON.stringify(node)}`,\n );\n };\n }\n\n protected classHandlers: {\n nodeClass: AbstractNodeClass;\n identifier: string;\n fn: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;\n }[] = [];\n\n protected classAliases: {\n fromNodeClass: AbstractNodeClass;\n getToNode: (from: DependencyNode) => DependencyNode;\n }[] = [];\n\n /**\n * Add a function fn to be called on all nodes of class\n * @param nodeClass\n * @param identifier\n * @param fn\n */\n public addClassHandler<\n Identifier extends string,\n _NodeClass extends NodeClass,\n Function extends (node: InstanceType<_NodeClass>, ancestry: DependencyNode[]) => any,\n >(nodeClass: _NodeClass, identifier: Identifier, fn: Function) {\n if (this.classAliases.find(({ fromNodeClass }) => fromNodeClass === nodeClass)) {\n throw new Error(\n `Cannot define a handler for a class that is aliased to something else. This would be pointless`,\n );\n }\n\n let i = 0;\n for (const handler of this.classHandlers) {\n //check if we are overriding an existing handler\n if (handler.nodeClass === nodeClass) {\n this.classHandlers[i] = {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n };\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n //check if the new handler has an ordering requirement against an existing handler\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (handler.nodeClass.prototype.isPrototypeOf(nodeClass.prototype)) {\n this.classHandlers.splice(i, 0, {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n i++;\n }\n\n this.classHandlers.push({\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n\n /**\n * Alias some class *from*, such that any node of that class in the tree will be\n * treated as though it were some other node *to*. The *to* node is given as a\n * function returning a class instance, so that its dependencies, name, etc can be fixed.\n * The registrar will ignore the dependencies of the original node, and follow the alias's\n * dependencies instead.\n *\n * Additionally, this method does not affect the typing of the registrar. The output type\n * of the build() method will not reflect the alias.\n *\n * @param fromNodeClass alias instances of this class\n * @param getToNode method that returns the *to* part of the alias\n */\n public addClassAlias<FromNodeClass extends AbstractNodeClass>(\n fromNodeClass: FromNodeClass,\n getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode,\n ) {\n if (this.classHandlers.find(({ nodeClass }) => nodeClass === fromNodeClass)) {\n throw new Error(`Cannot define an alias for a class that already has a handler`);\n }\n\n let i = 0;\n for (const alias of this.classAliases) {\n //check if we are overriding an existing alias\n if (alias.fromNodeClass === fromNodeClass) {\n this.classAliases[i] = {\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n };\n\n return this;\n }\n //check if the new alias has an ordering requirement against an existing alias\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (alias.fromNodeClass.prototype.isPrototypeOf(fromNodeClass.prototype)) {\n this.classAliases.splice(i, 0, {\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n });\n\n return this;\n }\n i++;\n }\n\n this.classAliases.push({\n fromNodeClass,\n getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,\n });\n\n return this;\n }\n\n /**\n * Add a default function fn to be used on nodes whose types do not have handlers.\n * If this is not set, the default behaviour will be to throw\n * @param fn\n */\n public addDefault(fn: (node: DependencyNode, ancestry: DependencyNode[]) => any) {\n this.defaultHandler = fn;\n return this;\n }\n\n public build(): Registrar<_ReturnTypes> {\n const mergedNodePrehandler = (node: DependencyNode) => {\n for (const { fromNodeClass, getToNode: toNode } of this.classAliases) {\n if (node instanceof fromNodeClass) {\n return toNode(node);\n }\n }\n return node;\n };\n\n const mergedNodeHandler = async (node: DependencyNode, ancestry: DependencyNode[]) => {\n for (const { nodeClass, identifier, fn } of this.classHandlers) {\n if (node instanceof nodeClass) {\n return {\n key: identifier,\n value: await fn(node, ancestry),\n };\n }\n }\n\n return {\n key: 'default',\n value: await this.defaultHandler(node, ancestry),\n };\n };\n return {\n traverseDependencies: async (node: DependencyNode) =>\n await dfs<_ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),\n };\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { serializeDimensions } from './RWF76TF5.js';
1
+ import { serializeDimensions } from './YDEUCMM5.js';
2
2
  import { __name } from './VUOMXK5T.js';
3
3
 
4
4
  // src/utils.ts
@@ -11,5 +11,5 @@ var extractSchemaFromFactory = /* @__PURE__ */ __name((factoryDefinition, dimens
11
11
  }, "extractSchemaFromFactory");
12
12
 
13
13
  export { extractSchemaFromFactory };
14
- //# sourceMappingURL=MELXRRC4.js.map
15
- //# sourceMappingURL=MELXRRC4.js.map
14
+ //# sourceMappingURL=T6VE3ZX4.js.map
15
+ //# sourceMappingURL=T6VE3ZX4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["extractSchemaFromFactory","factoryDefinition","dimension","schema","dimensionToSchemaMap","byDimension","Object","values","find","dim","serializeDimensions","base","shape","Error","name","JSON","stringify"],"mappings":";;;;AAOO,IAAMA,wBAAAA,mBAA2B,MAAA,CAAA,CACpCC,iBAAAA,EACAC,SAAAA,KAAAA;AAEA,EAAA,MAAMC,MAAAA,GAAAA,CACDF,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAAA,IACpCC,MAAAA,CAAOC,OACHN,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAW,CAAA,CACpDG,IAAAA,CAAK,CAAC,CAACC,GAAAA,CAAAA,KAASC,mBAAAA,CAAoBD,GAAAA,CAAAA,KAASC,mBAAAA,CAAoBR,SAAAA,CAAAA,CAAAA,GAAc,CAAA,CAAA,KACrFD,iBAAAA,CAAkBG,oBAAAA,CAAqBO,IAAAA;AAC3C,EAAA,IAAI,CAACR,QAAQS,KAAAA,EAAO;AAChB,IAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,uCAAA,EAA0CZ,iBAAAA,CAAkBa,IAAI,YAAYC,IAAAA,CAAKC,SAAAA,CAAUd,SAAAA,CAAAA,CAAAA,CAAY,CAAA;AAE/G,EAAA;AAEA,EAAA,OAAOC,MAAAA;AACX,CAAA,EAjBwC,0BAAA","file":"T6VE3ZX4.js","sourcesContent":["import type z from 'zod/v4';\n\nimport type { AdvancedRecord } from '@layerzerolabs/typescript-utils';\n\nimport type { Factory } from './definitions';\nimport { type FactoryDefinition, serializeDimensions } from './definitions';\n\nexport const extractSchemaFromFactory = <Dim extends z.ZodObject>(\n factoryDefinition: FactoryDefinition<any, Dim, any, any> | Factory<any, any, any>,\n dimension: z.infer<Dim>,\n): z.ZodObject => {\n const schema =\n (factoryDefinition.dimensionToSchemaMap.byDimension &&\n Object.values(\n factoryDefinition.dimensionToSchemaMap.byDimension as AdvancedRecord,\n ).find(([dim]) => serializeDimensions(dim) === serializeDimensions(dimension))?.[1]) ??\n factoryDefinition.dimensionToSchemaMap.base;\n if (!schema?.shape) {\n throw new Error(\n `Couldn't resolve the schema of factory ${factoryDefinition.name} for dim ${JSON.stringify(dimension)}`,\n );\n }\n\n return schema;\n};\n"]}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var LXFPNTIJ_cjs = require('./LXFPNTIJ.cjs');
3
+ var MOTHALOU_cjs = require('./MOTHALOU.cjs');
4
4
  var YJF4D23A_cjs = require('./YJF4D23A.cjs');
5
5
 
6
6
  // src/utils.ts
7
7
  var extractSchemaFromFactory = /* @__PURE__ */ YJF4D23A_cjs.__name((factoryDefinition, dimension) => {
8
- const schema = (factoryDefinition.dimensionToSchemaMap.byDimension && Object.values(factoryDefinition.dimensionToSchemaMap.byDimension).find(([dim]) => LXFPNTIJ_cjs.serializeDimensions(dim) === LXFPNTIJ_cjs.serializeDimensions(dimension))?.[1]) ?? factoryDefinition.dimensionToSchemaMap.base;
8
+ const schema = (factoryDefinition.dimensionToSchemaMap.byDimension && Object.values(factoryDefinition.dimensionToSchemaMap.byDimension).find(([dim]) => MOTHALOU_cjs.serializeDimensions(dim) === MOTHALOU_cjs.serializeDimensions(dimension))?.[1]) ?? factoryDefinition.dimensionToSchemaMap.base;
9
9
  if (!schema?.shape) {
10
10
  throw new Error(`Couldn't resolve the schema of factory ${factoryDefinition.name} for dim ${JSON.stringify(dimension)}`);
11
11
  }
@@ -13,5 +13,5 @@ var extractSchemaFromFactory = /* @__PURE__ */ YJF4D23A_cjs.__name((factoryDefin
13
13
  }, "extractSchemaFromFactory");
14
14
 
15
15
  exports.extractSchemaFromFactory = extractSchemaFromFactory;
16
- //# sourceMappingURL=E2YEEYRA.cjs.map
17
- //# sourceMappingURL=E2YEEYRA.cjs.map
16
+ //# sourceMappingURL=Y5HYTYQJ.cjs.map
17
+ //# sourceMappingURL=Y5HYTYQJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"names":["extractSchemaFromFactory","__name","factoryDefinition","dimension","schema","dimensionToSchemaMap","byDimension","Object","values","find","dim","serializeDimensions","base","shape","Error","name","JSON","stringify"],"mappings":";;;;;;AAOO,IAAMA,wBAAAA,mBAA2BC,mBAAA,CAAA,CACpCC,iBAAAA,EACAC,SAAAA,KAAAA;AAEA,EAAA,MAAMC,MAAAA,GAAAA,CACDF,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAAA,IACpCC,MAAAA,CAAOC,OACHN,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAW,CAAA,CACpDG,IAAAA,CAAK,CAAC,CAACC,GAAAA,CAAAA,KAASC,gCAAAA,CAAoBD,GAAAA,CAAAA,KAASC,gCAAAA,CAAoBR,SAAAA,CAAAA,CAAAA,GAAc,CAAA,CAAA,KACrFD,iBAAAA,CAAkBG,oBAAAA,CAAqBO,IAAAA;AAC3C,EAAA,IAAI,CAACR,QAAQS,KAAAA,EAAO;AAChB,IAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,uCAAA,EAA0CZ,iBAAAA,CAAkBa,IAAI,YAAYC,IAAAA,CAAKC,SAAAA,CAAUd,SAAAA,CAAAA,CAAAA,CAAY,CAAA;AAE/G,EAAA;AAEA,EAAA,OAAOC,MAAAA;AACX,CAAA,EAjBwC,0BAAA","file":"Y5HYTYQJ.cjs","sourcesContent":["import type z from 'zod/v4';\n\nimport type { AdvancedRecord } from '@layerzerolabs/typescript-utils';\n\nimport type { Factory } from './definitions';\nimport { type FactoryDefinition, serializeDimensions } from './definitions';\n\nexport const extractSchemaFromFactory = <Dim extends z.ZodObject>(\n factoryDefinition: FactoryDefinition<any, Dim, any, any> | Factory<any, any, any>,\n dimension: z.infer<Dim>,\n): z.ZodObject => {\n const schema =\n (factoryDefinition.dimensionToSchemaMap.byDimension &&\n Object.values(\n factoryDefinition.dimensionToSchemaMap.byDimension as AdvancedRecord,\n ).find(([dim]) => serializeDimensions(dim) === serializeDimensions(dimension))?.[1]) ??\n factoryDefinition.dimensionToSchemaMap.base;\n if (!schema?.shape) {\n throw new Error(\n `Couldn't resolve the schema of factory ${factoryDefinition.name} for dim ${JSON.stringify(dimension)}`,\n );\n }\n\n return schema;\n};\n"]}
@@ -30,5 +30,5 @@ var serializeDimensions = /* @__PURE__ */ __name((dim = {}) => {
30
30
  }, "serializeDimensions");
31
31
 
32
32
  export { FactoryDefinition, ObjectDefinition, serializeDimensions };
33
- //# sourceMappingURL=RWF76TF5.js.map
34
- //# sourceMappingURL=RWF76TF5.js.map
33
+ //# sourceMappingURL=YDEUCMM5.js.map
34
+ //# sourceMappingURL=YDEUCMM5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/definitions.ts"],"names":["FactoryDefinition","DependencyNode","dimensions","dimensionToSchemaMap","getFactory","args","ObjectDefinition","schema","serializeDimensions","dim","Object","keys","length","entries","sort","map","dimName","dimVal","join"],"mappings":";;;AAsEO,IAAMA,iBAAAA,GAAN,cAKGC,cAAAA,CAAAA;EAvEV;;;AAwEoBC,EAAAA,UAAAA;AACAC,EAAAA,oBAAAA;AACAC,EAAAA,UAAAA;AAChB,EAAA,WAAA,CAAY,EACRF,UAAAA,EACAC,oBAAAA,EACAC,UAAAA,EACA,GAAGC,MAAAA,EAKmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKH,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKC,oBAAAA,GAAuBA,oBAAAA;AAC5B,IAAA,IAAA,CAAKC,UAAAA,GAAaA,UAAAA;AACtB,EAAA;AACJ;AAYO,IAAeE,gBAAAA,GAAf,cAIGL,cAAAA,CAAAA;EA1GV;;;AA2GoBM,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAY,EACRA,MAAAA,EACA,GAAGF,IAAAA,EAAAA,EAGmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKE,MAAAA,GAASA,MAAAA;AAClB,EAAA;AACJ;AAsEO,IAAMC,mBAAAA,mBAAsB,MAAA,CAAA,CAACC,GAAAA,GAAc,EAAC,KAAC;AAChD,EAAA,OAAOC,MAAAA,CAAOC,IAAAA,CAAKF,GAAAA,CAAAA,CAAKG,MAAAA,GAClBF,MAAAA,CAAOG,OAAAA,CAAQJ,GAAAA,CAAAA,CACVK,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,OAAAA,EAASC,MAAAA,CAAAA,KAAY,CAAA,EAAGD,OAAAA,CAAAA,CAAAA,EAAWC,MAAAA,CAAAA,CAAAA,EAAU,EAAA,CAAA,CACnDC,IAAAA,CAAK,GAAA,CAAA,GACV,OAAA;AACV,CAAA,EAPmC,qBAAA","file":"YDEUCMM5.js","sourcesContent":["import type { z } from 'zod/v4';\n\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { Dependencies } from '@layerzerolabs/dependency-graph';\nimport { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type {\n AdvancedRecord,\n AdvancedRecordLookup,\n Merge,\n MethodNameOf,\n RemoveNever,\n UnionToIntersection,\n} from '@layerzerolabs/typescript-utils';\n\nexport type DimensionToSchemaMap<DimConstraint extends object = object> = {\n byDimension?: AdvancedRecord<DimConstraint, z.ZodType>;\n base: z.ZodType;\n};\n\nexport type GetModelFromSchema<DMap extends DimensionToSchemaMap, Dim> =\n AdvancedRecordLookup<DMap['byDimension'], Dim> extends never\n ? z.infer<DMap['base']>\n : Merge<z.infer<DMap['base']>, z.infer<AdvancedRecordLookup<DMap['byDimension'], Dim>>>;\n\ntype GetImplFunctionWithConditionalOptionalDim<Dim, Return> = {} extends Dim\n ? (dim?: Dim) => Return\n : (dim: Dim) => Return;\n\ntype GetImplOverloads<\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = UnionToIntersection<\n | {\n [I in keyof DMap['byDimension']]: DMap['byDimension'][I] extends readonly [infer K, any]\n ? {\n getImpl: GetImplFunctionWithConditionalOptionalDim<\n K,\n GetModelFromSchema<DMap, K>\n >;\n }\n : never;\n }[keyof DMap['byDimension']]\n | { getImpl: GetImplFunctionWithConditionalOptionalDim<z.infer<Dim>, z.infer<DMap['base']>> }\n>;\n\nexport type Factory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = { name: string; implKeys: string[]; dimensionToSchemaMap: DMap } & GetImplOverloads<Dim, DMap>;\n\nexport type GetFactory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = () => Factory<_Dependencies, Dim, DMap> | Promise<Factory<_Dependencies, Dim, DMap>>;\n\n/**\n * Factory definitions are a type of dependency node that shall be resolved to a *factory*.\n * A factory is an object that provides a getImpl method which accepts some parameters *dim*,\n * and returns some object getImplMetadata.getModel(dim).\n * That is, a factory definition is given by the set of parameters it uses to get its implementations,\n * and a function defining the schema it will return for each set of parameters.\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param dimensions a Zod schema for the parameters this factory operates on.\n * @param dimensionToSchemaMap A map from dimension objects to the Zod schema for the implementation.\n * @param getFactory a method that should return an object with a getImpl method that returns\n * entities adhering to the schema for the corresponding getModel call\n */\nexport class FactoryDefinition<\n Name extends string,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly dimensions: Dim;\n public readonly dimensionToSchemaMap: DMap;\n public readonly getFactory: GetFactory<_Dependencies, Dim, DMap>;\n constructor({\n dimensions,\n dimensionToSchemaMap,\n getFactory,\n ...args\n }: {\n dimensions: Dim;\n dimensionToSchemaMap: DMap;\n getFactory: GetFactory<_Dependencies, Dim, DMap>;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.dimensions = dimensions;\n this.dimensionToSchemaMap = dimensionToSchemaMap;\n this.getFactory = getFactory;\n }\n}\n\n/**\n * An object definition is a dependency node that refers to some entity\n * matching a given schema. That is, it may be resolved to any entity\n * that adheres to the {@link schema}.\n * The object definition is abstract, as it cannot be meaningfully resolved without\n * additional information. For an example of an object definition, see ReflexiveObjectDefinition or ContextDefinition\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param schema a Zod schema defining the expected resolution for this definition\n */\nexport abstract class ObjectDefinition<\n Name extends string,\n Schema extends z.ZodSchema,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly schema: Schema;\n\n constructor({\n schema,\n ...args\n }: {\n schema: Schema;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.schema = schema;\n }\n}\n\nexport type Definition<Name extends string> =\n | FactoryDefinition<Name, any, any, any>\n | ObjectDefinition<Name, any, any>;\n\n/**\n * Infers the expected type of a definition once it has been resolved\n */\nexport type ResolvedDefinition<Definition extends DependencyNode<any, any>> =\n Definition extends ObjectDefinition<any, infer Schema, any>\n ? z.infer<Schema>\n : Definition extends FactoryDefinition<any, infer Dim, infer DMap, any>\n ? Factory<Definition['dependencies'], Dim, DMap>\n : Definition extends FactoryDefinition<any, any, any, any>\n ? Factory<\n Definition['dependencies'],\n Definition['dimensions'],\n Definition['dimensionToSchemaMap']\n >\n : unknown;\n\n/**\n * Given a record from string to definition, maps each definition T to ResolvedDefinition<T>\n */\nexport type ResolvedDefinitionMap<Deps extends Dependencies> = {\n [Key in keyof Deps]: ResolvedDefinition<Deps[Key]>;\n};\n\n/**\n * For some factory definition F and some dimension D s.t. D ⊇ F.dimensions, infers the expected return type of\n * ResolvedDefinition<F>.getImpl(D)\n */\nexport type ResolvedFactoryImplementation<Definition extends DependencyNode<any, any>, Dim> =\n Definition extends FactoryDefinition<any, any, any, any>\n ? GetModelFromSchema<Definition['dimensionToSchemaMap'], Dim>\n : never;\n\n/**\n * Given a record from string to definition and some dimension D, maps each definition T to ResolvedFactoryImplementation<T, D>\n */\nexport type ResolvedFactoryImplementationMap<Deps extends Dependencies, Dim> = RemoveNever<{\n [Key in keyof Deps]: ResolvedFactoryImplementation<Deps[Key], Dim>;\n}>;\n\ntype ActivityFactoryContext<\n _FactoryDefinition extends FactoryDefinition<any, any, any, any>,\n Dim,\n> = {\n getFunctionPointer: _FactoryDefinition extends FactoryDefinition<any, any, any, any>\n ? <MethodName extends MethodNameOf<ResolvedFactoryImplementation<_FactoryDefinition, Dim>>>(\n methodName: MethodName,\n ) => FunctionPointer<ResolvedFactoryImplementation<_FactoryDefinition, Dim>[MethodName]>\n : never;\n};\n\n/**\n * The parameters that shall be received by a factory's implementation getter\n */\nexport type Context<_FactoryDefinition extends FactoryDefinition<any, any, any, any>, Dim> = {\n name: _FactoryDefinition extends FactoryDefinition<infer Name, any, any, any> ? Name : never;\n dependencies: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedDefinitionMap<Deps>\n : never;\n dim: Dim;\n impls: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedFactoryImplementationMap<Deps, Dim>\n : never;\n} & ActivityFactoryContext<_FactoryDefinition, Dim>;\n\nexport const serializeDimensions = (dim: object = {}) => {\n return Object.keys(dim).length\n ? Object.entries(dim)\n .sort()\n .map(([dimName, dimVal]) => `${dimName}_${dimVal}`, '')\n .join('&')\n : '_base';\n};\n"]}
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var LXFPNTIJ_cjs = require('./LXFPNTIJ.cjs');
3
+ var MOTHALOU_cjs = require('./MOTHALOU.cjs');
4
4
  require('./YJF4D23A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "FactoryDefinition", {
9
9
  enumerable: true,
10
- get: function () { return LXFPNTIJ_cjs.FactoryDefinition; }
10
+ get: function () { return MOTHALOU_cjs.FactoryDefinition; }
11
11
  });
12
12
  Object.defineProperty(exports, "ObjectDefinition", {
13
13
  enumerable: true,
14
- get: function () { return LXFPNTIJ_cjs.ObjectDefinition; }
14
+ get: function () { return MOTHALOU_cjs.ObjectDefinition; }
15
15
  });
16
16
  Object.defineProperty(exports, "serializeDimensions", {
17
17
  enumerable: true,
18
- get: function () { return LXFPNTIJ_cjs.serializeDimensions; }
18
+ get: function () { return MOTHALOU_cjs.serializeDimensions; }
19
19
  });
20
20
  //# sourceMappingURL=definitions.cjs.map
21
21
  //# sourceMappingURL=definitions.cjs.map
@@ -17,7 +17,9 @@ type GetImplOverloads<Dim extends z.ZodObject<any>, DMap extends DimensionToSche
17
17
  getImpl: GetImplFunctionWithConditionalOptionalDim<z.infer<Dim>, z.infer<DMap['base']>>;
18
18
  }>;
19
19
  export type Factory<_Dependencies extends Dependencies, Dim extends z.ZodObject<any>, DMap extends DimensionToSchemaMap<z.infer<Dim>>> = {
20
+ name: string;
20
21
  implKeys: string[];
22
+ dimensionToSchemaMap: DMap;
21
23
  } & GetImplOverloads<Dim, DMap>;
22
24
  export type GetFactory<_Dependencies extends Dependencies, Dim extends z.ZodObject<any>, DMap extends DimensionToSchemaMap<z.infer<Dim>>> = () => Factory<_Dependencies, Dim, DMap> | Promise<Factory<_Dependencies, Dim, DMap>>;
23
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EACR,cAAc,EACd,oBAAoB,EACpB,KAAK,EACL,YAAY,EACZ,WAAW,EACX,mBAAmB,EACtB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,oBAAoB,CAAC,aAAa,SAAS,MAAM,GAAG,MAAM,IAAI;IACtE,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,oBAAoB,EAAE,GAAG,IACjE,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,KAAK,GACtD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GACrB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhG,KAAK,yCAAyC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,SAAS,GAAG,GACtE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,MAAM,GACrB,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AAE3B,KAAK,gBAAgB,CACjB,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5B,IAAI,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAC/C,mBAAmB,CACjB;KACK,CAAC,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAClF;QACI,OAAO,EAAE,yCAAyC,CAC9C,CAAC,EACD,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9B,CAAC;KACL,GACD,KAAK;CACd,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,GAC5B;IAAE,OAAO,EAAE,yCAAyC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,CAChG,CAAC;AAEF,MAAM,MAAM,OAAO,CACf,aAAa,SAAS,YAAY,EAClC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5B,IAAI,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAC/C;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAM,MAAM,UAAU,CAClB,aAAa,SAAS,YAAY,EAClC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5B,IAAI,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAC/C,MAAM,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAEzF;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB,CAC1B,IAAI,SAAS,MAAM,EACnB,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAC5B,IAAI,SAAS,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC/C,aAAa,SAAS,YAAY,CACpC,SAAQ,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;IACzC,SAAgB,UAAU,EAAE,GAAG,CAAC;IAChC,SAAgB,oBAAoB,EAAE,IAAI,CAAC;IAC3C,SAAgB,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACrD,EACR,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,GAAG,IAAI,EACV,EAAE;QACC,UAAU,EAAE,GAAG,CAAC;QAChB,oBAAoB,EAAE,IAAI,CAAC;QAC3B,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KACpD,GAAG,qBAAqB,CAAC,OAAO,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CAM3E;AAED;;;;;;;;;GASG;AACH,8BAAsB,gBAAgB,CAClC,IAAI,SAAS,MAAM,EACnB,MAAM,SAAS,CAAC,CAAC,SAAS,EAC1B,aAAa,SAAS,YAAY,CACpC,SAAQ,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;IACzC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,EACR,MAAM,EACN,GAAG,IAAI,EACV,EAAE;QACC,MAAM,EAAE,MAAM,CAAC;KAClB,GAAG,qBAAqB,CAAC,OAAO,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CAI3E;AAED,MAAM,MAAM,UAAU,CAAC,IAAI,SAAS,MAAM,IACpC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACtC,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,UAAU,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,IACtE,UAAU,SAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,GACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GACf,UAAU,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,CAAC,GACnE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAC9C,UAAU,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACtD,OAAO,CACH,UAAU,CAAC,cAAc,CAAC,EAC1B,UAAU,CAAC,YAAY,CAAC,EACxB,UAAU,CAAC,sBAAsB,CAAC,CACrC,GACD,OAAO,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,YAAY,IAAI;KAC1D,GAAG,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,6BAA6B,CAAC,UAAU,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IACtF,UAAU,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAClD,kBAAkB,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,GAAG,CAAC,GAC3D,KAAK,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,IAAI,SAAS,YAAY,EAAE,GAAG,IAAI,WAAW,CAAC;KACtF,GAAG,IAAI,MAAM,IAAI,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;CACrE,CAAC,CAAC;AAEH,KAAK,sBAAsB,CACvB,kBAAkB,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,GAAG,IACH;IACA,kBAAkB,EAAE,kBAAkB,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAC9E,CAAC,UAAU,SAAS,YAAY,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,EACpF,UAAU,EAAE,UAAU,KACrB,eAAe,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GACxF,KAAK,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,kBAAkB,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI;IACzF,IAAI,EAAE,kBAAkB,SAAS,iBAAiB,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAC7F,YAAY,EAAE,kBAAkB,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,GAC/E,qBAAqB,CAAC,IAAI,CAAC,GAC3B,KAAK,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,kBAAkB,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,GACxE,gCAAgC,CAAC,IAAI,EAAE,GAAG,CAAC,GAC3C,KAAK,CAAC;CACf,GAAG,sBAAsB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAEpD,eAAO,MAAM,mBAAmB,GAAI,MAAK,MAAW,WAOnD,CAAC"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../src/definitions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { FactoryDefinition, ObjectDefinition, serializeDimensions } from './RWF76TF5.js';
1
+ export { FactoryDefinition, ObjectDefinition, serializeDimensions } from './YDEUCMM5.js';
2
2
  import './VUOMXK5T.js';
3
3
  //# sourceMappingURL=definitions.js.map
4
4
  //# sourceMappingURL=definitions.js.map
package/dist/index.cjs CHANGED
@@ -1,36 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var _67HCA6YT_cjs = require('./67HCA6YT.cjs');
4
- var VO33UEHJ_cjs = require('./VO33UEHJ.cjs');
5
- var E2YEEYRA_cjs = require('./E2YEEYRA.cjs');
6
- var LXFPNTIJ_cjs = require('./LXFPNTIJ.cjs');
3
+ var JKTGUQY4_cjs = require('./JKTGUQY4.cjs');
4
+ var LBRYOOPE_cjs = require('./LBRYOOPE.cjs');
5
+ var Y5HYTYQJ_cjs = require('./Y5HYTYQJ.cjs');
6
+ var MOTHALOU_cjs = require('./MOTHALOU.cjs');
7
7
  require('./YJF4D23A.cjs');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "DependencyStore", {
12
12
  enumerable: true,
13
- get: function () { return _67HCA6YT_cjs.DependencyStore; }
13
+ get: function () { return JKTGUQY4_cjs.DependencyStore; }
14
14
  });
15
15
  Object.defineProperty(exports, "RegistrarBuilder", {
16
16
  enumerable: true,
17
- get: function () { return VO33UEHJ_cjs.RegistrarBuilder; }
17
+ get: function () { return LBRYOOPE_cjs.RegistrarBuilder; }
18
18
  });
19
19
  Object.defineProperty(exports, "extractSchemaFromFactory", {
20
20
  enumerable: true,
21
- get: function () { return E2YEEYRA_cjs.extractSchemaFromFactory; }
21
+ get: function () { return Y5HYTYQJ_cjs.extractSchemaFromFactory; }
22
22
  });
23
23
  Object.defineProperty(exports, "FactoryDefinition", {
24
24
  enumerable: true,
25
- get: function () { return LXFPNTIJ_cjs.FactoryDefinition; }
25
+ get: function () { return MOTHALOU_cjs.FactoryDefinition; }
26
26
  });
27
27
  Object.defineProperty(exports, "ObjectDefinition", {
28
28
  enumerable: true,
29
- get: function () { return LXFPNTIJ_cjs.ObjectDefinition; }
29
+ get: function () { return MOTHALOU_cjs.ObjectDefinition; }
30
30
  });
31
31
  Object.defineProperty(exports, "serializeDimensions", {
32
32
  enumerable: true,
33
- get: function () { return LXFPNTIJ_cjs.serializeDimensions; }
33
+ get: function () { return MOTHALOU_cjs.serializeDimensions; }
34
34
  });
35
35
  //# sourceMappingURL=index.cjs.map
36
36
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { DependencyStore } from './O4SGLGEI.js';
2
- export { RegistrarBuilder } from './S2FOVFOI.js';
3
- export { extractSchemaFromFactory } from './MELXRRC4.js';
4
- export { FactoryDefinition, ObjectDefinition, serializeDimensions } from './RWF76TF5.js';
1
+ export { DependencyStore } from './JJBD65HU.js';
2
+ export { RegistrarBuilder } from './RFHQF55L.js';
3
+ export { extractSchemaFromFactory } from './T6VE3ZX4.js';
4
+ export { FactoryDefinition, ObjectDefinition, serializeDimensions } from './YDEUCMM5.js';
5
5
  import './VUOMXK5T.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
package/dist/lzyringe.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var _67HCA6YT_cjs = require('./67HCA6YT.cjs');
3
+ var JKTGUQY4_cjs = require('./JKTGUQY4.cjs');
4
4
  require('./YJF4D23A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "DependencyStore", {
9
9
  enumerable: true,
10
- get: function () { return _67HCA6YT_cjs.DependencyStore; }
10
+ get: function () { return JKTGUQY4_cjs.DependencyStore; }
11
11
  });
12
12
  //# sourceMappingURL=lzyringe.cjs.map
13
13
  //# sourceMappingURL=lzyringe.cjs.map
@@ -5,7 +5,11 @@ export declare class DependencyStore {
5
5
  /** Registers a value that will be resolved literally by resolve()
6
6
  * @throws if already registered
7
7
  */
8
- register(key: string, value: any): void;
8
+ register<T>(key: string, value: T extends Promise<any> ? never : T): void;
9
+ /** Registers a promise value that will be resolved literally by resolve()
10
+ * @throws if already registered
11
+ */
12
+ registerPromise(key: string, value: Promise<any>): void;
9
13
  /** Registers a factory function that will be called by resolve()
10
14
  * @throws if already registered
11
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lzyringe.d.ts","sourceRoot":"","sources":["../src/lzyringe.ts"],"names":[],"mappings":"AAUA,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAA4C;IAEzD,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAKvC;;OAEG;IACI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAKtD;;OAEG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM;IAK7B;;OAEG;IACI,UAAU;IAIjB,gCAAgC;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM;CAK7B"}
1
+ {"version":3,"file":"lzyringe.d.ts","sourceRoot":"","sources":["../src/lzyringe.ts"],"names":[],"mappings":"AAUA,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAA4C;IAEzD,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IAKzE;;OAEG;IACI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;IAKvD;;OAEG;IACI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAKtD;;OAEG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM;IAK7B;;OAEG;IACI,UAAU;IAIjB,gCAAgC;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM;CAK7B"}
package/dist/lzyringe.js CHANGED
@@ -1,4 +1,4 @@
1
- export { DependencyStore } from './O4SGLGEI.js';
1
+ export { DependencyStore } from './JJBD65HU.js';
2
2
  import './VUOMXK5T.js';
3
3
  //# sourceMappingURL=lzyringe.js.map
4
4
  //# sourceMappingURL=lzyringe.js.map
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var VO33UEHJ_cjs = require('./VO33UEHJ.cjs');
3
+ var LBRYOOPE_cjs = require('./LBRYOOPE.cjs');
4
4
  require('./YJF4D23A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "RegistrarBuilder", {
9
9
  enumerable: true,
10
- get: function () { return VO33UEHJ_cjs.RegistrarBuilder; }
10
+ get: function () { return LBRYOOPE_cjs.RegistrarBuilder; }
11
11
  });
12
12
  //# sourceMappingURL=registrarBuilder.cjs.map
13
13
  //# sourceMappingURL=registrarBuilder.cjs.map
@@ -1,8 +1,8 @@
1
1
  import type { DependencyNode } from '@layerzerolabs/dependency-graph';
2
2
  import type { Registrar } from '@layerzerolabs/dfs';
3
3
  export type { Registrar };
4
- type NodeClass = new (...args: any[]) => DependencyNode<any, any>;
5
- type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, any>;
4
+ type NodeClass = new (...args: any[]) => DependencyNode;
5
+ type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode;
6
6
  /**
7
7
  * A builder class for a {@link Registrar}.
8
8
  * Builds a registrar that switches on node class--i.e., enables defining
@@ -16,16 +16,16 @@ type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, an
16
16
  * given that the handlers return the resolved nodes.
17
17
  */
18
18
  export declare class RegistrarBuilder<_ReturnTypes> {
19
- protected defaultHandler: (node: DependencyNode<any, any>) => Promise<any>;
19
+ protected defaultHandler: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;
20
20
  constructor();
21
21
  protected classHandlers: {
22
22
  nodeClass: AbstractNodeClass;
23
23
  identifier: string;
24
- fn: (node: DependencyNode<any, any>) => Promise<any>;
24
+ fn: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;
25
25
  }[];
26
26
  protected classAliases: {
27
27
  fromNodeClass: AbstractNodeClass;
28
- getToNode: (from: DependencyNode<any, any>) => DependencyNode<any, any>;
28
+ getToNode: (from: DependencyNode) => DependencyNode;
29
29
  }[];
30
30
  /**
31
31
  * Add a function fn to be called on all nodes of class
@@ -33,7 +33,7 @@ export declare class RegistrarBuilder<_ReturnTypes> {
33
33
  * @param identifier
34
34
  * @param fn
35
35
  */
36
- addClassHandler<Identifier extends string, _NodeClass extends NodeClass, Function extends (node: InstanceType<_NodeClass>) => any>(nodeClass: _NodeClass, identifier: Identifier, fn: Function): RegistrarBuilder<_ReturnTypes & { [K in Identifier]: {
36
+ addClassHandler<Identifier extends string, _NodeClass extends NodeClass, Function extends (node: InstanceType<_NodeClass>, ancestry: DependencyNode[]) => any>(nodeClass: _NodeClass, identifier: Identifier, fn: Function): RegistrarBuilder<_ReturnTypes & { [K in Identifier]: {
37
37
  [nodeName: string]: Awaited<ReturnType<Function>>;
38
38
  }; }>;
39
39
  /**
@@ -49,13 +49,13 @@ export declare class RegistrarBuilder<_ReturnTypes> {
49
49
  * @param fromNodeClass alias instances of this class
50
50
  * @param getToNode method that returns the *to* part of the alias
51
51
  */
52
- addClassAlias<FromNodeClass extends AbstractNodeClass>(fromNodeClass: FromNodeClass, getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode<any, any>): this;
52
+ addClassAlias<FromNodeClass extends AbstractNodeClass>(fromNodeClass: FromNodeClass, getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode): this;
53
53
  /**
54
54
  * Add a default function fn to be used on nodes whose types do not have handlers.
55
55
  * If this is not set, the default behaviour will be to throw
56
56
  * @param fn
57
57
  */
58
- addDefault(fn: (node: DependencyNode<any, any>) => any): this;
58
+ addDefault(fn: (node: DependencyNode, ancestry: DependencyNode[]) => any): this;
59
59
  build(): Registrar<_ReturnTypes>;
60
60
  }
61
61
  //# sourceMappingURL=registrarBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registrarBuilder.d.ts","sourceRoot":"","sources":["../src/registrarBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,CAAC;AAG1B,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,KAAK,iBAAiB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB,CAAC,YAAY;IACtC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;;IAS3E,SAAS,CAAC,aAAa,EAAE;QACrB,SAAS,EAAE,iBAAiB,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KACxD,EAAE,CAAM;IAET,SAAS,CAAC,YAAY,EAAE;QACpB,aAAa,EAAE,iBAAiB,CAAC;QACjC,SAAS,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAC3E,EAAE,CAAM;IAET;;;;;OAKG;IACI,eAAe,CAClB,UAAU,SAAS,MAAM,EACzB,UAAU,SAAS,SAAS,EAC5B,QAAQ,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,EAC1D,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,sCAmBxC,CAAC;;;IAoCtB;;;;;;;;;;;;OAYG;IACI,aAAa,CAAC,aAAa,SAAS,iBAAiB,EACxD,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;IA6C1F;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG;IAKtD,KAAK,IAAI,SAAS,CAAC,YAAY,CAAC;CA8B1C"}
1
+ {"version":3,"file":"registrarBuilder.d.ts","sourceRoot":"","sources":["../src/registrarBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,CAAC;AAG1B,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC;AACxD,KAAK,iBAAiB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC;AAEzE;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB,CAAC,YAAY;IACtC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;;IAS7F,SAAS,CAAC,aAAa,EAAE;QACrB,SAAS,EAAE,iBAAiB,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KAC1E,EAAE,CAAM;IAET,SAAS,CAAC,YAAY,EAAE;QACpB,aAAa,EAAE,iBAAiB,CAAC;QACjC,SAAS,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,cAAc,CAAC;KACvD,EAAE,CAAM;IAET;;;;;OAKG;IACI,eAAe,CAClB,UAAU,SAAS,MAAM,EACzB,UAAU,SAAS,SAAS,EAC5B,QAAQ,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,GAAG,EACtF,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,sCAmBxC,CAAC;;;IAoCtB;;;;;;;;;;;;OAYG;IACI,aAAa,CAAC,aAAa,SAAS,iBAAiB,EACxD,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,cAAc;IAuChF;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,GAAG;IAKxE,KAAK,IAAI,SAAS,CAAC,YAAY,CAAC;CA8B1C"}
@@ -1,4 +1,4 @@
1
- export { RegistrarBuilder } from './S2FOVFOI.js';
1
+ export { RegistrarBuilder } from './RFHQF55L.js';
2
2
  import './VUOMXK5T.js';
3
3
  //# sourceMappingURL=registrarBuilder.js.map
4
4
  //# sourceMappingURL=registrarBuilder.js.map
package/dist/utils.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var E2YEEYRA_cjs = require('./E2YEEYRA.cjs');
4
- require('./LXFPNTIJ.cjs');
3
+ var Y5HYTYQJ_cjs = require('./Y5HYTYQJ.cjs');
4
+ require('./MOTHALOU.cjs');
5
5
  require('./YJF4D23A.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "extractSchemaFromFactory", {
10
10
  enumerable: true,
11
- get: function () { return E2YEEYRA_cjs.extractSchemaFromFactory; }
11
+ get: function () { return Y5HYTYQJ_cjs.extractSchemaFromFactory; }
12
12
  });
13
13
  //# sourceMappingURL=utils.cjs.map
14
14
  //# sourceMappingURL=utils.cjs.map
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type z from 'zod/v4';
2
+ import type { Factory } from './definitions';
2
3
  import { type FactoryDefinition } from './definitions';
3
- export declare const extractSchemaFromFactory: <Dim extends z.ZodObject>(factoryDefinition: FactoryDefinition<any, Dim, any, any>, dimension: z.infer<Dim>) => z.ZodObject;
4
+ export declare const extractSchemaFromFactory: <Dim extends z.ZodObject>(factoryDefinition: FactoryDefinition<any, Dim, any, any> | Factory<any, any, any>, dimension: z.infer<Dim>) => z.ZodObject;
4
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,eAAe,CAAC;AAE5E,eAAO,MAAM,wBAAwB,GAAI,GAAG,SAAS,CAAC,CAAC,SAAS,EAC5D,mBAAmB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACxD,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KACxB,CAAC,CAAC,SAcJ,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,eAAe,CAAC;AAE5E,eAAO,MAAM,wBAAwB,GAAI,GAAG,SAAS,CAAC,CAAC,SAAS,EAC5D,mBAAmB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACjF,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KACxB,CAAC,CAAC,SAcJ,CAAC"}
package/dist/utils.js CHANGED
@@ -1,5 +1,5 @@
1
- export { extractSchemaFromFactory } from './MELXRRC4.js';
2
- import './RWF76TF5.js';
1
+ export { extractSchemaFromFactory } from './T6VE3ZX4.js';
2
+ import './YDEUCMM5.js';
3
3
  import './VUOMXK5T.js';
4
4
  //# sourceMappingURL=utils.js.map
5
5
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/base-definitions",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,16 +15,16 @@
15
15
  "types": "./dist/index.d.ts",
16
16
  "dependencies": {
17
17
  "zod": "^3.23.8",
18
- "@layerzerolabs/common-utils": "0.0.18",
19
- "@layerzerolabs/dependency-graph": "0.0.18",
20
- "@layerzerolabs/dfs": "0.0.18"
18
+ "@layerzerolabs/dfs": "0.0.20",
19
+ "@layerzerolabs/common-utils": "0.0.20",
20
+ "@layerzerolabs/dependency-graph": "0.0.20"
21
21
  },
22
22
  "devDependencies": {
23
23
  "tsup": "^8.4.0",
24
24
  "vitest": "^3.2.3",
25
- "@layerzerolabs/tsup-configuration": "0.0.18",
26
- "@layerzerolabs/typescript-configuration": "0.0.18",
27
- "@layerzerolabs/typescript-utils": "0.0.18"
25
+ "@layerzerolabs/tsup-configuration": "0.0.20",
26
+ "@layerzerolabs/typescript-configuration": "0.0.20",
27
+ "@layerzerolabs/typescript-utils": "0.0.20"
28
28
  },
29
29
  "publishConfig": {
30
30
  "access": "restricted",
@@ -47,7 +47,7 @@ export type Factory<
47
47
  _Dependencies extends Dependencies,
48
48
  Dim extends z.ZodObject<any>,
49
49
  DMap extends DimensionToSchemaMap<z.infer<Dim>>,
50
- > = { implKeys: string[] } & GetImplOverloads<Dim, DMap>;
50
+ > = { name: string; implKeys: string[]; dimensionToSchemaMap: DMap } & GetImplOverloads<Dim, DMap>;
51
51
 
52
52
  export type GetFactory<
53
53
  _Dependencies extends Dependencies,
package/src/lzyringe.ts CHANGED
@@ -26,7 +26,15 @@ export class DependencyStore {
26
26
  /** Registers a value that will be resolved literally by resolve()
27
27
  * @throws if already registered
28
28
  */
29
- public register(key: string, value: any) {
29
+ public register<T>(key: string, value: T extends Promise<any> ? never : T) {
30
+ this.throwIfRegistered(key);
31
+ this.store[key] = { type: 'value', value };
32
+ }
33
+
34
+ /** Registers a promise value that will be resolved literally by resolve()
35
+ * @throws if already registered
36
+ */
37
+ public registerPromise(key: string, value: Promise<any>) {
30
38
  this.throwIfRegistered(key);
31
39
  this.store[key] = { type: 'value', value };
32
40
  }
@@ -3,8 +3,8 @@ import type { Registrar } from '@layerzerolabs/dfs';
3
3
  export type { Registrar };
4
4
  import { dfs } from '@layerzerolabs/dfs';
5
5
 
6
- type NodeClass = new (...args: any[]) => DependencyNode<any, any>;
7
- type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, any>;
6
+ type NodeClass = new (...args: any[]) => DependencyNode;
7
+ type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode;
8
8
 
9
9
  /**
10
10
  * A builder class for a {@link Registrar}.
@@ -19,9 +19,9 @@ type AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, an
19
19
  * given that the handlers return the resolved nodes.
20
20
  */
21
21
  export class RegistrarBuilder<_ReturnTypes> {
22
- protected defaultHandler: (node: DependencyNode<any, any>) => Promise<any>;
22
+ protected defaultHandler: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;
23
23
  constructor() {
24
- this.defaultHandler = async (node: DependencyNode<any, any>) => {
24
+ this.defaultHandler = async (node: DependencyNode) => {
25
25
  throw new Error(
26
26
  `This registrar does not provide a handler for the dependency type used by ${JSON.stringify(node)}`,
27
27
  );
@@ -31,12 +31,12 @@ export class RegistrarBuilder<_ReturnTypes> {
31
31
  protected classHandlers: {
32
32
  nodeClass: AbstractNodeClass;
33
33
  identifier: string;
34
- fn: (node: DependencyNode<any, any>) => Promise<any>;
34
+ fn: (node: DependencyNode, ancestry: DependencyNode[]) => Promise<any>;
35
35
  }[] = [];
36
36
 
37
37
  protected classAliases: {
38
38
  fromNodeClass: AbstractNodeClass;
39
- getToNode: (from: DependencyNode<any, any>) => DependencyNode<any, any>;
39
+ getToNode: (from: DependencyNode) => DependencyNode;
40
40
  }[] = [];
41
41
 
42
42
  /**
@@ -48,7 +48,7 @@ export class RegistrarBuilder<_ReturnTypes> {
48
48
  public addClassHandler<
49
49
  Identifier extends string,
50
50
  _NodeClass extends NodeClass,
51
- Function extends (node: InstanceType<_NodeClass>) => any,
51
+ Function extends (node: InstanceType<_NodeClass>, ancestry: DependencyNode[]) => any,
52
52
  >(nodeClass: _NodeClass, identifier: Identifier, fn: Function) {
53
53
  if (this.classAliases.find(({ fromNodeClass }) => fromNodeClass === nodeClass)) {
54
54
  throw new Error(
@@ -63,7 +63,7 @@ export class RegistrarBuilder<_ReturnTypes> {
63
63
  this.classHandlers[i] = {
64
64
  nodeClass,
65
65
  identifier,
66
- fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,
66
+ fn: fn as unknown as (node: DependencyNode) => Promise<any>,
67
67
  };
68
68
 
69
69
  return this as RegistrarBuilder<
@@ -79,7 +79,7 @@ export class RegistrarBuilder<_ReturnTypes> {
79
79
  this.classHandlers.splice(i, 0, {
80
80
  nodeClass,
81
81
  identifier,
82
- fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,
82
+ fn: fn as unknown as (node: DependencyNode) => Promise<any>,
83
83
  });
84
84
 
85
85
  return this as RegistrarBuilder<
@@ -94,7 +94,7 @@ export class RegistrarBuilder<_ReturnTypes> {
94
94
  this.classHandlers.push({
95
95
  nodeClass,
96
96
  identifier,
97
- fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,
97
+ fn: fn as unknown as (node: DependencyNode) => Promise<any>,
98
98
  });
99
99
 
100
100
  return this as RegistrarBuilder<
@@ -119,7 +119,7 @@ export class RegistrarBuilder<_ReturnTypes> {
119
119
  */
120
120
  public addClassAlias<FromNodeClass extends AbstractNodeClass>(
121
121
  fromNodeClass: FromNodeClass,
122
- getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode<any, any>,
122
+ getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode,
123
123
  ) {
124
124
  if (this.classHandlers.find(({ nodeClass }) => nodeClass === fromNodeClass)) {
125
125
  throw new Error(`Cannot define an alias for a class that already has a handler`);
@@ -131,9 +131,7 @@ export class RegistrarBuilder<_ReturnTypes> {
131
131
  if (alias.fromNodeClass === fromNodeClass) {
132
132
  this.classAliases[i] = {
133
133
  fromNodeClass,
134
- getToNode: getToNode as unknown as (
135
- from: DependencyNode<any, any>,
136
- ) => DependencyNode<any, any>,
134
+ getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,
137
135
  };
138
136
 
139
137
  return this;
@@ -144,9 +142,7 @@ export class RegistrarBuilder<_ReturnTypes> {
144
142
  if (alias.fromNodeClass.prototype.isPrototypeOf(fromNodeClass.prototype)) {
145
143
  this.classAliases.splice(i, 0, {
146
144
  fromNodeClass,
147
- getToNode: getToNode as unknown as (
148
- from: DependencyNode<any, any>,
149
- ) => DependencyNode<any, any>,
145
+ getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,
150
146
  });
151
147
 
152
148
  return this;
@@ -156,9 +152,7 @@ export class RegistrarBuilder<_ReturnTypes> {
156
152
 
157
153
  this.classAliases.push({
158
154
  fromNodeClass,
159
- getToNode: getToNode as unknown as (
160
- from: DependencyNode<any, any>,
161
- ) => DependencyNode<any, any>,
155
+ getToNode: getToNode as unknown as (from: DependencyNode) => DependencyNode,
162
156
  });
163
157
 
164
158
  return this;
@@ -169,13 +163,13 @@ export class RegistrarBuilder<_ReturnTypes> {
169
163
  * If this is not set, the default behaviour will be to throw
170
164
  * @param fn
171
165
  */
172
- public addDefault(fn: (node: DependencyNode<any, any>) => any) {
166
+ public addDefault(fn: (node: DependencyNode, ancestry: DependencyNode[]) => any) {
173
167
  this.defaultHandler = fn;
174
168
  return this;
175
169
  }
176
170
 
177
171
  public build(): Registrar<_ReturnTypes> {
178
- const mergedNodePrehandler = (node: DependencyNode<any, any>) => {
172
+ const mergedNodePrehandler = (node: DependencyNode) => {
179
173
  for (const { fromNodeClass, getToNode: toNode } of this.classAliases) {
180
174
  if (node instanceof fromNodeClass) {
181
175
  return toNode(node);
@@ -184,24 +178,24 @@ export class RegistrarBuilder<_ReturnTypes> {
184
178
  return node;
185
179
  };
186
180
 
187
- const mergedNodeHandler = async (node: DependencyNode<any, any>) => {
181
+ const mergedNodeHandler = async (node: DependencyNode, ancestry: DependencyNode[]) => {
188
182
  for (const { nodeClass, identifier, fn } of this.classHandlers) {
189
183
  if (node instanceof nodeClass) {
190
184
  return {
191
185
  key: identifier,
192
- value: await fn(node),
186
+ value: await fn(node, ancestry),
193
187
  };
194
188
  }
195
189
  }
196
190
 
197
191
  return {
198
192
  key: 'default',
199
- value: await this.defaultHandler(node),
193
+ value: await this.defaultHandler(node, ancestry),
200
194
  };
201
195
  };
202
196
  return {
203
- traverseDependencies: async (node: DependencyNode<any, any>) =>
204
- await dfs<any, _ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),
197
+ traverseDependencies: async (node: DependencyNode) =>
198
+ await dfs<_ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),
205
199
  };
206
200
  }
207
201
  }
package/src/utils.ts CHANGED
@@ -2,10 +2,11 @@ import type z from 'zod/v4';
2
2
 
3
3
  import type { AdvancedRecord } from '@layerzerolabs/typescript-utils';
4
4
 
5
+ import type { Factory } from './definitions';
5
6
  import { type FactoryDefinition, serializeDimensions } from './definitions';
6
7
 
7
8
  export const extractSchemaFromFactory = <Dim extends z.ZodObject>(
8
- factoryDefinition: FactoryDefinition<any, Dim, any, any>,
9
+ factoryDefinition: FactoryDefinition<any, Dim, any, any> | Factory<any, any, any>,
9
10
  dimension: z.infer<Dim>,
10
11
  ): z.ZodObject => {
11
12
  const schema =
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lzyringe.ts"],"names":["DependencyStore","store","throwIfRegistered","key","Error","throwIfUnregistered","register","value","type","registerFactory","factory","unregister","undefined","invalidate","resolve","stored"],"mappings":";;;;;AAUO,IAAMA,kBAAN,MAAMA;EAAb;;;AACYC,EAAAA,KAAAA,GAA8C,EAAC;AAE/CC,EAAAA,iBAAAA,CAAkBC,GAAAA,EAAa;AACnC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,sBAAAA,CAA2B,CAAA;AAClD,IAAA;AACJ,EAAA;AAEQE,EAAAA,mBAAAA,CAAoBF,GAAAA,EAAa;AACrC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,kBAAAA,CAAuB,CAAA;AAC9C,IAAA;AACJ,EAAA;;;;AAKOG,EAAAA,QAAAA,CAASH,KAAaI,KAAAA,EAAY;AACrC,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOE,EAAAA,eAAAA,CAAgBN,KAAaO,OAAAA,EAAoB;AACpD,IAAA,IAAA,CAAKR,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,SAAA;MAAWD,KAAAA,EAAOG;AAAQ,KAAA;AACxD,EAAA;;;;AAKOC,EAAAA,UAAAA,CAAWR,GAAAA,EAAa;AAC3B,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAOS,MAAAA;AACtB,EAAA;;;;EAKOC,UAAAA,GAAa;AAChB,IAAA,IAAA,CAAKZ,QAAQ,EAAC;AAClB,EAAA;;AAGOa,EAAAA,OAAAA,CAAQX,GAAAA,EAAa;AACxB,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,MAAMY,MAAAA,GAAS,IAAA,CAAKd,KAAAA,CAAME,GAAAA,CAAAA;AAC1B,IAAA,OAAOY,OAAOP,IAAAA,KAAS,SAAA,GAAYO,MAAAA,CAAOR,KAAAA,KAAUQ,MAAAA,CAAOR,KAAAA;AAC/D,EAAA;AACJ","file":"67HCA6YT.cjs","sourcesContent":["type StoreValue = {\n type: 'value';\n value: any;\n};\ntype StoreFactory = {\n type: 'factory';\n value: () => any;\n};\ntype StoreAny = StoreValue | StoreFactory;\n\nexport class DependencyStore {\n private store: Record<string, StoreAny | undefined> = {};\n\n private throwIfRegistered(key: string) {\n if (this.store[key] != null) {\n throw new Error(`${key} is already registered`);\n }\n }\n\n private throwIfUnregistered(key: string) {\n if (this.store[key] == null) {\n throw new Error(`${key} is not registered`);\n }\n }\n\n /** Registers a value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public register(key: string, value: any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a factory function that will be called by resolve()\n * @throws if already registered\n */\n public registerFactory(key: string, factory: () => any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'factory', value: factory };\n }\n\n /** Unregisters a key\n * @throws if not registered\n */\n public unregister(key: string) {\n this.throwIfUnregistered(key);\n this.store[key] = undefined;\n }\n\n /**\n * Drops all registered values\n */\n public invalidate() {\n this.store = {};\n }\n\n /** Resolves a key to a value */\n public resolve(key: string) {\n this.throwIfUnregistered(key);\n const stored = this.store[key]!;\n return stored.type === 'factory' ? stored.value() : stored.value;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.ts"],"names":["extractSchemaFromFactory","__name","factoryDefinition","dimension","schema","dimensionToSchemaMap","byDimension","Object","values","find","dim","serializeDimensions","base","shape","Error","name","JSON","stringify"],"mappings":";;;;;;AAMO,IAAMA,wBAAAA,mBAA2BC,mBAAA,CAAA,CACpCC,iBAAAA,EACAC,SAAAA,KAAAA;AAEA,EAAA,MAAMC,MAAAA,GAAAA,CACDF,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAAA,IACpCC,MAAAA,CAAOC,OACHN,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAW,CAAA,CACpDG,IAAAA,CAAK,CAAC,CAACC,GAAAA,CAAAA,KAASC,gCAAAA,CAAoBD,GAAAA,CAAAA,KAASC,gCAAAA,CAAoBR,SAAAA,CAAAA,CAAAA,GAAc,CAAA,CAAA,KACrFD,iBAAAA,CAAkBG,oBAAAA,CAAqBO,IAAAA;AAC3C,EAAA,IAAI,CAACR,QAAQS,KAAAA,EAAO;AAChB,IAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,uCAAA,EAA0CZ,iBAAAA,CAAkBa,IAAI,YAAYC,IAAAA,CAAKC,SAAAA,CAAUd,SAAAA,CAAAA,CAAAA,CAAY,CAAA;AAE/G,EAAA;AAEA,EAAA,OAAOC,MAAAA;AACX,CAAA,EAjBwC,0BAAA","file":"E2YEEYRA.cjs","sourcesContent":["import type z from 'zod/v4';\n\nimport type { AdvancedRecord } from '@layerzerolabs/typescript-utils';\n\nimport { type FactoryDefinition, serializeDimensions } from './definitions';\n\nexport const extractSchemaFromFactory = <Dim extends z.ZodObject>(\n factoryDefinition: FactoryDefinition<any, Dim, any, any>,\n dimension: z.infer<Dim>,\n): z.ZodObject => {\n const schema =\n (factoryDefinition.dimensionToSchemaMap.byDimension &&\n Object.values(\n factoryDefinition.dimensionToSchemaMap.byDimension as AdvancedRecord,\n ).find(([dim]) => serializeDimensions(dim) === serializeDimensions(dimension))?.[1]) ??\n factoryDefinition.dimensionToSchemaMap.base;\n if (!schema?.shape) {\n throw new Error(\n `Couldn't resolve the schema of factory ${factoryDefinition.name} for dim ${JSON.stringify(dimension)}`,\n );\n }\n\n return schema;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/definitions.ts"],"names":["FactoryDefinition","DependencyNode","dimensions","dimensionToSchemaMap","getFactory","args","ObjectDefinition","schema","serializeDimensions","__name","dim","Object","keys","length","entries","sort","map","dimName","dimVal","join"],"mappings":";;;;;AAsEO,IAAMA,iBAAAA,GAAN,cAKGC,8BAAAA,CAAAA;EAvEV;;;AAwEoBC,EAAAA,UAAAA;AACAC,EAAAA,oBAAAA;AACAC,EAAAA,UAAAA;AAChB,EAAA,WAAA,CAAY,EACRF,UAAAA,EACAC,oBAAAA,EACAC,UAAAA,EACA,GAAGC,MAAAA,EAKmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKH,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKC,oBAAAA,GAAuBA,oBAAAA;AAC5B,IAAA,IAAA,CAAKC,UAAAA,GAAaA,UAAAA;AACtB,EAAA;AACJ;AAYO,IAAeE,gBAAAA,GAAf,cAIGL,8BAAAA,CAAAA;EA1GV;;;AA2GoBM,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAY,EACRA,MAAAA,EACA,GAAGF,IAAAA,EAAAA,EAGmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKE,MAAAA,GAASA,MAAAA;AAClB,EAAA;AACJ;AAsEO,IAAMC,mBAAAA,mBAAsBC,mBAAA,CAAA,CAACC,GAAAA,GAAc,EAAC,KAAC;AAChD,EAAA,OAAOC,MAAAA,CAAOC,IAAAA,CAAKF,GAAAA,CAAAA,CAAKG,MAAAA,GAClBF,MAAAA,CAAOG,OAAAA,CAAQJ,GAAAA,CAAAA,CACVK,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,OAAAA,EAASC,MAAAA,CAAAA,KAAY,CAAA,EAAGD,OAAAA,CAAAA,CAAAA,EAAWC,MAAAA,CAAAA,CAAAA,EAAU,EAAA,CAAA,CACnDC,IAAAA,CAAK,GAAA,CAAA,GACV,OAAA;AACV,CAAA,EAPmC,qBAAA","file":"LXFPNTIJ.cjs","sourcesContent":["import type { z } from 'zod/v4';\n\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { Dependencies } from '@layerzerolabs/dependency-graph';\nimport { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type {\n AdvancedRecord,\n AdvancedRecordLookup,\n Merge,\n MethodNameOf,\n RemoveNever,\n UnionToIntersection,\n} from '@layerzerolabs/typescript-utils';\n\nexport type DimensionToSchemaMap<DimConstraint extends object = object> = {\n byDimension?: AdvancedRecord<DimConstraint, z.ZodType>;\n base: z.ZodType;\n};\n\nexport type GetModelFromSchema<DMap extends DimensionToSchemaMap, Dim> =\n AdvancedRecordLookup<DMap['byDimension'], Dim> extends never\n ? z.infer<DMap['base']>\n : Merge<z.infer<DMap['base']>, z.infer<AdvancedRecordLookup<DMap['byDimension'], Dim>>>;\n\ntype GetImplFunctionWithConditionalOptionalDim<Dim, Return> = {} extends Dim\n ? (dim?: Dim) => Return\n : (dim: Dim) => Return;\n\ntype GetImplOverloads<\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = UnionToIntersection<\n | {\n [I in keyof DMap['byDimension']]: DMap['byDimension'][I] extends readonly [infer K, any]\n ? {\n getImpl: GetImplFunctionWithConditionalOptionalDim<\n K,\n GetModelFromSchema<DMap, K>\n >;\n }\n : never;\n }[keyof DMap['byDimension']]\n | { getImpl: GetImplFunctionWithConditionalOptionalDim<z.infer<Dim>, z.infer<DMap['base']>> }\n>;\n\nexport type Factory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = { implKeys: string[] } & GetImplOverloads<Dim, DMap>;\n\nexport type GetFactory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = () => Factory<_Dependencies, Dim, DMap> | Promise<Factory<_Dependencies, Dim, DMap>>;\n\n/**\n * Factory definitions are a type of dependency node that shall be resolved to a *factory*.\n * A factory is an object that provides a getImpl method which accepts some parameters *dim*,\n * and returns some object getImplMetadata.getModel(dim).\n * That is, a factory definition is given by the set of parameters it uses to get its implementations,\n * and a function defining the schema it will return for each set of parameters.\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param dimensions a Zod schema for the parameters this factory operates on.\n * @param dimensionToSchemaMap A map from dimension objects to the Zod schema for the implementation.\n * @param getFactory a method that should return an object with a getImpl method that returns\n * entities adhering to the schema for the corresponding getModel call\n */\nexport class FactoryDefinition<\n Name extends string,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly dimensions: Dim;\n public readonly dimensionToSchemaMap: DMap;\n public readonly getFactory: GetFactory<_Dependencies, Dim, DMap>;\n constructor({\n dimensions,\n dimensionToSchemaMap,\n getFactory,\n ...args\n }: {\n dimensions: Dim;\n dimensionToSchemaMap: DMap;\n getFactory: GetFactory<_Dependencies, Dim, DMap>;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.dimensions = dimensions;\n this.dimensionToSchemaMap = dimensionToSchemaMap;\n this.getFactory = getFactory;\n }\n}\n\n/**\n * An object definition is a dependency node that refers to some entity\n * matching a given schema. That is, it may be resolved to any entity\n * that adheres to the {@link schema}.\n * The object definition is abstract, as it cannot be meaningfully resolved without\n * additional information. For an example of an object definition, see ReflexiveObjectDefinition or ContextDefinition\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param schema a Zod schema defining the expected resolution for this definition\n */\nexport abstract class ObjectDefinition<\n Name extends string,\n Schema extends z.ZodSchema,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly schema: Schema;\n\n constructor({\n schema,\n ...args\n }: {\n schema: Schema;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.schema = schema;\n }\n}\n\nexport type Definition<Name extends string> =\n | FactoryDefinition<Name, any, any, any>\n | ObjectDefinition<Name, any, any>;\n\n/**\n * Infers the expected type of a definition once it has been resolved\n */\nexport type ResolvedDefinition<Definition extends DependencyNode<any, any>> =\n Definition extends ObjectDefinition<any, infer Schema, any>\n ? z.infer<Schema>\n : Definition extends FactoryDefinition<any, infer Dim, infer DMap, any>\n ? Factory<Definition['dependencies'], Dim, DMap>\n : Definition extends FactoryDefinition<any, any, any, any>\n ? Factory<\n Definition['dependencies'],\n Definition['dimensions'],\n Definition['dimensionToSchemaMap']\n >\n : unknown;\n\n/**\n * Given a record from string to definition, maps each definition T to ResolvedDefinition<T>\n */\nexport type ResolvedDefinitionMap<Deps extends Dependencies> = {\n [Key in keyof Deps]: ResolvedDefinition<Deps[Key]>;\n};\n\n/**\n * For some factory definition F and some dimension D s.t. D ⊇ F.dimensions, infers the expected return type of\n * ResolvedDefinition<F>.getImpl(D)\n */\nexport type ResolvedFactoryImplementation<Definition extends DependencyNode<any, any>, Dim> =\n Definition extends FactoryDefinition<any, any, any, any>\n ? GetModelFromSchema<Definition['dimensionToSchemaMap'], Dim>\n : never;\n\n/**\n * Given a record from string to definition and some dimension D, maps each definition T to ResolvedFactoryImplementation<T, D>\n */\nexport type ResolvedFactoryImplementationMap<Deps extends Dependencies, Dim> = RemoveNever<{\n [Key in keyof Deps]: ResolvedFactoryImplementation<Deps[Key], Dim>;\n}>;\n\ntype ActivityFactoryContext<\n _FactoryDefinition extends FactoryDefinition<any, any, any, any>,\n Dim,\n> = {\n getFunctionPointer: _FactoryDefinition extends FactoryDefinition<any, any, any, any>\n ? <MethodName extends MethodNameOf<ResolvedFactoryImplementation<_FactoryDefinition, Dim>>>(\n methodName: MethodName,\n ) => FunctionPointer<ResolvedFactoryImplementation<_FactoryDefinition, Dim>[MethodName]>\n : never;\n};\n\n/**\n * The parameters that shall be received by a factory's implementation getter\n */\nexport type Context<_FactoryDefinition extends FactoryDefinition<any, any, any, any>, Dim> = {\n name: _FactoryDefinition extends FactoryDefinition<infer Name, any, any, any> ? Name : never;\n dependencies: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedDefinitionMap<Deps>\n : never;\n dim: Dim;\n impls: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedFactoryImplementationMap<Deps, Dim>\n : never;\n} & ActivityFactoryContext<_FactoryDefinition, Dim>;\n\nexport const serializeDimensions = (dim: object = {}) => {\n return Object.keys(dim).length\n ? Object.entries(dim)\n .sort()\n .map(([dimName, dimVal]) => `${dimName}_${dimVal}`, '')\n .join('&')\n : '_base';\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.ts"],"names":["extractSchemaFromFactory","factoryDefinition","dimension","schema","dimensionToSchemaMap","byDimension","Object","values","find","dim","serializeDimensions","base","shape","Error","name","JSON","stringify"],"mappings":";;;;AAMO,IAAMA,wBAAAA,mBAA2B,MAAA,CAAA,CACpCC,iBAAAA,EACAC,SAAAA,KAAAA;AAEA,EAAA,MAAMC,MAAAA,GAAAA,CACDF,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAAA,IACpCC,MAAAA,CAAOC,OACHN,iBAAAA,CAAkBG,oBAAAA,CAAqBC,WAAW,CAAA,CACpDG,IAAAA,CAAK,CAAC,CAACC,GAAAA,CAAAA,KAASC,mBAAAA,CAAoBD,GAAAA,CAAAA,KAASC,mBAAAA,CAAoBR,SAAAA,CAAAA,CAAAA,GAAc,CAAA,CAAA,KACrFD,iBAAAA,CAAkBG,oBAAAA,CAAqBO,IAAAA;AAC3C,EAAA,IAAI,CAACR,QAAQS,KAAAA,EAAO;AAChB,IAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,uCAAA,EAA0CZ,iBAAAA,CAAkBa,IAAI,YAAYC,IAAAA,CAAKC,SAAAA,CAAUd,SAAAA,CAAAA,CAAAA,CAAY,CAAA;AAE/G,EAAA;AAEA,EAAA,OAAOC,MAAAA;AACX,CAAA,EAjBwC,0BAAA","file":"MELXRRC4.js","sourcesContent":["import type z from 'zod/v4';\n\nimport type { AdvancedRecord } from '@layerzerolabs/typescript-utils';\n\nimport { type FactoryDefinition, serializeDimensions } from './definitions';\n\nexport const extractSchemaFromFactory = <Dim extends z.ZodObject>(\n factoryDefinition: FactoryDefinition<any, Dim, any, any>,\n dimension: z.infer<Dim>,\n): z.ZodObject => {\n const schema =\n (factoryDefinition.dimensionToSchemaMap.byDimension &&\n Object.values(\n factoryDefinition.dimensionToSchemaMap.byDimension as AdvancedRecord,\n ).find(([dim]) => serializeDimensions(dim) === serializeDimensions(dimension))?.[1]) ??\n factoryDefinition.dimensionToSchemaMap.base;\n if (!schema?.shape) {\n throw new Error(\n `Couldn't resolve the schema of factory ${factoryDefinition.name} for dim ${JSON.stringify(dimension)}`,\n );\n }\n\n return schema;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lzyringe.ts"],"names":["DependencyStore","store","throwIfRegistered","key","Error","throwIfUnregistered","register","value","type","registerFactory","factory","unregister","undefined","invalidate","resolve","stored"],"mappings":";;;AAUO,IAAMA,kBAAN,MAAMA;EAAb;;;AACYC,EAAAA,KAAAA,GAA8C,EAAC;AAE/CC,EAAAA,iBAAAA,CAAkBC,GAAAA,EAAa;AACnC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,sBAAAA,CAA2B,CAAA;AAClD,IAAA;AACJ,EAAA;AAEQE,EAAAA,mBAAAA,CAAoBF,GAAAA,EAAa;AACrC,IAAA,IAAI,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,IAAQ,IAAA,EAAM;AACzB,MAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,EAAGD,GAAAA,CAAAA,kBAAAA,CAAuB,CAAA;AAC9C,IAAA;AACJ,EAAA;;;;AAKOG,EAAAA,QAAAA,CAASH,KAAaI,KAAAA,EAAY;AACrC,IAAA,IAAA,CAAKL,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,OAAA;AAASD,MAAAA;AAAM,KAAA;AAC7C,EAAA;;;;AAKOE,EAAAA,eAAAA,CAAgBN,KAAaO,OAAAA,EAAoB;AACpD,IAAA,IAAA,CAAKR,kBAAkBC,GAAAA,CAAAA;AACvB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAO;MAAEK,IAAAA,EAAM,SAAA;MAAWD,KAAAA,EAAOG;AAAQ,KAAA;AACxD,EAAA;;;;AAKOC,EAAAA,UAAAA,CAAWR,GAAAA,EAAa;AAC3B,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,KAAAA,CAAME,GAAAA,CAAAA,GAAOS,MAAAA;AACtB,EAAA;;;;EAKOC,UAAAA,GAAa;AAChB,IAAA,IAAA,CAAKZ,QAAQ,EAAC;AAClB,EAAA;;AAGOa,EAAAA,OAAAA,CAAQX,GAAAA,EAAa;AACxB,IAAA,IAAA,CAAKE,oBAAoBF,GAAAA,CAAAA;AACzB,IAAA,MAAMY,MAAAA,GAAS,IAAA,CAAKd,KAAAA,CAAME,GAAAA,CAAAA;AAC1B,IAAA,OAAOY,OAAOP,IAAAA,KAAS,SAAA,GAAYO,MAAAA,CAAOR,KAAAA,KAAUQ,MAAAA,CAAOR,KAAAA;AAC/D,EAAA;AACJ","file":"O4SGLGEI.js","sourcesContent":["type StoreValue = {\n type: 'value';\n value: any;\n};\ntype StoreFactory = {\n type: 'factory';\n value: () => any;\n};\ntype StoreAny = StoreValue | StoreFactory;\n\nexport class DependencyStore {\n private store: Record<string, StoreAny | undefined> = {};\n\n private throwIfRegistered(key: string) {\n if (this.store[key] != null) {\n throw new Error(`${key} is already registered`);\n }\n }\n\n private throwIfUnregistered(key: string) {\n if (this.store[key] == null) {\n throw new Error(`${key} is not registered`);\n }\n }\n\n /** Registers a value that will be resolved literally by resolve()\n * @throws if already registered\n */\n public register(key: string, value: any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'value', value };\n }\n\n /** Registers a factory function that will be called by resolve()\n * @throws if already registered\n */\n public registerFactory(key: string, factory: () => any) {\n this.throwIfRegistered(key);\n this.store[key] = { type: 'factory', value: factory };\n }\n\n /** Unregisters a key\n * @throws if not registered\n */\n public unregister(key: string) {\n this.throwIfUnregistered(key);\n this.store[key] = undefined;\n }\n\n /**\n * Drops all registered values\n */\n public invalidate() {\n this.store = {};\n }\n\n /** Resolves a key to a value */\n public resolve(key: string) {\n this.throwIfUnregistered(key);\n const stored = this.store[key]!;\n return stored.type === 'factory' ? stored.value() : stored.value;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/definitions.ts"],"names":["FactoryDefinition","DependencyNode","dimensions","dimensionToSchemaMap","getFactory","args","ObjectDefinition","schema","serializeDimensions","dim","Object","keys","length","entries","sort","map","dimName","dimVal","join"],"mappings":";;;AAsEO,IAAMA,iBAAAA,GAAN,cAKGC,cAAAA,CAAAA;EAvEV;;;AAwEoBC,EAAAA,UAAAA;AACAC,EAAAA,oBAAAA;AACAC,EAAAA,UAAAA;AAChB,EAAA,WAAA,CAAY,EACRF,UAAAA,EACAC,oBAAAA,EACAC,UAAAA,EACA,GAAGC,MAAAA,EAKmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKH,UAAAA,GAAaA,UAAAA;AAClB,IAAA,IAAA,CAAKC,oBAAAA,GAAuBA,oBAAAA;AAC5B,IAAA,IAAA,CAAKC,UAAAA,GAAaA,UAAAA;AACtB,EAAA;AACJ;AAYO,IAAeE,gBAAAA,GAAf,cAIGL,cAAAA,CAAAA;EA1GV;;;AA2GoBM,EAAAA,MAAAA;AAEhB,EAAA,WAAA,CAAY,EACRA,MAAAA,EACA,GAAGF,IAAAA,EAAAA,EAGmE;AACtE,IAAA,KAAA,CAAMA,IAAAA,CAAAA;AACN,IAAA,IAAA,CAAKE,MAAAA,GAASA,MAAAA;AAClB,EAAA;AACJ;AAsEO,IAAMC,mBAAAA,mBAAsB,MAAA,CAAA,CAACC,GAAAA,GAAc,EAAC,KAAC;AAChD,EAAA,OAAOC,MAAAA,CAAOC,IAAAA,CAAKF,GAAAA,CAAAA,CAAKG,MAAAA,GAClBF,MAAAA,CAAOG,OAAAA,CAAQJ,GAAAA,CAAAA,CACVK,IAAAA,EAAI,CACJC,GAAAA,CAAI,CAAC,CAACC,OAAAA,EAASC,MAAAA,CAAAA,KAAY,CAAA,EAAGD,OAAAA,CAAAA,CAAAA,EAAWC,MAAAA,CAAAA,CAAAA,EAAU,EAAA,CAAA,CACnDC,IAAAA,CAAK,GAAA,CAAA,GACV,OAAA;AACV,CAAA,EAPmC,qBAAA","file":"RWF76TF5.js","sourcesContent":["import type { z } from 'zod/v4';\n\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { Dependencies } from '@layerzerolabs/dependency-graph';\nimport { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type {\n AdvancedRecord,\n AdvancedRecordLookup,\n Merge,\n MethodNameOf,\n RemoveNever,\n UnionToIntersection,\n} from '@layerzerolabs/typescript-utils';\n\nexport type DimensionToSchemaMap<DimConstraint extends object = object> = {\n byDimension?: AdvancedRecord<DimConstraint, z.ZodType>;\n base: z.ZodType;\n};\n\nexport type GetModelFromSchema<DMap extends DimensionToSchemaMap, Dim> =\n AdvancedRecordLookup<DMap['byDimension'], Dim> extends never\n ? z.infer<DMap['base']>\n : Merge<z.infer<DMap['base']>, z.infer<AdvancedRecordLookup<DMap['byDimension'], Dim>>>;\n\ntype GetImplFunctionWithConditionalOptionalDim<Dim, Return> = {} extends Dim\n ? (dim?: Dim) => Return\n : (dim: Dim) => Return;\n\ntype GetImplOverloads<\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = UnionToIntersection<\n | {\n [I in keyof DMap['byDimension']]: DMap['byDimension'][I] extends readonly [infer K, any]\n ? {\n getImpl: GetImplFunctionWithConditionalOptionalDim<\n K,\n GetModelFromSchema<DMap, K>\n >;\n }\n : never;\n }[keyof DMap['byDimension']]\n | { getImpl: GetImplFunctionWithConditionalOptionalDim<z.infer<Dim>, z.infer<DMap['base']>> }\n>;\n\nexport type Factory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = { implKeys: string[] } & GetImplOverloads<Dim, DMap>;\n\nexport type GetFactory<\n _Dependencies extends Dependencies,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n> = () => Factory<_Dependencies, Dim, DMap> | Promise<Factory<_Dependencies, Dim, DMap>>;\n\n/**\n * Factory definitions are a type of dependency node that shall be resolved to a *factory*.\n * A factory is an object that provides a getImpl method which accepts some parameters *dim*,\n * and returns some object getImplMetadata.getModel(dim).\n * That is, a factory definition is given by the set of parameters it uses to get its implementations,\n * and a function defining the schema it will return for each set of parameters.\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param dimensions a Zod schema for the parameters this factory operates on.\n * @param dimensionToSchemaMap A map from dimension objects to the Zod schema for the implementation.\n * @param getFactory a method that should return an object with a getImpl method that returns\n * entities adhering to the schema for the corresponding getModel call\n */\nexport class FactoryDefinition<\n Name extends string,\n Dim extends z.ZodObject<any>,\n DMap extends DimensionToSchemaMap<z.infer<Dim>>,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly dimensions: Dim;\n public readonly dimensionToSchemaMap: DMap;\n public readonly getFactory: GetFactory<_Dependencies, Dim, DMap>;\n constructor({\n dimensions,\n dimensionToSchemaMap,\n getFactory,\n ...args\n }: {\n dimensions: Dim;\n dimensionToSchemaMap: DMap;\n getFactory: GetFactory<_Dependencies, Dim, DMap>;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.dimensions = dimensions;\n this.dimensionToSchemaMap = dimensionToSchemaMap;\n this.getFactory = getFactory;\n }\n}\n\n/**\n * An object definition is a dependency node that refers to some entity\n * matching a given schema. That is, it may be resolved to any entity\n * that adheres to the {@link schema}.\n * The object definition is abstract, as it cannot be meaningfully resolved without\n * additional information. For an example of an object definition, see ReflexiveObjectDefinition or ContextDefinition\n * @param name inherited from {@link DependencyNode}\n * @param dependencies inherited from {@link DependencyNode}\n * @param schema a Zod schema defining the expected resolution for this definition\n */\nexport abstract class ObjectDefinition<\n Name extends string,\n Schema extends z.ZodSchema,\n _Dependencies extends Dependencies,\n> extends DependencyNode<Name, _Dependencies> {\n public readonly schema: Schema;\n\n constructor({\n schema,\n ...args\n }: {\n schema: Schema;\n } & ConstructorParameters<typeof DependencyNode<Name, _Dependencies>>[0]) {\n super(args);\n this.schema = schema;\n }\n}\n\nexport type Definition<Name extends string> =\n | FactoryDefinition<Name, any, any, any>\n | ObjectDefinition<Name, any, any>;\n\n/**\n * Infers the expected type of a definition once it has been resolved\n */\nexport type ResolvedDefinition<Definition extends DependencyNode<any, any>> =\n Definition extends ObjectDefinition<any, infer Schema, any>\n ? z.infer<Schema>\n : Definition extends FactoryDefinition<any, infer Dim, infer DMap, any>\n ? Factory<Definition['dependencies'], Dim, DMap>\n : Definition extends FactoryDefinition<any, any, any, any>\n ? Factory<\n Definition['dependencies'],\n Definition['dimensions'],\n Definition['dimensionToSchemaMap']\n >\n : unknown;\n\n/**\n * Given a record from string to definition, maps each definition T to ResolvedDefinition<T>\n */\nexport type ResolvedDefinitionMap<Deps extends Dependencies> = {\n [Key in keyof Deps]: ResolvedDefinition<Deps[Key]>;\n};\n\n/**\n * For some factory definition F and some dimension D s.t. D ⊇ F.dimensions, infers the expected return type of\n * ResolvedDefinition<F>.getImpl(D)\n */\nexport type ResolvedFactoryImplementation<Definition extends DependencyNode<any, any>, Dim> =\n Definition extends FactoryDefinition<any, any, any, any>\n ? GetModelFromSchema<Definition['dimensionToSchemaMap'], Dim>\n : never;\n\n/**\n * Given a record from string to definition and some dimension D, maps each definition T to ResolvedFactoryImplementation<T, D>\n */\nexport type ResolvedFactoryImplementationMap<Deps extends Dependencies, Dim> = RemoveNever<{\n [Key in keyof Deps]: ResolvedFactoryImplementation<Deps[Key], Dim>;\n}>;\n\ntype ActivityFactoryContext<\n _FactoryDefinition extends FactoryDefinition<any, any, any, any>,\n Dim,\n> = {\n getFunctionPointer: _FactoryDefinition extends FactoryDefinition<any, any, any, any>\n ? <MethodName extends MethodNameOf<ResolvedFactoryImplementation<_FactoryDefinition, Dim>>>(\n methodName: MethodName,\n ) => FunctionPointer<ResolvedFactoryImplementation<_FactoryDefinition, Dim>[MethodName]>\n : never;\n};\n\n/**\n * The parameters that shall be received by a factory's implementation getter\n */\nexport type Context<_FactoryDefinition extends FactoryDefinition<any, any, any, any>, Dim> = {\n name: _FactoryDefinition extends FactoryDefinition<infer Name, any, any, any> ? Name : never;\n dependencies: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedDefinitionMap<Deps>\n : never;\n dim: Dim;\n impls: _FactoryDefinition extends FactoryDefinition<any, any, any, infer Deps>\n ? ResolvedFactoryImplementationMap<Deps, Dim>\n : never;\n} & ActivityFactoryContext<_FactoryDefinition, Dim>;\n\nexport const serializeDimensions = (dim: object = {}) => {\n return Object.keys(dim).length\n ? Object.entries(dim)\n .sort()\n .map(([dimName, dimVal]) => `${dimName}_${dimVal}`, '')\n .join('&')\n : '_base';\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/registrarBuilder.ts"],"names":["RegistrarBuilder","defaultHandler","node","Error","JSON","stringify","classHandlers","classAliases","addClassHandler","nodeClass","identifier","fn","find","fromNodeClass","i","handler","prototype","isPrototypeOf","splice","push","addClassAlias","getToNode","alias","addDefault","build","mergedNodePrehandler","toNode","mergedNodeHandler","key","value","traverseDependencies","dfs"],"mappings":"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","file":"S2FOVFOI.js","sourcesContent":["import type { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type { Registrar } from '@layerzerolabs/dfs';\nexport type { Registrar };\nimport { dfs } from '@layerzerolabs/dfs';\n\ntype NodeClass = new (...args: any[]) => DependencyNode<any, any>;\ntype AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, any>;\n\n/**\n * A builder class for a {@link Registrar}.\n * Builds a registrar that switches on node class--i.e., enables defining\n * specific registration behaviour for specific node classes.\n * Intelligently handles inheritance, always using the most specific\n * handler defined for any given class.\n * The registrar built shall return an object that maps from a handler ID,\n * to a map from node name to the return of each handler,\n * e.g., { objectNodes: { myObjectNode: 'my handler return' }}.\n * This can be used to extract a specific resolved value after resolving the tree,\n * given that the handlers return the resolved nodes.\n */\nexport class RegistrarBuilder<_ReturnTypes> {\n protected defaultHandler: (node: DependencyNode<any, any>) => Promise<any>;\n constructor() {\n this.defaultHandler = async (node: DependencyNode<any, any>) => {\n throw new Error(\n `This registrar does not provide a handler for the dependency type used by ${JSON.stringify(node)}`,\n );\n };\n }\n\n protected classHandlers: {\n nodeClass: AbstractNodeClass;\n identifier: string;\n fn: (node: DependencyNode<any, any>) => Promise<any>;\n }[] = [];\n\n protected classAliases: {\n fromNodeClass: AbstractNodeClass;\n getToNode: (from: DependencyNode<any, any>) => DependencyNode<any, any>;\n }[] = [];\n\n /**\n * Add a function fn to be called on all nodes of class\n * @param nodeClass\n * @param identifier\n * @param fn\n */\n public addClassHandler<\n Identifier extends string,\n _NodeClass extends NodeClass,\n Function extends (node: InstanceType<_NodeClass>) => any,\n >(nodeClass: _NodeClass, identifier: Identifier, fn: Function) {\n if (this.classAliases.find(({ fromNodeClass }) => fromNodeClass === nodeClass)) {\n throw new Error(\n `Cannot define a handler for a class that is aliased to something else. This would be pointless`,\n );\n }\n\n let i = 0;\n for (const handler of this.classHandlers) {\n //check if we are overriding an existing handler\n if (handler.nodeClass === nodeClass) {\n this.classHandlers[i] = {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n };\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n //check if the new handler has an ordering requirement against an existing handler\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (handler.nodeClass.prototype.isPrototypeOf(nodeClass.prototype)) {\n this.classHandlers.splice(i, 0, {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n i++;\n }\n\n this.classHandlers.push({\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n\n /**\n * Alias some class *from*, such that any node of that class in the tree will be\n * treated as though it were some other node *to*. The *to* node is given as a\n * function returning a class instance, so that its dependencies, name, etc can be fixed.\n * The registrar will ignore the dependencies of the original node, and follow the alias's\n * dependencies instead.\n *\n * Additionally, this method does not affect the typing of the registrar. The output type\n * of the build() method will not reflect the alias.\n *\n * @param fromNodeClass alias instances of this class\n * @param getToNode method that returns the *to* part of the alias\n */\n public addClassAlias<FromNodeClass extends AbstractNodeClass>(\n fromNodeClass: FromNodeClass,\n getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode<any, any>,\n ) {\n if (this.classHandlers.find(({ nodeClass }) => nodeClass === fromNodeClass)) {\n throw new Error(`Cannot define an alias for a class that already has a handler`);\n }\n\n let i = 0;\n for (const alias of this.classAliases) {\n //check if we are overriding an existing alias\n if (alias.fromNodeClass === fromNodeClass) {\n this.classAliases[i] = {\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n };\n\n return this;\n }\n //check if the new alias has an ordering requirement against an existing alias\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (alias.fromNodeClass.prototype.isPrototypeOf(fromNodeClass.prototype)) {\n this.classAliases.splice(i, 0, {\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n });\n\n return this;\n }\n i++;\n }\n\n this.classAliases.push({\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n });\n\n return this;\n }\n\n /**\n * Add a default function fn to be used on nodes whose types do not have handlers.\n * If this is not set, the default behaviour will be to throw\n * @param fn\n */\n public addDefault(fn: (node: DependencyNode<any, any>) => any) {\n this.defaultHandler = fn;\n return this;\n }\n\n public build(): Registrar<_ReturnTypes> {\n const mergedNodePrehandler = (node: DependencyNode<any, any>) => {\n for (const { fromNodeClass, getToNode: toNode } of this.classAliases) {\n if (node instanceof fromNodeClass) {\n return toNode(node);\n }\n }\n return node;\n };\n\n const mergedNodeHandler = async (node: DependencyNode<any, any>) => {\n for (const { nodeClass, identifier, fn } of this.classHandlers) {\n if (node instanceof nodeClass) {\n return {\n key: identifier,\n value: await fn(node),\n };\n }\n }\n\n return {\n key: 'default',\n value: await this.defaultHandler(node),\n };\n };\n return {\n traverseDependencies: async (node: DependencyNode<any, any>) =>\n await dfs<any, _ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/registrarBuilder.ts"],"names":["RegistrarBuilder","defaultHandler","node","Error","JSON","stringify","classHandlers","classAliases","addClassHandler","nodeClass","identifier","fn","find","fromNodeClass","i","handler","prototype","isPrototypeOf","splice","push","addClassAlias","getToNode","alias","addDefault","build","mergedNodePrehandler","toNode","mergedNodeHandler","key","value","traverseDependencies","__name","dfs"],"mappings":"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","file":"VO33UEHJ.cjs","sourcesContent":["import type { DependencyNode } from '@layerzerolabs/dependency-graph';\nimport type { Registrar } from '@layerzerolabs/dfs';\nexport type { Registrar };\nimport { dfs } from '@layerzerolabs/dfs';\n\ntype NodeClass = new (...args: any[]) => DependencyNode<any, any>;\ntype AbstractNodeClass = abstract new (...args: any[]) => DependencyNode<any, any>;\n\n/**\n * A builder class for a {@link Registrar}.\n * Builds a registrar that switches on node class--i.e., enables defining\n * specific registration behaviour for specific node classes.\n * Intelligently handles inheritance, always using the most specific\n * handler defined for any given class.\n * The registrar built shall return an object that maps from a handler ID,\n * to a map from node name to the return of each handler,\n * e.g., { objectNodes: { myObjectNode: 'my handler return' }}.\n * This can be used to extract a specific resolved value after resolving the tree,\n * given that the handlers return the resolved nodes.\n */\nexport class RegistrarBuilder<_ReturnTypes> {\n protected defaultHandler: (node: DependencyNode<any, any>) => Promise<any>;\n constructor() {\n this.defaultHandler = async (node: DependencyNode<any, any>) => {\n throw new Error(\n `This registrar does not provide a handler for the dependency type used by ${JSON.stringify(node)}`,\n );\n };\n }\n\n protected classHandlers: {\n nodeClass: AbstractNodeClass;\n identifier: string;\n fn: (node: DependencyNode<any, any>) => Promise<any>;\n }[] = [];\n\n protected classAliases: {\n fromNodeClass: AbstractNodeClass;\n getToNode: (from: DependencyNode<any, any>) => DependencyNode<any, any>;\n }[] = [];\n\n /**\n * Add a function fn to be called on all nodes of class\n * @param nodeClass\n * @param identifier\n * @param fn\n */\n public addClassHandler<\n Identifier extends string,\n _NodeClass extends NodeClass,\n Function extends (node: InstanceType<_NodeClass>) => any,\n >(nodeClass: _NodeClass, identifier: Identifier, fn: Function) {\n if (this.classAliases.find(({ fromNodeClass }) => fromNodeClass === nodeClass)) {\n throw new Error(\n `Cannot define a handler for a class that is aliased to something else. This would be pointless`,\n );\n }\n\n let i = 0;\n for (const handler of this.classHandlers) {\n //check if we are overriding an existing handler\n if (handler.nodeClass === nodeClass) {\n this.classHandlers[i] = {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n };\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n //check if the new handler has an ordering requirement against an existing handler\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (handler.nodeClass.prototype.isPrototypeOf(nodeClass.prototype)) {\n this.classHandlers.splice(i, 0, {\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n i++;\n }\n\n this.classHandlers.push({\n nodeClass,\n identifier,\n fn: fn as unknown as (node: DependencyNode<any, any>) => Promise<any>,\n });\n\n return this as RegistrarBuilder<\n _ReturnTypes & {\n [K in Identifier]: { [nodeName: string]: Awaited<ReturnType<Function>> };\n }\n >;\n }\n\n /**\n * Alias some class *from*, such that any node of that class in the tree will be\n * treated as though it were some other node *to*. The *to* node is given as a\n * function returning a class instance, so that its dependencies, name, etc can be fixed.\n * The registrar will ignore the dependencies of the original node, and follow the alias's\n * dependencies instead.\n *\n * Additionally, this method does not affect the typing of the registrar. The output type\n * of the build() method will not reflect the alias.\n *\n * @param fromNodeClass alias instances of this class\n * @param getToNode method that returns the *to* part of the alias\n */\n public addClassAlias<FromNodeClass extends AbstractNodeClass>(\n fromNodeClass: FromNodeClass,\n getToNode: (fromNodeInstance: InstanceType<FromNodeClass>) => DependencyNode<any, any>,\n ) {\n if (this.classHandlers.find(({ nodeClass }) => nodeClass === fromNodeClass)) {\n throw new Error(`Cannot define an alias for a class that already has a handler`);\n }\n\n let i = 0;\n for (const alias of this.classAliases) {\n //check if we are overriding an existing alias\n if (alias.fromNodeClass === fromNodeClass) {\n this.classAliases[i] = {\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n };\n\n return this;\n }\n //check if the new alias has an ordering requirement against an existing alias\n //(we always want to use more specific handlers if they exist)\n // eslint-disable-next-line no-prototype-builtins\n if (alias.fromNodeClass.prototype.isPrototypeOf(fromNodeClass.prototype)) {\n this.classAliases.splice(i, 0, {\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n });\n\n return this;\n }\n i++;\n }\n\n this.classAliases.push({\n fromNodeClass,\n getToNode: getToNode as unknown as (\n from: DependencyNode<any, any>,\n ) => DependencyNode<any, any>,\n });\n\n return this;\n }\n\n /**\n * Add a default function fn to be used on nodes whose types do not have handlers.\n * If this is not set, the default behaviour will be to throw\n * @param fn\n */\n public addDefault(fn: (node: DependencyNode<any, any>) => any) {\n this.defaultHandler = fn;\n return this;\n }\n\n public build(): Registrar<_ReturnTypes> {\n const mergedNodePrehandler = (node: DependencyNode<any, any>) => {\n for (const { fromNodeClass, getToNode: toNode } of this.classAliases) {\n if (node instanceof fromNodeClass) {\n return toNode(node);\n }\n }\n return node;\n };\n\n const mergedNodeHandler = async (node: DependencyNode<any, any>) => {\n for (const { nodeClass, identifier, fn } of this.classHandlers) {\n if (node instanceof nodeClass) {\n return {\n key: identifier,\n value: await fn(node),\n };\n }\n }\n\n return {\n key: 'default',\n value: await this.defaultHandler(node),\n };\n };\n return {\n traverseDependencies: async (node: DependencyNode<any, any>) =>\n await dfs<any, _ReturnTypes>(node, mergedNodeHandler, mergedNodePrehandler)(),\n };\n }\n}\n"]}