@yieldstar/core 0.4.5 → 0.5.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.
- package/dist/base/step.d.ts +5 -0
- package/dist/base/step.d.ts.map +1 -1
- package/dist/base/store.d.ts +317 -0
- package/dist/base/store.d.ts.map +1 -0
- package/dist/base/store.test.d.ts +2 -0
- package/dist/base/store.test.d.ts.map +1 -0
- package/dist/base/workflow.d.ts +2 -0
- package/dist/base/workflow.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +403 -3
- package/dist/lib/workflow-runner.d.ts +3 -1
- package/dist/lib/workflow-runner.d.ts.map +1 -1
- package/dist/utils/map.d.ts +1 -1
- package/dist/utils/map.d.ts.map +1 -1
- package/package.json +13 -3
- package/src/base/step.ts +8 -0
- package/src/base/store.test.ts +176 -0
- package/src/base/store.ts +833 -0
- package/src/base/workflow.ts +2 -0
- package/src/index.ts +37 -0
- package/src/lib/workflow-runner.ts +14 -2
- package/src/utils/map.test.ts +1 -1
- package/src/utils/map.ts +8 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/base/map.d.ts +0 -21
- package/dist/base/map.d.ts.map +0 -1
- package/dist/base/map.test.d.ts +0 -2
- package/dist/base/map.test.d.ts.map +0 -1
- package/dist/base/schedule.d.ts +0 -71
- package/dist/base/schedule.d.ts.map +0 -1
- package/dist/base/types.d.ts +0 -24
- package/dist/base/types.d.ts.map +0 -1
package/src/base/workflow.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Logger } from "pino";
|
|
2
2
|
import type { EventParams, WorkflowEvent, EventContext } from "./event";
|
|
3
3
|
import { HeapClient } from "./heap";
|
|
4
|
+
import { StoreClient } from "./store";
|
|
4
5
|
import { StepResponse, WorkflowResult } from "./step";
|
|
5
6
|
|
|
6
7
|
export type WorkflowGeneratorParams<
|
|
@@ -9,6 +10,7 @@ export type WorkflowGeneratorParams<
|
|
|
9
10
|
> = {
|
|
10
11
|
event: WorkflowEvent<Params, Context>;
|
|
11
12
|
heapClient: HeapClient;
|
|
13
|
+
storeClient: StoreClient;
|
|
12
14
|
logger: Logger;
|
|
13
15
|
};
|
|
14
16
|
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,42 @@ export type { HeapClient, HeapRecord } from "./base/heap";
|
|
|
2
2
|
export type { WorkflowInvoker } from "./base/invoker";
|
|
3
3
|
export type { EventProcessor } from "./base/runtime";
|
|
4
4
|
export type { SchedulerClient } from "./base/scheduler";
|
|
5
|
+
export type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
|
+
export type {
|
|
7
|
+
Draft,
|
|
8
|
+
RuntimeStore,
|
|
9
|
+
StoreDefinition,
|
|
10
|
+
StoreDeleteFromResult,
|
|
11
|
+
StoreKey,
|
|
12
|
+
StorePath,
|
|
13
|
+
StoreSelector,
|
|
14
|
+
StoreSnapshot,
|
|
15
|
+
StoreState,
|
|
16
|
+
StoreStepId,
|
|
17
|
+
StoreTakeResult,
|
|
18
|
+
StoreUpdateFromResult,
|
|
19
|
+
StoreUpdateResult,
|
|
20
|
+
StoreVersion,
|
|
21
|
+
StoreWaiter,
|
|
22
|
+
StoreMutation,
|
|
23
|
+
StoreMutationCommitResult,
|
|
24
|
+
TrackedStoreUpdater,
|
|
25
|
+
} from "./base/store";
|
|
26
|
+
export {
|
|
27
|
+
StoreClient,
|
|
28
|
+
CasStoreClient,
|
|
29
|
+
assertSynchronousClaim,
|
|
30
|
+
assertSynchronousUpdater,
|
|
31
|
+
cloneStoreState,
|
|
32
|
+
defineStore,
|
|
33
|
+
diffStorePaths,
|
|
34
|
+
isStoreSelectorMatch,
|
|
35
|
+
storePathsIntersect,
|
|
36
|
+
trackStoreSelector,
|
|
37
|
+
trackStoreUpdater,
|
|
38
|
+
unwrapTrackedValue,
|
|
39
|
+
validateStoreState,
|
|
40
|
+
} from "./base/store";
|
|
5
41
|
export type {
|
|
6
42
|
EventParams,
|
|
7
43
|
EventContext,
|
|
@@ -29,6 +65,7 @@ export {
|
|
|
29
65
|
StepKey,
|
|
30
66
|
StepResponse,
|
|
31
67
|
StepResult,
|
|
68
|
+
StepStoreWait,
|
|
32
69
|
WorkflowDelay,
|
|
33
70
|
WorkflowRestart,
|
|
34
71
|
WorkflowResult,
|
|
@@ -3,11 +3,12 @@ import type {
|
|
|
3
3
|
WorkflowGenerator,
|
|
4
4
|
HeapClient,
|
|
5
5
|
SchedulerClient,
|
|
6
|
+
StoreClient,
|
|
6
7
|
EventProcessor,
|
|
7
8
|
WorkflowEvent,
|
|
8
9
|
EventParams,
|
|
9
10
|
} from "..";
|
|
10
|
-
import { StepDelay, WorkflowDelay, WorkflowResult } from "..";
|
|
11
|
+
import { StepDelay, StepStoreWait, WorkflowDelay, WorkflowResult } from "..";
|
|
11
12
|
import { EventContext } from "../base/event";
|
|
12
13
|
|
|
13
14
|
export class WorkflowRunner<
|
|
@@ -15,16 +16,19 @@ export class WorkflowRunner<
|
|
|
15
16
|
> {
|
|
16
17
|
private heapClient: HeapClient;
|
|
17
18
|
private schedulerClient: SchedulerClient;
|
|
19
|
+
private storeClient: StoreClient;
|
|
18
20
|
private router: Router;
|
|
19
21
|
|
|
20
22
|
constructor(params: {
|
|
21
23
|
heapClient: HeapClient;
|
|
22
24
|
schedulerClient: SchedulerClient;
|
|
25
|
+
storeClient: StoreClient;
|
|
23
26
|
router: Router;
|
|
24
27
|
logger: Logger;
|
|
25
28
|
}) {
|
|
26
29
|
this.heapClient = params.heapClient;
|
|
27
30
|
this.schedulerClient = params.schedulerClient;
|
|
31
|
+
this.storeClient = params.storeClient;
|
|
28
32
|
this.router = params.router;
|
|
29
33
|
}
|
|
30
34
|
|
|
@@ -49,6 +53,9 @@ export class WorkflowRunner<
|
|
|
49
53
|
case "workflow-delay":
|
|
50
54
|
this.schedulerClient.requestWakeUp(event, response.resumeIn);
|
|
51
55
|
break;
|
|
56
|
+
|
|
57
|
+
case "store-wait":
|
|
58
|
+
break;
|
|
52
59
|
}
|
|
53
60
|
} catch (err) {
|
|
54
61
|
// todo: distinguish between a workflow error and a system error
|
|
@@ -64,12 +71,13 @@ export class WorkflowRunner<
|
|
|
64
71
|
workflow: WorkflowGenerator<Params, Result, Context>;
|
|
65
72
|
event: WorkflowEvent<Params, Context>;
|
|
66
73
|
logger: Logger;
|
|
67
|
-
}): Promise<WorkflowResult<Result> | WorkflowDelay> {
|
|
74
|
+
}): Promise<WorkflowResult<Result> | WorkflowDelay | StepStoreWait> {
|
|
68
75
|
const { workflow, event, logger } = params;
|
|
69
76
|
|
|
70
77
|
const workflowIterator = workflow({
|
|
71
78
|
event,
|
|
72
79
|
heapClient: this.heapClient,
|
|
80
|
+
storeClient: this.storeClient,
|
|
73
81
|
logger,
|
|
74
82
|
});
|
|
75
83
|
|
|
@@ -85,6 +93,10 @@ export class WorkflowRunner<
|
|
|
85
93
|
return new WorkflowDelay(stageResponse.resumeIn - Date.now());
|
|
86
94
|
}
|
|
87
95
|
|
|
96
|
+
if (stageResponse instanceof StepStoreWait) {
|
|
97
|
+
return stageResponse;
|
|
98
|
+
}
|
|
99
|
+
|
|
88
100
|
throw new Error(
|
|
89
101
|
"Workflow runner critical error. This is likely because your worklow and worker are referencing different versions of @yieldstar/core."
|
|
90
102
|
);
|
package/src/utils/map.test.ts
CHANGED
package/src/utils/map.ts
CHANGED
|
@@ -3,8 +3,14 @@ import { errorWithOriginalStack } from "./error";
|
|
|
3
3
|
export class ReadOnlyMap<K, V> implements ReadonlyMap<K, V> {
|
|
4
4
|
private sourceMap: Map<K, V>;
|
|
5
5
|
|
|
6
|
-
constructor(sourceMap: Map<K, V>) {
|
|
7
|
-
|
|
6
|
+
constructor(sourceMap: Map<K, V> | Record<any, any> | undefined) {
|
|
7
|
+
if (sourceMap instanceof Map) {
|
|
8
|
+
this.sourceMap = sourceMap;
|
|
9
|
+
} else if (typeof sourceMap === "object" && sourceMap !== null) {
|
|
10
|
+
this.sourceMap = new Map(Object.entries(sourceMap)) as Map<K, V>;
|
|
11
|
+
} else {
|
|
12
|
+
this.sourceMap = new Map();
|
|
13
|
+
}
|
|
8
14
|
}
|
|
9
15
|
|
|
10
16
|
get(key: K): V | undefined {
|