@shivaedev/jobs 0.31.0 → 0.32.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 +24 -0
- package/README.md +57 -26
- package/dist/server/adapters/inspection.d.ts +5 -0
- package/dist/server/adapters/inspection.d.ts.map +1 -0
- package/dist/server/adapters/inspection.js +25 -0
- package/dist/server/adapters/inspection.js.map +1 -0
- package/dist/server/adapters/inspectionChanges.d.ts +7 -0
- package/dist/server/adapters/inspectionChanges.d.ts.map +1 -0
- package/dist/server/adapters/inspectionChanges.js +23 -0
- package/dist/server/adapters/inspectionChanges.js.map +1 -0
- package/dist/server/adapters/inspectionDeferrals.d.ts +10 -0
- package/dist/server/adapters/inspectionDeferrals.d.ts.map +1 -0
- package/dist/server/adapters/inspectionDeferrals.js +13 -0
- package/dist/server/adapters/inspectionDeferrals.js.map +1 -0
- package/dist/server/adapters/inspectionJobs.d.ts +50 -0
- package/dist/server/adapters/inspectionJobs.d.ts.map +1 -0
- package/dist/server/adapters/inspectionJobs.js +21 -0
- package/dist/server/adapters/inspectionJobs.js.map +1 -0
- package/dist/server/adapters/inspectionOperation.d.ts +3 -0
- package/dist/server/adapters/inspectionOperation.d.ts.map +1 -0
- package/dist/server/adapters/inspectionOperation.js +6 -0
- package/dist/server/adapters/inspectionOperation.js.map +1 -0
- package/dist/server/adapters/inspectionPlan.d.ts +3 -0
- package/dist/server/adapters/inspectionPlan.d.ts.map +1 -0
- package/dist/server/adapters/inspectionPlan.js +20 -0
- package/dist/server/adapters/inspectionPlan.js.map +1 -0
- package/dist/server/adapters/inspectionReads.d.ts +59 -0
- package/dist/server/adapters/inspectionReads.d.ts.map +1 -0
- package/dist/server/adapters/inspectionReads.js +44 -0
- package/dist/server/adapters/inspectionReads.js.map +1 -0
- package/dist/server/adapters/inspectionSnapshot.d.ts +6 -0
- package/dist/server/adapters/inspectionSnapshot.d.ts.map +1 -0
- package/dist/server/{internal/testingSnapshot.js → adapters/inspectionSnapshot.js} +9 -7
- package/dist/server/adapters/inspectionSnapshot.js.map +1 -0
- package/dist/server/adapters/jobEngine.d.ts.map +1 -1
- package/dist/server/adapters/jobEngine.js +0 -4
- package/dist/server/adapters/jobEngine.js.map +1 -1
- package/dist/server/adapters/payloadIdentity.d.ts +3 -0
- package/dist/server/adapters/payloadIdentity.d.ts.map +1 -0
- package/dist/server/adapters/payloadIdentity.js +14 -0
- package/dist/server/adapters/payloadIdentity.js.map +1 -0
- package/dist/server/{internal/testingSignal.d.ts → adapters/queueSignal.d.ts} +2 -2
- package/dist/server/adapters/queueSignal.d.ts.map +1 -0
- package/dist/server/{internal/testingSignal.js → adapters/queueSignal.js} +2 -2
- package/dist/server/adapters/queueSignal.js.map +1 -0
- package/dist/server/adapters/testingClient.d.ts +1 -2
- package/dist/server/adapters/testingClient.d.ts.map +1 -1
- package/dist/server/adapters/testingClient.js +23 -45
- package/dist/server/adapters/testingClient.js.map +1 -1
- package/dist/server/adapters/testingController.d.ts +57 -12
- package/dist/server/adapters/testingController.d.ts.map +1 -1
- package/dist/server/adapters/testingController.js +28 -18
- package/dist/server/adapters/testingController.js.map +1 -1
- package/dist/server/adapters/testingDueNow.js +1 -1
- package/dist/server/adapters/testingDueNow.js.map +1 -1
- package/dist/server/adapters/testingEngine.d.ts.map +1 -1
- package/dist/server/adapters/testingEngine.js +0 -11
- package/dist/server/adapters/testingEngine.js.map +1 -1
- package/dist/server/adapters/testingInspectionClient.d.ts +5 -0
- package/dist/server/adapters/testingInspectionClient.d.ts.map +1 -0
- package/dist/server/adapters/testingInspectionClient.js +52 -0
- package/dist/server/adapters/testingInspectionClient.js.map +1 -0
- package/dist/server/client.d.ts +3 -0
- package/dist/server/client.d.ts.map +1 -1
- package/dist/server/clientOptions.d.ts +0 -1
- package/dist/server/clientOptions.d.ts.map +1 -1
- package/dist/server/definition.d.ts +12 -11
- package/dist/server/definition.d.ts.map +1 -1
- package/dist/server/definition.js +2 -1
- package/dist/server/definition.js.map +1 -1
- package/dist/server/engineClient.d.ts +0 -5
- package/dist/server/engineClient.d.ts.map +1 -1
- package/dist/server/enqueueOptions.d.ts +6 -0
- package/dist/server/enqueueOptions.d.ts.map +1 -1
- package/dist/server/error.d.ts +1 -1
- package/dist/server/error.d.ts.map +1 -1
- package/dist/server/error.js.map +1 -1
- package/dist/server/inspection.d.ts +102 -0
- package/dist/server/inspection.d.ts.map +1 -0
- package/dist/server/inspection.js +30 -0
- package/dist/server/inspection.js.map +1 -0
- package/dist/server/internal/adapters/testingFetches.d.ts +2 -2
- package/dist/server/internal/adapters/testingFetches.d.ts.map +1 -1
- package/dist/server/internal/adapters/testingFetches.js.map +1 -1
- package/dist/server/internal/deferral.d.ts +0 -2
- package/dist/server/internal/deferral.d.ts.map +1 -1
- package/dist/server/internal/deferral.js +0 -1
- package/dist/server/internal/deferral.js.map +1 -1
- package/dist/server/internal/engine.d.ts +0 -5
- package/dist/server/internal/engine.d.ts.map +1 -1
- package/dist/server/internal/engine.js.map +1 -1
- package/dist/server/internal/enqueueFor.d.ts.map +1 -1
- package/dist/server/internal/enqueueFor.js +11 -1
- package/dist/server/internal/enqueueFor.js.map +1 -1
- package/dist/server/internal/jobStorePlans.d.ts.map +1 -1
- package/dist/server/internal/jobStorePlans.js +2 -1
- package/dist/server/internal/jobStorePlans.js.map +1 -1
- package/dist/server/internal/makeService.d.ts.map +1 -1
- package/dist/server/internal/makeService.js +7 -6
- package/dist/server/internal/makeService.js.map +1 -1
- package/dist/server/internal/register.d.ts.map +1 -1
- package/dist/server/internal/register.js +0 -4
- package/dist/server/internal/register.js.map +1 -1
- package/dist/server/internal/testingIdle.d.ts +3 -2
- package/dist/server/internal/testingIdle.d.ts.map +1 -1
- package/dist/server/internal/testingIdle.js +5 -25
- package/dist/server/internal/testingIdle.js.map +1 -1
- package/dist/server/internal/testingOperation.d.ts +5 -0
- package/dist/server/internal/testingOperation.d.ts.map +1 -0
- package/dist/server/internal/testingOperation.js +12 -0
- package/dist/server/internal/testingOperation.js.map +1 -0
- package/dist/server/internal/testingSchedules.d.ts +8 -5
- package/dist/server/internal/testingSchedules.d.ts.map +1 -1
- package/dist/server/internal/testingSchedules.js +14 -9
- package/dist/server/internal/testingSchedules.js.map +1 -1
- package/dist/server/internal/testingWaits.d.ts +7 -4
- package/dist/server/internal/testingWaits.d.ts.map +1 -1
- package/dist/server/internal/testingWaits.js +5 -6
- package/dist/server/internal/testingWaits.js.map +1 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +5 -0
- package/dist/server/schema.js.map +1 -1
- package/dist/server/service.d.ts +4 -4
- package/dist/server/service.d.ts.map +1 -1
- package/dist/server/service.js +1 -0
- package/dist/server/service.js.map +1 -1
- package/dist/server/testing.d.ts +60 -25
- package/dist/server/testing.d.ts.map +1 -1
- package/dist/server/testing.js.map +1 -1
- package/package.json +6 -6
- package/src/server/adapters/inspection.ts +31 -0
- package/src/server/adapters/inspectionChanges.ts +31 -0
- package/src/server/{internal/testingDeferrals.ts → adapters/inspectionDeferrals.ts} +10 -12
- package/src/server/adapters/inspectionJobs.ts +28 -0
- package/src/server/adapters/inspectionOperation.ts +6 -0
- package/src/server/adapters/inspectionPlan.ts +21 -0
- package/src/server/adapters/inspectionReads.ts +55 -0
- package/src/server/{internal/testingSnapshot.ts → adapters/inspectionSnapshot.ts} +15 -17
- package/src/server/adapters/jobEngine.ts +0 -4
- package/src/server/adapters/payloadIdentity.ts +15 -0
- package/src/server/{internal/testingSignal.ts → adapters/queueSignal.ts} +1 -1
- package/src/server/adapters/testingClient.ts +9 -30
- package/src/server/adapters/testingController.ts +37 -21
- package/src/server/adapters/testingDueNow.ts +1 -1
- package/src/server/adapters/testingEngine.ts +0 -13
- package/src/server/adapters/testingInspectionClient.ts +70 -0
- package/src/server/client.ts +3 -0
- package/src/server/clientOptions.ts +0 -1
- package/src/server/definition.ts +18 -12
- package/src/server/engineClient.ts +0 -2
- package/src/server/enqueueOptions.ts +5 -0
- package/src/server/error.ts +1 -0
- package/src/server/inspection.ts +50 -0
- package/src/server/internal/adapters/testingFetches.ts +2 -2
- package/src/server/internal/deferral.ts +0 -2
- package/src/server/internal/engine.ts +0 -6
- package/src/server/internal/enqueueFor.ts +14 -1
- package/src/server/internal/jobStorePlans.ts +2 -1
- package/src/server/internal/makeService.ts +7 -6
- package/src/server/internal/register.ts +0 -4
- package/src/server/internal/testingIdle.ts +7 -30
- package/src/server/internal/testingOperation.ts +18 -0
- package/src/server/internal/testingSchedules.ts +28 -16
- package/src/server/internal/testingWaits.ts +10 -11
- package/src/server/schema.ts +5 -0
- package/src/server/service.ts +5 -2
- package/src/server/testing.ts +1 -12
- package/dist/server/adapters/observeTestingSettlements.d.ts +0 -6
- package/dist/server/adapters/observeTestingSettlements.d.ts.map +0 -1
- package/dist/server/adapters/observeTestingSettlements.js +0 -35
- package/dist/server/adapters/observeTestingSettlements.js.map +0 -1
- package/dist/server/internal/testingDeferrals.d.ts +0 -10
- package/dist/server/internal/testingDeferrals.d.ts.map +0 -1
- package/dist/server/internal/testingDeferrals.js +0 -15
- package/dist/server/internal/testingDeferrals.js.map +0 -1
- package/dist/server/internal/testingReadout.d.ts +0 -10
- package/dist/server/internal/testingReadout.d.ts.map +0 -1
- package/dist/server/internal/testingReadout.js +0 -13
- package/dist/server/internal/testingReadout.js.map +0 -1
- package/dist/server/internal/testingRegistrations.d.ts +0 -4
- package/dist/server/internal/testingRegistrations.d.ts.map +0 -1
- package/dist/server/internal/testingRegistrations.js +0 -8
- package/dist/server/internal/testingRegistrations.js.map +0 -1
- package/dist/server/internal/testingSignal.d.ts.map +0 -1
- package/dist/server/internal/testingSignal.js.map +0 -1
- package/dist/server/internal/testingSnapshot.d.ts +0 -6
- package/dist/server/internal/testingSnapshot.d.ts.map +0 -1
- package/dist/server/internal/testingSnapshot.js.map +0 -1
- package/src/server/adapters/observeTestingSettlements.ts +0 -36
- package/src/server/internal/testingReadout.ts +0 -25
- package/src/server/internal/testingRegistrations.ts +0 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
|
+
import { inspectionOperation } from "#server/adapters/inspectionOperation.ts";
|
|
2
3
|
import { decodeStoredData, quotedSchema } from "#server/internal/storedRows.ts";
|
|
3
|
-
import { testingOperation } from "#server/internal/testingReadout.ts";
|
|
4
4
|
const Rows = Schema.Array(Schema.Struct({
|
|
5
5
|
data: Schema.Unknown,
|
|
6
6
|
id: Schema.String,
|
|
@@ -8,14 +8,16 @@ const Rows = Schema.Array(Schema.Struct({
|
|
|
8
8
|
startAfter: Schema.DateTimeUtcFromDate,
|
|
9
9
|
state: Schema.Literals(["created", "retry", "deferred", "active", "failed"]),
|
|
10
10
|
}));
|
|
11
|
-
export function
|
|
11
|
+
export function inspectionSnapshot(client, schema) {
|
|
12
12
|
return (queues) => {
|
|
13
13
|
const byName = new Map(queues.map((queue) => [queue.name, queue]));
|
|
14
|
-
return
|
|
14
|
+
return inspectionOperation(async () => {
|
|
15
15
|
const quoted = quotedSchema(schema());
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const db = client().getDb?.();
|
|
17
|
+
if (db === undefined) {
|
|
18
|
+
throw new TypeError("This pg-boss client does not support getDb");
|
|
19
|
+
}
|
|
20
|
+
const { rows } = await db.executeSql(`SELECT id, name AS queue, data, start_after AS "startAfter",
|
|
19
21
|
CASE WHEN state = 'retry' AND started_on IS NULL AND start_after > ${quoted}.job_now()
|
|
20
22
|
AND output ? 'jobDeferral'
|
|
21
23
|
THEN 'deferred' ELSE state::text END AS state
|
|
@@ -32,4 +34,4 @@ export function testingSnapshot(client, schema) {
|
|
|
32
34
|
})));
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=inspectionSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectionSnapshot.js","sourceRoot":"","sources":["../../../src/server/adapters/inspectionSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAI9E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEhF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,UAAU,EAAE,MAAM,CAAC,mBAAmB;IACtC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAC5E,CAAC,CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAA0B,EAAE,MAAoB;IAClF,OAAO,CACN,MAAe,EAC6H,EAAE;QAC9I,MAAM,MAAM,GAAG,IAAI,GAAG,CAA0B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5F,OAAO,mBAAmB,CAAC,KAAK,IAAI,EAAE;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,UAAU,CACnC;0EACsE,MAAM;;;YAGpE,MAAM;;6BAEW,EACzB,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACpB,CAAC;YACF,OAAO,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,IAAI,CACN,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,uDAAuD,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,gBAAgB,CAAqD,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAC5F,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAkC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CACvG,CAAC;QACH,CAAC,CAAC,CACF,CACD,CAAC;IACH,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobEngine.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/jobEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"jobEngine.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/jobEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAK5D,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CA8C1G"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { toPgBossError } from "#server/error.ts";
|
|
3
|
-
import { deferralObservers } from "#server/internal/deferral.ts";
|
|
4
3
|
import { listJobs } from "./listJobs.js";
|
|
5
4
|
import { queueAdministration } from "./queueAdministration.js";
|
|
6
5
|
import { settleDeferral } from "./settleDeferral.js";
|
|
@@ -41,9 +40,6 @@ export function jobEngine(client, schema = "pgboss") {
|
|
|
41
40
|
// Native batch settlement must not match a sibling's new claim at the unchanged retry count.
|
|
42
41
|
job.retryCount = Number.MAX_SAFE_INTEGER;
|
|
43
42
|
}
|
|
44
|
-
if (settled.deferred) {
|
|
45
|
-
deferralObservers.get(client)?.();
|
|
46
|
-
}
|
|
47
43
|
}))),
|
|
48
44
|
};
|
|
49
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobEngine.js","sourceRoot":"","sources":["../../../src/server/adapters/jobEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"jobEngine.js","sourceRoot":"","sources":["../../../src/server/adapters/jobEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payloadIdentity.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/payloadIdentity.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ7F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function payloadKey(parts, payload) {
|
|
3
|
+
return JSON.stringify(parts.map((part) => [part, typeof Reflect.get(payload, part), String(Reflect.get(payload, part))]));
|
|
4
|
+
}
|
|
5
|
+
export function payloadJobId(queue, parts, payload) {
|
|
6
|
+
const bytes = createHash("sha256")
|
|
7
|
+
.update(JSON.stringify([queue, payloadKey(parts, payload)]))
|
|
8
|
+
.digest();
|
|
9
|
+
bytes.writeUInt8((bytes.readUInt8(6) & 0x0f) | 0x80, 6);
|
|
10
|
+
bytes.writeUInt8((bytes.readUInt8(8) & 0x3f) | 0x80, 8);
|
|
11
|
+
const hex = bytes.subarray(0, 16).toString("hex");
|
|
12
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=payloadIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payloadIdentity.js","sourceRoot":"","sources":["../../../src/server/adapters/payloadIdentity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,UAAU,CAAC,KAAwB,EAAE,OAAe;IACnE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAwB,EAAE,OAAe;IACpF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D,MAAM,EAAE,CAAC;IACX,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5G,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function queueSignal(): {
|
|
3
3
|
changed(): void;
|
|
4
4
|
revision: Effect.Effect<number, never, never>;
|
|
5
5
|
waitForChange: (after: number) => Effect.Effect<number>;
|
|
6
6
|
};
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=queueSignal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueSignal.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/queueSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,wBAAgB,WAAW;IAIzB,OAAO;IASP,QAAQ;IACR,aAAa,UAAU,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;EAatD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
export function
|
|
2
|
+
export function queueSignal() {
|
|
3
3
|
let revision = 0;
|
|
4
4
|
const listeners = new Set();
|
|
5
5
|
return {
|
|
@@ -26,4 +26,4 @@ export function testingSignal() {
|
|
|
26
26
|
}),
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=queueSignal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueSignal.js","sourceRoot":"","sources":["../../../src/server/adapters/queueSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,UAAU,WAAW;IAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IACxD,OAAO;QACN,OAAO;YACN,QAAQ,IAAI,CAAC,CAAC;YACd,iGAAiG;YACjG,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;YAC/B,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;gBAChC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;QACF,CAAC;QACD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;QACrC,aAAa,EAAE,CAAC,KAAa,EAAyB,EAAE,CACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACxB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,OAAO;YACR,CAAC;YACD,SAAS,QAAQ,CAAC,OAAe;gBAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { PgBossClient } from "#server/client.ts";
|
|
2
1
|
import type { EngineClient } from "#server/engineClient.ts";
|
|
3
2
|
import type { EnqueueOptions } from "#server/enqueueOptions.ts";
|
|
4
3
|
import type { TestingWork } from "#server/internal/testingIdle.ts";
|
|
@@ -10,5 +9,5 @@ export interface TestingControls {
|
|
|
10
9
|
readonly retryPolicy: Pick<EnqueueOptions, "retryBackoff" | "retryDelay">;
|
|
11
10
|
readonly work: TestingWork;
|
|
12
11
|
}
|
|
13
|
-
export declare function testingClient(client: EngineClient, schema: string, controls: TestingControls):
|
|
12
|
+
export declare function testingClient(client: EngineClient, schema: string, controls: TestingControls): EngineClient;
|
|
14
13
|
//# sourceMappingURL=testingClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingClient.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testingClient.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGjF,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,YAAY,CAsG3G"}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { testingEngine } from "#server/adapters/testingEngine.ts";
|
|
3
3
|
import { testingExpirations } from "#server/adapters/testingExpirations.ts";
|
|
4
|
-
import { deferralObservers } from "#server/internal/deferral.ts";
|
|
5
|
-
import { testingRegistration } from "#server/internal/testingRegistrations.ts";
|
|
6
4
|
export function testingClient(client, schema, controls) {
|
|
7
5
|
const engine = testingEngine(client, schema);
|
|
8
|
-
const settlements = Effect.runSync(engine.observeSettlements((name) => {
|
|
9
|
-
for (const batch of controls.work.batches) {
|
|
10
|
-
if (batch.name === name) {
|
|
11
|
-
batch.settled = true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
controls.changed();
|
|
15
|
-
}));
|
|
16
6
|
const expirations = testingExpirations(client);
|
|
17
7
|
async function update(request, data, options) {
|
|
18
8
|
const result = typeof request === "string" ? await client.update(request, data, options) : await client.update(request);
|
|
@@ -26,6 +16,9 @@ export function testingClient(client, schema, controls) {
|
|
|
26
16
|
return result;
|
|
27
17
|
},
|
|
28
18
|
createQueue: (name, options) => {
|
|
19
|
+
if (options?.deadLetter !== undefined) {
|
|
20
|
+
controls.work.queues.add(name);
|
|
21
|
+
}
|
|
29
22
|
const { retryDelayMax, ...rest } = options ?? {};
|
|
30
23
|
return client.createQueue(name, {
|
|
31
24
|
...rest,
|
|
@@ -60,53 +53,39 @@ export function testingClient(client, schema, controls) {
|
|
|
60
53
|
controls.changed();
|
|
61
54
|
return id;
|
|
62
55
|
},
|
|
63
|
-
stop: async (options) => {
|
|
64
|
-
try {
|
|
65
|
-
await client.stop(options);
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
68
|
-
await Effect.runPromise(settlements.close);
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
56
|
update,
|
|
72
57
|
updateQueue: (name, options) => client.updateQueue(name, {
|
|
73
58
|
...options,
|
|
74
59
|
...controls.retryPolicy,
|
|
75
60
|
...(controls.retryPolicy.retryBackoff === false ? { retryDelayMax: null } : {}),
|
|
76
61
|
}),
|
|
77
|
-
work: async (name, options, handler) => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (attempts !== undefined && job.retryCount + 1 >= attempts) {
|
|
88
|
-
await Effect.runPromise(engine.expireAttempt(job));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
ready.push(job);
|
|
92
|
-
}
|
|
62
|
+
work: async (name, options, handler) => client.work(name, options, async (jobs) => {
|
|
63
|
+
const batch = { jobs: new Map(jobs.map((job) => [job.id, job.retryCount])), name, settled: false };
|
|
64
|
+
controls.work.batches.add(batch);
|
|
65
|
+
controls.changed();
|
|
66
|
+
try {
|
|
67
|
+
const ready = [];
|
|
68
|
+
for (const job of jobs) {
|
|
69
|
+
const attempts = await expirations.attemptsFor(job);
|
|
70
|
+
if (attempts !== undefined && job.retryCount + 1 >= attempts) {
|
|
71
|
+
await Effect.runPromise(engine.expireAttempt(job));
|
|
93
72
|
}
|
|
94
|
-
|
|
95
|
-
|
|
73
|
+
else {
|
|
74
|
+
ready.push(job);
|
|
96
75
|
}
|
|
97
76
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
controls.changed();
|
|
77
|
+
if (ready.length > 0) {
|
|
78
|
+
await handler(ready);
|
|
101
79
|
}
|
|
102
|
-
}
|
|
103
|
-
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
controls.work.batches.delete(batch);
|
|
83
|
+
controls.changed();
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
104
86
|
};
|
|
105
87
|
const wrapped = new Proxy(client, {
|
|
106
88
|
get(target, property) {
|
|
107
|
-
if (property === testingRegistration) {
|
|
108
|
-
return (name) => controls.work.queues.add(name);
|
|
109
|
-
}
|
|
110
89
|
if (Object.hasOwn(overrides, property)) {
|
|
111
90
|
const override = Reflect.get(overrides, property);
|
|
112
91
|
return override;
|
|
@@ -115,7 +94,6 @@ export function testingClient(client, schema, controls) {
|
|
|
115
94
|
return typeof value === "function" ? value.bind(target) : value;
|
|
116
95
|
},
|
|
117
96
|
});
|
|
118
|
-
deferralObservers.set(wrapped, controls.changed);
|
|
119
97
|
return wrapped;
|
|
120
98
|
}
|
|
121
99
|
//# sourceMappingURL=testingClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingClient.js","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"testingClient.js","sourceRoot":"","sources":["../../../src/server/adapters/testingClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAgB5E,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc,EAAE,QAAyB;IAC5F,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAG/C,KAAK,UAAU,MAAM,CAAC,OAAqC,EAAE,IAAoB,EAAE,OAA6B;QAC/G,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxH,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAA0B;QACxC,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9C,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC9B,IAAI,OAAO,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC/B,GAAG,IAAI;gBACP,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,KAAK,KAAK,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;gBACxG,GAAG,QAAQ,CAAC,WAAW;aACvB,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;YACjD,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAChC,IAAI,EACJ,IAAI,EACJ;gBACC,GAAG,IAAI;gBACP,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,KAAK,KAAK,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;gBACxG,GAAG,QAAQ,CAAC,WAAW;gBACvB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;aAC7D,EACD,QAAQ,CACR,CAAC;YACF,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM;QACN,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAC9B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;YACxB,GAAG,OAAO;YACV,GAAG,QAAQ,CAAC,WAAW;YACvB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC;QACH,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACtC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAmC,EAAE,EAAE;YACxE,MAAM,KAAK,GAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACjH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACJ,MAAM,KAAK,GAAyB,EAAE,CAAC;gBACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACpD,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;wBAC9D,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC;gBACF,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;oBAAS,CAAC;gBACV,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC;QACF,CAAC,CAAC;KACH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;QACjC,GAAG,CAAC,MAAM,EAAE,QAAQ;YACnB,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3D,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,CAAC;KACD,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -1,33 +1,78 @@
|
|
|
1
|
-
import { Duration, Effect } from "effect";
|
|
2
|
-
import type { PgBossClientFactory } from "#server/client.ts";
|
|
3
|
-
import type { QueueDefinition } from "#server/definition.ts";
|
|
1
|
+
import { Duration, Effect, type Schema } from "effect";
|
|
2
|
+
import type { JobReadOptions, PgBossClientFactory } from "#server/client.ts";
|
|
3
|
+
import type { JobPayloadSchema, QueueDefinition } from "#server/definition.ts";
|
|
4
4
|
import { PgBossTestingError } from "#server/error.ts";
|
|
5
|
+
import type { SnapshotQueue } from "#server/inspection.ts";
|
|
5
6
|
import type { PgBossTestingOptions } from "#server/testing.ts";
|
|
6
|
-
export declare function testingController(
|
|
7
|
+
export declare function testingController(settings?: PgBossTestingOptions): {
|
|
7
8
|
runDeferredNow: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossTestingError, never>;
|
|
8
9
|
runDueNow: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossTestingError, never>;
|
|
9
|
-
deferred: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<{
|
|
10
|
-
at: import("effect/DateTime").Utc;
|
|
11
|
-
reason: string;
|
|
12
|
-
}[], PgBossTestingError, never>;
|
|
13
10
|
schedules: () => Effect.Effect<{
|
|
14
11
|
cron: string;
|
|
15
12
|
name: string;
|
|
16
13
|
timezone: string;
|
|
17
14
|
}[], PgBossTestingError, never>;
|
|
18
|
-
trigger: (schedule: Pick<import("#server/definition.ts").ScheduleDefinition, "name" | "scheduleOptions">) => Effect.Effect<
|
|
15
|
+
trigger: (schedule: Pick<import("#server/definition.ts").ScheduleDefinition, "name" | "scheduleOptions">) => Effect.Effect<string | null, PgBossTestingError, never>;
|
|
19
16
|
fetchesPass: (queue: Pick<QueueDefinition, "name">, count: number, options?: import("#server/testing.ts").PgBossTestingWaitOptions) => Effect.Effect<unknown, PgBossTestingError | import("#server/error.ts").PgBossWaitError, never>;
|
|
20
|
-
untilJob: <TName extends string, TPayload extends
|
|
17
|
+
untilJob: <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(queue: {
|
|
18
|
+
readonly name: TName;
|
|
19
|
+
readonly schema: TPayload;
|
|
20
|
+
}, id: string, state: import("../job.ts").JobState, options?: import("#server/testing.ts").PgBossTestingWaitOptions) => Effect.Effect<import("../job.ts").Job<TPayload["Type"]>, import("#server/error.ts").PgBossPayloadError | PgBossTestingError | import("#server/error.ts").PgBossWaitError, Exclude<TPayload["DecodingServices"], never>>;
|
|
21
|
+
deferred: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<{
|
|
22
|
+
at: import("effect/DateTime").Utc;
|
|
23
|
+
reason: string;
|
|
24
|
+
}[], PgBossTestingError, never>;
|
|
21
25
|
checkBatchWindow: (queue: Pick<QueueDefinition, "name" | "workerOptions">, millisecondsPerJob: number) => Effect.Effect<void, PgBossTestingError, never>;
|
|
22
26
|
checkSchemaVersion: (expected: number) => Effect.Effect<void, PgBossTestingError, never>;
|
|
23
27
|
clientFactory: PgBossClientFactory;
|
|
24
28
|
expireAfter: (queue: Pick<QueueDefinition, "name">, attempts: number) => Effect.Effect<void, PgBossTestingError, never>;
|
|
25
29
|
expireIn: (queue: Pick<QueueDefinition, "name">, duration: Duration.Input) => Effect.Effect<void, PgBossTestingError, never>;
|
|
26
30
|
failNextSend: (queue: Pick<QueueDefinition, "name">) => Effect.Effect<void, never, never>;
|
|
27
|
-
jobs: <TName extends string, TPayload extends
|
|
31
|
+
jobs: <TName extends string, TPayload extends JobPayloadSchema | typeof Schema.Null>(queue: {
|
|
32
|
+
readonly name: TName;
|
|
33
|
+
readonly schema: TPayload;
|
|
34
|
+
}, readOptions?: JobReadOptions) => Effect.Effect<{
|
|
35
|
+
expireInSeconds: number;
|
|
36
|
+
groupId?: string | null;
|
|
37
|
+
groupTier?: string | null;
|
|
38
|
+
heartbeatSeconds: number | null;
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
retryCount: number;
|
|
42
|
+
signal: AbortSignal;
|
|
43
|
+
blocked: boolean;
|
|
44
|
+
blocking: boolean;
|
|
45
|
+
completedOn: Date | null;
|
|
46
|
+
createdOn: Date;
|
|
47
|
+
deadLetter: string;
|
|
48
|
+
deleteAfterSeconds: number;
|
|
49
|
+
heartbeatOn: Date | null;
|
|
50
|
+
keepUntil: Date;
|
|
51
|
+
output: object | null;
|
|
52
|
+
pendingDependencies: number;
|
|
53
|
+
policy: string;
|
|
54
|
+
priority: number;
|
|
55
|
+
retryBackoff: boolean;
|
|
56
|
+
retryDelay: number;
|
|
57
|
+
retryDelayMax?: number;
|
|
58
|
+
retryLimit: number;
|
|
59
|
+
singletonKey: string | null;
|
|
60
|
+
singletonOn: Date | null;
|
|
61
|
+
sourceCreatedOn: Date | null;
|
|
62
|
+
sourceId: string | null;
|
|
63
|
+
sourceName: string | null;
|
|
64
|
+
sourceOutput: object | null;
|
|
65
|
+
sourceRetryCount: number | null;
|
|
66
|
+
sourceRootId: string | null;
|
|
67
|
+
startAfter: Date;
|
|
68
|
+
startedOn: Date | null;
|
|
69
|
+
state: import("../job.ts").JobState;
|
|
70
|
+
data: TPayload["Type"];
|
|
71
|
+
}[], import("#server/error.ts").PgBossPayloadError | PgBossTestingError, TPayload["DecodingServices"]>;
|
|
72
|
+
refreshQueueStats: (queue?: Pick<QueueDefinition, "name">) => Effect.Effect<void, PgBossTestingError, never>;
|
|
28
73
|
revision: Effect.Effect<number, never, never>;
|
|
29
74
|
schemaVersion: Effect.Effect<number | null, PgBossTestingError, never>;
|
|
30
|
-
snapshot: <const TQueues extends readonly
|
|
75
|
+
snapshot: <const TQueues extends readonly SnapshotQueue[]>(queues: TQueues) => Effect.Effect<readonly import("#server/inspection.ts").UnfinishedJob<TQueues[number]>[], import("#server/error.ts").PgBossPayloadError | PgBossTestingError, TQueues[number]["schema"]["DecodingServices"]>;
|
|
31
76
|
waitForChange: (after: number) => Effect.Effect<number>;
|
|
32
77
|
waitForIdle: Effect.Effect<void, PgBossTestingError, never>;
|
|
33
78
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingController.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"testingController.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAY,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAA2B,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,oBAAyB;;;;;;;;;;;;;;sBAwCjD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;;;;8BAIrB,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,eAAe,CAAC,sBAAsB,MAAM;mCAqBtE,MAAM;;yBAOhB,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,MAAM;sBAUlD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,QAAQ,CAAC,KAAK;0BAWnD,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;WAC5C,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,gBAAgB,GAAG,OAAO,MAAM,CAAC,IAAI,SAC3E;QAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,gBAC5C,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAED,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;;;eAI9C,KAAK,CAAC,OAAO,SAAS,SAAS,aAAa,EAAE,UAAU,OAAO;;;EAK3E"}
|
|
@@ -4,25 +4,25 @@ import { testingClient } from "#server/adapters/testingClient.ts";
|
|
|
4
4
|
import { testingDueNow } from "#server/adapters/testingDueNow.ts";
|
|
5
5
|
import { PgBossTestingError } from "#server/error.ts";
|
|
6
6
|
import { testingFetches } from "#server/internal/adapters/testingFetches.ts";
|
|
7
|
-
import { testingDeferrals } from "#server/internal/testingDeferrals.ts";
|
|
8
7
|
import { testingIdle } from "#server/internal/testingIdle.ts";
|
|
9
|
-
import {
|
|
8
|
+
import { testingInspection, testingOperation } from "#server/internal/testingOperation.ts";
|
|
10
9
|
import { testingSchedules } from "#server/internal/testingSchedules.ts";
|
|
11
|
-
import { testingSignal } from "#server/internal/testingSignal.ts";
|
|
12
|
-
import { testingSnapshot } from "#server/internal/testingSnapshot.ts";
|
|
13
10
|
import { testingWaits } from "#server/internal/testingWaits.ts";
|
|
14
|
-
|
|
11
|
+
import { queueSignal } from "./queueSignal.js";
|
|
12
|
+
import { testingInspectionClient } from "./testingInspectionClient.js";
|
|
13
|
+
export function testingController(settings = {}) {
|
|
15
14
|
let current;
|
|
16
15
|
let fetches;
|
|
17
16
|
let schema = "pgboss";
|
|
18
|
-
const signal =
|
|
17
|
+
const signal = queueSignal();
|
|
18
|
+
let observed;
|
|
19
19
|
const work = { batches: new Set(), queues: new Set() };
|
|
20
20
|
const controls = {
|
|
21
21
|
changed: signal.changed,
|
|
22
22
|
expirations: new Map(),
|
|
23
23
|
expirySeconds: new Map(),
|
|
24
24
|
failures: new Set(),
|
|
25
|
-
retryPolicy:
|
|
25
|
+
retryPolicy: settings.retryPolicy ?? {},
|
|
26
26
|
work,
|
|
27
27
|
};
|
|
28
28
|
function client() {
|
|
@@ -31,22 +31,31 @@ export function testingController(options = {}) {
|
|
|
31
31
|
}
|
|
32
32
|
return current;
|
|
33
33
|
}
|
|
34
|
+
function inspection() {
|
|
35
|
+
if (observed === undefined) {
|
|
36
|
+
throw new Error("Provide the testing clientFactory to a jobs Layer first");
|
|
37
|
+
}
|
|
38
|
+
return observed;
|
|
39
|
+
}
|
|
34
40
|
const clientFactory = (clientOptions) => {
|
|
35
41
|
if (current !== undefined) {
|
|
36
42
|
throw new Error("A testing controller owns one jobs client; create a controller per runtime");
|
|
37
43
|
}
|
|
38
44
|
schema = clientOptions.schema ?? "pgboss";
|
|
39
|
-
current = defaultClientFactory(
|
|
45
|
+
current = defaultClientFactory(clientOptions);
|
|
40
46
|
fetches = testingFetches(current.getDb(), signal.changed);
|
|
41
|
-
|
|
47
|
+
current = testingClient(current, schema, controls);
|
|
48
|
+
return testingInspectionClient(current, schema, work, signal.changed, (reads) => {
|
|
49
|
+
observed = reads;
|
|
50
|
+
});
|
|
42
51
|
};
|
|
43
52
|
return {
|
|
44
|
-
|
|
53
|
+
deferred: (queue) => Effect.suspend(() => testingInspection("deferred", inspection().deferred(queue), queue.name)),
|
|
45
54
|
...testingDueNow(client, () => schema, signal.changed),
|
|
46
|
-
...testingSchedules(client,
|
|
47
|
-
...testingWaits(
|
|
55
|
+
...testingSchedules(client, inspection),
|
|
56
|
+
...testingWaits(inspection, () => fetches, signal),
|
|
48
57
|
checkBatchWindow: (queue, millisecondsPerJob) => testingOperation("checkBatchWindow", async () => {
|
|
49
|
-
const stored = await
|
|
58
|
+
const stored = await Effect.runPromise(inspection().queue(queue));
|
|
50
59
|
if (stored === null) {
|
|
51
60
|
throw new Error("Queue is not registered");
|
|
52
61
|
}
|
|
@@ -62,7 +71,7 @@ export function testingController(options = {}) {
|
|
|
62
71
|
}
|
|
63
72
|
}, queue.name),
|
|
64
73
|
checkSchemaVersion: (expected) => testingOperation("checkSchemaVersion", async () => {
|
|
65
|
-
if ((await
|
|
74
|
+
if ((await Effect.runPromise(inspection().schemaVersion())) !== expected) {
|
|
66
75
|
throw new Error(`Expected pg-boss schema version ${expected}`);
|
|
67
76
|
}
|
|
68
77
|
}),
|
|
@@ -87,12 +96,13 @@ export function testingController(options = {}) {
|
|
|
87
96
|
},
|
|
88
97
|
}),
|
|
89
98
|
failNextSend: (queue) => Effect.sync(() => controls.failures.add(queue.name)).pipe(Effect.asVoid),
|
|
90
|
-
jobs:
|
|
99
|
+
jobs: (queue, readOptions) => Effect.suspend(() => testingInspection("jobs", inspection().jobs(queue, readOptions), queue.name)),
|
|
100
|
+
refreshQueueStats: (queue) => testingOperation("refreshQueueStats", () => client().supervise(queue?.name), queue?.name),
|
|
91
101
|
revision: signal.revision,
|
|
92
|
-
schemaVersion:
|
|
93
|
-
snapshot:
|
|
102
|
+
schemaVersion: Effect.suspend(() => testingInspection("schemaVersion", inspection().schemaVersion())),
|
|
103
|
+
snapshot: (queues) => Effect.suspend(() => testingInspection("snapshot", inspection().snapshot(queues))),
|
|
94
104
|
waitForChange: signal.waitForChange,
|
|
95
|
-
waitForIdle: testingIdle(
|
|
105
|
+
waitForIdle: testingIdle(inspection, work, signal),
|
|
96
106
|
};
|
|
97
107
|
}
|
|
98
108
|
//# sourceMappingURL=testingController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingController.js","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"testingController.js","sourceRoot":"","sources":["../../../src/server/adapters/testingController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { quotedSchema } from "#server/internal/storedRows.ts";
|
|
2
|
-
import { testingOperation } from "#server/internal/
|
|
2
|
+
import { testingOperation } from "#server/internal/testingOperation.ts";
|
|
3
3
|
export function testingDueNow(client, schema, changed) {
|
|
4
4
|
function makeDue(queue, deferredOnly) {
|
|
5
5
|
return testingOperation(deferredOnly ? "runDeferredNow" : "runDueNow", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingDueNow.js","sourceRoot":"","sources":["../../../src/server/adapters/testingDueNow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"testingDueNow.js","sourceRoot":"","sources":["../../../src/server/adapters/testingDueNow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,MAAM,UAAU,aAAa,CAAC,MAA0B,EAAE,MAAoB,EAAE,OAAmB;IAClG,SAAS,OAAO,CAAC,KAAoC,EAAE,YAAqB;QAC3E,OAAO,gBAAgB,CACtB,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAC7C,KAAK,IAAI,EAAE;YACV,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,YAAY;gBAC7B,CAAC,CAAC,mEAAmE;gBACrE,CAAC,CAAC,mDAAmD,MAAM,YAAY,CAAC;YACzE,MAAM,MAAM,EAAE;iBACZ,KAAK,EAAE;iBACP,UAAU,CAAC,UAAU,MAAM,0BAA0B,MAAM,kCAAkC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1H,OAAO,EAAE,CAAC;YACV,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE;iBAC3B,UAAU,EAAE;iBACZ,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;QACF,CAAC,EACD,KAAK,CAAC,IAAI,CACV,CAAC;IACH,CAAC;IACD,OAAO;QACN,cAAc,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9E,SAAS,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;KAC1E,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingEngine.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"testingEngine.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAQ/G"}
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
import { Effect, Redacted } from "effect";
|
|
2
2
|
import { PgBossTestingError } from "#server/error.ts";
|
|
3
3
|
import { expireAttempt } from "./expireAttempt.js";
|
|
4
|
-
import { observeTestingSettlements } from "./observeTestingSettlements.js";
|
|
5
4
|
export function testingEngine(client, schema) {
|
|
6
5
|
return {
|
|
7
6
|
expireAttempt: (job, cause) => Effect.tryPromise({
|
|
8
7
|
catch: (original) => new PgBossTestingError({ operation: "expireAttempt", original: Redacted.make(original), queue: job.name }),
|
|
9
8
|
try: () => expireAttempt(client, schema, job, cause),
|
|
10
9
|
}),
|
|
11
|
-
observeSettlements: (settled) => Effect.sync(() => {
|
|
12
|
-
const observer = observeTestingSettlements(client, settled);
|
|
13
|
-
return {
|
|
14
|
-
close: Effect.sync(() => observer.close()),
|
|
15
|
-
watch: (name) => Effect.try({
|
|
16
|
-
catch: (original) => new PgBossTestingError({ operation: "observeSettlements", original: Redacted.make(original), queue: name }),
|
|
17
|
-
try: () => observer.watch(name),
|
|
18
|
-
}),
|
|
19
|
-
};
|
|
20
|
-
}),
|
|
21
10
|
};
|
|
22
11
|
}
|
|
23
12
|
//# sourceMappingURL=testingEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testingEngine.js","sourceRoot":"","sources":["../../../src/server/adapters/testingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"testingEngine.js","sourceRoot":"","sources":["../../../src/server/adapters/testingEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,MAAc;IACjE,OAAO;QACN,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC7B,MAAM,CAAC,UAAU,CAAC;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAC/H,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;SACpD,CAAC;KACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EngineClient } from "#server/engineClient.ts";
|
|
2
|
+
import { type PgBossInspectionService } from "#server/inspection.ts";
|
|
3
|
+
import type { TestingWork } from "#server/internal/testingIdle.ts";
|
|
4
|
+
export declare function testingInspectionClient(source: EngineClient, schema: string, work: TestingWork, changed: () => void, observe: (inspection: PgBossInspectionService) => void): EngineClient;
|
|
5
|
+
//# sourceMappingURL=testingInspectionClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingInspectionClient.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/testingInspectionClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAanE,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,IAAI,EACnB,OAAO,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,GACpD,YAAY,CA+Cd"}
|