anbaric-state-machine 1.56.6 → 1.56.7
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/scheduling/InMemoryJobRunSchedulePersistence.d.ts +6 -0
- package/dist/scheduling/InMemoryJobRunSchedulePersistence.d.ts.map +1 -1
- package/dist/scheduling/InMemoryJobRunSchedulePersistence.js +31 -4
- package/dist/scheduling/InMemoryJobRunSchedulePersistence.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,7 +4,13 @@ declare class InMemoryJobRunSchedulePersistence implements JobRunSchedulePersist
|
|
|
4
4
|
highWaterMark(appId: string, workflowId: string): Promise<Date | undefined>;
|
|
5
5
|
plan(runs: Array<ScheduledRun>): Promise<void>;
|
|
6
6
|
claimDue(at: Date): Promise<Array<ScheduledRun>>;
|
|
7
|
+
superseded(): Array<{
|
|
8
|
+
run: ScheduledRun;
|
|
9
|
+
by: ScheduledRun;
|
|
10
|
+
}>;
|
|
7
11
|
private alreadyPlanned;
|
|
12
|
+
private key;
|
|
13
|
+
private publicShape;
|
|
8
14
|
}
|
|
9
15
|
export { InMemoryJobRunSchedulePersistence };
|
|
10
16
|
//# sourceMappingURL=InMemoryJobRunSchedulePersistence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryJobRunSchedulePersistence.d.ts","sourceRoot":"","sources":["../../src/scheduling/InMemoryJobRunSchedulePersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAItE,cAAM,iCAAkC,YAAW,yBAAyB;IAExE,OAAO,CAAC,IAAI,CAA0B;IAEhC,aAAa,CAAC,KAAK,EAAG,MAAM,EAAE,UAAU,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKnF;IAEK,IAAI,CAAC,IAAI,EAAG,KAAK,CAAC,YAAY,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;IAEK,QAAQ,CAAC,EAAE,EAAG,IAAI,GAAI,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"InMemoryJobRunSchedulePersistence.d.ts","sourceRoot":"","sources":["../../src/scheduling/InMemoryJobRunSchedulePersistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAItE,cAAM,iCAAkC,YAAW,yBAAyB;IAExE,OAAO,CAAC,IAAI,CAA0B;IAEhC,aAAa,CAAC,KAAK,EAAG,MAAM,EAAE,UAAU,EAAG,MAAM,GAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAKnF;IAEK,IAAI,CAAC,IAAI,EAAG,KAAK,CAAC,YAAY,CAAC,GAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;IAEK,QAAQ,CAAC,EAAE,EAAG,IAAI,GAAI,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAkBvD;IAID,UAAU,IAAK,KAAK,CAAC;QAAE,GAAG,EAAG,YAAY,CAAC;QAAC,EAAE,EAAG,YAAY,CAAA;KAAE,CAAC,CAI9D;IAED,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,WAAW;CAItB;AAED,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
|
@@ -14,16 +14,43 @@ class InMemoryJobRunSchedulePersistence {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
async claimDue(at) {
|
|
17
|
-
const due = this.runs.filter(run => !run.claimed && run.runAt.getTime() <= at.getTime());
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const due = this.runs.filter(run => !run.claimed && !run.supersededBy && run.runAt.getTime() <= at.getTime());
|
|
18
|
+
const latestPerMachine = new Map();
|
|
19
|
+
for (const run of due) {
|
|
20
|
+
const key = this.key(run);
|
|
21
|
+
const latest = latestPerMachine.get(key);
|
|
22
|
+
if (!latest || run.runAt.getTime() > latest.runAt.getTime())
|
|
23
|
+
latestPerMachine.set(key, run);
|
|
24
|
+
}
|
|
25
|
+
for (const run of due) {
|
|
26
|
+
const latest = latestPerMachine.get(this.key(run));
|
|
27
|
+
if (run === latest)
|
|
28
|
+
run.claimed = true;
|
|
29
|
+
else
|
|
30
|
+
run.supersededBy = this.publicShape(latest);
|
|
31
|
+
}
|
|
32
|
+
return [...latestPerMachine.values()]
|
|
33
|
+
.sort((left, right) => left.runAt.getTime() - right.runAt.getTime())
|
|
34
|
+
.map(run => this.publicShape(run));
|
|
35
|
+
}
|
|
36
|
+
// The runs that were passed over in favour of a later one, for anyone
|
|
37
|
+
// asking why a tick did not start a job.
|
|
38
|
+
superseded() {
|
|
39
|
+
return this.runs
|
|
40
|
+
.filter(run => run.supersededBy)
|
|
41
|
+
.map(run => ({ run: this.publicShape(run), by: run.supersededBy }));
|
|
21
42
|
}
|
|
22
43
|
alreadyPlanned(run) {
|
|
23
44
|
return this.runs.some(planned => planned.appId === run.appId
|
|
24
45
|
&& planned.workflowId === run.workflowId
|
|
25
46
|
&& planned.runAt.getTime() === run.runAt.getTime());
|
|
26
47
|
}
|
|
48
|
+
key(run) {
|
|
49
|
+
return JSON.stringify([run.appId, run.workflowId]);
|
|
50
|
+
}
|
|
51
|
+
publicShape({ appId, workflowId, runAt }) {
|
|
52
|
+
return { appId, workflowId, runAt };
|
|
53
|
+
}
|
|
27
54
|
}
|
|
28
55
|
export { InMemoryJobRunSchedulePersistence };
|
|
29
56
|
//# sourceMappingURL=InMemoryJobRunSchedulePersistence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryJobRunSchedulePersistence.js","sourceRoot":"","sources":["../../src/scheduling/InMemoryJobRunSchedulePersistence.ts"],"names":[],"mappings":"AAIA,MAAM,iCAAiC;IAE3B,IAAI,GAAuB,EAAE,CAAC;IAEtC,KAAK,CAAC,aAAa,CAAC,KAAc,EAAE,UAAmB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI;aAClB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;aACnE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAA0B;QACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAS;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"InMemoryJobRunSchedulePersistence.js","sourceRoot":"","sources":["../../src/scheduling/InMemoryJobRunSchedulePersistence.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anbaric-state-machine",
|
|
3
|
-
"version": "1.56.
|
|
3
|
+
"version": "1.56.7",
|
|
4
4
|
"description": "This is the state machine library that one can use to add state management to an application. It will, by default, be locally runnable but can deployed to the Anbaric Cloud via the CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "chris@anbaric.ai",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"typescript": "^7.0.2"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"anbaric-impl-cloud": "^1.56.
|
|
28
|
-
"anbaric-tsapi": "^1.56.
|
|
27
|
+
"anbaric-impl-cloud": "^1.56.7",
|
|
28
|
+
"anbaric-tsapi": "^1.56.7"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
31
|
"dist"
|