@hazeljs/flow 0.2.0-beta.75

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 (117) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +111 -0
  3. package/dist/decorators/flow.decorators.d.ts +32 -0
  4. package/dist/decorators/flow.decorators.d.ts.map +1 -0
  5. package/dist/decorators/flow.decorators.js +100 -0
  6. package/dist/dsl/flow.d.ts +19 -0
  7. package/dist/dsl/flow.d.ts.map +1 -0
  8. package/dist/dsl/flow.js +46 -0
  9. package/dist/dsl/types.d.ts +5 -0
  10. package/dist/dsl/types.d.ts.map +1 -0
  11. package/dist/dsl/types.js +2 -0
  12. package/dist/engine/Executor.d.ts +11 -0
  13. package/dist/engine/Executor.d.ts.map +1 -0
  14. package/dist/engine/Executor.js +113 -0
  15. package/dist/engine/FlowEngine.d.ts +46 -0
  16. package/dist/engine/FlowEngine.d.ts.map +1 -0
  17. package/dist/engine/FlowEngine.js +237 -0
  18. package/dist/engine/Idempotency.d.ts +10 -0
  19. package/dist/engine/Idempotency.d.ts.map +1 -0
  20. package/dist/engine/Idempotency.js +16 -0
  21. package/dist/engine/Locks.d.ts +11 -0
  22. package/dist/engine/Locks.d.ts.map +1 -0
  23. package/dist/engine/Locks.js +68 -0
  24. package/dist/engine/Retry.d.ts +7 -0
  25. package/dist/engine/Retry.d.ts.map +1 -0
  26. package/dist/engine/Retry.js +22 -0
  27. package/dist/engine/Timeout.d.ts +10 -0
  28. package/dist/engine/Timeout.d.ts.map +1 -0
  29. package/dist/engine/Timeout.js +25 -0
  30. package/dist/engine/Transition.d.ts +6 -0
  31. package/dist/engine/Transition.d.ts.map +1 -0
  32. package/dist/engine/Transition.js +19 -0
  33. package/dist/engine/utils.d.ts +5 -0
  34. package/dist/engine/utils.d.ts.map +1 -0
  35. package/dist/engine/utils.js +25 -0
  36. package/dist/examples/branching.d.ts +2 -0
  37. package/dist/examples/branching.d.ts.map +1 -0
  38. package/dist/examples/branching.js +72 -0
  39. package/dist/examples/simple.d.ts +2 -0
  40. package/dist/examples/simple.d.ts.map +1 -0
  41. package/dist/examples/simple.js +65 -0
  42. package/dist/examples/wait_resume.d.ts +2 -0
  43. package/dist/examples/wait_resume.d.ts.map +1 -0
  44. package/dist/examples/wait_resume.js +75 -0
  45. package/dist/generated/prisma/client.d.ts +1 -0
  46. package/dist/generated/prisma/client.js +5 -0
  47. package/dist/generated/prisma/default.d.ts +1 -0
  48. package/dist/generated/prisma/default.js +5 -0
  49. package/dist/generated/prisma/edge.d.ts +1 -0
  50. package/dist/generated/prisma/edge.js +250 -0
  51. package/dist/generated/prisma/index-browser.js +236 -0
  52. package/dist/generated/prisma/index.d.ts +6577 -0
  53. package/dist/generated/prisma/index.js +271 -0
  54. package/dist/generated/prisma/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
  55. package/dist/generated/prisma/package.json +183 -0
  56. package/dist/generated/prisma/query_engine_bg.js +2 -0
  57. package/dist/generated/prisma/query_engine_bg.wasm +0 -0
  58. package/dist/generated/prisma/runtime/edge-esm.js +35 -0
  59. package/dist/generated/prisma/runtime/edge.js +35 -0
  60. package/dist/generated/prisma/runtime/index-browser.d.ts +370 -0
  61. package/dist/generated/prisma/runtime/index-browser.js +17 -0
  62. package/dist/generated/prisma/runtime/library.d.ts +3982 -0
  63. package/dist/generated/prisma/runtime/library.js +147 -0
  64. package/dist/generated/prisma/runtime/react-native.js +84 -0
  65. package/dist/generated/prisma/runtime/wasm-compiler-edge.js +85 -0
  66. package/dist/generated/prisma/runtime/wasm-engine-edge.js +38 -0
  67. package/dist/generated/prisma/schema.prisma +70 -0
  68. package/dist/generated/prisma/wasm-edge-light-loader.mjs +5 -0
  69. package/dist/generated/prisma/wasm-worker-loader.mjs +5 -0
  70. package/dist/generated/prisma/wasm.d.ts +1 -0
  71. package/dist/generated/prisma/wasm.js +257 -0
  72. package/dist/index.d.ts +14 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +25 -0
  75. package/dist/persistence/FlowDefinitionRepo.d.ts +14 -0
  76. package/dist/persistence/FlowDefinitionRepo.d.ts.map +1 -0
  77. package/dist/persistence/FlowDefinitionRepo.js +44 -0
  78. package/dist/persistence/FlowEventRepo.d.ts +15 -0
  79. package/dist/persistence/FlowEventRepo.d.ts.map +1 -0
  80. package/dist/persistence/FlowEventRepo.js +33 -0
  81. package/dist/persistence/FlowRunRepo.d.ts +12 -0
  82. package/dist/persistence/FlowRunRepo.d.ts.map +1 -0
  83. package/dist/persistence/FlowRunRepo.js +50 -0
  84. package/dist/persistence/IdempotencyRepo.d.ts +15 -0
  85. package/dist/persistence/IdempotencyRepo.d.ts.map +1 -0
  86. package/dist/persistence/IdempotencyRepo.js +39 -0
  87. package/dist/persistence/memory.d.ts +9 -0
  88. package/dist/persistence/memory.d.ts.map +1 -0
  89. package/dist/persistence/memory.js +154 -0
  90. package/dist/persistence/prisma.d.ts +5 -0
  91. package/dist/persistence/prisma.d.ts.map +1 -0
  92. package/dist/persistence/prisma.js +9 -0
  93. package/dist/persistence/prismaClient.d.ts +21 -0
  94. package/dist/persistence/prismaClient.d.ts.map +1 -0
  95. package/dist/persistence/prismaClient.js +47 -0
  96. package/dist/persistence/prismaStorage.d.ts +11 -0
  97. package/dist/persistence/prismaStorage.d.ts.map +1 -0
  98. package/dist/persistence/prismaStorage.js +24 -0
  99. package/dist/persistence/serialize.d.ts +6 -0
  100. package/dist/persistence/serialize.d.ts.map +1 -0
  101. package/dist/persistence/serialize.js +28 -0
  102. package/dist/persistence/storage.d.ts +75 -0
  103. package/dist/persistence/storage.d.ts.map +1 -0
  104. package/dist/persistence/storage.js +6 -0
  105. package/dist/prisma.d.ts +14 -0
  106. package/dist/prisma.d.ts.map +1 -0
  107. package/dist/prisma.js +25 -0
  108. package/dist/types/Errors.d.ts +21 -0
  109. package/dist/types/Errors.d.ts.map +1 -0
  110. package/dist/types/Errors.js +44 -0
  111. package/dist/types/Events.d.ts +17 -0
  112. package/dist/types/Events.d.ts.map +1 -0
  113. package/dist/types/Events.js +5 -0
  114. package/dist/types/FlowTypes.d.ts +66 -0
  115. package/dist/types/FlowTypes.d.ts.map +1 -0
  116. package/dist/types/FlowTypes.js +5 -0
  117. package/package.json +72 -0
@@ -0,0 +1,257 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
+ /* eslint-disable */
4
+ // biome-ignore-all lint: generated file
5
+
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+
8
+ const {
9
+ PrismaClientKnownRequestError,
10
+ PrismaClientUnknownRequestError,
11
+ PrismaClientRustPanicError,
12
+ PrismaClientInitializationError,
13
+ PrismaClientValidationError,
14
+ getPrismaClient,
15
+ sqltag,
16
+ empty,
17
+ join,
18
+ raw,
19
+ skip,
20
+ Decimal,
21
+ Debug,
22
+ objectEnumValues,
23
+ makeStrictEnum,
24
+ Extensions,
25
+ warnOnce,
26
+ defineDmmfProperty,
27
+ Public,
28
+ getRuntime,
29
+ createParam,
30
+ } = require('./runtime/wasm-engine-edge.js')
31
+
32
+
33
+ const Prisma = {}
34
+
35
+ exports.Prisma = Prisma
36
+ exports.$Enums = {}
37
+
38
+ /**
39
+ * Prisma Client JS version: 6.19.2
40
+ * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
41
+ */
42
+ Prisma.prismaVersion = {
43
+ client: "6.19.2",
44
+ engine: "c2990dca591cba766e3b7ef5d9e8a84796e47ab7"
45
+ }
46
+
47
+ Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError;
48
+ Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError
49
+ Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError
50
+ Prisma.PrismaClientInitializationError = PrismaClientInitializationError
51
+ Prisma.PrismaClientValidationError = PrismaClientValidationError
52
+ Prisma.Decimal = Decimal
53
+
54
+ /**
55
+ * Re-export of sql-template-tag
56
+ */
57
+ Prisma.sql = sqltag
58
+ Prisma.empty = empty
59
+ Prisma.join = join
60
+ Prisma.raw = raw
61
+ Prisma.validator = Public.validator
62
+
63
+ /**
64
+ * Extensions
65
+ */
66
+ Prisma.getExtensionContext = Extensions.getExtensionContext
67
+ Prisma.defineExtension = Extensions.defineExtension
68
+
69
+ /**
70
+ * Shorthand utilities for JSON filtering
71
+ */
72
+ Prisma.DbNull = objectEnumValues.instances.DbNull
73
+ Prisma.JsonNull = objectEnumValues.instances.JsonNull
74
+ Prisma.AnyNull = objectEnumValues.instances.AnyNull
75
+
76
+ Prisma.NullTypes = {
77
+ DbNull: objectEnumValues.classes.DbNull,
78
+ JsonNull: objectEnumValues.classes.JsonNull,
79
+ AnyNull: objectEnumValues.classes.AnyNull
80
+ }
81
+
82
+
83
+
84
+
85
+
86
+ /**
87
+ * Enums
88
+ */
89
+ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
90
+ ReadUncommitted: 'ReadUncommitted',
91
+ ReadCommitted: 'ReadCommitted',
92
+ RepeatableRead: 'RepeatableRead',
93
+ Serializable: 'Serializable'
94
+ });
95
+
96
+ exports.Prisma.FlowDefinitionScalarFieldEnum = {
97
+ flowId: 'flowId',
98
+ version: 'version',
99
+ definitionJson: 'definitionJson',
100
+ createdAt: 'createdAt'
101
+ };
102
+
103
+ exports.Prisma.FlowRunScalarFieldEnum = {
104
+ runId: 'runId',
105
+ flowId: 'flowId',
106
+ flowVersion: 'flowVersion',
107
+ tenantId: 'tenantId',
108
+ status: 'status',
109
+ currentNodeId: 'currentNodeId',
110
+ inputJson: 'inputJson',
111
+ stateJson: 'stateJson',
112
+ outputsJson: 'outputsJson',
113
+ createdAt: 'createdAt',
114
+ updatedAt: 'updatedAt'
115
+ };
116
+
117
+ exports.Prisma.FlowRunEventScalarFieldEnum = {
118
+ id: 'id',
119
+ runId: 'runId',
120
+ at: 'at',
121
+ type: 'type',
122
+ nodeId: 'nodeId',
123
+ attempt: 'attempt',
124
+ payloadJson: 'payloadJson'
125
+ };
126
+
127
+ exports.Prisma.FlowIdempotencyScalarFieldEnum = {
128
+ key: 'key',
129
+ runId: 'runId',
130
+ nodeId: 'nodeId',
131
+ outputJson: 'outputJson',
132
+ patchJson: 'patchJson',
133
+ createdAt: 'createdAt'
134
+ };
135
+
136
+ exports.Prisma.SortOrder = {
137
+ asc: 'asc',
138
+ desc: 'desc'
139
+ };
140
+
141
+ exports.Prisma.JsonNullValueInput = {
142
+ JsonNull: Prisma.JsonNull
143
+ };
144
+
145
+ exports.Prisma.NullableJsonNullValueInput = {
146
+ DbNull: Prisma.DbNull,
147
+ JsonNull: Prisma.JsonNull
148
+ };
149
+
150
+ exports.Prisma.QueryMode = {
151
+ default: 'default',
152
+ insensitive: 'insensitive'
153
+ };
154
+
155
+ exports.Prisma.JsonNullValueFilter = {
156
+ DbNull: Prisma.DbNull,
157
+ JsonNull: Prisma.JsonNull,
158
+ AnyNull: Prisma.AnyNull
159
+ };
160
+
161
+ exports.Prisma.NullsOrder = {
162
+ first: 'first',
163
+ last: 'last'
164
+ };
165
+ exports.FlowRunStatus = exports.$Enums.FlowRunStatus = {
166
+ RUNNING: 'RUNNING',
167
+ WAITING: 'WAITING',
168
+ COMPLETED: 'COMPLETED',
169
+ FAILED: 'FAILED'
170
+ };
171
+
172
+ exports.Prisma.ModelName = {
173
+ FlowDefinition: 'FlowDefinition',
174
+ FlowRun: 'FlowRun',
175
+ FlowRunEvent: 'FlowRunEvent',
176
+ FlowIdempotency: 'FlowIdempotency'
177
+ };
178
+ /**
179
+ * Create the Client
180
+ */
181
+ const config = {
182
+ "generator": {
183
+ "name": "client",
184
+ "provider": {
185
+ "fromEnvVar": null,
186
+ "value": "prisma-client-js"
187
+ },
188
+ "output": {
189
+ "value": "/home/runner/work/hazeljs/hazeljs/packages/flow/src/generated/prisma",
190
+ "fromEnvVar": null
191
+ },
192
+ "config": {
193
+ "engineType": "library"
194
+ },
195
+ "binaryTargets": [
196
+ {
197
+ "fromEnvVar": null,
198
+ "value": "debian-openssl-3.0.x",
199
+ "native": true
200
+ }
201
+ ],
202
+ "previewFeatures": [],
203
+ "sourceFilePath": "/home/runner/work/hazeljs/hazeljs/packages/flow/prisma/schema.prisma",
204
+ "isCustomOutput": true
205
+ },
206
+ "relativeEnvPaths": {
207
+ "rootEnvPath": null
208
+ },
209
+ "relativePath": "../../../prisma",
210
+ "clientVersion": "6.19.2",
211
+ "engineVersion": "c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
212
+ "datasourceNames": [
213
+ "db"
214
+ ],
215
+ "activeProvider": "postgresql",
216
+ "postinstall": false,
217
+ "ciName": "GitHub Actions",
218
+ "inlineDatasources": {
219
+ "db": {
220
+ "url": {
221
+ "fromEnvVar": "DATABASE_URL",
222
+ "value": null
223
+ }
224
+ }
225
+ },
226
+ "inlineSchema": "// @hazeljs/flow - Flow engine Prisma schema\n// Uses its own database/schema - independent of Hazel core\n\ngenerator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel FlowDefinition {\n flowId String\n version String\n definitionJson Json\n createdAt DateTime @default(now())\n\n @@id([flowId, version])\n}\n\nenum FlowRunStatus {\n RUNNING\n WAITING\n COMPLETED\n FAILED\n}\n\nmodel FlowRun {\n runId String @id @default(uuid())\n flowId String\n flowVersion String\n tenantId String?\n status FlowRunStatus\n currentNodeId String?\n inputJson Json\n stateJson Json\n outputsJson Json\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([flowId, flowVersion])\n @@index([tenantId])\n @@index([status])\n}\n\nmodel FlowRunEvent {\n id String @id @default(uuid())\n runId String\n at DateTime @default(now())\n type String\n nodeId String?\n attempt Int?\n payloadJson Json\n\n @@index([runId])\n @@index([runId, at])\n}\n\nmodel FlowIdempotency {\n key String @id\n runId String\n nodeId String\n outputJson Json?\n patchJson Json?\n createdAt DateTime @default(now())\n\n @@index([runId])\n}\n",
227
+ "inlineSchemaHash": "4fac31978e869618c9606b5e6e4a3f3b2b61de867e68f57dd91ec56b009f7e5f",
228
+ "copyEngine": true
229
+ }
230
+ config.dirname = '/'
231
+
232
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"FlowDefinition\":{\"fields\":[{\"name\":\"flowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"definitionJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"FlowRun\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flowId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"flowVersion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tenantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"FlowRunStatus\"},{\"name\":\"currentNodeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inputJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"outputsJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"FlowRunEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"attempt\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"payloadJson\",\"kind\":\"scalar\",\"type\":\"Json\"}],\"dbName\":null},\"FlowIdempotency\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"outputJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"patchJson\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
233
+ defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
234
+ config.engineWasm = {
235
+ getRuntime: async () => require('./query_engine_bg.js'),
236
+ getQueryEngineWasmModule: async () => {
237
+ const loader = (await import('#wasm-engine-loader')).default
238
+ const engine = (await loader).default
239
+ return engine
240
+ }
241
+ }
242
+ config.compilerWasm = undefined
243
+
244
+ config.injectableEdgeEnv = () => ({
245
+ parsed: {
246
+ DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined
247
+ }
248
+ })
249
+
250
+ if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) {
251
+ Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined)
252
+ }
253
+
254
+ const PrismaClient = getPrismaClient(config)
255
+ exports.PrismaClient = PrismaClient
256
+ Object.assign(exports, Prisma)
257
+
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @hazeljs/flow - Durable execution graph engine
3
+ * Default: in-memory (no DB). For DB persistence use createPrismaStorage(prisma) from '@hazeljs/flow/prisma'.
4
+ */
5
+ export { FlowEngine } from './engine/FlowEngine.js';
6
+ export type { FlowEngineOptions, StartRunArgs, StartRunResult } from './engine/FlowEngine.js';
7
+ export { flow } from './dsl/flow.js';
8
+ export { Flow, Entry, Node, Edge, buildFlowDefinition } from './decorators/flow.decorators.js';
9
+ export type { NodeDecoratorOptions } from './decorators/flow.decorators.js';
10
+ export type { FlowDefinition, NodeDefinition, EdgeDefinition, FlowContext, NodeResult, RetryPolicy, FlowRunStatus, } from './types/FlowTypes.js';
11
+ export { createMemoryStorage } from './persistence/memory.js';
12
+ export type { FlowStorage, FlowRunRow, CreateRunInput, IFlowDefinitionRepo, IFlowRunRepo, IFlowEventRepo, IIdempotencyRepo, IdempotencyRecord, WithLockFn, } from './persistence/storage.js';
13
+ export { FlowError, LockBusyError, AmbiguousEdgeError, FlowNotFoundError, RunNotFoundError, } from './types/Errors.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE9F,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,YAAY,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * @hazeljs/flow - Durable execution graph engine
4
+ * Default: in-memory (no DB). For DB persistence use createPrismaStorage(prisma) from '@hazeljs/flow/prisma'.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RunNotFoundError = exports.FlowNotFoundError = exports.AmbiguousEdgeError = exports.LockBusyError = exports.FlowError = exports.createMemoryStorage = exports.buildFlowDefinition = exports.Edge = exports.Node = exports.Entry = exports.Flow = exports.flow = exports.FlowEngine = void 0;
8
+ var FlowEngine_js_1 = require("./engine/FlowEngine.js");
9
+ Object.defineProperty(exports, "FlowEngine", { enumerable: true, get: function () { return FlowEngine_js_1.FlowEngine; } });
10
+ var flow_js_1 = require("./dsl/flow.js");
11
+ Object.defineProperty(exports, "flow", { enumerable: true, get: function () { return flow_js_1.flow; } });
12
+ var flow_decorators_js_1 = require("./decorators/flow.decorators.js");
13
+ Object.defineProperty(exports, "Flow", { enumerable: true, get: function () { return flow_decorators_js_1.Flow; } });
14
+ Object.defineProperty(exports, "Entry", { enumerable: true, get: function () { return flow_decorators_js_1.Entry; } });
15
+ Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return flow_decorators_js_1.Node; } });
16
+ Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return flow_decorators_js_1.Edge; } });
17
+ Object.defineProperty(exports, "buildFlowDefinition", { enumerable: true, get: function () { return flow_decorators_js_1.buildFlowDefinition; } });
18
+ var memory_js_1 = require("./persistence/memory.js");
19
+ Object.defineProperty(exports, "createMemoryStorage", { enumerable: true, get: function () { return memory_js_1.createMemoryStorage; } });
20
+ var Errors_js_1 = require("./types/Errors.js");
21
+ Object.defineProperty(exports, "FlowError", { enumerable: true, get: function () { return Errors_js_1.FlowError; } });
22
+ Object.defineProperty(exports, "LockBusyError", { enumerable: true, get: function () { return Errors_js_1.LockBusyError; } });
23
+ Object.defineProperty(exports, "AmbiguousEdgeError", { enumerable: true, get: function () { return Errors_js_1.AmbiguousEdgeError; } });
24
+ Object.defineProperty(exports, "FlowNotFoundError", { enumerable: true, get: function () { return Errors_js_1.FlowNotFoundError; } });
25
+ Object.defineProperty(exports, "RunNotFoundError", { enumerable: true, get: function () { return Errors_js_1.RunNotFoundError; } });
@@ -0,0 +1,14 @@
1
+ import type { PrismaClient } from './prisma.js';
2
+ import type { FlowDefinition } from '../types/FlowTypes.js';
3
+ export declare class FlowDefinitionRepo {
4
+ private readonly prisma;
5
+ constructor(prisma: PrismaClient);
6
+ save(def: FlowDefinition): Promise<void>;
7
+ get(flowId: string, version: string): Promise<FlowDefinition | null>;
8
+ list(): Promise<Array<{
9
+ flowId: string;
10
+ version: string;
11
+ definitionJson: unknown;
12
+ }>>;
13
+ }
14
+ //# sourceMappingURL=FlowDefinitionRepo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowDefinitionRepo.d.ts","sourceRoot":"","sources":["../../src/persistence/FlowDefinitionRepo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQpE,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAU3F"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowDefinitionRepo = void 0;
4
+ const serialize_js_1 = require("./serialize.js");
5
+ class FlowDefinitionRepo {
6
+ constructor(prisma) {
7
+ this.prisma = prisma;
8
+ }
9
+ async save(def) {
10
+ const serializable = (0, serialize_js_1.toSerializable)(def);
11
+ await this.prisma.flowDefinition.upsert({
12
+ where: {
13
+ flowId_version: { flowId: def.flowId, version: def.version },
14
+ },
15
+ create: {
16
+ flowId: def.flowId,
17
+ version: def.version,
18
+ definitionJson: serializable,
19
+ },
20
+ update: {
21
+ definitionJson: serializable,
22
+ },
23
+ });
24
+ }
25
+ async get(flowId, version) {
26
+ const row = await this.prisma.flowDefinition.findUnique({
27
+ where: { flowId_version: { flowId, version } },
28
+ });
29
+ if (!row)
30
+ return null;
31
+ return row.definitionJson;
32
+ }
33
+ async list() {
34
+ const rows = await this.prisma.flowDefinition.findMany({
35
+ orderBy: [{ flowId: 'asc' }, { version: 'asc' }],
36
+ });
37
+ return rows.map((r) => ({
38
+ flowId: r.flowId,
39
+ version: r.version,
40
+ definitionJson: r.definitionJson,
41
+ }));
42
+ }
43
+ }
44
+ exports.FlowDefinitionRepo = FlowDefinitionRepo;
@@ -0,0 +1,15 @@
1
+ import type { PrismaClient } from './prisma.js';
2
+ import type { FlowEventType, FlowRunEventPayload } from '../types/Events.js';
3
+ export declare class FlowEventRepo {
4
+ private readonly prisma;
5
+ constructor(prisma: PrismaClient);
6
+ append(runId: string, type: FlowEventType, payload?: FlowRunEventPayload): Promise<void>;
7
+ getTimeline(runId: string): Promise<Array<{
8
+ at: Date;
9
+ type: string;
10
+ nodeId: string | null;
11
+ attempt: number | null;
12
+ payloadJson: unknown;
13
+ }>>;
14
+ }
15
+ //# sourceMappingURL=FlowEventRepo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowEventRepo.d.ts","sourceRoot":"","sources":["../../src/persistence/FlowEventRepo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC;IAYV,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CACvC,KAAK,CAAC;QACJ,EAAE,EAAE,IAAI,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC,CACH;CAaF"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowEventRepo = void 0;
4
+ class FlowEventRepo {
5
+ constructor(prisma) {
6
+ this.prisma = prisma;
7
+ }
8
+ async append(runId, type, payload = {}) {
9
+ await this.prisma.flowRunEvent.create({
10
+ data: {
11
+ runId,
12
+ type,
13
+ nodeId: payload.nodeId ?? null,
14
+ attempt: payload.attempt ?? null,
15
+ payloadJson: payload,
16
+ },
17
+ });
18
+ }
19
+ async getTimeline(runId) {
20
+ const rows = await this.prisma.flowRunEvent.findMany({
21
+ where: { runId },
22
+ orderBy: { at: 'asc' },
23
+ });
24
+ return rows.map((r) => ({
25
+ at: r.at,
26
+ type: r.type,
27
+ nodeId: r.nodeId,
28
+ attempt: r.attempt,
29
+ payloadJson: r.payloadJson,
30
+ }));
31
+ }
32
+ }
33
+ exports.FlowEventRepo = FlowEventRepo;
@@ -0,0 +1,12 @@
1
+ import type { PrismaClient } from './prisma.js';
2
+ import type { FlowRunRow, CreateRunInput } from './storage.js';
3
+ export type { FlowRunRow, CreateRunInput } from './storage.js';
4
+ export declare class FlowRunRepo {
5
+ private readonly prisma;
6
+ constructor(prisma: PrismaClient);
7
+ create(input: CreateRunInput): Promise<FlowRunRow>;
8
+ get(runId: string): Promise<FlowRunRow | null>;
9
+ update(runId: string, data: Partial<FlowRunRow>): Promise<FlowRunRow>;
10
+ findRunning(): Promise<FlowRunRow[]>;
11
+ }
12
+ //# sourceMappingURL=FlowRunRepo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowRunRepo.d.ts","sourceRoot":"","sources":["../../src/persistence/FlowRunRepo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBlD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO9C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAarE,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAM3C"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlowRunRepo = void 0;
4
+ const prisma_js_1 = require("./prisma.js");
5
+ class FlowRunRepo {
6
+ constructor(prisma) {
7
+ this.prisma = prisma;
8
+ }
9
+ async create(input) {
10
+ const row = await this.prisma.flowRun.create({
11
+ data: {
12
+ runId: input.runId,
13
+ flowId: input.flowId,
14
+ flowVersion: input.flowVersion,
15
+ tenantId: input.tenantId ?? null,
16
+ status: prisma_js_1.FlowRunStatus.RUNNING,
17
+ currentNodeId: null,
18
+ inputJson: input.input,
19
+ stateJson: (input.initialState ?? {}),
20
+ outputsJson: {},
21
+ },
22
+ });
23
+ return row;
24
+ }
25
+ async get(runId) {
26
+ const row = await this.prisma.flowRun.findUnique({
27
+ where: { runId },
28
+ });
29
+ return row;
30
+ }
31
+ async update(runId, data) {
32
+ const row = await this.prisma.flowRun.update({
33
+ where: { runId },
34
+ data: {
35
+ ...(data.status !== undefined && { status: data.status }),
36
+ ...(data.currentNodeId !== undefined && { currentNodeId: data.currentNodeId }),
37
+ ...(data.stateJson !== undefined && { stateJson: data.stateJson }),
38
+ ...(data.outputsJson !== undefined && { outputsJson: data.outputsJson }),
39
+ },
40
+ });
41
+ return row;
42
+ }
43
+ async findRunning() {
44
+ const rows = await this.prisma.flowRun.findMany({
45
+ where: { status: prisma_js_1.FlowRunStatus.RUNNING },
46
+ });
47
+ return rows;
48
+ }
49
+ }
50
+ exports.FlowRunRepo = FlowRunRepo;
@@ -0,0 +1,15 @@
1
+ import type { PrismaClient } from './prisma.js';
2
+ export interface IdempotencyRecord {
3
+ key: string;
4
+ runId: string;
5
+ nodeId: string;
6
+ outputJson: unknown;
7
+ patchJson: unknown;
8
+ }
9
+ export declare class IdempotencyRepo {
10
+ private readonly prisma;
11
+ constructor(prisma: PrismaClient);
12
+ get(key: string): Promise<IdempotencyRecord | null>;
13
+ set(key: string, runId: string, nodeId: string, outputJson?: unknown, patchJson?: unknown): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=IdempotencyRepo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdempotencyRepo.d.ts","sourceRoot":"","sources":["../../src/persistence/IdempotencyRepo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAcnD,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC;CAgBjB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdempotencyRepo = void 0;
4
+ class IdempotencyRepo {
5
+ constructor(prisma) {
6
+ this.prisma = prisma;
7
+ }
8
+ async get(key) {
9
+ const row = await this.prisma.flowIdempotency.findUnique({
10
+ where: { key },
11
+ });
12
+ if (!row)
13
+ return null;
14
+ return {
15
+ key: row.key,
16
+ runId: row.runId,
17
+ nodeId: row.nodeId,
18
+ outputJson: row.outputJson,
19
+ patchJson: row.patchJson,
20
+ };
21
+ }
22
+ async set(key, runId, nodeId, outputJson, patchJson) {
23
+ await this.prisma.flowIdempotency.upsert({
24
+ where: { key },
25
+ create: {
26
+ key,
27
+ runId,
28
+ nodeId,
29
+ outputJson: outputJson != null ? outputJson : undefined,
30
+ patchJson: patchJson != null ? patchJson : undefined,
31
+ },
32
+ update: {
33
+ outputJson: outputJson != null ? outputJson : undefined,
34
+ patchJson: patchJson != null ? patchJson : undefined,
35
+ },
36
+ });
37
+ }
38
+ }
39
+ exports.IdempotencyRepo = IdempotencyRepo;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * In-memory storage for flow engine (default, no DB required).
3
+ */
4
+ import { type FlowStorage } from './storage.js';
5
+ /**
6
+ * Create in-memory storage (default, no database).
7
+ */
8
+ export declare function createMemoryStorage(): FlowStorage;
9
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/persistence/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,KAAK,WAAW,EAQjB,MAAM,cAAc,CAAC;AA6KtB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAQjD"}