solid-objects 0.12.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/CHANGELOG.md +110 -0
- package/MIT-LICENSE +19 -0
- package/README.md +958 -0
- package/dist/actor.d.ts +81 -0
- package/dist/actor.d.ts.map +1 -0
- package/dist/actor.js +141 -0
- package/dist/actor.js.map +1 -0
- package/dist/application-database.d.ts +3 -0
- package/dist/application-database.d.ts.map +1 -0
- package/dist/application-database.js +59 -0
- package/dist/application-database.js.map +1 -0
- package/dist/broadcast-worker.d.ts +18 -0
- package/dist/broadcast-worker.d.ts.map +1 -0
- package/dist/broadcast-worker.js +74 -0
- package/dist/broadcast-worker.js.map +1 -0
- package/dist/browser/components.d.ts +64 -0
- package/dist/browser/components.d.ts.map +1 -0
- package/dist/browser/components.js +294 -0
- package/dist/browser/components.js.map +1 -0
- package/dist/browser/index.d.ts +46 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +207 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +216 -0
- package/dist/cli.js.map +1 -0
- package/dist/configuration.d.ts +96 -0
- package/dist/configuration.d.ts.map +1 -0
- package/dist/configuration.js +169 -0
- package/dist/configuration.js.map +1 -0
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +24 -0
- package/dist/context.js.map +1 -0
- package/dist/database/deadline.d.ts +9 -0
- package/dist/database/deadline.d.ts.map +1 -0
- package/dist/database/deadline.js +49 -0
- package/dist/database/deadline.js.map +1 -0
- package/dist/database/mysql.d.ts +21 -0
- package/dist/database/mysql.d.ts.map +1 -0
- package/dist/database/mysql.js +192 -0
- package/dist/database/mysql.js.map +1 -0
- package/dist/database/postgresql-sql.d.ts +2 -0
- package/dist/database/postgresql-sql.d.ts.map +1 -0
- package/dist/database/postgresql-sql.js +102 -0
- package/dist/database/postgresql-sql.js.map +1 -0
- package/dist/database/postgresql.d.ts +31 -0
- package/dist/database/postgresql.d.ts.map +1 -0
- package/dist/database/postgresql.js +172 -0
- package/dist/database/postgresql.js.map +1 -0
- package/dist/database/sqlite.d.ts +27 -0
- package/dist/database/sqlite.d.ts.map +1 -0
- package/dist/database/sqlite.js +190 -0
- package/dist/database/sqlite.js.map +1 -0
- package/dist/database/transaction-context.d.ts +3 -0
- package/dist/database/transaction-context.d.ts.map +1 -0
- package/dist/database/transaction-context.js +19 -0
- package/dist/database/transaction-context.js.map +1 -0
- package/dist/database/types.d.ts +20 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/dead-letters.d.ts +23 -0
- package/dist/dead-letters.d.ts.map +1 -0
- package/dist/dead-letters.js +13 -0
- package/dist/dead-letters.js.map +1 -0
- package/dist/default-runtime.d.ts +5 -0
- package/dist/default-runtime.d.ts.map +1 -0
- package/dist/default-runtime.js +14 -0
- package/dist/default-runtime.js.map +1 -0
- package/dist/definition.d.ts +32 -0
- package/dist/definition.d.ts.map +1 -0
- package/dist/definition.js +173 -0
- package/dist/definition.js.map +1 -0
- package/dist/doctor.d.ts +32 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +500 -0
- package/dist/doctor.js.map +1 -0
- package/dist/effect-worker.d.ts +18 -0
- package/dist/effect-worker.d.ts.map +1 -0
- package/dist/effect-worker.js +74 -0
- package/dist/effect-worker.js.map +1 -0
- package/dist/errors.d.ts +145 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +120 -0
- package/dist/errors.js.map +1 -0
- package/dist/executable.d.ts +3 -0
- package/dist/executable.d.ts.map +1 -0
- package/dist/executable.js +12 -0
- package/dist/executable.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/maintenance-scheduler.d.ts +17 -0
- package/dist/maintenance-scheduler.d.ts.map +1 -0
- package/dist/maintenance-scheduler.js +41 -0
- package/dist/maintenance-scheduler.js.map +1 -0
- package/dist/process-administration.d.ts +30 -0
- package/dist/process-administration.d.ts.map +1 -0
- package/dist/process-administration.js +13 -0
- package/dist/process-administration.js.map +1 -0
- package/dist/realtime.d.ts +33 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +238 -0
- package/dist/realtime.js.map +1 -0
- package/dist/reconciliation.d.ts +41 -0
- package/dist/reconciliation.d.ts.map +1 -0
- package/dist/reconciliation.js +19 -0
- package/dist/reconciliation.js.map +1 -0
- package/dist/records.d.ts +137 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +2 -0
- package/dist/records.js.map +1 -0
- package/dist/reference.d.ts +97 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.js +157 -0
- package/dist/reference.js.map +1 -0
- package/dist/reminder-administration.d.ts +35 -0
- package/dist/reminder-administration.d.ts.map +1 -0
- package/dist/reminder-administration.js +13 -0
- package/dist/reminder-administration.js.map +1 -0
- package/dist/reminder-scheduler.d.ts +18 -0
- package/dist/reminder-scheduler.d.ts.map +1 -0
- package/dist/reminder-scheduler.js +88 -0
- package/dist/reminder-scheduler.js.map +1 -0
- package/dist/repository.d.ts +142 -0
- package/dist/repository.d.ts.map +1 -0
- package/dist/repository.js +1237 -0
- package/dist/repository.js.map +1 -0
- package/dist/retention.d.ts +17 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +13 -0
- package/dist/retention.js.map +1 -0
- package/dist/runtime.d.ts +140 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1737 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +8 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +260 -0
- package/dist/schema.js.map +1 -0
- package/dist/serialization.d.ts +11 -0
- package/dist/serialization.d.ts.map +1 -0
- package/dist/serialization.js +82 -0
- package/dist/serialization.js.map +1 -0
- package/dist/test-helper.d.ts +15 -0
- package/dist/test-helper.d.ts.map +1 -0
- package/dist/test-helper.js +69 -0
- package/dist/test-helper.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/wake-up/postgresql.d.ts +42 -0
- package/dist/wake-up/postgresql.d.ts.map +1 -0
- package/dist/wake-up/postgresql.js +234 -0
- package/dist/wake-up/postgresql.js.map +1 -0
- package/dist/wake-up/redis.d.ts +35 -0
- package/dist/wake-up/redis.d.ts.map +1 -0
- package/dist/wake-up/redis.js +151 -0
- package/dist/wake-up/redis.js.map +1 -0
- package/dist/wake-up.d.ts +24 -0
- package/dist/wake-up.d.ts.map +1 -0
- package/dist/wake-up.js +66 -0
- package/dist/wake-up.js.map +1 -0
- package/dist/worker.d.ts +36 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +281 -0
- package/dist/worker.js.map +1 -0
- package/docs/api.md +197 -0
- package/docs/architecture.md +113 -0
- package/docs/authorization.md +31 -0
- package/docs/browser-protocol.md +93 -0
- package/docs/configuration.md +168 -0
- package/docs/correctness.md +53 -0
- package/docs/errors-and-recovery.md +89 -0
- package/docs/operations.md +170 -0
- package/docs/parity.md +94 -0
- package/docs/releasing.md +45 -0
- package/docs/state-and-lifecycle.md +162 -0
- package/package.json +100 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { SyncInsideTransaction, UnknownOperation } from "./errors.js";
|
|
2
|
+
export class MessageReference {
|
|
3
|
+
runtime;
|
|
4
|
+
databaseTransactionActive;
|
|
5
|
+
id;
|
|
6
|
+
requestId;
|
|
7
|
+
actorType;
|
|
8
|
+
actorId;
|
|
9
|
+
sequence;
|
|
10
|
+
operation;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.runtime = options.runtime;
|
|
13
|
+
this.id = options.id;
|
|
14
|
+
this.requestId = options.requestId;
|
|
15
|
+
this.actorType = options.actorType;
|
|
16
|
+
this.actorId = options.actorId;
|
|
17
|
+
this.sequence = options.sequence;
|
|
18
|
+
this.operation = options.operation ?? "unknown";
|
|
19
|
+
this.databaseTransactionActive = options.databaseTransactionActive ?? (() => false);
|
|
20
|
+
Object.freeze(this);
|
|
21
|
+
}
|
|
22
|
+
status(options = {}) {
|
|
23
|
+
return this.runtime.messageStatus(this, options);
|
|
24
|
+
}
|
|
25
|
+
result(options = {}) {
|
|
26
|
+
return this.runtime.messageResult(this, options);
|
|
27
|
+
}
|
|
28
|
+
wait(options = {}) {
|
|
29
|
+
if (this.databaseTransactionActive()) {
|
|
30
|
+
throw new SyncInsideTransaction({
|
|
31
|
+
actorType: this.actorType,
|
|
32
|
+
actorId: this.actorId,
|
|
33
|
+
operation: this.operation,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return this.runtime.wait(this, options);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class ActorMessageSenderCore {
|
|
40
|
+
reference;
|
|
41
|
+
constructor(reference) {
|
|
42
|
+
this.reference = reference;
|
|
43
|
+
}
|
|
44
|
+
with(options) {
|
|
45
|
+
return createMessageSender(this.reference, options);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class ActorReferenceCore {
|
|
49
|
+
send;
|
|
50
|
+
runtime;
|
|
51
|
+
actorClass;
|
|
52
|
+
actorType;
|
|
53
|
+
actorId;
|
|
54
|
+
operations;
|
|
55
|
+
queries;
|
|
56
|
+
constructor(options) {
|
|
57
|
+
this.runtime = options.runtime;
|
|
58
|
+
this.actorClass = options.actorClass;
|
|
59
|
+
this.actorType = options.actorType;
|
|
60
|
+
this.actorId = options.actorId;
|
|
61
|
+
this.operations = options.operations;
|
|
62
|
+
this.queries = options.queries;
|
|
63
|
+
this.send = createMessageSender(this, {});
|
|
64
|
+
}
|
|
65
|
+
with(options) {
|
|
66
|
+
return createInvoker(this, options);
|
|
67
|
+
}
|
|
68
|
+
snapshot(options = {}) {
|
|
69
|
+
return this.runtime.snapshot(this, options);
|
|
70
|
+
}
|
|
71
|
+
destroy(options = {}) {
|
|
72
|
+
return this.runtime.destroy(this, options);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function createActorReference(options) {
|
|
76
|
+
const reference = new ActorReferenceCore(options);
|
|
77
|
+
return createReferenceProxy(reference, {});
|
|
78
|
+
}
|
|
79
|
+
export function createStagedOperations(operations, dispatch) {
|
|
80
|
+
return createStagedOperationMap(operations, dispatch);
|
|
81
|
+
}
|
|
82
|
+
export function createStagedOperationMap(operations, dispatch) {
|
|
83
|
+
return new Proxy({}, {
|
|
84
|
+
get(_target, property) {
|
|
85
|
+
if (typeof property !== "string")
|
|
86
|
+
return undefined;
|
|
87
|
+
assertOperation(operations, property);
|
|
88
|
+
return (...argumentsValue) => dispatch(property, operationArguments(argumentsValue));
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function createReferenceProxy(reference, options) {
|
|
93
|
+
return new Proxy(reference, {
|
|
94
|
+
get(target, property) {
|
|
95
|
+
if (typeof property !== "string")
|
|
96
|
+
return Reflect.get(target, property);
|
|
97
|
+
if (target.operations.has(property)) {
|
|
98
|
+
return (...argumentsValue) => target.runtime.invoke({
|
|
99
|
+
reference: target,
|
|
100
|
+
operation: property,
|
|
101
|
+
argumentsValue: operationArguments(argumentsValue),
|
|
102
|
+
options,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (target.queries.has(property)) {
|
|
106
|
+
return target.runtime.invoke({
|
|
107
|
+
reference: target,
|
|
108
|
+
operation: property,
|
|
109
|
+
argumentsValue: {},
|
|
110
|
+
options,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return Reflect.get(target, property);
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function createInvoker(reference, options) {
|
|
118
|
+
return createReferenceProxy(reference, options);
|
|
119
|
+
}
|
|
120
|
+
function createMessageSender(reference, options) {
|
|
121
|
+
const sender = new ActorMessageSenderCore(reference);
|
|
122
|
+
return new Proxy(sender, {
|
|
123
|
+
get(target, property) {
|
|
124
|
+
if (typeof property !== "string")
|
|
125
|
+
return Reflect.get(target, property);
|
|
126
|
+
if (!reference.operations.has(property))
|
|
127
|
+
return Reflect.get(target, property);
|
|
128
|
+
return (...argumentsValue) => reference.runtime.sendMessage({
|
|
129
|
+
reference,
|
|
130
|
+
operation: property,
|
|
131
|
+
argumentsValue: operationArguments(argumentsValue),
|
|
132
|
+
options,
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
function assertOperation(operations, operation) {
|
|
138
|
+
if (!operations.has(operation)) {
|
|
139
|
+
throw new UnknownOperation(`unknown operation ${JSON.stringify(operation)}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function operationArguments(argumentsValue) {
|
|
143
|
+
if (argumentsValue.length === 0)
|
|
144
|
+
return {};
|
|
145
|
+
if (argumentsValue.length > 1)
|
|
146
|
+
throw new TypeError("actor operations accept at most one arguments object");
|
|
147
|
+
const value = argumentsValue[0];
|
|
148
|
+
if (value === undefined)
|
|
149
|
+
return {};
|
|
150
|
+
if (!isRecord(value))
|
|
151
|
+
throw new TypeError("actor operation arguments must be an object");
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
function isRecord(value) {
|
|
155
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AA0GrE,MAAM,OAAO,gBAAgB;IACV,OAAO,CAAqB;IAC5B,yBAAyB,CAAe;IAChD,EAAE,CAAQ;IACV,SAAS,CAAQ;IACjB,SAAS,CAAQ;IACjB,OAAO,CAAQ;IACf,QAAQ,CAAQ;IACR,SAAS,CAAQ;IAElC,YAAY,OASX;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAA;QAC/C,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;QACnF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,UAA2B,EAAE;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,UAA2B,EAAE;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAS,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,CAAC,UAA6B,EAAE;QAClC,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,SAAwC;QAAxC,cAAS,GAAT,SAAS,CAA+B;IAAG,CAAC;IAEzE,IAAI,CAAC,OAA+B;QAClC,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IACpB,IAAI,CAA+B;IACnC,OAAO,CAAqB;IAC5B,UAAU,CAAuB;IACjC,SAAS,CAAQ;IACjB,OAAO,CAAQ;IACf,UAAU,CAAqB;IAC/B,OAAO,CAAqB;IAErC,YAAY,OAOX;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,OAA0B;QAC7B,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ,CAAC,UAA2B,EAAE;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAsC,CAAA;IAClF,CAAC;IAED,OAAO,CAAC,UAA0B,EAAE;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAA0B,OAO7D;IACC,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACjD,OAAO,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAA+B,EAC/B,QAAiE;IAEjE,OAAO,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAA2C,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAA+B,EAC/B,QAAiE;IAEjE,OAAO,IAAI,KAAK,CACd,EAAE,EACF;QACE,GAAG,CAAC,OAAO,EAAE,QAAQ;YACnB,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YAClD,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,cAAyB,EAAE,EAAE,CACtC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAA;QAC1D,CAAC;KACF,CACqB,CAAA;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAwC,EACxC,OAA0B;IAE1B,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;QAC1B,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACtE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,cAAyB,EAAE,EAAE,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBACpB,SAAS,EAAE,MAAM;oBACjB,SAAS,EAAE,QAAQ;oBACnB,cAAc,EAAE,kBAAkB,CAAC,cAAc,CAAC;oBAClD,OAAO;iBACR,CAAC,CAAA;YACN,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC3B,SAAS,EAAE,MAAM;oBACjB,SAAS,EAAE,QAAQ;oBACnB,cAAc,EAAE,EAAE;oBAClB,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC;KACF,CAA8B,CAAA;AACjC,CAAC;AAED,SAAS,aAAa,CACpB,SAAwC,EACxC,OAA0B;IAE1B,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAA4B,CAAA;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAwC,EACxC,OAA+B;IAE/B,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACpD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YAC7E,OAAO,CAAC,GAAG,cAAyB,EAAE,EAAE,CACtC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC5B,SAAS;gBACT,SAAS,EAAE,QAAQ;gBACnB,cAAc,EAAE,kBAAkB,CAAC,cAAc,CAAC;gBAClD,OAAO;aACR,CAAC,CAAA;QACN,CAAC;KACF,CAAkC,CAAA;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,UAA+B,EAAE,SAAiB;IACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,gBAAgB,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,cAAkC;IAC5D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAA;IACxF,OAAO,KAAmB,CAAA;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { SolidObjectsRuntime } from "./runtime.js";
|
|
2
|
+
import type { AdministrationOptions } from "./types.js";
|
|
3
|
+
export type ReminderStatus = "scheduled" | "paused" | "completed";
|
|
4
|
+
export interface ReminderRecord {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly actorType: string;
|
|
7
|
+
readonly actorId: string;
|
|
8
|
+
readonly operation: string;
|
|
9
|
+
readonly runAt: Date;
|
|
10
|
+
readonly intervalMilliseconds: number | null;
|
|
11
|
+
readonly missedPolicy: "latest" | "all";
|
|
12
|
+
readonly occurrence: number;
|
|
13
|
+
readonly status: ReminderStatus;
|
|
14
|
+
readonly errorName: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface ReminderPage {
|
|
17
|
+
readonly items: readonly ReminderRecord[];
|
|
18
|
+
readonly nextCursor: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface ReminderPageOptions extends AdministrationOptions {
|
|
21
|
+
actorType?: string;
|
|
22
|
+
status?: ReminderStatus;
|
|
23
|
+
cursor?: string;
|
|
24
|
+
limit?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ResumeReminderOptions extends AdministrationOptions {
|
|
27
|
+
runAt?: Date;
|
|
28
|
+
}
|
|
29
|
+
export declare class ReminderManager {
|
|
30
|
+
private readonly runtime;
|
|
31
|
+
constructor(runtime: SolidObjectsRuntime);
|
|
32
|
+
all(options?: ReminderPageOptions): Promise<ReminderPage>;
|
|
33
|
+
resume(id: string, options?: ResumeReminderOptions): Promise<ReminderRecord>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=reminder-administration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-administration.d.ts","sourceRoot":"","sources":["../src/reminder-administration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;IACpB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,KAAK,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,KAAK,CAAC,EAAE,IAAI,CAAA;CACb;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAEzD,GAAG,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC;IAI7D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,cAAc,CAAC;CAGjF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class ReminderManager {
|
|
2
|
+
runtime;
|
|
3
|
+
constructor(runtime) {
|
|
4
|
+
this.runtime = runtime;
|
|
5
|
+
}
|
|
6
|
+
all(options = {}) {
|
|
7
|
+
return this.runtime.inspectReminders(options);
|
|
8
|
+
}
|
|
9
|
+
resume(id, options = {}) {
|
|
10
|
+
return this.runtime.resumeReminder(id, options);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=reminder-administration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-administration.js","sourceRoot":"","sources":["../src/reminder-administration.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAE7D,GAAG,CAAC,UAA+B,EAAE;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,UAAiC,EAAE;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SolidObjectsRuntime } from "./runtime.js";
|
|
2
|
+
export declare class ReminderScheduler {
|
|
3
|
+
private readonly runtime;
|
|
4
|
+
readonly processId: `${string}-${string}-${string}-${string}-${string}`;
|
|
5
|
+
private registered;
|
|
6
|
+
private stopping;
|
|
7
|
+
constructor(runtime: SolidObjectsRuntime);
|
|
8
|
+
runOnce(): Promise<number>;
|
|
9
|
+
runUntilIdle(options?: {
|
|
10
|
+
maxReminders?: number;
|
|
11
|
+
}): Promise<number>;
|
|
12
|
+
run(signal: AbortSignal): Promise<void>;
|
|
13
|
+
requestShutdown(): void;
|
|
14
|
+
stopped(): boolean;
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
private ensureRegistered;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=reminder-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-scheduler.d.ts","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,QAAQ,CAAC,SAAS,sDAAe;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;gBAEK,OAAO,EAAE,mBAAmB;IAEnD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IA2B1B,YAAY,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAWtE,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,eAAe,IAAI,IAAI;IAIvB,OAAO,IAAI,OAAO;IAIZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,gBAAgB;CAK/B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { UnknownOperation } from "./errors.js";
|
|
3
|
+
export class ReminderScheduler {
|
|
4
|
+
runtime;
|
|
5
|
+
processId = randomUUID();
|
|
6
|
+
registered = false;
|
|
7
|
+
stopping = false;
|
|
8
|
+
constructor(runtime) {
|
|
9
|
+
this.runtime = runtime;
|
|
10
|
+
}
|
|
11
|
+
async runOnce() {
|
|
12
|
+
if (this.stopping)
|
|
13
|
+
return 0;
|
|
14
|
+
await this.ensureRegistered();
|
|
15
|
+
await this.runtime.repository.heartbeatProcess(this.processId);
|
|
16
|
+
const reminder = await this.runtime.repository.claimReminder(this.processId);
|
|
17
|
+
if (!reminder)
|
|
18
|
+
return 0;
|
|
19
|
+
try {
|
|
20
|
+
await this.runtime.executeReminder(reminder);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof UnknownOperation) {
|
|
24
|
+
await this.runtime.repository.failReminder(reminder, error);
|
|
25
|
+
this.runtime.settings.logger.error({
|
|
26
|
+
event: "solid_objects.reminder_paused",
|
|
27
|
+
reminderId: reminder.id,
|
|
28
|
+
actorType: reminder.actor_type,
|
|
29
|
+
actorId: reminder.actor_id,
|
|
30
|
+
operation: reminder.operation,
|
|
31
|
+
error: error.message,
|
|
32
|
+
});
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
await this.runtime.repository.releaseReminder(reminder);
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
return 1;
|
|
39
|
+
}
|
|
40
|
+
async runUntilIdle(options = {}) {
|
|
41
|
+
const maxReminders = options.maxReminders ?? 10_000;
|
|
42
|
+
let processed = 0;
|
|
43
|
+
while (!this.stopping && processed < maxReminders) {
|
|
44
|
+
const count = await this.runOnce();
|
|
45
|
+
if (count === 0)
|
|
46
|
+
break;
|
|
47
|
+
processed += count;
|
|
48
|
+
}
|
|
49
|
+
return processed;
|
|
50
|
+
}
|
|
51
|
+
async run(signal) {
|
|
52
|
+
await this.ensureRegistered();
|
|
53
|
+
while (!signal.aborted && !this.stopping) {
|
|
54
|
+
const wakeUp = await this.runtime.settings.wakeUp.watch("reminders");
|
|
55
|
+
const processed = await this.runOnce();
|
|
56
|
+
if (processed === 0) {
|
|
57
|
+
await wakeUp.wait({
|
|
58
|
+
timeoutMilliseconds: this.runtime.settings.pollingIntervalMilliseconds,
|
|
59
|
+
signal,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
await this.stop();
|
|
64
|
+
}
|
|
65
|
+
requestShutdown() {
|
|
66
|
+
this.stopping = true;
|
|
67
|
+
}
|
|
68
|
+
stopped() {
|
|
69
|
+
return this.stopping;
|
|
70
|
+
}
|
|
71
|
+
async stop() {
|
|
72
|
+
if (this.stopping && !this.registered)
|
|
73
|
+
return;
|
|
74
|
+
this.stopping = true;
|
|
75
|
+
if (!this.registered)
|
|
76
|
+
return;
|
|
77
|
+
await this.runtime.repository.startDrainingProcess(this.processId);
|
|
78
|
+
await this.runtime.repository.stopProcess(this.processId);
|
|
79
|
+
this.registered = false;
|
|
80
|
+
}
|
|
81
|
+
async ensureRegistered() {
|
|
82
|
+
if (this.registered)
|
|
83
|
+
return;
|
|
84
|
+
await this.runtime.repository.registerProcess(this.processId, "reminder_scheduler");
|
|
85
|
+
this.registered = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=reminder-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-scheduler.js","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { ActorIntents } from "./actor.js";
|
|
2
|
+
import type { RuntimeSettings } from "./configuration.js";
|
|
3
|
+
import type { DatabaseConnection } from "./database/types.js";
|
|
4
|
+
import type { BroadcastRow, ActivationLease, ClaimedTurn, DeadLetterRow, EffectRow, EnqueueInput, InstanceRow, MessageRow, ProcessRow, ReminderRow } from "./records.js";
|
|
5
|
+
import type { RetentionTarget } from "./retention.js";
|
|
6
|
+
import type { JsonObject, JsonValue } from "./types.js";
|
|
7
|
+
export interface SyncDiagnosticsRecord {
|
|
8
|
+
message: MessageRow;
|
|
9
|
+
instance: InstanceRow;
|
|
10
|
+
process: ProcessRow | undefined;
|
|
11
|
+
status: "ready" | "claimed" | "completed" | "rejected" | "dead" | "unknown";
|
|
12
|
+
readyAvailableAtMilliseconds: number | undefined;
|
|
13
|
+
blocker: (MessageRow & {
|
|
14
|
+
membership_status: "ready" | "claimed";
|
|
15
|
+
}) | undefined;
|
|
16
|
+
nowMilliseconds: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class Repository {
|
|
19
|
+
private readonly settings;
|
|
20
|
+
constructor(settings: RuntimeSettings);
|
|
21
|
+
table(name: string): string;
|
|
22
|
+
registerProcess(processId: string, kind: string): Promise<void>;
|
|
23
|
+
startDrainingProcess(processId: string): Promise<void>;
|
|
24
|
+
stopProcess(processId: string): Promise<void>;
|
|
25
|
+
heartbeatProcess(processId: string): Promise<void>;
|
|
26
|
+
listProcesses(): Promise<{
|
|
27
|
+
rows: ProcessRow[];
|
|
28
|
+
staleAtMilliseconds: number;
|
|
29
|
+
}>;
|
|
30
|
+
cleanupStaleProcesses(): Promise<number>;
|
|
31
|
+
private releaseProcessOwnership;
|
|
32
|
+
enqueue(input: EnqueueInput): Promise<MessageRow>;
|
|
33
|
+
enqueueInTransaction(connection: DatabaseConnection, input: EnqueueInput): Promise<MessageRow>;
|
|
34
|
+
claim(processId: string, options?: {
|
|
35
|
+
instanceId?: string;
|
|
36
|
+
activation?: ActivationLease;
|
|
37
|
+
}): Promise<ClaimedTurn | undefined>;
|
|
38
|
+
private claimCandidate;
|
|
39
|
+
renewTurn(turn: ClaimedTurn): Promise<void>;
|
|
40
|
+
releaseFailedTurnSetup(turn: ClaimedTurn): Promise<void>;
|
|
41
|
+
renewActivation(activation: ActivationLease): Promise<void>;
|
|
42
|
+
releaseActivation(activation: ActivationLease): Promise<void>;
|
|
43
|
+
yieldReadyMessages(instanceId: string): Promise<number>;
|
|
44
|
+
complete(turn: ClaimedTurn, input: {
|
|
45
|
+
state: Record<string, JsonValue>;
|
|
46
|
+
stateVersion: number;
|
|
47
|
+
result: JsonValue;
|
|
48
|
+
broadcastObservables?: Record<string, JsonValue>;
|
|
49
|
+
intents: ActorIntents;
|
|
50
|
+
executeCommitAction(intent: ActorIntents["commitActions"][number], connection: DatabaseConnection): Promise<void>;
|
|
51
|
+
}): Promise<{
|
|
52
|
+
reminderReplacements: Array<{
|
|
53
|
+
reminderId: string;
|
|
54
|
+
operation: string;
|
|
55
|
+
previousRunAtMilliseconds: number;
|
|
56
|
+
nextRunAtMilliseconds: number;
|
|
57
|
+
}>;
|
|
58
|
+
}>;
|
|
59
|
+
listReminders(options: {
|
|
60
|
+
actorType?: string;
|
|
61
|
+
status?: "scheduled" | "paused" | "completed";
|
|
62
|
+
cursor?: string;
|
|
63
|
+
limit: number;
|
|
64
|
+
}): Promise<ReminderRow[]>;
|
|
65
|
+
resumeReminder(options: {
|
|
66
|
+
id: string;
|
|
67
|
+
runAtMilliseconds?: number;
|
|
68
|
+
}): Promise<{
|
|
69
|
+
reminder: ReminderRow;
|
|
70
|
+
resumed: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
private findReminderInConnection;
|
|
73
|
+
reject(turn: ClaimedTurn, rejection: {
|
|
74
|
+
code: string;
|
|
75
|
+
message: string;
|
|
76
|
+
details: unknown;
|
|
77
|
+
}): Promise<void>;
|
|
78
|
+
fail(turn: ClaimedTurn, options: {
|
|
79
|
+
error: unknown;
|
|
80
|
+
retryable: boolean;
|
|
81
|
+
}): Promise<"dead" | "retrying">;
|
|
82
|
+
findMessage(id: string): Promise<MessageRow | undefined>;
|
|
83
|
+
messageStatus(id: string): Promise<"ready" | "claimed" | "completed" | "rejected" | "dead" | "unknown">;
|
|
84
|
+
syncDiagnostics(messageId: string): Promise<SyncDiagnosticsRecord | undefined>;
|
|
85
|
+
listDeadLetters(): Promise<DeadLetterRow[]>;
|
|
86
|
+
findDeadLetter(id: string): Promise<DeadLetterRow | undefined>;
|
|
87
|
+
retryDeadLetter(options: {
|
|
88
|
+
id: string;
|
|
89
|
+
initialState: JsonObject;
|
|
90
|
+
stateVersion: number;
|
|
91
|
+
}): Promise<MessageRow>;
|
|
92
|
+
findInstanceByIdentity(actorType: string, actorId: string): Promise<InstanceRow | undefined>;
|
|
93
|
+
activeInstances(options: {
|
|
94
|
+
actorType?: string;
|
|
95
|
+
cursor?: string;
|
|
96
|
+
limit: number;
|
|
97
|
+
}): Promise<InstanceRow[]>;
|
|
98
|
+
instancesWithoutPendingWork(options: {
|
|
99
|
+
actorType?: string;
|
|
100
|
+
cursor?: string;
|
|
101
|
+
limit: number;
|
|
102
|
+
quietForMilliseconds: number;
|
|
103
|
+
}): Promise<InstanceRow[]>;
|
|
104
|
+
instanceStatesFor(options: {
|
|
105
|
+
actorType: string;
|
|
106
|
+
actorIds: readonly string[];
|
|
107
|
+
}): Promise<InstanceRow[]>;
|
|
108
|
+
orphanedInstances(options: {
|
|
109
|
+
actorType: string;
|
|
110
|
+
ownerIds: readonly string[];
|
|
111
|
+
cursor?: string;
|
|
112
|
+
limit: number;
|
|
113
|
+
}): Promise<InstanceRow[]>;
|
|
114
|
+
previewRetention(target: RetentionTarget): Promise<number>;
|
|
115
|
+
pruneRetention(target: RetentionTarget): Promise<number>;
|
|
116
|
+
private retentionPredicate;
|
|
117
|
+
private messageRetentionPredicate;
|
|
118
|
+
private instanceRetentionPredicate;
|
|
119
|
+
private processRetentionPredicate;
|
|
120
|
+
private findDeadLetterInConnection;
|
|
121
|
+
destroy(actorType: string, actorId: string): Promise<boolean>;
|
|
122
|
+
resetForTesting(): Promise<void>;
|
|
123
|
+
claimEffect(processId: string): Promise<EffectRow | undefined>;
|
|
124
|
+
completeEffect(effect: EffectRow, result: JsonValue): Promise<void>;
|
|
125
|
+
failEffect(options: {
|
|
126
|
+
effect: EffectRow;
|
|
127
|
+
error: unknown;
|
|
128
|
+
retryable: boolean;
|
|
129
|
+
}): Promise<void>;
|
|
130
|
+
claimReminder(processId: string): Promise<ReminderRow | undefined>;
|
|
131
|
+
enqueueReminder(reminder: ReminderRow): Promise<void>;
|
|
132
|
+
releaseReminder(reminder: ReminderRow): Promise<void>;
|
|
133
|
+
failReminder(reminder: ReminderRow, error: unknown): Promise<void>;
|
|
134
|
+
claimBroadcast(processId: string): Promise<BroadcastRow | undefined>;
|
|
135
|
+
completeBroadcast(broadcast: BroadcastRow): Promise<void>;
|
|
136
|
+
failBroadcast(broadcast: BroadcastRow, error: unknown): Promise<void>;
|
|
137
|
+
private findInstance;
|
|
138
|
+
private recoverExpiredClaims;
|
|
139
|
+
private assertFence;
|
|
140
|
+
private releaseClaim;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|