@bluelibs/runner 2.2.4 → 3.1.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 (211) hide show
  1. package/README.md +1409 -935
  2. package/dist/common.types.d.ts +20 -0
  3. package/dist/common.types.js +4 -0
  4. package/dist/common.types.js.map +1 -0
  5. package/dist/context.d.ts +34 -0
  6. package/dist/context.js +58 -0
  7. package/dist/context.js.map +1 -0
  8. package/dist/define.d.ts +24 -5
  9. package/dist/define.js +89 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/defs.d.ts +109 -73
  12. package/dist/defs.js +12 -2
  13. package/dist/defs.js.map +1 -1
  14. package/dist/errors.d.ts +5 -5
  15. package/dist/errors.js +6 -5
  16. package/dist/errors.js.map +1 -1
  17. package/dist/event.types.d.ts +18 -0
  18. package/dist/event.types.js +4 -0
  19. package/dist/event.types.js.map +1 -0
  20. package/dist/examples/registrator-example.d.ts +122 -0
  21. package/dist/examples/registrator-example.js +147 -0
  22. package/dist/examples/registrator-example.js.map +1 -0
  23. package/dist/globals/globalEvents.d.ts +41 -0
  24. package/dist/globals/globalEvents.js +94 -0
  25. package/dist/globals/globalEvents.js.map +1 -0
  26. package/dist/globals/globalMiddleware.d.ts +23 -0
  27. package/dist/globals/globalMiddleware.js +15 -0
  28. package/dist/globals/globalMiddleware.js.map +1 -0
  29. package/dist/globals/globalResources.d.ts +27 -0
  30. package/dist/globals/globalResources.js +47 -0
  31. package/dist/globals/globalResources.js.map +1 -0
  32. package/dist/globals/middleware/cache.middleware.d.ts +34 -0
  33. package/dist/globals/middleware/cache.middleware.js +85 -0
  34. package/dist/globals/middleware/cache.middleware.js.map +1 -0
  35. package/dist/globals/middleware/requireContext.middleware.d.ts +6 -0
  36. package/dist/globals/middleware/requireContext.middleware.js +25 -0
  37. package/dist/globals/middleware/requireContext.middleware.js.map +1 -0
  38. package/dist/globals/middleware/retry.middleware.d.ts +20 -0
  39. package/dist/globals/middleware/retry.middleware.js +34 -0
  40. package/dist/globals/middleware/retry.middleware.js.map +1 -0
  41. package/dist/globals/resources/queue.resource.d.ts +7 -0
  42. package/dist/globals/resources/queue.resource.js +31 -0
  43. package/dist/globals/resources/queue.resource.js.map +1 -0
  44. package/dist/index.d.ts +54 -18
  45. package/dist/index.js +14 -9
  46. package/dist/index.js.map +1 -1
  47. package/dist/middleware.types.d.ts +40 -0
  48. package/dist/middleware.types.js +4 -0
  49. package/dist/middleware.types.js.map +1 -0
  50. package/dist/models/DependencyProcessor.d.ts +6 -5
  51. package/dist/models/DependencyProcessor.js +13 -15
  52. package/dist/models/DependencyProcessor.js.map +1 -1
  53. package/dist/models/EventManager.d.ts +9 -4
  54. package/dist/models/EventManager.js +44 -2
  55. package/dist/models/EventManager.js.map +1 -1
  56. package/dist/models/Logger.d.ts +30 -13
  57. package/dist/models/Logger.js +132 -54
  58. package/dist/models/Logger.js.map +1 -1
  59. package/dist/models/OverrideManager.d.ts +13 -0
  60. package/dist/models/OverrideManager.js +70 -0
  61. package/dist/models/OverrideManager.js.map +1 -0
  62. package/dist/models/Queue.d.ts +25 -0
  63. package/dist/models/Queue.js +54 -0
  64. package/dist/models/Queue.js.map +1 -0
  65. package/dist/models/ResourceInitializer.d.ts +5 -2
  66. package/dist/models/ResourceInitializer.js +22 -14
  67. package/dist/models/ResourceInitializer.js.map +1 -1
  68. package/dist/models/Semaphore.d.ts +61 -0
  69. package/dist/models/Semaphore.js +166 -0
  70. package/dist/models/Semaphore.js.map +1 -0
  71. package/dist/models/Store.d.ts +18 -73
  72. package/dist/models/Store.js +71 -269
  73. package/dist/models/Store.js.map +1 -1
  74. package/dist/models/StoreConstants.d.ts +11 -0
  75. package/dist/models/StoreConstants.js +18 -0
  76. package/dist/models/StoreConstants.js.map +1 -0
  77. package/dist/models/StoreRegistry.d.ts +25 -0
  78. package/dist/models/StoreRegistry.js +171 -0
  79. package/dist/models/StoreRegistry.js.map +1 -0
  80. package/dist/models/StoreTypes.d.ts +21 -0
  81. package/dist/models/StoreTypes.js +3 -0
  82. package/dist/models/StoreTypes.js.map +1 -0
  83. package/dist/models/StoreValidator.d.ts +10 -0
  84. package/dist/models/StoreValidator.js +41 -0
  85. package/dist/models/StoreValidator.js.map +1 -0
  86. package/dist/models/TaskRunner.d.ts +1 -1
  87. package/dist/models/TaskRunner.js +39 -24
  88. package/dist/models/TaskRunner.js.map +1 -1
  89. package/dist/models/VarStore.d.ts +17 -0
  90. package/dist/models/VarStore.js +60 -0
  91. package/dist/models/VarStore.js.map +1 -0
  92. package/dist/models/index.d.ts +3 -0
  93. package/dist/models/index.js +3 -0
  94. package/dist/models/index.js.map +1 -1
  95. package/dist/resource.types.d.ts +31 -0
  96. package/dist/resource.types.js +3 -0
  97. package/dist/resource.types.js.map +1 -0
  98. package/dist/run.d.ts +4 -1
  99. package/dist/run.js +6 -3
  100. package/dist/run.js.map +1 -1
  101. package/dist/symbols.d.ts +24 -0
  102. package/dist/symbols.js +29 -0
  103. package/dist/symbols.js.map +1 -0
  104. package/dist/task.types.d.ts +55 -0
  105. package/dist/task.types.js +23 -0
  106. package/dist/task.types.js.map +1 -0
  107. package/dist/tools/getCallerFile.d.ts +9 -1
  108. package/dist/tools/getCallerFile.js +41 -0
  109. package/dist/tools/getCallerFile.js.map +1 -1
  110. package/dist/tools/registratorId.d.ts +4 -0
  111. package/dist/tools/registratorId.js +40 -0
  112. package/dist/tools/registratorId.js.map +1 -0
  113. package/dist/tools/simpleHash.d.ts +9 -0
  114. package/dist/tools/simpleHash.js +34 -0
  115. package/dist/tools/simpleHash.js.map +1 -0
  116. package/dist/types/base-interfaces.d.ts +18 -0
  117. package/dist/types/base-interfaces.js +6 -0
  118. package/dist/types/base-interfaces.js.map +1 -0
  119. package/dist/types/base.d.ts +13 -0
  120. package/dist/types/base.js +3 -0
  121. package/dist/types/base.js.map +1 -0
  122. package/dist/types/dependencies.d.ts +22 -0
  123. package/dist/types/dependencies.js +3 -0
  124. package/dist/types/dependencies.js.map +1 -0
  125. package/dist/types/dependency-core.d.ts +14 -0
  126. package/dist/types/dependency-core.js +5 -0
  127. package/dist/types/dependency-core.js.map +1 -0
  128. package/dist/types/events.d.ts +52 -0
  129. package/dist/types/events.js +6 -0
  130. package/dist/types/events.js.map +1 -0
  131. package/dist/types/hooks.d.ts +16 -0
  132. package/dist/types/hooks.js +5 -0
  133. package/dist/types/hooks.js.map +1 -0
  134. package/dist/types/index.d.ts +14 -0
  135. package/dist/types/index.js +27 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/types/meta.d.ts +13 -0
  138. package/dist/types/meta.js +5 -0
  139. package/dist/types/meta.js.map +1 -0
  140. package/dist/types/middleware.d.ts +38 -0
  141. package/dist/types/middleware.js +6 -0
  142. package/dist/types/middleware.js.map +1 -0
  143. package/dist/types/registerable.d.ts +10 -0
  144. package/dist/types/registerable.js +5 -0
  145. package/dist/types/registerable.js.map +1 -0
  146. package/dist/types/resources.d.ts +44 -0
  147. package/dist/types/resources.js +5 -0
  148. package/dist/types/resources.js.map +1 -0
  149. package/dist/types/symbols.d.ts +24 -0
  150. package/dist/types/symbols.js +30 -0
  151. package/dist/types/symbols.js.map +1 -0
  152. package/dist/types/tasks.d.ts +41 -0
  153. package/dist/types/tasks.js +5 -0
  154. package/dist/types/tasks.js.map +1 -0
  155. package/dist/types/utilities.d.ts +7 -0
  156. package/dist/types/utilities.js +5 -0
  157. package/dist/types/utilities.js.map +1 -0
  158. package/package.json +10 -6
  159. package/src/__tests__/benchmark/benchmark.test.ts +1 -1
  160. package/src/__tests__/context.test.ts +91 -0
  161. package/src/__tests__/errors.test.ts +8 -5
  162. package/src/__tests__/globalEvents.test.ts +1 -1
  163. package/src/__tests__/globals/cache.middleware.test.ts +772 -0
  164. package/src/__tests__/globals/queue.resource.test.ts +141 -0
  165. package/src/__tests__/globals/requireContext.middleware.test.ts +98 -0
  166. package/src/__tests__/globals/retry.middleware.test.ts +157 -0
  167. package/src/__tests__/index.helper.test.ts +55 -0
  168. package/src/__tests__/models/EventManager.test.ts +157 -11
  169. package/src/__tests__/models/Logger.test.ts +291 -34
  170. package/src/__tests__/models/Queue.test.ts +189 -0
  171. package/src/__tests__/models/ResourceInitializer.test.ts +8 -6
  172. package/src/__tests__/models/Semaphore.test.ts +713 -0
  173. package/src/__tests__/models/Store.test.ts +40 -0
  174. package/src/__tests__/models/TaskRunner.test.ts +86 -5
  175. package/src/__tests__/run.anonymous.test.ts +679 -0
  176. package/src/__tests__/run.middleware.test.ts +312 -12
  177. package/src/__tests__/run.overrides.test.ts +13 -10
  178. package/src/__tests__/run.test.ts +364 -13
  179. package/src/__tests__/setOutput.test.ts +244 -0
  180. package/src/__tests__/tools/getCallerFile.test.ts +124 -9
  181. package/src/__tests__/typesafety.test.ts +71 -41
  182. package/src/context.ts +86 -0
  183. package/src/define.ts +129 -34
  184. package/src/defs.ts +156 -119
  185. package/src/errors.ts +15 -10
  186. package/src/{globalEvents.ts → globals/globalEvents.ts} +13 -12
  187. package/src/globals/globalMiddleware.ts +14 -0
  188. package/src/{globalResources.ts → globals/globalResources.ts} +14 -10
  189. package/src/globals/middleware/cache.middleware.ts +115 -0
  190. package/src/globals/middleware/requireContext.middleware.ts +36 -0
  191. package/src/globals/middleware/retry.middleware.ts +56 -0
  192. package/src/globals/resources/queue.resource.ts +34 -0
  193. package/src/index.ts +9 -5
  194. package/src/models/DependencyProcessor.ts +42 -49
  195. package/src/models/EventManager.ts +64 -13
  196. package/src/models/Logger.ts +181 -64
  197. package/src/models/OverrideManager.ts +84 -0
  198. package/src/models/Queue.ts +66 -0
  199. package/src/models/ResourceInitializer.ts +40 -20
  200. package/src/models/Semaphore.ts +208 -0
  201. package/src/models/Store.ts +94 -342
  202. package/src/models/StoreConstants.ts +17 -0
  203. package/src/models/StoreRegistry.ts +228 -0
  204. package/src/models/StoreTypes.ts +46 -0
  205. package/src/models/StoreValidator.ts +43 -0
  206. package/src/models/TaskRunner.ts +54 -41
  207. package/src/models/index.ts +3 -0
  208. package/src/run.ts +7 -4
  209. package/src/tools/getCallerFile.ts +54 -2
  210. package/src/__tests__/index.ts +0 -15
  211. package/src/examples/express-mongo/index.ts +0 -1
@@ -0,0 +1,31 @@
1
+ import { IResourceMeta } from "./common.types";
2
+ import { RegisterableItems } from "./task.types";
3
+ import { MiddlewareAttachments } from "./middleware.types";
4
+ import { IEventDefinition } from "./event.types";
5
+ export interface IResourceDefinition<TConfig = any, TValue = unknown, TDependencies extends import("./task.types").DependencyMapType = {}, TContext = any, THooks = any, TRegisterableItems = any> {
6
+ id: string;
7
+ dependencies?: TDependencies | ((config: TConfig) => TDependencies);
8
+ register?: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
9
+ init?: (this: any, config: TConfig, dependencies: import("./task.types").DependencyValuesType<TDependencies>, context: TContext) => Promise<TValue>;
10
+ dispose?: (this: any, value: TValue, config: TConfig, dependencies: import("./task.types").DependencyValuesType<TDependencies>, context: TContext) => Promise<void>;
11
+ meta?: IResourceMeta;
12
+ overrides?: Array<IResource | import("./task.types").ITask | import("./middleware.types").IMiddleware | IResourceWithConfig>;
13
+ middleware?: MiddlewareAttachments[];
14
+ context?: () => TContext;
15
+ }
16
+ export interface IResource<TConfig = void, TValue = any, TDependencies extends import("./task.types").DependencyMapType = any, TContext = any> extends IResourceDefinition<TConfig, TValue, TDependencies, TContext> {
17
+ with(config: TConfig): IResourceWithConfig<TConfig, TValue, TDependencies>;
18
+ register: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
19
+ events: {
20
+ beforeInit: IEventDefinition<import("./task.types").BeforeInitEventPayload<TConfig>>;
21
+ afterInit: IEventDefinition<import("./task.types").AfterInitEventPayload<TConfig, TValue>>;
22
+ onError: IEventDefinition<import("./task.types").OnErrorEventPayload>;
23
+ };
24
+ overrides: Array<IResource | import("./task.types").ITask | import("./middleware.types").IMiddleware | IResourceWithConfig>;
25
+ middleware: MiddlewareAttachments[];
26
+ }
27
+ export interface IResourceWithConfig<TConfig = any, TValue = any, TDependencies extends import("./task.types").DependencyMapType = any> {
28
+ id: string;
29
+ resource: IResource<TConfig, TValue, TDependencies>;
30
+ config: TConfig;
31
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=resource.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.types.js","sourceRoot":"","sources":["../src/resource.types.ts"],"names":[],"mappings":""}
package/dist/run.d.ts CHANGED
@@ -21,4 +21,7 @@ export type RunnerState = {
21
21
  events: Record<string, EventStoreElementType>;
22
22
  middleware: Record<string, MiddlewareStoreElementType>;
23
23
  };
24
- export declare function run<C, V>(resource: IResource<C, V>, config?: C): Promise<V>;
24
+ export declare function run<C, V>(resource: IResource<C, V>, config?: C): Promise<{
25
+ value: V;
26
+ dispose: () => Promise<void>;
27
+ }>;
package/dist/run.js CHANGED
@@ -4,11 +4,11 @@ exports.run = run;
4
4
  const TaskRunner_1 = require("./models/TaskRunner");
5
5
  const DependencyProcessor_1 = require("./models/DependencyProcessor");
6
6
  const EventManager_1 = require("./models/EventManager");
7
- const globalEvents_1 = require("./globalEvents");
7
+ const globalEvents_1 = require("./globals/globalEvents");
8
8
  const Store_1 = require("./models/Store");
9
9
  const findCircularDependencies_1 = require("./tools/findCircularDependencies");
10
10
  const errors_1 = require("./errors");
11
- const globalResources_1 = require("./globalResources");
11
+ const globalResources_1 = require("./globals/globalResources");
12
12
  const Logger_1 = require("./models/Logger");
13
13
  async function run(resource, config) {
14
14
  const eventManager = new EventManager_1.EventManager();
@@ -44,6 +44,9 @@ async function run(resource, config) {
44
44
  await logger.debug("System initialized and operational.");
45
45
  // disallow manipulation or attaching more
46
46
  store.lock();
47
- return store.root.value;
47
+ return {
48
+ value: store.root.value,
49
+ dispose: () => store.dispose(),
50
+ };
48
51
  }
49
52
  //# sourceMappingURL=run.js.map
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;AAsDA,kBAuDC;AA7GD,oDAAiD;AAUjD,sEAAmE;AACnE,wDAAqD;AACrD,iDAA8C;AAC9C,0CAAuC;AACvC,+EAA4E;AAC5E,qCAAkC;AAClC,uDAAoD;AACpD,4CAAyC;AAqClC,KAAK,UAAU,GAAG,CACvB,QAAyB,EACzB,MAAU;IAEV,MAAM,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;IAExC,2FAA2F;IAC3F,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,yCAAmB,CACvC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,MAAM,CACP,CAAC;IAEF,+FAA+F;IAC/F,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpE,kGAAkG;IAClG,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjD,MAAM,oBAAoB,GAAG,IAAA,mDAAwB,EAAC,cAAc,CAAC,CAAC;IACtE,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,eAAM,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,sFAAsF;IACtF,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAE/B,iGAAiG;IACjG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;IACrC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAEzC,6DAA6D;IAC7D,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,mFAAmF;IACnF,iCAAiC;IACjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,0CAA0C;IAC1C,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;IAEjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,CAAC;IAEb,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;AAsDA,kBA0DC;AAhHD,oDAAiD;AAUjD,sEAAmE;AACnE,wDAAqD;AACrD,yDAAsD;AACtD,0CAAuC;AACvC,+EAA4E;AAC5E,qCAAkC;AAClC,+DAA4D;AAC5D,4CAAyC;AAqClC,KAAK,UAAU,GAAG,CACvB,QAAyB,EACzB,MAAU;IAEV,MAAM,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;IAExC,2FAA2F;IAC3F,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,yCAAmB,CACvC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,MAAM,CACP,CAAC;IAEF,+FAA+F;IAC/F,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,KAAK,CAAC,gBAAgB,CAAC,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpE,kGAAkG;IAClG,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjD,MAAM,oBAAoB,GAAG,IAAA,mDAAwB,EAAC,cAAc,CAAC,CAAC;IACtE,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,eAAM,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,sFAAsF;IACtF,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAE/B,iGAAiG;IACjG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;IACrC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAEzC,6DAA6D;IAC7D,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,mFAAmF;IACnF,iCAAiC;IACjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEpE,0CAA0C;IAC1C,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;IAEjC,MAAM,YAAY,CAAC,IAAI,CAAC,2BAAY,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,CAAC;IAEb,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare const symbolTask: unique symbol;
2
+ export declare const symbolResource: unique symbol;
3
+ export declare const symbolResourceWithConfig: unique symbol;
4
+ export declare const symbolEvent: unique symbol;
5
+ export declare const symbolMiddleware: unique symbol;
6
+ export declare const symbolMiddlewareConfigured: unique symbol;
7
+ export declare const symbolMiddlewareGlobal: unique symbol;
8
+ export declare const symbolMiddlewareEverywhereTasks: unique symbol;
9
+ export declare const symbolMiddlewareEverywhereResources: unique symbol;
10
+ export declare const symbolFilePath: unique symbol;
11
+ export declare const symbolDispose: unique symbol;
12
+ export declare const symbolStore: unique symbol;
13
+ export declare const symbols: {
14
+ task: symbol;
15
+ resource: symbol;
16
+ resourceWithConfig: symbol;
17
+ event: symbol;
18
+ middleware: symbol;
19
+ middlewareEverywhereTasks: symbol;
20
+ middlewareEverywhereResources: symbol;
21
+ filePath: symbol;
22
+ dispose: symbol;
23
+ store: symbol;
24
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // Symbol constants
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.symbols = exports.symbolStore = exports.symbolDispose = exports.symbolFilePath = exports.symbolMiddlewareEverywhereResources = exports.symbolMiddlewareEverywhereTasks = exports.symbolMiddlewareGlobal = exports.symbolMiddlewareConfigured = exports.symbolMiddleware = exports.symbolEvent = exports.symbolResourceWithConfig = exports.symbolResource = exports.symbolTask = void 0;
5
+ exports.symbolTask = Symbol("runner.task");
6
+ exports.symbolResource = Symbol("runner.resource");
7
+ exports.symbolResourceWithConfig = Symbol("runner.resourceWithConfig");
8
+ exports.symbolEvent = Symbol("runner.event");
9
+ exports.symbolMiddleware = Symbol("runner.middleware");
10
+ exports.symbolMiddlewareConfigured = Symbol("runner.middlewareConfigured");
11
+ exports.symbolMiddlewareGlobal = Symbol("runner.middlewareGlobal");
12
+ exports.symbolMiddlewareEverywhereTasks = Symbol("runner.middlewareGlobalTasks");
13
+ exports.symbolMiddlewareEverywhereResources = Symbol("runner.middlewareGlobalResources");
14
+ exports.symbolFilePath = Symbol("runner.filePath");
15
+ exports.symbolDispose = Symbol("runner.dispose");
16
+ exports.symbolStore = Symbol("runner.store");
17
+ exports.symbols = {
18
+ task: exports.symbolTask,
19
+ resource: exports.symbolResource,
20
+ resourceWithConfig: exports.symbolResourceWithConfig,
21
+ event: exports.symbolEvent,
22
+ middleware: exports.symbolMiddleware,
23
+ middlewareEverywhereTasks: exports.symbolMiddlewareEverywhereTasks,
24
+ middlewareEverywhereResources: exports.symbolMiddlewareEverywhereResources,
25
+ filePath: exports.symbolFilePath,
26
+ dispose: exports.symbolDispose,
27
+ store: exports.symbolStore,
28
+ };
29
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":";AAAA,mBAAmB;;;AAEN,QAAA,UAAU,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,cAAc,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1D,QAAA,wBAAwB,GAAkB,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAC9E,QAAA,WAAW,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AACpD,QAAA,gBAAgB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,0BAA0B,GAAkB,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAClF,QAAA,sBAAsB,GAAkB,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1E,QAAA,+BAA+B,GAAkB,MAAM,CAAC,8BAA8B,CAAC,CAAC;AACxF,QAAA,mCAAmC,GAAkB,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAChG,QAAA,cAAc,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1D,QAAA,aAAa,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACxD,QAAA,WAAW,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AAEpD,QAAA,OAAO,GAAG;IACrB,IAAI,EAAE,kBAAU;IAChB,QAAQ,EAAE,sBAAc;IACxB,kBAAkB,EAAE,gCAAwB;IAC5C,KAAK,EAAE,mBAAW;IAClB,UAAU,EAAE,wBAAgB;IAC5B,yBAAyB,EAAE,uCAA+B;IAC1D,6BAA6B,EAAE,2CAAmC;IAClE,QAAQ,EAAE,sBAAc;IACxB,OAAO,EAAE,qBAAa;IACtB,KAAK,EAAE,mBAAW;CACnB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { ITaskMeta, DependencyMapType, DependencyValuesType } from "./common.types";
2
+ import { MiddlewareAttachments } from "./middleware.types";
3
+ import { IEvent, IEventDefinition } from "./event.types";
4
+ export type DependencyMapType = Record<string, ITask<any, any, any, any> | IResource<any, any, any> | IEventDefinition<any>>;
5
+ export type ExtractTaskInput<T> = T extends ITask<infer I, any, infer D> ? I : never;
6
+ export type ExtractTaskOutput<T> = T extends ITask<any, infer O, infer D> ? O : never;
7
+ export type ExtractResourceValue<T> = T extends IResource<any, infer V, infer D> ? V : never;
8
+ export type ExtractEventParams<T> = T extends IEventDefinition<infer P> ? P : never;
9
+ export type TaskDependency<I, O> = (...args: I extends null | void ? [] : [I]) => O;
10
+ export type ResourceDependency<V> = V;
11
+ export type EventDependency<P> = (input: P) => Promise<void>;
12
+ export type DependencyValueType<T> = T extends ITask<any, any, any> ? TaskDependency<ExtractTaskInput<T>, ExtractTaskOutput<T>> : T extends IResource<any, any> ? ResourceDependency<ExtractResourceValue<T>> : T extends IEventDefinition<any> ? EventDependency<ExtractEventParams<T>> : never;
13
+ export type DependencyValuesType<T extends DependencyMapType> = {
14
+ [K in keyof T]: DependencyValueType<T[K]>;
15
+ };
16
+ export type RegisterableItems<T = any> = IResourceWithConfig<any> | IResource<void, any, any, any> | IResource<{
17
+ [K in any]?: any;
18
+ }, any, any, any> | ITaskDefinition<any, any, any, any> | IMiddlewareDefinition<any> | IEventDefinition<any>;
19
+ export interface ITaskDefinition<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TOn extends "*" | IEventDefinition<any> | undefined = undefined> {
20
+ id: string;
21
+ dependencies?: TDependencies | (() => TDependencies);
22
+ middleware?: MiddlewareAttachments[];
23
+ on?: TOn;
24
+ listenerOrder?: number;
25
+ meta?: ITaskMeta;
26
+ run: (input: TOn extends undefined ? TInput : IEvent<TOn extends "*" ? any : ExtractEventParams<TOn>>, dependencies: DependencyValuesType<TDependencies>) => TOutput;
27
+ }
28
+ export type BeforeRunEventPayload<TInput> = {
29
+ input: TInput;
30
+ };
31
+ export type AfterRunEventPayload<TInput, TOutput> = {
32
+ input: TInput;
33
+ output: TOutput extends Promise<infer U> ? U : TOutput;
34
+ setOutput(newOutput: TOutput extends Promise<infer U> ? U : TOutput): void;
35
+ };
36
+ export type OnErrorEventPayload = {
37
+ error: any;
38
+ suppress(): void;
39
+ };
40
+ export interface ITask<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TOn extends "*" | IEventDefinition<any> | undefined = undefined> extends ITaskDefinition<TInput, TOutput, TDependencies, TOn> {
41
+ dependencies: TDependencies | (() => TDependencies);
42
+ computedDependencies?: DependencyValuesType<TDependencies>;
43
+ middleware: MiddlewareAttachments[];
44
+ events: {
45
+ beforeRun: IEventDefinition<BeforeRunEventPayload<TInput>>;
46
+ afterRun: IEventDefinition<AfterRunEventPayload<TInput, TOutput>>;
47
+ onError: IEventDefinition<OnErrorEventPayload>;
48
+ };
49
+ }
50
+ export * from "./task.types";
51
+ export * from "./resource.types";
52
+ export * from "./event.types";
53
+ export * from "./middleware.types";
54
+ export * from "./symbols";
55
+ export * from "./common.types";
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./task.types"), exports);
18
+ __exportStar(require("./resource.types"), exports);
19
+ __exportStar(require("./event.types"), exports);
20
+ __exportStar(require("./middleware.types"), exports);
21
+ __exportStar(require("./symbols"), exports);
22
+ __exportStar(require("./common.types"), exports);
23
+ //# sourceMappingURL=task.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.types.js","sourceRoot":"","sources":["../src/task.types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA+FA,+CAA6B;AAC7B,mDAAiC;AACjC,gDAA8B;AAC9B,qDAAmC;AACnC,4CAA0B;AAC1B,iDAA+B"}
@@ -1 +1,9 @@
1
- export declare function getCallerFile(): string | undefined;
1
+ export declare function getCallerFile(): string;
2
+ /**
3
+ * Gets a file path, looks at all the parts between current path and 'src' and generates a unique symbol based on that.
4
+ * If there is no 'src' to be found, it will rely on using the last 4 parts of the path.
5
+ * This is useful for generating unique IDs for tasks, resources, etc.
6
+ * @param filePath
7
+ * @returns
8
+ */
9
+ export declare function generateCallerIdFromFile(filePath: string, suffix?: string, fallbackParts?: number): symbol;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCallerFile = getCallerFile;
4
+ exports.generateCallerIdFromFile = generateCallerIdFromFile;
4
5
  function getCallerFile() {
5
6
  const originalFunc = Error.prepareStackTrace;
6
7
  try {
@@ -27,4 +28,44 @@ function getCallerFile() {
27
28
  Error.prepareStackTrace = originalFunc;
28
29
  }
29
30
  }
31
+ /**
32
+ * Gets a file path, looks at all the parts between current path and 'src' and generates a unique symbol based on that.
33
+ * If there is no 'src' to be found, it will rely on using the last 4 parts of the path.
34
+ * This is useful for generating unique IDs for tasks, resources, etc.
35
+ * @param filePath
36
+ * @returns
37
+ */
38
+ function generateCallerIdFromFile(filePath, suffix = "", fallbackParts = 4) {
39
+ filePath = filePath.replace(/\\/g, "/"); // Normalize path for consistency.
40
+ const parts = filePath.split("/");
41
+ const srcIndex = parts.lastIndexOf("src");
42
+ const nodeModulesIndex = parts.lastIndexOf("node_modules");
43
+ const breakIndex = Math.max(srcIndex, nodeModulesIndex);
44
+ let relevantParts;
45
+ if (breakIndex !== -1) {
46
+ relevantParts = parts.slice(breakIndex + 1);
47
+ }
48
+ else {
49
+ relevantParts = parts.slice(-fallbackParts);
50
+ }
51
+ if (relevantParts.length > 0) {
52
+ const lastPartIndex = relevantParts.length - 1;
53
+ const lastPart = relevantParts[lastPartIndex];
54
+ const dotIndex = lastPart.lastIndexOf(".");
55
+ if (dotIndex !== -1 && dotIndex > 0) {
56
+ const extension = lastPart.substring(dotIndex + 1);
57
+ const knownExtensions = ["ts", "js", "tsx", "jsx", "json", "node"];
58
+ if (knownExtensions.includes(extension)) {
59
+ relevantParts[lastPartIndex] = lastPart.substring(0, dotIndex);
60
+ }
61
+ }
62
+ }
63
+ const id = relevantParts.join(".");
64
+ const lastPart = relevantParts.length > 0 ? relevantParts[relevantParts.length - 1] : "";
65
+ let finalId = id;
66
+ if (suffix && !lastPart.includes(suffix)) {
67
+ finalId += "." + suffix;
68
+ }
69
+ return Symbol(finalId);
70
+ }
30
71
  //# sourceMappingURL=getCallerFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCallerFile.js","sourceRoot":"","sources":["../../src/tools/getCallerFile.ts"],"names":[],"mappings":";;AAAA,sCAgCC;AAhCD,SAAgB,aAAa;IAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC;QACf,IAAI,WAAW,CAAC;QAEhB,8BAA8B;QAC9B,KAAK,CAAC,iBAAiB,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;QAEhD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAqC,CAAC;QAExD,+BAA+B;QAC/B,0BAA0B;QAC1B,8EAA8E;QAC9E,sBAAsB;QACtB,IAAI;QAEJ,gDAAgD;QAChD,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,+DAA+D;QAC/D,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC;QAE3C,uDAAuD;QACvD,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC;QAE1C,OAAO,UAAU,CAAC,CAAC,2CAA2C;IAChE,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,iBAAiB,GAAG,YAAY,CAAC;IACzC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"getCallerFile.js","sourceRoot":"","sources":["../../src/tools/getCallerFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generate a registrator ID based on file path
3
+ */
4
+ export declare function generateRegistratorId(filePath: string | undefined, explicitId?: string): string;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRegistratorId = generateRegistratorId;
4
+ // Counter to handle multiple registrators in the same file
5
+ let registratorCounter = 0;
6
+ /**
7
+ * Generate a registrator ID based on file path
8
+ */
9
+ function generateRegistratorId(filePath, explicitId) {
10
+ // If explicit ID is provided, use it
11
+ if (explicitId) {
12
+ return explicitId;
13
+ }
14
+ // Use file path or fallback
15
+ if (!filePath) {
16
+ registratorCounter++;
17
+ return `registrator.unknown.${registratorCounter}`;
18
+ }
19
+ // Extract path from 'src' onwards
20
+ const srcIndex = filePath.lastIndexOf("/src/");
21
+ if (srcIndex !== -1) {
22
+ // Get everything after '/src/'
23
+ let relativePath = filePath.substring(srcIndex + 5);
24
+ // Remove file extension
25
+ relativePath = relativePath.replace(/\.(ts|js)$/, "");
26
+ // Replace path separators with dots
27
+ relativePath = relativePath.replace(/\//g, ".");
28
+ // Add counter to handle multiple registrators in same file
29
+ registratorCounter++;
30
+ return `registrator.${relativePath}.${registratorCounter}`;
31
+ }
32
+ // Fallback: use filename only
33
+ const filename = filePath
34
+ .split("/")
35
+ .pop()
36
+ ?.replace(/\.(ts|js)$/, "") || "unknown";
37
+ registratorCounter++;
38
+ return `registrator.${filename}.${registratorCounter}`;
39
+ }
40
+ //# sourceMappingURL=registratorId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registratorId.js","sourceRoot":"","sources":["../../src/tools/registratorId.ts"],"names":[],"mappings":";;AAMA,sDAyCC;AA/CD,2DAA2D;AAC3D,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAE3B;;GAEG;AACH,SAAgB,qBAAqB,CACnC,QAA4B,EAC5B,UAAmB;IAEnB,qCAAqC;IACrC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,OAAO,uBAAuB,kBAAkB,EAAE,CAAC;IACrD,CAAC;IAED,kCAAkC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,+BAA+B;QAC/B,IAAI,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAEpD,wBAAwB;QACxB,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAEtD,oCAAoC;QACpC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEhD,2DAA2D;QAC3D,kBAAkB,EAAE,CAAC;QACrB,OAAO,eAAe,YAAY,IAAI,kBAAkB,EAAE,CAAC;IAC7D,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GACZ,QAAQ;SACL,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,EAAE;QACN,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAE7C,kBAAkB,EAAE,CAAC;IACrB,OAAO,eAAe,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Simple hash function that generates predictable hashes
3
+ * This is not cryptographically secure but suitable for generating IDs
4
+ */
5
+ export declare function simpleHash(str: string): string;
6
+ /**
7
+ * Generate a registrator ID based on file path and items count
8
+ */
9
+ export declare function generateRegistratorId(filePath: string | undefined, itemsCount: number): string;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simpleHash = simpleHash;
4
+ exports.generateRegistratorId = generateRegistratorId;
5
+ /**
6
+ * Simple hash function that generates predictable hashes
7
+ * This is not cryptographically secure but suitable for generating IDs
8
+ */
9
+ function simpleHash(str) {
10
+ let hash = 0;
11
+ if (str.length === 0)
12
+ return hash.toString();
13
+ for (let i = 0; i < str.length; i++) {
14
+ const char = str.charCodeAt(i);
15
+ hash = (hash << 5) - hash + char;
16
+ hash = hash & hash; // Convert to 32bit integer
17
+ }
18
+ // Convert to positive hex string
19
+ const hashStr = Math.abs(hash).toString(16);
20
+ return hashStr.padStart(8, "0");
21
+ }
22
+ /**
23
+ * Generate a registrator ID based on file path and items count
24
+ */
25
+ function generateRegistratorId(filePath, itemsCount) {
26
+ // Use file path or fallback
27
+ const path = filePath || "unknown";
28
+ // Create a deterministic string to hash
29
+ const hashInput = `registrator:${path}:${itemsCount}`;
30
+ // Generate hash
31
+ const hash = simpleHash(hashInput);
32
+ return `registrator.${hash}`;
33
+ }
34
+ //# sourceMappingURL=simpleHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpleHash.js","sourceRoot":"","sources":["../../src/tools/simpleHash.ts"],"names":[],"mappings":";;AAIA,gCAaC;AAKD,sDAcC;AApCD;;;GAGG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;IACjD,CAAC;IAED,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,QAA4B,EAC5B,UAAkB;IAElB,4BAA4B;IAC5B,MAAM,IAAI,GAAG,QAAQ,IAAI,SAAS,CAAC;IAEnC,wCAAwC;IACxC,MAAM,SAAS,GAAG,eAAe,IAAI,IAAI,UAAU,EAAE,CAAC;IAEtD,gBAAgB;IAChB,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO,eAAe,IAAI,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface ITask<TInput = any, TOutput extends Promise<any> = any, TDependencies = any, TOn = any> {
2
+ id: string;
3
+ }
4
+ export interface IResource<TConfig = void, TValue = any, TDependencies = any, TContext = any> {
5
+ id: string;
6
+ }
7
+ export interface IEventDefinition<TPayload = void> {
8
+ id: string;
9
+ }
10
+ export interface IMiddleware<TConfig = any, TDependencies = any> {
11
+ id: string;
12
+ }
13
+ export interface IResourceWithConfig<TConfig = any, TValue = any, TDependencies = any> {
14
+ id: string;
15
+ }
16
+ export interface IMiddlewareConfigured<TConfig = any, TDependencies = any> {
17
+ id: string;
18
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // Layer 2: Core Abstractions - Forward Declarations
3
+ // These are forward declarations only to break circular dependencies
4
+ // They include minimal required properties for dependency system to work
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=base-interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-interfaces.js","sourceRoot":"","sources":["../../src/types/base-interfaces.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,qEAAqE;AACrE,yEAAyE"}
@@ -0,0 +1,13 @@
1
+ export interface IMeta {
2
+ title?: string;
3
+ description?: string;
4
+ tags?: string[];
5
+ }
6
+ export interface ITaskMeta extends IMeta {
7
+ }
8
+ export interface IResourceMeta extends IMeta {
9
+ }
10
+ export interface IEventMeta extends IMeta {
11
+ }
12
+ export interface IMiddlewareMeta extends IMeta {
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ interface ITask<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TOn extends "*" | IEventDefinition<any> | undefined = undefined> {
2
+ id: string;
3
+ }
4
+ interface IResource<TConfig = void, TValue = any, TDependencies extends DependencyMapType = any, TContext = any> {
5
+ id: string;
6
+ }
7
+ interface IEventDefinition<TPayload = void> {
8
+ id: string;
9
+ }
10
+ export type DependencyMapType = Record<string, ITask<any, any, any, any> | IResource<any, any, any> | IEventDefinition<any>>;
11
+ type ExtractTaskInput<T> = T extends ITask<infer I, any, infer D> ? I : never;
12
+ type ExtractTaskOutput<T> = T extends ITask<any, infer O, infer D> ? O : never;
13
+ type ExtractResourceValue<T> = T extends IResource<any, infer V, infer D> ? V : never;
14
+ type ExtractEventParams<T> = T extends IEventDefinition<infer P> ? P : never;
15
+ type TaskDependency<I, O> = (...args: I extends null | void ? [] : [I]) => O;
16
+ type ResourceDependency<V> = V;
17
+ type EventDependency<P> = (input: P) => Promise<void>;
18
+ export type DependencyValueType<T> = T extends ITask<any, any, any> ? TaskDependency<ExtractTaskInput<T>, ExtractTaskOutput<T>> : T extends IResource<any, any> ? ResourceDependency<ExtractResourceValue<T>> : T extends IEventDefinition<any> ? EventDependency<ExtractEventParams<T>> : never;
19
+ export type DependencyValuesType<T extends DependencyMapType> = {
20
+ [K in keyof T]: DependencyValueType<T[K]>;
21
+ };
22
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/types/dependencies.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { ITask, IResource, IEventDefinition } from './base-interfaces';
2
+ export type DependencyMapType = Record<string, ITask<any, any, any, any> | IResource<any, any, any> | IEventDefinition<any>>;
3
+ type ExtractTaskInput<T> = T extends ITask<infer I, any, any, any> ? I : never;
4
+ type ExtractTaskOutput<T> = T extends ITask<any, infer O, any, any> ? O : never;
5
+ type ExtractResourceValue<T> = T extends IResource<any, infer V, any> ? V : never;
6
+ type ExtractEventParams<T> = T extends IEventDefinition<infer P> ? P : never;
7
+ type TaskDependency<I, O> = (...args: I extends null | void ? [] : [I]) => O;
8
+ type ResourceDependency<V> = V;
9
+ type EventDependency<P> = (input: P) => Promise<void>;
10
+ export type DependencyValueType<T> = T extends ITask<any, any, any, any> ? TaskDependency<ExtractTaskInput<T>, ExtractTaskOutput<T>> : T extends IResource<any, any, any> ? ResourceDependency<ExtractResourceValue<T>> : T extends IEventDefinition<any> ? EventDependency<ExtractEventParams<T>> : never;
11
+ export type DependencyValuesType<T extends DependencyMapType> = {
12
+ [K in keyof T]: DependencyValueType<T[K]>;
13
+ };
14
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Layer 2: Core Abstractions - Dependency System
3
+ // Uses forward declarations to break circular dependencies
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=dependency-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-core.js","sourceRoot":"","sources":["../../src/types/dependency-core.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,2DAA2D"}
@@ -0,0 +1,52 @@
1
+ import { symbolEvent } from './symbols';
2
+ import type { IEventMeta } from './meta';
3
+ export interface IEvent<TPayload = any> {
4
+ id: string;
5
+ /**
6
+ * The data that the event carries. It can be anything.
7
+ */
8
+ data: TPayload;
9
+ /**
10
+ * The timestamp when the event was created.
11
+ */
12
+ timestamp: Date;
13
+ /**
14
+ * The source of the event. This can be useful for debugging.
15
+ */
16
+ source: string;
17
+ }
18
+ export type EventHandlerType<T = any> = (event: IEvent<T>) => any | Promise<any>;
19
+ export interface IEventDefinitionConfig<TPayload = void> {
20
+ id: string;
21
+ meta?: IEventMeta;
22
+ }
23
+ export interface IEventDefinition<TPayload = void> {
24
+ id: string;
25
+ /**
26
+ * We use this event to discriminate between resources with just 'id' and 'events' as they collide. This is a workaround, should be redone using classes and instanceof.
27
+ */
28
+ [symbolEvent]: true;
29
+ meta?: IEventMeta;
30
+ }
31
+ export type BeforeRunEventPayload<TInput> = {
32
+ input: TInput;
33
+ };
34
+ export type AfterRunEventPayload<TInput, TOutput> = {
35
+ input: TInput;
36
+ output: TOutput extends Promise<infer U> ? U : TOutput;
37
+ setOutput(newOutput: TOutput extends Promise<infer U> ? U : TOutput): void;
38
+ };
39
+ export type OnErrorEventPayload = {
40
+ error: any;
41
+ /**
42
+ * This function can be called to suppress the error from being thrown.
43
+ */
44
+ suppress(): void;
45
+ };
46
+ export type BeforeInitEventPayload<TConfig> = {
47
+ config: TConfig;
48
+ };
49
+ export type AfterInitEventPayload<TConfig, TValue> = {
50
+ config: TConfig;
51
+ value: TValue;
52
+ };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // Layer 3: Component Definitions - Events
3
+ // Imports from Layer 1 & 2
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const symbols_1 = require("./symbols");
6
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,2BAA2B;;AAE3B,uCAAwC"}
@@ -0,0 +1,16 @@
1
+ import type { IEventDefinition, IEvent } from './events';
2
+ import type { DependencyMapType, DependencyValuesType } from './dependency-core';
3
+ export interface IHookDefinition<D extends DependencyMapType = {}, T = any, B extends boolean = false> {
4
+ event: "*" | IEventDefinition<T>;
5
+ /**
6
+ * The higher the number, the higher the priority.
7
+ * We recommend using numbers between -1000 and 1000.
8
+ */
9
+ order?: number;
10
+ /**
11
+ * These are hooks that run before any resource instantiation.
12
+ * @param event
13
+ */
14
+ early?: B;
15
+ run: (event: IEvent<T>, dependencies: T extends true ? void : DependencyValuesType<D>) => Promise<void> | void;
16
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Layer 4: Integration Types - Hooks
3
+ // Imports from event and dependency systems
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,4CAA4C"}
@@ -0,0 +1,14 @@
1
+ export * from './symbols';
2
+ export * from './base';
3
+ export * from './utilities';
4
+ export * from './dependencies';
5
+ export * from './events';
6
+ export * from './tasks';
7
+ export * from './resources';
8
+ export * from './middleware';
9
+ export * from './hooks';
10
+ import type { IResourceWithConfig, IResource, ITaskDefinition, IMiddlewareDefinition, IEventDefinition } from './index';
11
+ export type RegisterableItems<T = any> = IResourceWithConfig<any> | IResource<void, any, any, any> | IResource<{
12
+ [K in any]?: any;
13
+ }, any, any, any> | ITaskDefinition<any, any, any, any> | IMiddlewareDefinition<any> | IEventDefinition<any>;
14
+ export { ICacheInstance } from "../globals/middleware/cache.middleware";