ts-ioc-container 72.0.0 → 72.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/AGENTS.md +179 -0
  2. package/README.md +94 -0
  3. package/cjm/container/Container.js +2 -2
  4. package/cjm/container/EmptyContainer.js +17 -15
  5. package/cjm/errors/ArgumentNotFoundError.js +1 -0
  6. package/cjm/errors/CannonSingletonApplyTwiceError.js +2 -14
  7. package/cjm/errors/CannotApplySingletonTwiceError.js +18 -0
  8. package/cjm/errors/ContainerDisposedError.js +1 -0
  9. package/cjm/errors/ContainerError.js +1 -0
  10. package/cjm/errors/ContainerNotFoundError.js +1 -0
  11. package/cjm/errors/DependencyMissingKeyError.js +1 -0
  12. package/cjm/errors/DependencyNotFoundError.js +1 -0
  13. package/cjm/errors/MethodNotImplementedError.js +1 -0
  14. package/cjm/errors/ProviderDisposedError.js +1 -0
  15. package/cjm/errors/TypedEventDisposedError.js +1 -0
  16. package/cjm/errors/UnsupportedTokenTypeError.js +1 -0
  17. package/cjm/index.js +8 -3
  18. package/cjm/metadata/class.js +3 -1
  19. package/cjm/metadata/method.js +3 -1
  20. package/cjm/metadata/parameter.js +7 -1
  21. package/cjm/provider/Provider.js +6 -6
  22. package/cjm/registration/Registration.js +2 -2
  23. package/cjm/token/ConstantToken.js +4 -4
  24. package/cjm/token/FunctionToken.js +1 -1
  25. package/cjm/token/GroupInstanceToken.js +4 -4
  26. package/cjm/token/toToken.js +1 -1
  27. package/cjm/utils/TypedEvent.js +1 -1
  28. package/cjm/utils/array.js +1 -1
  29. package/esm/container/Container.js +2 -2
  30. package/esm/container/EmptyContainer.js +17 -15
  31. package/esm/errors/ArgumentNotFoundError.js +1 -0
  32. package/esm/errors/CannonSingletonApplyTwiceError.js +2 -13
  33. package/esm/errors/CannotApplySingletonTwiceError.js +14 -0
  34. package/esm/errors/ContainerDisposedError.js +1 -0
  35. package/esm/errors/ContainerError.js +1 -0
  36. package/esm/errors/ContainerNotFoundError.js +1 -0
  37. package/esm/errors/DependencyMissingKeyError.js +1 -0
  38. package/esm/errors/DependencyNotFoundError.js +1 -0
  39. package/esm/errors/MethodNotImplementedError.js +1 -0
  40. package/esm/errors/ProviderDisposedError.js +1 -0
  41. package/esm/errors/TypedEventDisposedError.js +1 -0
  42. package/esm/errors/UnsupportedTokenTypeError.js +1 -0
  43. package/esm/index.js +4 -3
  44. package/esm/metadata/class.js +1 -0
  45. package/esm/metadata/method.js +1 -0
  46. package/esm/metadata/parameter.js +5 -0
  47. package/esm/provider/Provider.js +6 -6
  48. package/esm/registration/Registration.js +2 -2
  49. package/esm/token/ConstantToken.js +4 -4
  50. package/esm/token/FunctionToken.js +1 -1
  51. package/esm/token/GroupInstanceToken.js +4 -4
  52. package/esm/token/toToken.js +1 -1
  53. package/esm/utils/TypedEvent.js +1 -1
  54. package/esm/utils/array.js +1 -1
  55. package/lib/ExecutionContext.ts +6 -0
  56. package/lib/container/AliasMap.ts +30 -0
  57. package/lib/container/AutoResolveModule.ts +24 -0
  58. package/lib/container/Container.ts +311 -0
  59. package/lib/container/EmptyContainer.ts +166 -0
  60. package/lib/container/IContainer.ts +156 -0
  61. package/lib/errors/ArgumentNotFoundError.ts +13 -0
  62. package/lib/errors/CannonSingletonApplyTwiceError.ts +6 -0
  63. package/lib/errors/CannotApplySingletonTwiceError.ts +22 -0
  64. package/lib/errors/ContainerDisposedError.ts +13 -0
  65. package/lib/errors/ContainerError.ts +15 -0
  66. package/lib/errors/ContainerNotFoundError.ts +13 -0
  67. package/lib/errors/DependencyMissingKeyError.ts +13 -0
  68. package/lib/errors/DependencyNotFoundError.ts +13 -0
  69. package/lib/errors/MethodNotImplementedError.ts +13 -0
  70. package/lib/errors/ProviderDisposedError.ts +22 -0
  71. package/lib/errors/TypedEventDisposedError.ts +22 -0
  72. package/lib/errors/UnsupportedTokenTypeError.ts +13 -0
  73. package/lib/hooks/HookCollector.ts +109 -0
  74. package/lib/hooks/HookContext.ts +85 -0
  75. package/lib/hooks/combinators.ts +51 -0
  76. package/lib/hooks/hook.ts +89 -0
  77. package/lib/hooks/injectProp.ts +14 -0
  78. package/lib/index.ts +181 -0
  79. package/lib/injector/IInjector.ts +88 -0
  80. package/lib/injector/MetadataInjector.ts +100 -0
  81. package/lib/injector/ProxyInjector.ts +31 -0
  82. package/lib/injector/SimpleInjector.ts +20 -0
  83. package/lib/metadata/class.ts +50 -0
  84. package/lib/metadata/method.ts +47 -0
  85. package/lib/metadata/parameter.ts +60 -0
  86. package/lib/metadata/target.ts +25 -0
  87. package/lib/provider/IProvider.ts +65 -0
  88. package/lib/provider/Provider.ts +174 -0
  89. package/lib/registration/IRegistration.ts +235 -0
  90. package/lib/registration/Registration.ts +122 -0
  91. package/lib/select.ts +33 -0
  92. package/lib/token/BindToken.ts +13 -0
  93. package/lib/token/ClassToken.ts +72 -0
  94. package/lib/token/ConstantToken.ts +50 -0
  95. package/lib/token/FunctionToken.ts +79 -0
  96. package/lib/token/GroupAliasToken.ts +92 -0
  97. package/lib/token/GroupInstanceToken.ts +70 -0
  98. package/lib/token/InjectionToken.ts +46 -0
  99. package/lib/token/SingleAliasToken.ts +84 -0
  100. package/lib/token/SingleToken.ts +93 -0
  101. package/lib/token/toToken.ts +46 -0
  102. package/lib/utils/ProxyRegistry.ts +149 -0
  103. package/lib/utils/TypedEvent.ts +96 -0
  104. package/lib/utils/array.ts +28 -0
  105. package/lib/utils/basic.ts +34 -0
  106. package/lib/utils/debounce.ts +18 -0
  107. package/lib/utils/errorHandler.ts +34 -0
  108. package/lib/utils/fp.ts +86 -0
  109. package/lib/utils/getConstructorChain.ts +17 -0
  110. package/lib/utils/memoize.ts +24 -0
  111. package/lib/utils/once.ts +24 -0
  112. package/lib/utils/shallowCache.ts +22 -0
  113. package/lib/utils/task.ts +33 -0
  114. package/lib/utils/throttle.ts +17 -0
  115. package/package.json +5 -3
  116. package/typings/ExecutionContext.d.ts +2 -0
  117. package/typings/ExecutionContext.d.ts.map +1 -0
  118. package/typings/container/AliasMap.d.ts +1 -0
  119. package/typings/container/AliasMap.d.ts.map +1 -0
  120. package/typings/container/AutoResolveModule.d.ts +16 -0
  121. package/typings/container/AutoResolveModule.d.ts.map +1 -0
  122. package/typings/container/Container.d.ts +60 -0
  123. package/typings/container/Container.d.ts.map +1 -0
  124. package/typings/container/EmptyContainer.d.ts +51 -0
  125. package/typings/container/EmptyContainer.d.ts.map +1 -0
  126. package/typings/container/IContainer.d.ts +75 -0
  127. package/typings/container/IContainer.d.ts.map +1 -0
  128. package/typings/errors/ArgumentNotFoundError.d.ts +3 -0
  129. package/typings/errors/ArgumentNotFoundError.d.ts.map +1 -0
  130. package/typings/errors/CannonSingletonApplyTwiceError.d.ts +6 -6
  131. package/typings/errors/CannonSingletonApplyTwiceError.d.ts.map +1 -0
  132. package/typings/errors/CannotApplySingletonTwiceError.d.ts +12 -0
  133. package/typings/errors/CannotApplySingletonTwiceError.d.ts.map +1 -0
  134. package/typings/errors/ContainerDisposedError.d.ts +3 -0
  135. package/typings/errors/ContainerDisposedError.d.ts.map +1 -0
  136. package/typings/errors/ContainerError.d.ts +7 -0
  137. package/typings/errors/ContainerError.d.ts.map +1 -0
  138. package/typings/errors/ContainerNotFoundError.d.ts +3 -0
  139. package/typings/errors/ContainerNotFoundError.d.ts.map +1 -0
  140. package/typings/errors/DependencyMissingKeyError.d.ts +3 -0
  141. package/typings/errors/DependencyMissingKeyError.d.ts.map +1 -0
  142. package/typings/errors/DependencyNotFoundError.d.ts +3 -0
  143. package/typings/errors/DependencyNotFoundError.d.ts.map +1 -0
  144. package/typings/errors/MethodNotImplementedError.d.ts +3 -0
  145. package/typings/errors/MethodNotImplementedError.d.ts.map +1 -0
  146. package/typings/errors/ProviderDisposedError.d.ts +6 -0
  147. package/typings/errors/ProviderDisposedError.d.ts.map +1 -0
  148. package/typings/errors/TypedEventDisposedError.d.ts +6 -0
  149. package/typings/errors/TypedEventDisposedError.d.ts.map +1 -0
  150. package/typings/errors/UnsupportedTokenTypeError.d.ts +3 -0
  151. package/typings/errors/UnsupportedTokenTypeError.d.ts.map +1 -0
  152. package/typings/hooks/HookCollector.d.ts +36 -0
  153. package/typings/hooks/HookCollector.d.ts.map +1 -0
  154. package/typings/hooks/HookContext.d.ts +10 -0
  155. package/typings/hooks/HookContext.d.ts.map +1 -0
  156. package/typings/hooks/combinators.d.ts +23 -0
  157. package/typings/hooks/combinators.d.ts.map +1 -0
  158. package/typings/hooks/hook.d.ts +39 -0
  159. package/typings/hooks/hook.d.ts.map +1 -0
  160. package/typings/hooks/injectProp.d.ts +9 -0
  161. package/typings/hooks/injectProp.d.ts.map +1 -0
  162. package/typings/index.d.ts +5 -3
  163. package/typings/index.d.ts.map +1 -0
  164. package/typings/injector/IInjector.d.ts +32 -0
  165. package/typings/injector/IInjector.d.ts.map +1 -0
  166. package/typings/injector/MetadataInjector.d.ts +58 -0
  167. package/typings/injector/MetadataInjector.d.ts.map +1 -0
  168. package/typings/injector/ProxyInjector.d.ts +13 -0
  169. package/typings/injector/ProxyInjector.d.ts.map +1 -0
  170. package/typings/injector/SimpleInjector.d.ts +13 -0
  171. package/typings/injector/SimpleInjector.d.ts.map +1 -0
  172. package/typings/metadata/class.d.ts +28 -0
  173. package/typings/metadata/class.d.ts.map +1 -0
  174. package/typings/metadata/method.d.ts +25 -0
  175. package/typings/metadata/method.d.ts.map +1 -0
  176. package/typings/metadata/parameter.d.ts +22 -0
  177. package/typings/metadata/parameter.d.ts.map +1 -0
  178. package/typings/metadata/target.d.ts +19 -0
  179. package/typings/metadata/target.d.ts.map +1 -0
  180. package/typings/provider/IProvider.d.ts +25 -0
  181. package/typings/provider/IProvider.d.ts.map +1 -0
  182. package/typings/provider/Provider.d.ts +30 -0
  183. package/typings/provider/Provider.d.ts.map +1 -0
  184. package/typings/registration/IRegistration.d.ts +137 -0
  185. package/typings/registration/IRegistration.d.ts.map +1 -0
  186. package/typings/registration/Registration.d.ts +23 -0
  187. package/typings/registration/Registration.d.ts.map +1 -0
  188. package/typings/select.d.ts +15 -0
  189. package/typings/select.d.ts.map +1 -0
  190. package/typings/token/BindToken.d.ts +3 -0
  191. package/typings/token/BindToken.d.ts.map +1 -0
  192. package/typings/token/ClassToken.d.ts +2 -0
  193. package/typings/token/ClassToken.d.ts.map +1 -0
  194. package/typings/token/ConstantToken.d.ts +14 -0
  195. package/typings/token/ConstantToken.d.ts.map +1 -0
  196. package/typings/token/FunctionToken.d.ts +10 -0
  197. package/typings/token/FunctionToken.d.ts.map +1 -0
  198. package/typings/token/GroupAliasToken.d.ts +14 -0
  199. package/typings/token/GroupAliasToken.d.ts.map +1 -0
  200. package/typings/token/GroupInstanceToken.d.ts +19 -0
  201. package/typings/token/GroupInstanceToken.d.ts.map +1 -0
  202. package/typings/token/InjectionToken.d.ts +8 -0
  203. package/typings/token/InjectionToken.d.ts.map +1 -0
  204. package/typings/token/SingleAliasToken.d.ts +6 -0
  205. package/typings/token/SingleAliasToken.d.ts.map +1 -0
  206. package/typings/token/SingleToken.d.ts +18 -0
  207. package/typings/token/SingleToken.d.ts.map +1 -0
  208. package/typings/token/toToken.d.ts +12 -0
  209. package/typings/token/toToken.d.ts.map +1 -0
  210. package/typings/utils/ProxyRegistry.d.ts +63 -0
  211. package/typings/utils/ProxyRegistry.d.ts.map +1 -0
  212. package/typings/utils/TypedEvent.d.ts +42 -0
  213. package/typings/utils/TypedEvent.d.ts.map +1 -0
  214. package/typings/utils/array.d.ts +7 -0
  215. package/typings/utils/array.d.ts.map +1 -0
  216. package/typings/utils/basic.d.ts +12 -0
  217. package/typings/utils/basic.d.ts.map +1 -0
  218. package/typings/utils/debounce.d.ts +2 -0
  219. package/typings/utils/debounce.d.ts.map +1 -0
  220. package/typings/utils/errorHandler.d.ts +4 -0
  221. package/typings/utils/errorHandler.d.ts.map +1 -0
  222. package/typings/utils/fp.d.ts +8 -0
  223. package/typings/utils/fp.d.ts.map +1 -0
  224. package/typings/utils/getConstructorChain.d.ts +9 -0
  225. package/typings/utils/getConstructorChain.d.ts.map +1 -0
  226. package/typings/utils/memoize.d.ts +10 -0
  227. package/typings/utils/memoize.d.ts.map +1 -0
  228. package/typings/utils/once.d.ts +2 -0
  229. package/typings/utils/once.d.ts.map +1 -0
  230. package/typings/utils/shallowCache.d.ts +2 -0
  231. package/typings/utils/shallowCache.d.ts.map +1 -0
  232. package/typings/utils/task.d.ts +13 -0
  233. package/typings/utils/task.d.ts.map +1 -0
  234. package/typings/utils/throttle.d.ts +2 -0
  235. package/typings/utils/throttle.d.ts.map +1 -0
@@ -1,17 +1,59 @@
1
1
  export type TypedEventListener<TArgs extends unknown[]> = (...args: TArgs) => void;
2
2
  export type Unsubscribe = () => void;
3
+ /**
4
+ * The subscriber's side of a {@link TypedEvent}: attach, detach, tear down.
5
+ * Hand this out instead of the event itself so that only the owner can `emit`.
6
+ */
3
7
  export interface ITypedEvent<TArgs extends unknown[]> {
8
+ /**
9
+ * Attaches `listener` and returns a function which detaches it again. A
10
+ * listener subscribed more than once is still delivered each emission once.
11
+ *
12
+ * @throws {TypedEventDisposedError} when the event has already been disposed.
13
+ */
4
14
  subscribe(listener: TypedEventListener<TArgs>): Unsubscribe;
15
+ /**
16
+ * Detaches `listener`. Harmless when it is not subscribed, or after `dispose`.
17
+ */
5
18
  unsubscribe(listener: TypedEventListener<TArgs>): void;
19
+ /**
20
+ * Detaches every listener and rejects further `subscribe` / `emit` calls.
21
+ */
6
22
  dispose(): void;
7
23
  }
24
+ /**
25
+ * A typed, multi-listener event. `TArgs` is the argument list a listener
26
+ * receives, so a `TypedEvent<[IContainer]>` accepts `(scope: IContainer) => void`
27
+ * listeners unchanged.
28
+ *
29
+ * Emission delivers to the listeners subscribed at the moment `emit` is called,
30
+ * in subscription order. A listener detached mid-emission is skipped for the
31
+ * rest of that emission; one attached mid-emission receives only later ones.
32
+ */
8
33
  export declare class TypedEvent<TArgs extends unknown[] = []> implements ITypedEvent<TArgs> {
9
34
  private readonly listeners;
10
35
  private isDisposed;
36
+ /**
37
+ * @throws {TypedEventDisposedError} when the event has already been disposed.
38
+ */
11
39
  subscribe(listener: TypedEventListener<TArgs>): Unsubscribe;
12
40
  unsubscribe(listener: TypedEventListener<TArgs>): void;
41
+ /**
42
+ * Calls every current listener with `args`. What a listener throws surfaces
43
+ * out of `emit` and stops delivery to the listeners after it.
44
+ *
45
+ * @throws {TypedEventDisposedError} when the event has already been disposed.
46
+ * @throws {unknown} rethrows whatever a listener threw.
47
+ */
13
48
  emit(...args: TArgs): void;
49
+ /**
50
+ * A copy of the current listeners, in subscription order.
51
+ */
14
52
  getListeners(): TypedEventListener<TArgs>[];
15
53
  dispose(): void;
54
+ /**
55
+ * @throws {TypedEventDisposedError} when the event has already been disposed.
56
+ */
16
57
  private validate;
17
58
  }
59
+ //# sourceMappingURL=TypedEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedEvent.d.ts","sourceRoot":"","sources":["../../lib/utils/TypedEvent.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;AAEnF,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,OAAO,EAAE;IAClD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;IAE5D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAEvD;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,GAAG,EAAE,CAAE,YAAW,WAAW,CAAC,KAAK,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,WAAW;IAM3D,WAAW,CAAC,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI;IAItD;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI;IAW1B;;OAEG;IACH,YAAY,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;IAI3C,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,OAAO,CAAC,QAAQ;CAMjB"}
@@ -2,4 +2,11 @@ export type Predicate<T> = (value: T) => boolean;
2
2
  export declare const Filter: {
3
3
  exclude: <T>(arr: Set<T> | T[]) => (v: T) => boolean;
4
4
  };
5
+ /**
6
+ * Returns a picker of the first argument in `args` matching `predicate` - the
7
+ * shape `singleton(getCacheKey)` consumers expect.
8
+ *
9
+ * @throws {ArgumentNotFoundError} when no argument matches `predicate`
10
+ */
5
11
  export declare const findOrFail: <T>(predicate: Predicate<T>) => (args?: unknown[]) => T;
12
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../lib/utils/array.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAEjD,eAAO,MAAM,MAAM;cACP,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAEpB,GAAG,CAAC;CAEf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACpB,CAAC,EAAE,WAAW,SAAS,CAAC,CAAC,CAAC,MAC1B,OAAM,OAAO,EAAO,KAAG,CAQvB,CAAC"}
@@ -1,10 +1,21 @@
1
+ /** A class that constructs `T`. */
1
2
  export type constructor<T> = new (...args: any[]) => T;
3
+ /** Something with a meaningful `toString()`, e.g. a token used as a cache key. */
2
4
  export interface Serializable {
3
5
  toString(): string;
4
6
  }
7
+ /**
8
+ * Tags a structural type with a name, so `Instance` reads as its own type in
9
+ * signatures and error messages instead of a bare `object`. The tag is optional
10
+ * on purpose: values stay assignable without a cast.
11
+ */
5
12
  export type Branded<TBrand extends string, T> = T & {
6
13
  readonly __brand?: TBrand;
7
14
  };
15
+ /**
16
+ * What the container tracks and reflects on: the object a constructor produced.
17
+ * Deliberately not a constructor signature - an instance is not its own constructor.
18
+ */
8
19
  export type Instance = Branded<'Instance', object>;
9
20
  export declare const Is: {
10
21
  nullish: <T>(value: T | undefined | null) => value is null | undefined;
@@ -14,3 +25,4 @@ export declare const Is: {
14
25
  };
15
26
  export declare function isSerializable(target: unknown): target is Serializable;
16
27
  export declare const toString: (target: unknown) => string;
28
+ //# sourceMappingURL=basic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../lib/utils/basic.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEvD,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,OAAO,CAAC,MAAM,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,EAAE;cACH,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,KAAG,KAAK,IAAI,IAAI,GAAG,SAAS;qBACnD,OAAO,KAAG,MAAM,IAAI,MAAM;uBACxB,OAAO,KAAG,MAAM,IAAI,QAAQ;0BACzB,OAAO,KAAG,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC;CAC/D,CAAC;AAGF,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAEtE;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,OAAO,KAAG,MAAuE,CAAC"}
@@ -1 +1,3 @@
1
+ /** Method decorator: delays the call until `ms` passed without another call (per instance). */
1
2
  export declare const debounce: (ms: number) => MethodDecorator;
3
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../lib/utils/debounce.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,GAClB,IAAI,MAAM,KAAG,eAeb,CAAC"}
@@ -1,6 +1,10 @@
1
+ /** Receives the error with the class and method it came from. */
1
2
  export type HandleErrorParams = (error: unknown, context: {
2
3
  target: string;
3
4
  method: string;
4
5
  }) => void;
6
+ /** Method decorator: routes a rejection of the async method to `errorHandler` instead of throwing. */
5
7
  export declare const handleAsyncError: (errorHandler: HandleErrorParams) => MethodDecorator;
8
+ /** Method decorator: routes a throw of the method to `errorHandler` instead of throwing. */
6
9
  export declare const handleError: (errorHandler: HandleErrorParams) => MethodDecorator;
10
+ //# sourceMappingURL=errorHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../lib/utils/errorHandler.ts"],"names":[],"mappings":"AAEA,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAEtG,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,GAC1B,cAAc,iBAAiB,KAAG,eAWlC,CAAC;AAEJ,4FAA4F;AAC5F,eAAO,MAAM,WAAW,GACrB,cAAc,iBAAiB,KAAG,eAWlC,CAAC"}
@@ -1,4 +1,11 @@
1
+ /** A one-argument transform. */
1
2
  export type MapFn<A, B = A> = (value: A) => B;
3
+ /**
4
+ * Composes functions left to right. With `by(...)` it maps an injected value.
5
+ *
6
+ * @example
7
+ * @inject(pipe(by(ConfigToken), (config) => config.apiUrl))
8
+ */
2
9
  export declare function pipe<A>(fn1: MapFn<A>): MapFn<A>;
3
10
  export declare function pipe<A, B>(fn1: MapFn<A, B>): MapFn<A, B>;
4
11
  export declare function pipe<A, B, C>(fn1: MapFn<A, B>, fn2: MapFn<B, C>): MapFn<A, C>;
@@ -11,3 +18,4 @@ export declare function pipe<A, B, C, D, E, F, G, H, I>(fn1: MapFn<A, B>, fn2: M
11
18
  export declare function pipe<A, B, C, D, E, F, G, H, I, J>(fn1: MapFn<A, B>, fn2: MapFn<B, C>, fn3: MapFn<C, D>, fn4: MapFn<D, E>, fn5: MapFn<E, F>, fn6: MapFn<F, G>, fn7: MapFn<G, H>, fn8: MapFn<H, I>, fn9: MapFn<I, J>): MapFn<A, J>;
12
19
  export declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(fn1: MapFn<A, B>, fn2: MapFn<B, C>, fn3: MapFn<C, D>, fn4: MapFn<D, E>, fn5: MapFn<E, F>, fn6: MapFn<F, G>, fn7: MapFn<G, H>, fn8: MapFn<H, I>, fn9: MapFn<I, J>, fn10: MapFn<J, K>): MapFn<A, K>;
13
20
  export declare function pipe<T>(...mappers: MapFn<T>[]): MapFn<T>;
21
+ //# sourceMappingURL=fp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../lib/utils/fp.ts"],"names":[],"mappings":"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"}
@@ -1 +1,10 @@
1
+ /**
2
+ * Walks a constructor's prototype chain, most-derived first, and collects each
3
+ * class in it: `[Derived, Base, ...]`, stopping before `Function.prototype`.
4
+ *
5
+ * Reading own metadata off each entry in turn is how a class inherits what its
6
+ * ancestors declared — `Reflect.getOwnMetadata` never looks up the chain itself.
7
+ * Anything which is not a function yields an empty chain.
8
+ */
1
9
  export declare const getConstructorChain: (ctor: unknown) => object[];
10
+ //# sourceMappingURL=getConstructorChain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConstructorChain.d.ts","sourceRoot":"","sources":["../../lib/utils/getConstructorChain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,KAAG,MAAM,EAQzD,CAAC"}
@@ -1 +1,11 @@
1
+ /**
2
+ * Wraps a two-argument function so each `(target, key)` pair is computed once
3
+ * and reused. `target` is held weakly, so memoizing against a class or an
4
+ * instance keeps nothing alive.
5
+ *
6
+ * ```typescript
7
+ * const hooksOf = memoize((Target: constructor<unknown>, key: string | symbol) => merge(Target, key));
8
+ * ```
9
+ */
1
10
  export declare const memoize: <T extends object, K, R>(fn: (target: T, key: K) => R) => ((target: T, key: K) => R);
11
+ //# sourceMappingURL=memoize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../lib/utils/memoize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAcvG,CAAC"}
@@ -2,7 +2,9 @@ type RepeatOptions = {
2
2
  index: number;
3
3
  args: unknown[];
4
4
  };
5
+ /** Method decorator: runs the method once per instance and returns the cached result afterwards. */
5
6
  export declare const once: ({ onRepeat }?: {
6
7
  onRepeat?: (options: RepeatOptions) => void;
7
8
  }) => MethodDecorator;
8
9
  export {};
10
+ //# sourceMappingURL=once.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../lib/utils/once.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,IAAI,GACd,eAAc;IAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CAAO,KAAG,eAgBrE,CAAC"}
@@ -1 +1,3 @@
1
+ /** Method decorator: caches results per instance by the key `getKeyByArgs` returns. */
1
2
  export declare const shallowCache: (getKeyByArgs: (...args: unknown[]) => unknown) => MethodDecorator;
3
+ //# sourceMappingURL=shallowCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shallowCache.d.ts","sourceRoot":"","sources":["../../lib/utils/shallowCache.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,YAAY,GACtB,cAAc,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,KAAG,eAmBhD,CAAC"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * A unit of work which may or may not go async: the sync-until-async shape the
3
+ * hook machinery is built on (ADR 0013).
4
+ */
1
5
  export type Task = () => void | Promise<void>;
6
+ /**
7
+ * Runs `tasks` in order, staying synchronous until one returns a promise and
8
+ * awaiting the rest from that point. `undefined` when none went async.
9
+ */
2
10
  export declare const runInOrder: (tasks: Task[], from?: number) => void | Promise<void>;
11
+ /**
12
+ * Starts every task at once. Settles once all have; `undefined` when none went
13
+ * async, so a fully synchronous run hands back no promise.
14
+ */
3
15
  export declare const runAtOnce: (tasks: Task[]) => void | Promise<void>;
16
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../lib/utils/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,EAAE,EAAE,aAAQ,KAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAOvE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,IAAI,EAAE,KAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAS5D,CAAC"}
@@ -1 +1,3 @@
1
+ /** Method decorator: ignores calls within `ms` of the last accepted one (per instance). */
1
2
  export declare const throttle: (ms: number) => MethodDecorator;
3
+ //# sourceMappingURL=throttle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../lib/utils/throttle.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,GAClB,IAAI,MAAM,KAAG,eAcb,CAAC"}