@classytic/streamline 1.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.
@@ -0,0 +1,129 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (!no_symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ //#region src/utils/errors.ts
19
+ var errors_exports = /* @__PURE__ */ __exportAll({
20
+ DataCorruptionError: () => DataCorruptionError,
21
+ ErrorCode: () => ErrorCode,
22
+ InvalidStateError: () => InvalidStateError,
23
+ MaxRetriesExceededError: () => MaxRetriesExceededError,
24
+ StepNotFoundError: () => StepNotFoundError,
25
+ StepTimeoutError: () => StepTimeoutError,
26
+ WorkflowError: () => WorkflowError,
27
+ WorkflowNotFoundError: () => WorkflowNotFoundError
28
+ });
29
+ /**
30
+ * Custom error classes with rich context for better debugging
31
+ */
32
+ /**
33
+ * Standardized error codes for programmatic error handling.
34
+ * Use these codes to handle specific error conditions in your application.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * try {
39
+ * await workflow.resume(runId);
40
+ * } catch (err) {
41
+ * if (err.code === ErrorCode.WORKFLOW_NOT_FOUND) {
42
+ * // Handle missing workflow
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ const ErrorCode = {
48
+ WORKFLOW_NOT_FOUND: "WORKFLOW_NOT_FOUND",
49
+ WORKFLOW_ALREADY_COMPLETED: "WORKFLOW_ALREADY_COMPLETED",
50
+ WORKFLOW_CANCELLED: "WORKFLOW_CANCELLED",
51
+ STEP_NOT_FOUND: "STEP_NOT_FOUND",
52
+ STEP_TIMEOUT: "STEP_TIMEOUT",
53
+ STEP_FAILED: "STEP_FAILED",
54
+ INVALID_STATE: "INVALID_STATE",
55
+ INVALID_TRANSITION: "INVALID_TRANSITION",
56
+ DATA_CORRUPTION: "DATA_CORRUPTION",
57
+ VALIDATION_ERROR: "VALIDATION_ERROR",
58
+ MAX_RETRIES_EXCEEDED: "MAX_RETRIES_EXCEEDED",
59
+ EXECUTION_ABORTED: "EXECUTION_ABORTED"
60
+ };
61
+ var WorkflowError = class extends Error {
62
+ code;
63
+ constructor(message, code, context) {
64
+ super(message);
65
+ this.context = context;
66
+ this.name = "WorkflowError";
67
+ this.code = code;
68
+ }
69
+ toString() {
70
+ const contextStr = Object.entries(this.context).map(([key, value]) => `${key}=${value}`).join(", ");
71
+ return `${this.name} [${this.code}]: ${this.message} (${contextStr})`;
72
+ }
73
+ };
74
+ var StepNotFoundError = class extends WorkflowError {
75
+ constructor(stepId, workflowId, availableSteps) {
76
+ super(`Step "${stepId}" not found in workflow "${workflowId}". Available steps: ${availableSteps.join(", ")}`, ErrorCode.STEP_NOT_FOUND, {
77
+ stepId,
78
+ workflowId,
79
+ availableSteps
80
+ });
81
+ this.name = "StepNotFoundError";
82
+ }
83
+ };
84
+ var WorkflowNotFoundError = class extends WorkflowError {
85
+ constructor(runId) {
86
+ super(`Workflow run "${runId}" not found in database`, ErrorCode.WORKFLOW_NOT_FOUND, { runId });
87
+ this.name = "WorkflowNotFoundError";
88
+ }
89
+ };
90
+ var InvalidStateError = class extends WorkflowError {
91
+ constructor(action, currentState, expectedStates, context) {
92
+ super(`Cannot ${action} - workflow is in state "${currentState}". Expected one of: ${expectedStates.join(", ")}`, ErrorCode.INVALID_STATE, {
93
+ action,
94
+ currentState,
95
+ expectedStates,
96
+ ...context
97
+ });
98
+ this.name = "InvalidStateError";
99
+ }
100
+ };
101
+ var StepTimeoutError = class extends WorkflowError {
102
+ constructor(stepId, timeoutMs, runId) {
103
+ super(`Step "${stepId}" exceeded timeout of ${timeoutMs}ms`, ErrorCode.STEP_TIMEOUT, {
104
+ stepId,
105
+ timeoutMs,
106
+ runId
107
+ });
108
+ this.name = "StepTimeoutError";
109
+ }
110
+ };
111
+ var DataCorruptionError = class extends WorkflowError {
112
+ constructor(reason, context) {
113
+ super(`Data corruption detected: ${reason}`, ErrorCode.DATA_CORRUPTION, context);
114
+ this.name = "DataCorruptionError";
115
+ }
116
+ };
117
+ var MaxRetriesExceededError = class extends WorkflowError {
118
+ constructor(stepId, attempts, runId) {
119
+ super(`Step "${stepId}" failed after ${attempts} attempts`, ErrorCode.MAX_RETRIES_EXCEEDED, {
120
+ stepId,
121
+ attempts,
122
+ runId
123
+ });
124
+ this.name = "MaxRetriesExceededError";
125
+ }
126
+ };
127
+
128
+ //#endregion
129
+ export { StepNotFoundError as a, WorkflowNotFoundError as c, MaxRetriesExceededError as i, errors_exports as l, ErrorCode as n, StepTimeoutError as o, InvalidStateError as r, WorkflowError as s, DataCorruptionError as t };
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from "events";
2
+
3
+ //#region src/core/events.ts
4
+ /**
5
+ * Type-safe event bus with explicit payload types
6
+ */
7
+ var WorkflowEventBus = class extends EventEmitter {
8
+ emit(event, payload) {
9
+ return super.emit(event, payload);
10
+ }
11
+ on(event, listener) {
12
+ return super.on(event, listener);
13
+ }
14
+ once(event, listener) {
15
+ return super.once(event, listener);
16
+ }
17
+ off(event, listener) {
18
+ return super.off(event, listener);
19
+ }
20
+ };
21
+ /**
22
+ * Global event bus for cross-container event aggregation.
23
+ * Use with createContainer({ eventBus: 'global' }) for telemetry integration.
24
+ */
25
+ const globalEventBus = new WorkflowEventBus();
26
+
27
+ //#endregion
28
+ export { globalEventBus as n, WorkflowEventBus as t };
@@ -0,0 +1,92 @@
1
+ import { EventEmitter } from "events";
2
+
3
+ //#region src/core/events.d.ts
4
+ /**
5
+ * Typed event payloads for type-safe event handling
6
+ */
7
+ interface BaseEventPayload {
8
+ runId: string;
9
+ timestamp?: Date;
10
+ }
11
+ interface StepEventPayload extends BaseEventPayload {
12
+ stepId: string;
13
+ attempt?: number;
14
+ }
15
+ interface StepCompletedPayload extends StepEventPayload {
16
+ data?: unknown;
17
+ }
18
+ interface StepFailedPayload extends StepEventPayload {
19
+ error: Error;
20
+ }
21
+ interface StepRetryPayload extends StepEventPayload {
22
+ maxRetries: number;
23
+ retryAfter: Date;
24
+ }
25
+ interface WorkflowCompletedPayload extends BaseEventPayload {
26
+ data?: unknown;
27
+ }
28
+ interface WorkflowFailedPayload extends BaseEventPayload {
29
+ error: Error | {
30
+ message: string;
31
+ code?: string;
32
+ };
33
+ }
34
+ interface WorkflowResumedPayload extends BaseEventPayload {
35
+ stepId?: string;
36
+ data?: unknown;
37
+ }
38
+ interface EngineErrorPayload {
39
+ runId?: string;
40
+ error: Error;
41
+ context: string;
42
+ }
43
+ /**
44
+ * Event name to payload type mapping
45
+ */
46
+ interface EventPayloadMap {
47
+ 'step:started': StepEventPayload;
48
+ 'step:completed': StepCompletedPayload;
49
+ 'step:failed': StepFailedPayload;
50
+ 'step:waiting': StepEventPayload & {
51
+ data?: unknown;
52
+ };
53
+ 'step:skipped': StepEventPayload;
54
+ 'step:retry-scheduled': StepRetryPayload;
55
+ 'workflow:started': BaseEventPayload;
56
+ 'workflow:completed': WorkflowCompletedPayload;
57
+ 'workflow:failed': WorkflowFailedPayload;
58
+ 'workflow:waiting': BaseEventPayload & {
59
+ data?: unknown;
60
+ };
61
+ 'workflow:resumed': WorkflowResumedPayload;
62
+ 'workflow:cancelled': BaseEventPayload;
63
+ 'workflow:recovered': BaseEventPayload;
64
+ 'workflow:retry': BaseEventPayload;
65
+ 'engine:error': EngineErrorPayload;
66
+ 'scheduler:error': EngineErrorPayload;
67
+ 'scheduler:circuit-open': {
68
+ error: Error;
69
+ context: string;
70
+ };
71
+ }
72
+ type WorkflowEventName = keyof EventPayloadMap;
73
+ /**
74
+ * Type-safe event bus with explicit payload types
75
+ */
76
+ declare class WorkflowEventBus extends EventEmitter {
77
+ emit<K extends WorkflowEventName>(event: K, payload: EventPayloadMap[K]): boolean;
78
+ emit(event: string, payload: unknown): boolean;
79
+ on<K extends WorkflowEventName>(event: K, listener: (payload: EventPayloadMap[K]) => void): this;
80
+ on(event: string, listener: (payload: unknown) => void): this;
81
+ once<K extends WorkflowEventName>(event: K, listener: (payload: EventPayloadMap[K]) => void): this;
82
+ once(event: string, listener: (payload: unknown) => void): this;
83
+ off<K extends WorkflowEventName>(event: K, listener: (payload: EventPayloadMap[K]) => void): this;
84
+ off(event: string, listener: (payload: unknown) => void): this;
85
+ }
86
+ /**
87
+ * Global event bus for cross-container event aggregation.
88
+ * Use with createContainer({ eventBus: 'global' }) for telemetry integration.
89
+ */
90
+ declare const globalEventBus: WorkflowEventBus;
91
+ //#endregion
92
+ export { WorkflowEventName as n, globalEventBus as r, WorkflowEventBus as t };