@bluelibs/runner 4.8.6 → 5.0.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 (177) hide show
  1. package/README.md +110 -3440
  2. package/dist/browser/index.cjs +6586 -3478
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.d.mts +2890 -0
  5. package/dist/browser/index.d.ts +2890 -0
  6. package/dist/browser/index.mjs +6574 -3466
  7. package/dist/browser/index.mjs.map +1 -1
  8. package/dist/edge/index.cjs +6586 -3478
  9. package/dist/edge/index.cjs.map +1 -1
  10. package/dist/edge/index.d.mts +2890 -0
  11. package/dist/edge/index.d.ts +2890 -0
  12. package/dist/edge/index.mjs +6574 -3466
  13. package/dist/edge/index.mjs.map +1 -1
  14. package/dist/node/node.cjs +42337 -7087
  15. package/dist/node/node.cjs.map +1 -1
  16. package/dist/node/node.d.mts +4593 -0
  17. package/dist/node/node.d.ts +4546 -55
  18. package/dist/node/node.mjs +42251 -7035
  19. package/dist/node/node.mjs.map +1 -1
  20. package/dist/ui/assets/index-2cb8f39f.js +141 -0
  21. package/dist/ui/assets/index-b1f988bf.css +1 -0
  22. package/dist/ui/index.html +14 -0
  23. package/dist/universal/index.cjs +7109 -4003
  24. package/dist/universal/index.cjs.map +1 -1
  25. package/dist/universal/index.d.mts +2890 -0
  26. package/dist/universal/index.d.ts +2890 -0
  27. package/dist/universal/index.mjs +7102 -3996
  28. package/dist/universal/index.mjs.map +1 -1
  29. package/package.json +57 -25
  30. package/readmes/AI.md +534 -0
  31. package/AI.md +0 -454
  32. package/dist/define.d.ts +0 -9
  33. package/dist/definers/builders/asyncContext.d.ts +0 -13
  34. package/dist/definers/builders/core.d.ts +0 -30
  35. package/dist/definers/builders/error.d.ts +0 -15
  36. package/dist/definers/builders/event.d.ts +0 -12
  37. package/dist/definers/builders/hook.d.ts +0 -20
  38. package/dist/definers/builders/middleware.d.ts +0 -39
  39. package/dist/definers/builders/resource.d.ts +0 -40
  40. package/dist/definers/builders/tag.d.ts +0 -10
  41. package/dist/definers/builders/task.d.ts +0 -37
  42. package/dist/definers/builders/task.phantom.d.ts +0 -27
  43. package/dist/definers/builders/utils.d.ts +0 -4
  44. package/dist/definers/defineAsyncContext.d.ts +0 -15
  45. package/dist/definers/defineError.d.ts +0 -26
  46. package/dist/definers/defineEvent.d.ts +0 -2
  47. package/dist/definers/defineHook.d.ts +0 -6
  48. package/dist/definers/defineOverride.d.ts +0 -17
  49. package/dist/definers/defineResource.d.ts +0 -2
  50. package/dist/definers/defineResourceMiddleware.d.ts +0 -2
  51. package/dist/definers/defineTag.d.ts +0 -12
  52. package/dist/definers/defineTask.d.ts +0 -18
  53. package/dist/definers/defineTaskMiddleware.d.ts +0 -2
  54. package/dist/definers/tools.d.ts +0 -53
  55. package/dist/defs.d.ts +0 -31
  56. package/dist/errors.d.ts +0 -62
  57. package/dist/globals/debug.d.ts +0 -10
  58. package/dist/globals/globalEvents.d.ts +0 -8
  59. package/dist/globals/globalMiddleware.d.ts +0 -31
  60. package/dist/globals/globalResources.d.ts +0 -41
  61. package/dist/globals/globalTags.d.ts +0 -11
  62. package/dist/globals/middleware/cache.middleware.d.ts +0 -27
  63. package/dist/globals/middleware/requireContext.middleware.d.ts +0 -6
  64. package/dist/globals/middleware/retry.middleware.d.ts +0 -21
  65. package/dist/globals/middleware/timeout.middleware.d.ts +0 -9
  66. package/dist/globals/middleware/tunnel.middleware.d.ts +0 -2
  67. package/dist/globals/resources/debug/debug.resource.d.ts +0 -7
  68. package/dist/globals/resources/debug/debug.tag.d.ts +0 -2
  69. package/dist/globals/resources/debug/debugConfig.resource.d.ts +0 -22
  70. package/dist/globals/resources/debug/executionTracker.middleware.d.ts +0 -50
  71. package/dist/globals/resources/debug/globalEvent.hook.d.ts +0 -27
  72. package/dist/globals/resources/debug/hook.hook.d.ts +0 -30
  73. package/dist/globals/resources/debug/index.d.ts +0 -6
  74. package/dist/globals/resources/debug/middleware.hook.d.ts +0 -30
  75. package/dist/globals/resources/debug/types.d.ts +0 -25
  76. package/dist/globals/resources/debug/utils.d.ts +0 -2
  77. package/dist/globals/resources/httpClientFactory.resource.d.ts +0 -28
  78. package/dist/globals/resources/queue.resource.d.ts +0 -10
  79. package/dist/globals/resources/tunnel/ejson-extensions.d.ts +0 -1
  80. package/dist/globals/resources/tunnel/error-utils.d.ts +0 -1
  81. package/dist/globals/resources/tunnel/plan.d.ts +0 -19
  82. package/dist/globals/resources/tunnel/protocol.d.ts +0 -47
  83. package/dist/globals/resources/tunnel/serializer.d.ts +0 -9
  84. package/dist/globals/resources/tunnel/tunnel.policy.tag.d.ts +0 -18
  85. package/dist/globals/resources/tunnel/tunnel.tag.d.ts +0 -2
  86. package/dist/globals/resources/tunnel/types.d.ts +0 -42
  87. package/dist/globals/tunnels/index.d.ts +0 -23
  88. package/dist/globals/types.d.ts +0 -4
  89. package/dist/http-client.d.ts +0 -25
  90. package/dist/http-fetch-tunnel.resource.d.ts +0 -11
  91. package/dist/index.d.ts +0 -117
  92. package/dist/models/DependencyProcessor.d.ts +0 -48
  93. package/dist/models/EventManager.d.ts +0 -153
  94. package/dist/models/LogPrinter.d.ts +0 -55
  95. package/dist/models/Logger.d.ts +0 -85
  96. package/dist/models/MiddlewareManager.d.ts +0 -75
  97. package/dist/models/OverrideManager.d.ts +0 -13
  98. package/dist/models/Queue.d.ts +0 -26
  99. package/dist/models/ResourceInitializer.d.ts +0 -20
  100. package/dist/models/RunResult.d.ts +0 -35
  101. package/dist/models/Semaphore.d.ts +0 -61
  102. package/dist/models/Store.d.ts +0 -73
  103. package/dist/models/StoreRegistry.d.ts +0 -49
  104. package/dist/models/StoreValidator.d.ts +0 -8
  105. package/dist/models/TaskRunner.d.ts +0 -27
  106. package/dist/models/UnhandledError.d.ts +0 -11
  107. package/dist/models/index.d.ts +0 -11
  108. package/dist/models/middleware/InterceptorRegistry.d.ts +0 -56
  109. package/dist/models/middleware/MiddlewareResolver.d.ts +0 -31
  110. package/dist/models/middleware/ResourceMiddlewareComposer.d.ts +0 -34
  111. package/dist/models/middleware/TaskMiddlewareComposer.d.ts +0 -43
  112. package/dist/models/middleware/ValidationHelper.d.ts +0 -20
  113. package/dist/models/middleware/index.d.ts +0 -6
  114. package/dist/models/middleware/types.d.ts +0 -10
  115. package/dist/models/utils/findCircularDependencies.d.ts +0 -16
  116. package/dist/models/utils/safeStringify.d.ts +0 -3
  117. package/dist/node/exposure/allowList.d.ts +0 -3
  118. package/dist/node/exposure/authenticator.d.ts +0 -6
  119. package/dist/node/exposure/cors.d.ts +0 -4
  120. package/dist/node/exposure/createNodeExposure.d.ts +0 -2
  121. package/dist/node/exposure/exposureServer.d.ts +0 -18
  122. package/dist/node/exposure/httpResponse.d.ts +0 -10
  123. package/dist/node/exposure/logging.d.ts +0 -4
  124. package/dist/node/exposure/multipart.d.ts +0 -27
  125. package/dist/node/exposure/requestBody.d.ts +0 -11
  126. package/dist/node/exposure/requestContext.d.ts +0 -17
  127. package/dist/node/exposure/requestHandlers.d.ts +0 -24
  128. package/dist/node/exposure/resourceTypes.d.ts +0 -60
  129. package/dist/node/exposure/router.d.ts +0 -17
  130. package/dist/node/exposure/serverLifecycle.d.ts +0 -13
  131. package/dist/node/exposure/types.d.ts +0 -31
  132. package/dist/node/exposure/utils.d.ts +0 -17
  133. package/dist/node/exposure.resource.d.ts +0 -12
  134. package/dist/node/files.d.ts +0 -9
  135. package/dist/node/http-mixed-client.d.ts +0 -30
  136. package/dist/node/http-smart-client.model.d.ts +0 -24
  137. package/dist/node/index.d.ts +0 -1
  138. package/dist/node/inputFile.model.d.ts +0 -22
  139. package/dist/node/inputFile.utils.d.ts +0 -14
  140. package/dist/node/platform/createFile.d.ts +0 -9
  141. package/dist/node/resources/http-mixed-client.factory.resource.d.ts +0 -17
  142. package/dist/node/resources/http-smart-client.factory.resource.d.ts +0 -16
  143. package/dist/node/tunnel.allowlist.d.ts +0 -7
  144. package/dist/node/upload/manifest.d.ts +0 -22
  145. package/dist/platform/adapters/browser.d.ts +0 -14
  146. package/dist/platform/adapters/edge.d.ts +0 -5
  147. package/dist/platform/adapters/node-als.d.ts +0 -1
  148. package/dist/platform/adapters/node.d.ts +0 -15
  149. package/dist/platform/adapters/universal-generic.d.ts +0 -14
  150. package/dist/platform/adapters/universal.d.ts +0 -17
  151. package/dist/platform/createFile.d.ts +0 -10
  152. package/dist/platform/createWebFile.d.ts +0 -11
  153. package/dist/platform/factory.d.ts +0 -2
  154. package/dist/platform/index.d.ts +0 -27
  155. package/dist/platform/types.d.ts +0 -29
  156. package/dist/processHooks.d.ts +0 -2
  157. package/dist/run.d.ts +0 -14
  158. package/dist/testing.d.ts +0 -25
  159. package/dist/tools/getCallerFile.d.ts +0 -1
  160. package/dist/tunnels/buildUniversalManifest.d.ts +0 -24
  161. package/dist/types/asyncContext.d.ts +0 -41
  162. package/dist/types/contracts.d.ts +0 -63
  163. package/dist/types/error.d.ts +0 -36
  164. package/dist/types/event.d.ts +0 -74
  165. package/dist/types/hook.d.ts +0 -23
  166. package/dist/types/inputFile.d.ts +0 -34
  167. package/dist/types/meta.d.ts +0 -22
  168. package/dist/types/resource.d.ts +0 -87
  169. package/dist/types/resourceMiddleware.d.ts +0 -47
  170. package/dist/types/runner.d.ts +0 -68
  171. package/dist/types/storeTypes.d.ts +0 -40
  172. package/dist/types/symbols.d.ts +0 -32
  173. package/dist/types/tag.d.ts +0 -46
  174. package/dist/types/task.d.ts +0 -54
  175. package/dist/types/taskMiddleware.d.ts +0 -48
  176. package/dist/types/utilities.d.ts +0 -113
  177. package/dist/utils/detectRunnerMode.d.ts +0 -9
@@ -1,153 +0,0 @@
1
- import { DependencyValuesType, EventHandlerType, IEvent, IEventEmission } from "../defs";
2
- import { IHook } from "../types/hook";
3
- /**
4
- * Options for configuring event listeners
5
- */
6
- export interface IEventHandlerOptions<T = any> {
7
- order?: number;
8
- filter?: (event: IEventEmission<T>) => boolean;
9
- /**
10
- * Represents the listener ID. Use this to avoid a listener calling himself.
11
- */
12
- id?: string;
13
- }
14
- /**
15
- * Interceptor for event emissions
16
- */
17
- export type EventEmissionInterceptor = (next: (event: IEventEmission<any>) => Promise<void>, event: IEventEmission<any>) => Promise<void>;
18
- /**
19
- * Interceptor for hook execution
20
- */
21
- export type HookExecutionInterceptor = (next: (hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>, hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>;
22
- /**
23
- * EventManager handles event emission, listener registration, and event processing.
24
- * It supports both specific event listeners and global listeners that handle all events.
25
- * Listeners are processed in order based on their priority.
26
- */
27
- export declare class EventManager {
28
- #private;
29
- private listeners;
30
- private globalListeners;
31
- private cachedMergedListeners;
32
- private globalListenersCacheValid;
33
- private emissionInterceptors;
34
- private hookInterceptors;
35
- private readonly emissionStack;
36
- private readonly currentHookIdContext;
37
- private readonly runtimeCycleDetection;
38
- constructor(options?: {
39
- runtimeCycleDetection?: boolean;
40
- });
41
- /**
42
- * Gets the current lock status of the EventManager
43
- */
44
- get isLocked(): boolean;
45
- /**
46
- * Locks the EventManager, preventing any further modifications to listeners
47
- */
48
- lock(): void;
49
- /**
50
- * Emits an event to all registered listeners for that event type.
51
- * Listeners are processed in order of priority and can stop event propagation.
52
- *
53
- * @param eventDefinition - The event definition to emit
54
- * @param data - The event payload data
55
- * @param source - The source identifier of the event emitter
56
- */
57
- emit<TInput>(eventDefinition: IEvent<TInput>, data: TInput, source: string): Promise<void>;
58
- /**
59
- * Registers an event listener for specific event(s).
60
- * Listeners are ordered by priority and executed in ascending order.
61
- *
62
- * @param event - The event definition(s) to listen for
63
- * @param handler - The callback function to handle the event
64
- * @param options - Configuration options for the listener
65
- */
66
- addListener<T>(event: IEvent<T> | Array<IEvent<T>>, handler: EventHandlerType<T>, options?: IEventHandlerOptions<T>): void;
67
- /**
68
- * Registers a global event listener that handles all events.
69
- * Global listeners are mixed with specific listeners and ordered by priority.
70
- *
71
- * @param handler - The callback function to handle events
72
- * @param options - Configuration options for the listener
73
- */
74
- addGlobalListener(handler: EventHandlerType, options?: IEventHandlerOptions): void;
75
- /**
76
- * Checks if there are any listeners registered for the given event
77
- *
78
- * @param eventDefinition - The event definition to check
79
- * @returns true if listeners exist, false otherwise
80
- */
81
- hasListeners<T>(eventDefinition: IEvent<T>): boolean;
82
- /**
83
- * Adds an interceptor for all event emissions
84
- * Interceptors are executed in the order they are added, with the ability to
85
- * modify, log, or prevent event emissions
86
- *
87
- * @param interceptor - The interceptor function to add
88
- */
89
- intercept(interceptor: EventEmissionInterceptor): void;
90
- /**
91
- * Adds an interceptor for hook execution
92
- * Interceptors are executed in the order they are added, with the ability to
93
- * modify, log, or prevent hook execution
94
- *
95
- * @param interceptor - The interceptor function to add
96
- */
97
- interceptHook(interceptor: HookExecutionInterceptor): void;
98
- /**
99
- * Executes a hook with all registered hook interceptors applied
100
- * This method should be used by TaskRunner when executing hooks
101
- *
102
- * @param hook - The hook to execute
103
- * @param event - The event that triggered the hook
104
- * @param computedDependencies - The computed dependencies for the hook
105
- * @returns Promise resolving to the hook execution result
106
- */
107
- executeHookWithInterceptors(hook: IHook<any, any>, event: IEventEmission<any>, computedDependencies: DependencyValuesType<any>): Promise<any>;
108
- /**
109
- * Throws an error if the EventManager is locked
110
- */
111
- private checkLock;
112
- /**
113
- * Merges two sorted arrays of listeners while maintaining order.
114
- * Used to combine event-specific listeners with global listeners.
115
- *
116
- * @param a - First array of listeners
117
- * @param b - Second array of listeners
118
- * @returns Merged and sorted array of listeners
119
- */
120
- private mergeSortedListeners;
121
- /**
122
- * Inserts a new listener into a sorted array using binary search.
123
- * Maintains order based on listener priority.
124
- *
125
- * @param listeners - Array to insert into
126
- * @param newListener - Listener to insert
127
- */
128
- private insertListener;
129
- /**
130
- * Returns true if the given emission carries the tag that marks
131
- * it as excluded from global ("*") listeners.
132
- *
133
- * @param event - The event emission to check
134
- * @returns true if event should exclude global listeners
135
- */
136
- private isExcludedFromGlobal;
137
- /**
138
- * Retrieves cached merged listeners for an event, or creates them if not cached.
139
- * Combines event-specific listeners with global listeners and sorts them by priority.
140
- *
141
- * @param eventId - The event ID to get listeners for
142
- * @returns Array of merged listeners sorted by priority
143
- */
144
- private getCachedMergedListeners;
145
- /**
146
- * Invalidates the cached merged listeners.
147
- * If eventId is provided, only invalidates cache for that specific event.
148
- * Otherwise, invalidates the global cache.
149
- *
150
- * @param eventId - Optional specific event ID to invalidate
151
- */
152
- private invalidateCache;
153
- }
@@ -1,55 +0,0 @@
1
- export type PrintStrategy = "pretty" | "plain" | "json" | "json_pretty";
2
- export type LogLevels = "trace" | "debug" | "info" | "warn" | "error" | "critical";
3
- export interface PrintableLog {
4
- level: LogLevels;
5
- source?: string;
6
- message: any;
7
- timestamp: Date;
8
- error?: {
9
- name: string;
10
- message: string;
11
- stack?: string;
12
- };
13
- data?: Record<string, any>;
14
- context?: Record<string, any>;
15
- }
16
- export type ColorTheme = {
17
- trace: string;
18
- debug: string;
19
- info: string;
20
- warn: string;
21
- error: string;
22
- critical: string;
23
- reset: string;
24
- bold: string;
25
- dim: string;
26
- blue: string;
27
- cyan: string;
28
- gray: string;
29
- };
30
- export declare class LogPrinter {
31
- private strategy;
32
- private colors;
33
- constructor(options: {
34
- strategy: PrintStrategy;
35
- useColors: boolean;
36
- colorTheme?: Partial<ColorTheme>;
37
- });
38
- print(log: PrintableLog): void;
39
- private pickWriter;
40
- private formatTime;
41
- private formatLevel;
42
- private formatSource;
43
- private formatMessage;
44
- private formatError;
45
- private formatData;
46
- private formatContext;
47
- private normalizeForJson;
48
- private static NO_COLORS;
49
- private static writers;
50
- static setWriters(writers: Partial<{
51
- log: (msg: any) => void;
52
- error?: (msg: any) => void;
53
- }>): void;
54
- static resetWriters(): void;
55
- }
@@ -1,85 +0,0 @@
1
- import { LogPrinter, PrintStrategy as PrinterStrategy } from "./LogPrinter";
2
- export type LogLevels = "trace" | "debug" | "info" | "warn" | "error" | "critical";
3
- export interface ILogInfo {
4
- source?: string;
5
- error?: unknown | Error;
6
- data?: Record<string, any>;
7
- context?: Record<string, any>;
8
- [key: string]: any;
9
- }
10
- export interface ILog {
11
- level: LogLevels;
12
- source?: string;
13
- message: any;
14
- timestamp: Date;
15
- error?: {
16
- name: string;
17
- message: string;
18
- stack?: string;
19
- };
20
- data?: Record<string, any>;
21
- context?: Record<string, any>;
22
- }
23
- export type PrintStrategy = PrinterStrategy;
24
- export declare class Logger {
25
- private printThreshold;
26
- private printStrategy;
27
- private bufferLogs;
28
- private buffer;
29
- private boundContext;
30
- private isLocked;
31
- private useColors;
32
- private printer;
33
- private source?;
34
- private rootLogger?;
35
- localListeners: Array<(log: ILog) => void | Promise<void>>;
36
- static Severity: {
37
- trace: number;
38
- debug: number;
39
- info: number;
40
- warn: number;
41
- error: number;
42
- critical: number;
43
- };
44
- constructor(options: {
45
- printThreshold: null | LogLevels;
46
- printStrategy: PrintStrategy;
47
- bufferLogs: boolean;
48
- useColors?: boolean;
49
- }, boundContext?: Record<string, any>, source?: string, printer?: LogPrinter);
50
- private detectColorSupport;
51
- /**
52
- * Creates a new logger instance with additional bound context
53
- */
54
- with({ source, additionalContext: context, }: {
55
- source?: string;
56
- additionalContext?: Record<string, any>;
57
- }): Logger;
58
- /**
59
- * Core logging method with structured LogInfo
60
- */
61
- log(level: LogLevels, message: any, logInfo?: ILogInfo): Promise<void>;
62
- private extractErrorInfo;
63
- info(message: any, logInfo?: ILogInfo): Promise<void>;
64
- error(message: any, logInfo?: ILogInfo): Promise<void>;
65
- warn(message: any, logInfo?: ILogInfo): Promise<void>;
66
- debug(message: any, logInfo?: ILogInfo): Promise<void>;
67
- trace(message: any, logInfo?: ILogInfo): Promise<void>;
68
- critical(message: any, logInfo?: ILogInfo): Promise<void>;
69
- /**
70
- * Direct print for tests and advanced scenarios. Delegates to LogPrinter.
71
- */
72
- print(log: ILog): void;
73
- /**
74
- * @param listener - A listener that will be triggered for every log.
75
- */
76
- onLog(listener: (log: ILog) => any): void;
77
- /**
78
- * Marks the logger as ready.
79
- * This is used to trigger the local listeners and print the buffered logs (if they exists)
80
- * @returns A promise that resolves when the logger is ready.
81
- */
82
- lock(): Promise<void>;
83
- private canPrint;
84
- private triggerLogListeners;
85
- }
@@ -1,75 +0,0 @@
1
- import { DependencyMapType, ITask, IResource } from "../defs";
2
- import { EventManager } from "./EventManager";
3
- import { Store } from "./Store";
4
- import { Logger } from "./Logger";
5
- import { ITaskMiddleware, IResourceMiddleware } from "../defs";
6
- import { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor } from "./middleware/types";
7
- export type { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor };
8
- /**
9
- * Centralizes middleware composition and execution for both tasks and resources.
10
- * Keeps observability emissions and unhandled error routing consistent.
11
- *
12
- * This is a facade that delegates to specialized composer classes for maintainability.
13
- */
14
- export declare class MiddlewareManager {
15
- protected readonly store: Store;
16
- protected readonly eventManager: EventManager;
17
- protected readonly logger: Logger;
18
- private readonly interceptorRegistry;
19
- private readonly middlewareResolver;
20
- private readonly taskComposer;
21
- private readonly resourceComposer;
22
- constructor(store: Store, eventManager: EventManager, logger: Logger);
23
- /**
24
- * @internal
25
- */
26
- get taskMiddlewareInterceptors(): TaskMiddlewareInterceptor[];
27
- /**
28
- * @internal
29
- */
30
- get resourceMiddlewareInterceptors(): ResourceMiddlewareInterceptor[];
31
- /**
32
- * Gets the current lock status of the MiddlewareManager
33
- */
34
- get isLocked(): boolean;
35
- /**
36
- * Locks the MiddlewareManager, preventing any further modifications to interceptors
37
- */
38
- lock(): void;
39
- /**
40
- * Adds an interceptor for task or resource middleware execution
41
- * Interceptors are executed in the order they are added, with the ability to
42
- * modify, log, or prevent middleware execution
43
- *
44
- * @param kind - The type of middleware to intercept ("task" or "resource")
45
- * @param interceptor - The interceptor function to add
46
- */
47
- intercept(kind: "task" | "resource", interceptor: TaskMiddlewareInterceptor | ResourceMiddlewareInterceptor): void;
48
- /**
49
- * Adds an interceptor for a specific middleware instance with better type safety
50
- * This method automatically determines the type and provides type-safe access
51
- *
52
- * @param middleware - The middleware instance to intercept
53
- * @param interceptor - The interceptor function with proper typing
54
- */
55
- interceptMiddleware(middleware: ITaskMiddleware<any, any, any, any> | IResourceMiddleware<any, any, any, any>, interceptor: TaskMiddlewareInterceptor | ResourceMiddlewareInterceptor): void;
56
- /**
57
- * Compose a runner for a task with its local interceptors and applicable middlewares.
58
- * Returns a function that accepts the task input and resolves to the task output.
59
- */
60
- composeTaskRunner<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>): (input: TInput) => Promise<Awaited<TOutput>>;
61
- /**
62
- * Run a resource init wrapped with its applicable middlewares.
63
- */
64
- runResourceInit<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: any, context: TContext): Promise<V | undefined>;
65
- /**
66
- * Gets all "everywhere" middlewares that apply to the given task
67
- * @deprecated Internal method exposed for testing - may be removed in future versions
68
- */
69
- getEverywhereMiddlewareForTasks(task: ITask<any, any, any>): ITaskMiddleware[];
70
- /**
71
- * Gets all "everywhere" middlewares that apply to the given resource
72
- * @deprecated Internal method exposed for testing - may be removed in future versions
73
- */
74
- getEverywhereMiddlewareForResources(resource: IResource<any, any, any, any>): IResourceMiddleware[];
75
- }
@@ -1,13 +0,0 @@
1
- import { IResource, ITaskMiddleware, IResourceMiddleware, ITask, IResourceWithConfig, RegisterableItems, IHook } from "../defs";
2
- import { StoreRegistry } from "./StoreRegistry";
3
- export declare class OverrideManager {
4
- private readonly registry;
5
- overrides: Map<string, IResource | ITaskMiddleware | IResourceMiddleware | ITask | IResourceWithConfig | IHook>;
6
- overrideRequests: Set<{
7
- source: string;
8
- override: RegisterableItems;
9
- }>;
10
- constructor(registry: StoreRegistry);
11
- storeOverridesDeeply<C>(element: IResource<C, any, any>): void;
12
- processOverrides(): void;
13
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Cooperative task queue.
3
- * • Tasks run one‑after‑another (FIFO ordering).
4
- * • Dead‑lock detection prevents nesting.
5
- * • dispose() drains or cancels outstanding tasks, then rejects new ones.
6
- */
7
- export declare class Queue {
8
- private tail;
9
- private disposed;
10
- private abortController;
11
- private readonly executionContext;
12
- private readonly hasAsyncLocalStorage;
13
- /**
14
- * Schedule an asynchronous task.
15
- * @param task – receives an AbortSignal so it can cancel early if desired.
16
- */
17
- run<T>(task: (signal: AbortSignal) => Promise<T>): Promise<T>;
18
- /**
19
- * Disposes the queue.
20
- * @param options.cancel – if true, broadcasts AbortSignal to running task.
21
- * default: false (waits for tasks to finish).
22
- */
23
- dispose(options?: {
24
- cancel?: boolean;
25
- }): Promise<void>;
26
- }
@@ -1,20 +0,0 @@
1
- import { DependencyMapType, IResource, ResourceDependencyValuesType } from "../defs";
2
- import { EventManager } from "./EventManager";
3
- import { Store } from "./Store";
4
- import { Logger } from "./Logger";
5
- export declare class ResourceInitializer {
6
- protected readonly store: Store;
7
- protected readonly eventManager: EventManager;
8
- protected readonly logger: Logger;
9
- constructor(store: Store, eventManager: EventManager, logger: Logger);
10
- private readonly middlewareManager;
11
- /**
12
- * Begins the execution of an task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
13
- * This function can throw only if any of the event listeners or run function throws
14
- */
15
- initializeResource<TConfig = null, TValue extends Promise<any> = Promise<any>, TDeps extends DependencyMapType = {}, TContext = any>(resource: IResource<TConfig, TValue, TDeps>, config: TConfig, dependencies: ResourceDependencyValuesType<TDeps>): Promise<{
16
- value: TValue;
17
- context: TContext;
18
- }>;
19
- initWithMiddleware<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: ResourceDependencyValuesType<D>, context: TContext): Promise<V | undefined>;
20
- }
@@ -1,35 +0,0 @@
1
- import { DependencyMapType, IEvent, ITask } from "../defs";
2
- import { IResource } from "../defs";
3
- import { EventManager } from "./EventManager";
4
- import { Logger } from "./Logger";
5
- import { Store } from "./Store";
6
- import { TaskRunner } from "./TaskRunner";
7
- export declare class RunResult<V> {
8
- readonly value: V;
9
- readonly logger: Logger;
10
- readonly store: Store;
11
- private readonly eventManager;
12
- private readonly taskRunner;
13
- private readonly disposeFn;
14
- constructor(value: V, logger: Logger, store: Store, eventManager: EventManager, taskRunner: TaskRunner, disposeFn: () => Promise<void>);
15
- /**
16
- * Run a task within the context of the run result.
17
- * @param task - The task to run.
18
- * @param args - The arguments to pass to the task.
19
- * @returns The result of the task.
20
- */
21
- runTask: <I = undefined, O extends Promise<any> = any, D extends DependencyMapType = any>(task: ITask<I, O, D> | string, ...args: I extends undefined | void ? [] : [I]) => Promise<O | undefined>;
22
- /**
23
- * Emit an event within the context of the run result.
24
- * @param event - The event to emit.
25
- * @param payload - The payload to emit.
26
- */
27
- emitEvent: <P>(event: IEvent<P> | string, payload?: P extends undefined | void ? undefined : P) => Promise<void>;
28
- /**
29
- * Get the value of a resource from the run result.
30
- * @param resource - The resource to get the value of.
31
- * @returns The value of the resource.
32
- */
33
- getResourceValue: <Output extends Promise<any>>(resource: string | IResource<any, Output, any, any, any>) => Output extends Promise<infer U> ? U : Output;
34
- dispose: () => Promise<void>;
35
- }
@@ -1,61 +0,0 @@
1
- /**
2
- * A semaphore that limits the number of concurrent operations.
3
- * Used to prevent connection pool exhaustion by limiting concurrent
4
- * database operations to the pool size.
5
- */
6
- export declare class Semaphore {
7
- private permits;
8
- private readonly waitingQueue;
9
- private disposed;
10
- private readonly maxPermits;
11
- constructor(maxPermits: number);
12
- /**
13
- * Acquire a permit. If no permits are available, waits until one becomes available.
14
- */
15
- acquire(options?: {
16
- timeout?: number;
17
- signal?: AbortSignal;
18
- }): Promise<void>;
19
- /**
20
- * Release a permit, allowing waiting operations to proceed.
21
- */
22
- release(): void;
23
- private removeFromQueue;
24
- /**
25
- * Execute a function with a permit, automatically releasing it afterwards.
26
- */
27
- withPermit<T>(fn: () => Promise<T>, options?: {
28
- timeout?: number;
29
- signal?: AbortSignal;
30
- }): Promise<T>;
31
- /**
32
- * Dispose the semaphore, rejecting all waiting operations and preventing new ones.
33
- */
34
- dispose(): void;
35
- /**
36
- * Get current number of available permits (for debugging)
37
- */
38
- getAvailablePermits(): number;
39
- /**
40
- * Get current number of waiting operations (for debugging)
41
- */
42
- getWaitingCount(): number;
43
- /**
44
- * Get maximum number of permits
45
- */
46
- getMaxPermits(): number;
47
- /**
48
- * Check if the semaphore has been disposed
49
- */
50
- isDisposed(): boolean;
51
- /**
52
- * Get metrics about the current state of the semaphore
53
- */
54
- getMetrics(): {
55
- availablePermits: number;
56
- waitingCount: number;
57
- maxPermits: number;
58
- utilization: number;
59
- disposed: boolean;
60
- };
61
- }
@@ -1,73 +0,0 @@
1
- import { IResource, ITask, RegisterableItems, ITaskMiddleware, IResourceMiddleware, ITag } from "../defs";
2
- import { EventManager } from "./EventManager";
3
- import { Logger } from "./Logger";
4
- import { ResourceStoreElementType, TaskStoreElementType, TaskMiddlewareStoreElementType, ResourceMiddlewareStoreElementType, EventStoreElementType } from "../types/storeTypes";
5
- import { TaskRunner } from "./TaskRunner";
6
- import { OnUnhandledError } from "./UnhandledError";
7
- import { MiddlewareManager } from "./MiddlewareManager";
8
- import { RunnerMode } from "../types/runner";
9
- export { ResourceStoreElementType, TaskStoreElementType, EventStoreElementType, };
10
- /**
11
- * Store class which is used to store all the resources, tasks, middleware and events.
12
- */
13
- export declare class Store {
14
- #private;
15
- protected readonly eventManager: EventManager;
16
- protected readonly logger: Logger;
17
- readonly onUnhandledError: OnUnhandledError;
18
- root: ResourceStoreElementType;
19
- private registry;
20
- private overrideManager;
21
- private validator;
22
- private taskRunner?;
23
- private middlewareManager;
24
- mode: RunnerMode;
25
- constructor(eventManager: EventManager, logger: Logger, onUnhandledError: OnUnhandledError, mode?: RunnerMode);
26
- get tasks(): Map<string, TaskStoreElementType>;
27
- get hooks(): Map<string, import("..").HookStoreElementType>;
28
- get resources(): Map<string, ResourceStoreElementType>;
29
- get events(): Map<string, EventStoreElementType>;
30
- get errors(): Map<string, import("..").IErrorHelper<any>>;
31
- get asyncContexts(): Map<string, import("..").IAsyncContext<any>>;
32
- get taskMiddlewares(): Map<string, TaskMiddlewareStoreElementType>;
33
- get resourceMiddlewares(): Map<string, ResourceMiddlewareStoreElementType>;
34
- get tags(): Map<string, ITag<void, void, void>>;
35
- get overrides(): Map<string, IResourceMiddleware<any, void, void, any> | ITaskMiddleware<any, void, void, any> | ITask<any, any, {}, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]> | IResource<void, Promise<any>, any, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]> | import("..").IResourceWithConfig<any, Promise<any>, any, any, any, import("..").TagType[], IResourceMiddleware<any, void, void, any>[]> | import("..").IHook<{}, any, any>>;
36
- get overrideRequests(): Set<{
37
- source: string;
38
- override: RegisterableItems;
39
- }>;
40
- getMiddlewareManager(): MiddlewareManager;
41
- get isLocked(): boolean;
42
- lock(): void;
43
- checkLock(): void;
44
- private registerGlobalComponents;
45
- setTaskRunner(taskRunner: TaskRunner): void;
46
- private setupRootResource;
47
- validateDependencyGraph(): void;
48
- validateEventEmissionGraph(): void;
49
- initializeStore(root: IResource<any, any, any, any, any>, config: any): void;
50
- dispose(): Promise<void>;
51
- /**
52
- * Internal, avoid using this method directly.
53
- */
54
- processOverrides(): void;
55
- /**
56
- * Internal, avoid using this method directly.
57
- * @param item
58
- * @returns
59
- */
60
- storeGenericItem<C>(item: RegisterableItems): void;
61
- /**
62
- * Returns all tasks with the given tag.
63
- * @param tag - The tag to filter by.
64
- * @returns The tasks with the given tag.
65
- */
66
- getTasksWithTag(tag: string | ITag<any, any, any>): ITask<any, any, any, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]>[];
67
- /**
68
- * Returns all resources with the given tag.
69
- * @param tag - The tag to filter by.
70
- * @returns The resources with the given tag.
71
- */
72
- getResourcesWithTag(tag: string | ITag<any, any, any>): IResource<any, any, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>[];
73
- }
@@ -1,49 +0,0 @@
1
- import { IResource, ITask, IResourceWithConfig, RegisterableItems, ITaskMiddleware, IResourceMiddleware, IEvent, ITag, IHook } from "../defs";
2
- import { TaskStoreElementType, TaskMiddlewareStoreElementType, ResourceMiddlewareStoreElementType, ResourceStoreElementType, EventStoreElementType, HookStoreElementType } from "../defs";
3
- import { StoreValidator } from "./StoreValidator";
4
- import { Store } from "./Store";
5
- import { IDependentNode } from "./utils/findCircularDependencies";
6
- import { IErrorHelper } from "../types/error";
7
- import type { IAsyncContext } from "../types/asyncContext";
8
- type StoringMode = "normal" | "override";
9
- export declare class StoreRegistry {
10
- protected readonly store: Store;
11
- tasks: Map<string, TaskStoreElementType>;
12
- resources: Map<string, ResourceStoreElementType>;
13
- events: Map<string, EventStoreElementType>;
14
- taskMiddlewares: Map<string, TaskMiddlewareStoreElementType>;
15
- resourceMiddlewares: Map<string, ResourceMiddlewareStoreElementType>;
16
- hooks: Map<string, HookStoreElementType>;
17
- tags: Map<string, ITag>;
18
- asyncContexts: Map<string, IAsyncContext<any>>;
19
- errors: Map<string, IErrorHelper<any>>;
20
- private validator;
21
- constructor(store: Store);
22
- getValidator(): StoreValidator;
23
- storeGenericItem<C>(item: RegisterableItems): void;
24
- storeError<C>(item: IErrorHelper<any>): void;
25
- storeAsyncContext<C>(item: IAsyncContext<any>): void;
26
- storeTag(item: ITag<any, any, any>): void;
27
- storeHook<C>(item: IHook<any, any>, overrideMode?: StoringMode): void;
28
- storeTaskMiddleware<C>(item: ITaskMiddleware<any>, storingMode?: StoringMode): void;
29
- storeResourceMiddleware<C>(item: IResourceMiddleware<any>, overrideMode?: StoringMode): void;
30
- storeEvent<C>(item: IEvent<void>): void;
31
- storeResourceWithConfig<C>(item: IResourceWithConfig<any, any, any>, storingMode?: StoringMode): IResource<any, any, any, any, any, import("..").TagType[], IResourceMiddleware<any, void, void, any>[]>;
32
- computeRegistrationDeeply<C>(element: IResource<C>, config?: C): void;
33
- storeResource<C>(item: IResource<any, any, any>, overrideMode?: StoringMode): IResource<any, any, any, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
34
- storeTask<C>(item: ITask<any, any, {}>, storingMode?: StoringMode): void;
35
- getDependentNodes(): IDependentNode[];
36
- /**
37
- * Builds a directed graph of event emissions based on hooks listening to events
38
- * and their dependencies on events (emission capability). Ignores wildcard hooks by default.
39
- */
40
- buildEventEmissionGraph(): IDependentNode[];
41
- private setupBlankNodes;
42
- getTasksWithTag(tag: string | ITag): ITask<any, any, any, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]>[];
43
- getResourcesWithTag(tag: string | ITag): IResource<any, any, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>[];
44
- /**
45
- * Used to fetch the value cloned, and if we're dealing with an override, we need to extend the previous value.
46
- */
47
- private getFreshValue;
48
- }
49
- export {};
@@ -1,8 +0,0 @@
1
- import { StoreRegistry } from "./StoreRegistry";
2
- export declare class StoreValidator {
3
- private registry;
4
- constructor(registry: StoreRegistry);
5
- checkIfIDExists(id: string): void | never;
6
- runSanityChecks(): void;
7
- ensureAllTagsUsedAreRegistered(): void;
8
- }