@yieldstar/core 0.6.0 → 0.6.1

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.
@@ -55,6 +55,15 @@ export type ExecutionLease = {
55
55
  token: number;
56
56
  expiresAt: number;
57
57
  };
58
+ /**
59
+ * Limits a claim to the executions that match. The claim applies it in the same
60
+ * atomic step, so an execution that does not match is not leased and gains no
61
+ * redelivery delay.
62
+ */
63
+ export type ExecutionClaimFilter = {
64
+ /** Claims only executions whose ID is in this list. An empty list claims nothing. */
65
+ executionIds?: readonly string[];
66
+ };
58
67
  /**
59
68
  * Returned by a fenced write whose lease is no longer current: a higher token
60
69
  * has been issued, or the lease has ended. The write changed nothing, and its
@@ -169,6 +178,8 @@ export interface ExecutionClient {
169
178
  claimDue(request: {
170
179
  limit: number;
171
180
  duration: number;
181
+ /** When absent, any execution whose due time has passed may be claimed. */
182
+ filter?: ExecutionClaimFilter;
172
183
  }): Promise<ExecutionLease[]>;
173
184
  /**
174
185
  * Extends a lease to `duration` milliseconds from now. Returns `lost` if a
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/base/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/base/execution.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { DeliveryOptions, WorkflowInvoker } from "./base/invoker";
3
3
  export { WorkerExitedError } from "./base/invoker";
4
4
  export type { RuntimeOptions } from "./base/runtime";
5
5
  export { Runtime } from "./base/runtime";
6
- export type { ExecutionAcknowledgeResult, ExecutionAdmissionErrorCode, ExecutionAdmissionRequest, ExecutionAdmissionResult, ExecutionClient, ExecutionLease, ExecutionOutcome, ExecutionParent, ExecutionRecord, ExecutionReleaseResult, ExecutionRenewResult, ExecutionStartRequest, ExecutionStartResult, ExecutionStatus, ExecutionWakeResult, LeaseLost, WorkflowRunOutcome, WorkflowStartErrorCode, } from "./base/execution";
6
+ export type { ExecutionAcknowledgeResult, ExecutionAdmissionErrorCode, ExecutionAdmissionRequest, ExecutionAdmissionResult, ExecutionClaimFilter, ExecutionClient, ExecutionLease, ExecutionOutcome, ExecutionParent, ExecutionRecord, ExecutionReleaseResult, ExecutionRenewResult, ExecutionStartRequest, ExecutionStartResult, ExecutionStatus, ExecutionWakeResult, LeaseLost, WorkflowRunOutcome, WorkflowStartErrorCode, } from "./base/execution";
7
7
  export { ExecutionAdmissionError, InfrastructureError, LeaseLostError, StepConflictError, WorkflowStartError, isLeaseLost, isTerminalExecutionStatus, } from "./base/execution";
8
8
  export type { EffectBeginRequest, EffectBeginResult, EffectClient, EffectConflictReport, EffectDeliveryErrorCode, EffectRecord, EffectSettleRequest, EffectSettleResult, EffectWatchRequest, WorkflowEffectErrorCode, } from "./base/effect";
9
9
  export { EffectClientInvariantError, EffectDeliveryError, WorkflowEffectError, } from "./base/effect";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1071,6 +1071,7 @@ class ExecutionDispatcher {
1071
1071
  leaseDuration;
1072
1072
  renewInterval;
1073
1073
  abortGracePeriod;
1074
+ filter;
1074
1075
  running = false;
1075
1076
  looping = false;
1076
1077
  timer;
@@ -1086,6 +1087,7 @@ class ExecutionDispatcher {
1086
1087
  this.leaseDuration = options.leaseDuration ?? DEFAULT_LEASE_DURATION;
1087
1088
  this.renewInterval = options.renewInterval ?? this.leaseDuration / 3;
1088
1089
  this.abortGracePeriod = options.abortGracePeriod ?? DEFAULT_ABORT_GRACE_PERIOD;
1090
+ this.filter = options.filter;
1089
1091
  if (!Number.isInteger(this.concurrency) || this.concurrency < 1) {
1090
1092
  throw new RangeError("concurrency must be a positive integer");
1091
1093
  }
@@ -1098,6 +1100,9 @@ class ExecutionDispatcher {
1098
1100
  if (!(this.abortGracePeriod >= 0)) {
1099
1101
  throw new RangeError("abortGracePeriod must not be negative");
1100
1102
  }
1103
+ if (this.filter?.executionIds?.length === 0) {
1104
+ throw new RangeError("filter.executionIds must not be empty");
1105
+ }
1101
1106
  }
1102
1107
  start() {
1103
1108
  if (this.running)
@@ -1124,7 +1129,8 @@ class ExecutionDispatcher {
1124
1129
  try {
1125
1130
  leases = await this.runtime.executions.claimDue({
1126
1131
  limit: slots,
1127
- duration: this.leaseDuration
1132
+ duration: this.leaseDuration,
1133
+ filter: this.filter
1128
1134
  });
1129
1135
  } finally {
1130
1136
  this.claiming -= slots;
@@ -1,6 +1,7 @@
1
1
  import type { Logger } from "pino";
2
2
  import type { WorkflowInvoker } from "../base/invoker";
3
3
  import type { Runtime } from "../base/runtime";
4
+ import type { ExecutionClaimFilter } from "../base/execution";
4
5
  export declare const DEFAULT_DISPATCHER_CONCURRENCY = 10;
5
6
  export declare const DEFAULT_ABORT_GRACE_PERIOD = 1000;
6
7
  export interface DispatcherOptions {
@@ -28,6 +29,14 @@ export interface DispatcherOptions {
28
29
  * @default 1_000
29
30
  */
30
31
  abortGracePeriod?: number;
32
+ /**
33
+ * Delivers only the executions that match. It is passed to every `claimDue`,
34
+ * so other executions are never claimed and gain no redelivery delay. An
35
+ * empty `executionIds` list is rejected, since the dispatcher would never
36
+ * deliver anything.
37
+ * @default every execution whose due time has passed
38
+ */
39
+ filter?: ExecutionClaimFilter;
31
40
  }
32
41
  /**
33
42
  * The only component that delivers executions. It leases due executions, reads
@@ -60,6 +69,7 @@ export declare class ExecutionDispatcher {
60
69
  private leaseDuration;
61
70
  private renewInterval;
62
71
  private abortGracePeriod;
72
+ private filter;
63
73
  private running;
64
74
  private looping;
65
75
  private timer;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-dispatcher.d.ts","sourceRoot":"","sources":["../../src/lib/execution-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAS/C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB;IAwBxD,KAAK;IAML,mEAAmE;IAC7D,IAAI;IAOV,IAAI,gBAAgB,WAEnB;IAED;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAwB7B,yDAAyD;IACnD,KAAK;IAMX,OAAO,CAAC,QAAQ;YASF,IAAI;YAiBJ,QAAQ;IAiFtB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAiDb,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAOb"}
1
+ {"version":3,"file":"execution-dispatcher.d.ts","sourceRoot":"","sources":["../../src/lib/execution-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAEV,oBAAoB,EAGrB,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAIhD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB;IA4BxD,KAAK;IAML,mEAAmE;IAC7D,IAAI;IAOV,IAAI,gBAAgB,WAEnB;IAED;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAyB7B,yDAAyD;IACnD,KAAK;IAMX,OAAO,CAAC,QAAQ;YASF,IAAI;YAiBJ,QAAQ;IAiFtB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;;;;OAKG;IACH,OAAO,CAAC,KAAK;IAiDb,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;CAOb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yieldstar/core",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "license": "MIT",
5
5
  "author": "Daniel Grant",
6
6
  "repository": {
@@ -62,6 +62,16 @@ export type ExecutionLease = {
62
62
  expiresAt: number;
63
63
  };
64
64
 
65
+ /**
66
+ * Limits a claim to the executions that match. The claim applies it in the same
67
+ * atomic step, so an execution that does not match is not leased and gains no
68
+ * redelivery delay.
69
+ */
70
+ export type ExecutionClaimFilter = {
71
+ /** Claims only executions whose ID is in this list. An empty list claims nothing. */
72
+ executionIds?: readonly string[];
73
+ };
74
+
65
75
  /**
66
76
  * Returned by a fenced write whose lease is no longer current: a higher token
67
77
  * has been issued, or the lease has ended. The write changed nothing, and its
@@ -184,6 +194,8 @@ export interface ExecutionClient {
184
194
  claimDue(request: {
185
195
  limit: number;
186
196
  duration: number;
197
+ /** When absent, any execution whose due time has passed may be claimed. */
198
+ filter?: ExecutionClaimFilter;
187
199
  }): Promise<ExecutionLease[]>;
188
200
 
189
201
  /**
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ export type {
8
8
  ExecutionAdmissionErrorCode,
9
9
  ExecutionAdmissionRequest,
10
10
  ExecutionAdmissionResult,
11
+ ExecutionClaimFilter,
11
12
  ExecutionClient,
12
13
  ExecutionLease,
13
14
  ExecutionOutcome,
@@ -4,6 +4,7 @@ import { WorkerExitedError } from "../base/invoker";
4
4
  import type { Runtime } from "../base/runtime";
5
5
  import type {
6
6
  ExecutionAcknowledgeResult,
7
+ ExecutionClaimFilter,
7
8
  ExecutionLease,
8
9
  WorkflowRunOutcome,
9
10
  } from "../base/execution";
@@ -41,6 +42,14 @@ export interface DispatcherOptions {
41
42
  * @default 1_000
42
43
  */
43
44
  abortGracePeriod?: number;
45
+ /**
46
+ * Delivers only the executions that match. It is passed to every `claimDue`,
47
+ * so other executions are never claimed and gain no redelivery delay. An
48
+ * empty `executionIds` list is rejected, since the dispatcher would never
49
+ * deliver anything.
50
+ * @default every execution whose due time has passed
51
+ */
52
+ filter?: ExecutionClaimFilter;
44
53
  }
45
54
 
46
55
  /**
@@ -74,6 +83,7 @@ export class ExecutionDispatcher {
74
83
  private leaseDuration: number;
75
84
  private renewInterval: number;
76
85
  private abortGracePeriod: number;
86
+ private filter: ExecutionClaimFilter | undefined;
77
87
  private running = false;
78
88
  private looping = false;
79
89
  private timer: ReturnType<typeof setTimeout> | undefined;
@@ -91,6 +101,7 @@ export class ExecutionDispatcher {
91
101
  this.leaseDuration = options.leaseDuration ?? DEFAULT_LEASE_DURATION;
92
102
  this.renewInterval = options.renewInterval ?? this.leaseDuration / 3;
93
103
  this.abortGracePeriod = options.abortGracePeriod ?? DEFAULT_ABORT_GRACE_PERIOD;
104
+ this.filter = options.filter;
94
105
  if (!Number.isInteger(this.concurrency) || this.concurrency < 1) {
95
106
  throw new RangeError("concurrency must be a positive integer");
96
107
  }
@@ -103,6 +114,9 @@ export class ExecutionDispatcher {
103
114
  if (!(this.abortGracePeriod >= 0)) {
104
115
  throw new RangeError("abortGracePeriod must not be negative");
105
116
  }
117
+ if (this.filter?.executionIds?.length === 0) {
118
+ throw new RangeError("filter.executionIds must not be empty");
119
+ }
106
120
  }
107
121
 
108
122
  start() {
@@ -137,6 +151,7 @@ export class ExecutionDispatcher {
137
151
  leases = await this.runtime.executions.claimDue({
138
152
  limit: slots,
139
153
  duration: this.leaseDuration,
154
+ filter: this.filter,
140
155
  });
141
156
  } finally {
142
157
  this.claiming -= slots;