@ewhauser/world-celld 0.1.0 → 0.2.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 CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## 0.2.0 (2026-08-16)
6
+
7
+ ## What's Changed
8
+ * Patch vulnerable Hono test dependencies by @ewhauser in https://github.com/ewhauser/world-celld/pull/8
9
+ * chore(deps-dev): bump typescript from 5.9.3 to 7.0.2 by @dependabot[bot] in https://github.com/ewhauser/world-celld/pull/3
10
+ * Fix flaky harness teardown by @ewhauser in https://github.com/ewhauser/world-celld/pull/10
11
+ * Add terminal workflow retention by @ewhauser in https://github.com/ewhauser/world-celld/pull/11
12
+ * chore(deps): bump the production-dependencies group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/ewhauser/world-celld/pull/1
13
+ * ci: automate releases with Release Please by @ewhauser in https://github.com/ewhauser/world-celld/pull/13
14
+ * chore(deps-dev): bump the development-dependencies group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/ewhauser/world-celld/pull/12
15
+ * fix: exclude generated changelog from formatting by @ewhauser in https://github.com/ewhauser/world-celld/pull/15
16
+
17
+ ## New Contributors
18
+ * @dependabot[bot] made their first contribution in https://github.com/ewhauser/world-celld/pull/3
19
+
20
+ **Full Changelog**: https://github.com/ewhauser/world-celld/compare/v0.1.1...v0.2.0
21
+
22
+ ## 0.1.1 - 2026-08-15
23
+
24
+ - Publish through npm trusted publishing with OIDC provenance.
25
+ - Make npm registry readback the canonical, checksummed GitHub release artifact.
26
+
5
27
  ## 0.1.0 - 2026-08-15
6
28
 
7
29
  - Initial `@workflow/world` implementation backed by celld Durable Objects.
package/README.md CHANGED
@@ -16,6 +16,7 @@ self-hosted alternative to platform-specific Workflow backends.
16
16
  - Workflow run, step, event, and hook persistence
17
17
  - Durable streams
18
18
  - Delayed work, retries, deduplication, and dead-letter storage
19
+ - Configurable cleanup of terminal workflow payloads
19
20
  - An authenticated HTTP connection between a Node application and a celld fleet
20
21
  - An in-process fleet for local development and conformance testing
21
22
 
@@ -64,6 +65,8 @@ const world = createCelldWorld({
64
65
  fleetUrl: 'http://fleet.internal:8080',
65
66
  secret: process.env.CELLD_WORLD_SECRET!,
66
67
  baseUrl: 'https://workflow.example.com',
68
+ // Keep completed, failed, and cancelled run payloads for 30 days.
69
+ runRetentionMs: 30 * 24 * 60 * 60 * 1000,
67
70
  });
68
71
  ```
69
72
 
@@ -135,15 +138,16 @@ cell that owns the data.
135
138
  Application options can be passed to `createCelldWorld()` unless an environment
136
139
  variable is shown below.
137
140
 
138
- | Option | Environment variable | Default |
139
- | -------------- | --------------------- | ------------------------ |
140
- | `fleetUrl` | `CELLD_FLEET_URL` | required |
141
- | `secret` | `CELLD_WORLD_SECRET` | required with `fleetUrl` |
142
- | `baseUrl` | `WORKFLOW_BASE_URL` | `http://localhost:$PORT` |
143
- | `deploymentId` | `CELLD_DEPLOYMENT_ID` | `celld-default` |
144
- | `queueShards` | — | `1` |
145
- | `readPollMs` | — | `250` |
146
- | `rpcTimeoutMs` | — | `30000` |
141
+ | Option | Environment variable | Default |
142
+ | ---------------- | ------------------------ | ------------------------ |
143
+ | `fleetUrl` | `CELLD_FLEET_URL` | required |
144
+ | `secret` | `CELLD_WORLD_SECRET` | required with `fleetUrl` |
145
+ | `baseUrl` | `WORKFLOW_BASE_URL` | `http://localhost:$PORT` |
146
+ | `deploymentId` | `CELLD_DEPLOYMENT_ID` | `celld-default` |
147
+ | `queueShards` | — | `1` |
148
+ | `runRetentionMs` | `CELLD_RUN_RETENTION_MS` | `0` (disabled) |
149
+ | `readPollMs` | — | `250` |
150
+ | `rpcTimeoutMs` | — | `30000` |
147
151
 
148
152
  The deployed worker also accepts these celld variables:
149
153
 
@@ -158,12 +162,45 @@ The deployed worker also accepts these celld variables:
158
162
  `queueShards` is part of queue placement and is pinned when a queue cell is
159
163
  first used. Drain pending work before changing it.
160
164
 
165
+ ## Terminal run retention
166
+
167
+ When `runRetentionMs` is greater than zero, a terminal transition atomically
168
+ records the run's `expiredAt` and arms its cell alarm. The complete run, event,
169
+ step, hook, and stream data remains readable until that deadline. Active and
170
+ pending runs are never eligible for automatic cleanup.
171
+
172
+ At expiration, the run cell fences new writes and removes the run's derived
173
+ indexes, stream chunks, pending and dead-letter queue messages, and durable run
174
+ payloads. Cleanup is a persisted, idempotent state machine: an interrupted
175
+ phase records its error and re-arms itself with capped backoff.
176
+
177
+ The final state is a metadata-only tombstone, not an empty cell. It prevents a
178
+ delayed queue delivery or stale RPC from recreating an expired run. Reads and
179
+ writes against that run return `RunExpiredError`, and the run no longer appears
180
+ in listings. Tombstones contain no workflow input, output, event, step, hook,
181
+ stream, or queue payload.
182
+
183
+ The returned World exposes authenticated operational methods:
184
+
185
+ ```ts
186
+ const status = await world.retention.getStatus(runId);
187
+ await world.retention.schedule(runId); // requires runRetentionMs > 0
188
+ await world.retention.cleanupNow(runId);
189
+ await world.retention.rearm(runId); // recover a missed or abandoned alarm
190
+ ```
191
+
192
+ The retention deadline is pinned when the run becomes terminal. Changing the
193
+ configuration affects newly terminal runs; call `schedule()` explicitly for
194
+ an existing terminal run that has no cleanup record.
195
+
161
196
  ## Operational notes
162
197
 
163
198
  - Delivery is at least once. Workflow steps and other external side effects
164
199
  must be idempotent.
165
200
  - Queue cells expose `stats`, `listDeadLetters`, `redriveDeadLetter`,
166
201
  `purgeDeadLetters`, and `rearmAlarm` through the authenticated RPC endpoint.
202
+ - Run cells expose retention status, scheduling, immediate cleanup, and alarm
203
+ recovery through `world.retention`.
167
204
  - A new application URL applies to newly enqueued messages. Existing messages
168
205
  retain the callback URL with which they were created.
169
206
  - Fleet restarts can interrupt in-flight callbacks; expired claims are
@@ -176,7 +213,7 @@ pnpm format
176
213
  pnpm check
177
214
  ```
178
215
 
179
- `pnpm check` runs formatting, linting, type checking, tests, the build, and the
216
+ `pnpm check` runs formatting, linting, type checking, the build, tests, and the
180
217
  worker and npm-package checks. The package check inspects the exact tarball and
181
218
  installs it in a clean temporary consumer with lifecycle scripts disabled.
182
219
  Oxlint runs its correctness, suspicious, and performance categories with
@@ -193,12 +230,12 @@ pnpm test:integration
193
230
  ### Local MinIO performance and loss test
194
231
 
195
232
  The opt-in performance harness starts a fresh MinIO bucket and a single celld
196
- node with Docker Compose, sends concurrent queue traffic, and verifies that
197
- every accepted message reaches a successful callback. A configurable portion
198
- of callbacks returns one `503` first, so the same run also exercises durable
199
- redelivery. The result includes enqueue and delivery throughput plus p50, p95,
200
- p99, and maximum latency for all deliveries, first-attempt successes, and
201
- retried messages. It is saved to `.perf-results/minio-latest.json`.
233
+ node with Docker Compose. Its queue workload verifies that every accepted
234
+ message reaches a successful callback, including forced `503` redeliveries. A
235
+ second workload creates terminal runs with streams and delayed queue messages,
236
+ then verifies complete payload cleanup without resurrection. Results include
237
+ queue and cleanup throughput plus p50, p95, p99, and maximum latency and are
238
+ saved under `.perf-results/`.
202
239
 
203
240
  > MinIO Community is **not a supported celld production store**. It does not
204
241
  > implement the conditional writes celld needs for ownership fencing. This
@@ -275,12 +312,13 @@ job needs. Third-party actions are pinned to verified release commits. Release
275
312
  builds do not use caches, and the exact npm tarball is checksummed, clean-room
276
313
  installed, and verified again before publication.
277
314
 
278
- Releases publish from GitHub-hosted runners through npm trusted publishing
279
- (OIDC), without a long-lived npm token. npm records provenance for public
280
- releases. The Git tag and GitHub release are created only after npm accepts the
281
- matching tarball; published GitHub releases are immutable. Dependency updates
282
- use cooldowns, and pnpm permits lifecycle scripts only for an explicit
283
- allowlist.
315
+ Release Please maintains version and changelog pull requests. Releases publish
316
+ from GitHub-hosted runners through npm trusted publishing (OIDC), without a
317
+ long-lived npm token. npm records provenance for public releases. A draft
318
+ GitHub release holds the release notes while the package is verified; the Git
319
+ tag and public release are created only after npm accepts the matching tarball.
320
+ Published GitHub releases are immutable. Dependency updates use cooldowns, and
321
+ pnpm permits lifecycle scripts only for an explicit allowlist.
284
322
 
285
323
  See [`SECURITY.md`](./SECURITY.md) to report a vulnerability and
286
324
  [`RELEASING.md`](./RELEASING.md) for the release procedure.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,69 @@
1
- import { CreateEventRequest, Event, Hook, RunCreatedEventRequest, Step, ValidQueueName, WorkflowRun, World } from "@workflow/world";
1
+ import { CreateEventRequest, Event, Hook, RunCreatedEventRequest, Step, TerminalWorkflowRunStatus, ValidQueueName, WorkflowRun, World } from "@workflow/world";
2
+ //#region src/retention.d.ts
3
+ type CleanupPhase = 'retained' | 'index' | 'streams' | 'queues' | 'payload' | 'tombstoned';
4
+ interface CleanupRecord {
5
+ version: 1;
6
+ runId: string;
7
+ workflowName: string;
8
+ createdAt: Date;
9
+ completedAt: Date;
10
+ terminalStatus: TerminalWorkflowRunStatus;
11
+ dueAt: Date;
12
+ queueShards: number;
13
+ phase: CleanupPhase;
14
+ attempts: number;
15
+ lastError?: string;
16
+ lastAttemptAt?: Date;
17
+ tombstonedAt?: Date;
18
+ deletedPayloadKeys: number;
19
+ deletedStreams: number;
20
+ deletedQueueMessages: number;
21
+ }
22
+ interface RunTombstone {
23
+ version: 1;
24
+ runId: string;
25
+ terminalStatus: TerminalWorkflowRunStatus;
26
+ completedAt: Date;
27
+ expiredAt: Date;
28
+ tombstonedAt: Date;
29
+ }
30
+ type RunReadOutcome<T> = {
31
+ ok: true;
32
+ value: T;
33
+ } | {
34
+ ok: false;
35
+ code: 'RUN_EXPIRED';
36
+ message: string;
37
+ tombstone: RunTombstone;
38
+ };
39
+ interface HookIndexReference {
40
+ hookId: string;
41
+ token: string;
42
+ }
43
+ interface ExpireRunIndexesRequest {
44
+ runId: string;
45
+ keys: string[];
46
+ hooks: HookIndexReference[];
47
+ expiredAt: number;
48
+ }
49
+ interface ExpireRunIndexesResult {
50
+ deleted: number;
51
+ }
52
+ interface ExpireRunStreamsResult {
53
+ streams: string[];
54
+ }
55
+ interface ExpireStreamResult {
56
+ deleted: boolean;
57
+ chunks: number;
58
+ }
59
+ interface ExpireQueueRunResult {
60
+ deleted: number;
61
+ }
62
+ interface ScheduleCleanupRequest {
63
+ retentionMs: number;
64
+ queueShards: number;
65
+ }
66
+ //#endregion
2
67
  //#region src/apply-event.d.ts
3
68
  interface ApplyEventRequest {
4
69
  /** The effective run id (already resolved / generated by the caller). */
@@ -12,6 +77,8 @@ interface ApplyEventRequest {
12
77
  runId: string;
13
78
  hookId: string;
14
79
  } | null;
80
+ /** Internal world-celld retention policy captured with the event. */
81
+ cleanup?: ScheduleCleanupRequest;
15
82
  }
16
83
  type ApplyEventErrorCode = 'RUN_NOT_FOUND' | 'STEP_NOT_FOUND' | 'HOOK_NOT_FOUND' | 'ENTITY_CONFLICT' | 'RUN_EXPIRED' | 'TOO_EARLY' | 'RUN_NOT_SUPPORTED' | 'LEGACY_RUN_NOT_SUPPORTED';
17
84
  interface ApplyEventFailure {
@@ -54,36 +121,40 @@ type ApplyEventOutcome = ApplyEventSuccess | ApplyEventFailure;
54
121
  */
55
122
  interface WorkflowRunDOStub {
56
123
  applyEvent(request: ApplyEventRequest): Promise<ApplyEventOutcome>;
57
- getRun(): Promise<WorkflowRun | null>;
58
- getStep(stepId: string): Promise<Step | null>;
59
- getEvent(eventId: string): Promise<Event | null>;
124
+ getRun(): Promise<RunReadOutcome<WorkflowRun | null>>;
125
+ getStep(stepId: string): Promise<RunReadOutcome<Step | null>>;
126
+ getEvent(eventId: string): Promise<RunReadOutcome<Event | null>>;
60
127
  listEvents(params?: {
61
128
  limit?: number;
62
129
  cursor?: string;
63
130
  sortOrder?: 'asc' | 'desc';
64
- }): Promise<{
131
+ }): Promise<RunReadOutcome<{
65
132
  data: Event[];
66
133
  cursor: string | null;
67
134
  hasMore: boolean;
68
- }>;
135
+ }>>;
69
136
  listSteps(params?: {
70
137
  limit?: number;
71
138
  cursor?: string;
72
139
  sortOrder?: 'asc' | 'desc';
73
- }): Promise<{
140
+ }): Promise<RunReadOutcome<{
74
141
  data: Step[];
75
142
  cursor: string | null;
76
143
  hasMore: boolean;
77
- }>;
144
+ }>>;
78
145
  listHooks(params?: {
79
146
  limit?: number;
80
147
  cursor?: string;
81
148
  sortOrder?: 'asc' | 'desc';
82
- }): Promise<{
149
+ }): Promise<RunReadOutcome<{
83
150
  data: Hook[];
84
151
  cursor: string | null;
85
152
  hasMore: boolean;
86
- }>;
153
+ }>>;
154
+ getCleanupStatus(): Promise<CleanupRecord | null>;
155
+ scheduleCleanup(request: ScheduleCleanupRequest): Promise<CleanupRecord | null>;
156
+ cleanupNow(request: ScheduleCleanupRequest): Promise<CleanupRecord | null>;
157
+ rearmCleanup(): Promise<CleanupRecord | null>;
87
158
  }
88
159
  interface WorkflowRunDONamespace {
89
160
  idFromName(name: string): DurableObjectIdLike;
@@ -100,8 +171,8 @@ interface DurableObjectIdLike {
100
171
  * protocol.
101
172
  */
102
173
  interface StreamDOStub {
103
- writeChunk(data: Uint8Array): Promise<number>;
104
- closeStream(): Promise<void>;
174
+ writeChunk(runId: string, data: Uint8Array): Promise<number>;
175
+ closeStream(runId: string): Promise<void>;
105
176
  getChunks(params: {
106
177
  startIndex: number;
107
178
  limit: number;
@@ -114,8 +185,11 @@ interface StreamDOStub {
114
185
  tailIndex: number;
115
186
  done: boolean;
116
187
  }>;
117
- registerStream(name: string): Promise<void>;
188
+ registerStream(runId: string, name: string): Promise<void>;
118
189
  listStreams(): Promise<string[]>;
190
+ expireRegistry(runId: string, expiredAt: number): Promise<ExpireRunStreamsResult>;
191
+ finalizeRegistry(runId: string): Promise<void>;
192
+ expireStream(runId: string, expiredAt: number): Promise<ExpireStreamResult>;
119
193
  }
120
194
  interface StreamDONamespace {
121
195
  idFromName(name: string): StreamDOId;
@@ -138,6 +212,8 @@ interface EnqueueRequest {
138
212
  pathname: Pathname;
139
213
  /** `stringify(message)` — the exact bytes POSTed to the app on delivery. */
140
214
  body: string;
215
+ /** Owning workflow run; absent only for health-check messages. */
216
+ runId?: string;
141
217
  idempotencyKey?: string;
142
218
  delaySeconds?: number;
143
219
  /**
@@ -157,12 +233,13 @@ type EnqueueOutcome = {
157
233
  deduped: boolean;
158
234
  } | {
159
235
  ok: false;
160
- code: 'CONFIG_MISMATCH';
236
+ code: 'CONFIG_MISMATCH' | 'RUN_EXPIRED';
161
237
  message: string;
162
238
  };
163
239
  /** RPC surface of QueueDO used by the queue producer. */
164
240
  interface QueueCellStub {
165
241
  enqueue(request: EnqueueRequest): Promise<EnqueueOutcome>;
242
+ expireRun(runId: string, expiredAt: number): Promise<ExpireQueueRunResult>;
166
243
  }
167
244
  interface QueueCellNamespace {
168
245
  idFromName(name: string): {
@@ -179,6 +256,10 @@ interface IndexNamespace {
179
256
  get(key: string): Promise<string | null>;
180
257
  put(key: string, value: string): Promise<void>;
181
258
  delete(key: string): Promise<void>;
259
+ putOwned(runId: string, key: string, value: string): Promise<{
260
+ stored: boolean;
261
+ }>;
262
+ expireRun(request: ExpireRunIndexesRequest): Promise<ExpireRunIndexesResult>;
182
263
  list(options?: {
183
264
  prefix?: string;
184
265
  cursor?: string;
@@ -237,6 +318,12 @@ interface CelldWorldConfig {
237
318
  baseUrl?: string;
238
319
  /** Number of queue cells to spread enqueues over. Default: 1 */
239
320
  queueShards?: number;
321
+ /**
322
+ * Keep terminal run payloads for this many milliseconds before replacing
323
+ * them with metadata-only tombstones. Zero disables automatic cleanup.
324
+ * Default: process.env.CELLD_RUN_RETENTION_MS || 0
325
+ */
326
+ runRetentionMs?: number;
240
327
  /** Poll interval (ms) while waiting for new chunks on a live stream. Default: 250 */
241
328
  readPollMs?: number;
242
329
  /** Per-attempt fleet RPC deadline in milliseconds. Default: 30000 */
@@ -244,7 +331,16 @@ interface CelldWorldConfig {
244
331
  }
245
332
  //#endregion
246
333
  //#region src/index.d.ts
247
- declare function createCelldWorld(config?: CelldWorldConfig): World;
334
+ interface CelldRetentionAdmin {
335
+ getStatus(runId: string): Promise<CleanupRecord | null>;
336
+ schedule(runId: string): Promise<CleanupRecord | null>;
337
+ cleanupNow(runId: string): Promise<CleanupRecord | null>;
338
+ rearm(runId: string): Promise<CleanupRecord | null>;
339
+ }
340
+ type CelldWorld = World & {
341
+ retention: CelldRetentionAdmin;
342
+ };
343
+ declare function createCelldWorld(config?: CelldWorldConfig): CelldWorld;
248
344
  //#endregion
249
- export { type CelldWorldConfig, type CelldWorldEnv, type EnqueueOutcome, type EnqueueRequest, type IndexNamespace, type QueueCellConfig, type QueueCellNamespace, type QueueCellStub, type StreamDONamespace, type StreamDOStub, type WorkflowRunDONamespace, type WorkflowRunDOStub, createCelldWorld, createCelldWorld as createWorld };
345
+ export { CelldRetentionAdmin, CelldWorld, type CelldWorldConfig, type CelldWorldEnv, type CleanupPhase, type CleanupRecord, type EnqueueOutcome, type EnqueueRequest, type IndexNamespace, type QueueCellConfig, type QueueCellNamespace, type QueueCellStub, type RunTombstone, type StreamDONamespace, type StreamDOStub, type WorkflowRunDONamespace, type WorkflowRunDOStub, createCelldWorld, createCelldWorld as createWorld };
250
346
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/apply-event.ts","../src/storage.ts","../src/streamer.ts","../src/queue.ts","../src/config.ts","../src/index.ts"],"mappings":";;UAsFiB;;EAEf;EACA,MAAM,qBAAqB;;;;;EAK3B;IAAgB;IAAe;;;KAGrB;UAUK;EACf;EACA,MAAM;EACN;;EAEA;;EAEA;;UAGe;EACf;;EAEA,QAAQ;EACR,MAAM;EACN,OAAO;EACP,OAAO;;EAEP,eAAe;IAAQ;IAAgB;;;EAEvC;IAAe;IAAsB,WAAW;;;EAEhD,cAAc;;EAEd,SAAS;;KAGC,oBAAoB,oBAAoB;;;;;;;UCrFnC;EACf,WAAW,SAAS,oBAAoB,QAAQ;EAChD,UAAU,QAAQ;EAClB,QAAQ,iBAAiB,QAAQ;EACjC,SAAS,kBAAkB,QAAQ;EACnC,WAAW;IACT;IACA;IACA;MACE;IAAU,MAAM;IAAS;IAAuB;;EACpD,UAAU;IACR;IACA;IACA;MACE;IAAU,MAAM;IAAQ;IAAuB;;EACnD,UAAU;IACR;IACA;IACA;MACE;IAAU,MAAM;IAAQ;IAAuB;;;UAGpC;EACf,WAAW,eAAe;EAC1B,IAAI,IAAI,sBAAsB;;UAGf;EACf;;;;;;;;;UCpDe;EACf,WAAW,MAAM,aAAa;EAC9B,eAAe;EACf,UAAU;IACR;IACA;MACE;IAAU,QAAQ;IAAc;IAAe;;EACnD,WAAW;IAAU;IAAmB;;EACxC,eAAe,eAAe;EAC9B,eAAe;;UAGA;EACf,WAAW,eAAe;EAC1B,IAAI,IAAI,aAAa;;UAGN;EACf;;;;KCYG;;;;;;UAoBY;EACf;EACA,WAAW;EACX,UAAU;;EAEV;EACA;EACA;;;;;EAKA,QAAQ;;UAGO;;EAEf;EACA;;KAGU;EACN;EAAU;EAAmB;;EAC7B;EAAW;EAAyB;;;UAGzB;EACf,QAAQ,SAAS,iBAAiB,QAAQ;;UAG3B;EACf,WAAW;IAAiB;;EAC5B,IAAI;IAAM;MAAuB;;;;;UCtGlB;EACf,IAAI,cAAc;EAClB,IAAI,aAAa,gBAAgB;EACjC,OAAO,cAAc;EACrB,KAAK;IAAY;IAAiB;IAAiB;IAAgB;MAAsB;IACvF,MAAM;MAAQ;;IACd;IACA;;EAEF,iBACE,eACA,OAAO,iBACN;IAAU;IAAkB,SAAS;;EACxC,oBACE,eACA,gBACA,wBACA,OAAO,iBACN;EACH,iBAAiB,eAAe,OAAO,iBAAiB;EACxD,kBAAkB,eAAe,gBAAgB,OAAO,iBAAiB;;UAG1D;EACf;EACA;;UAGe;EACf,aAAa;EACb,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;;UAGH;;;;;;;EAOf;;;;;EAKA;;;;;EAKA,MAAM;;EAEN;;;;;;EAMA;;EAEA;;EAEA;;EAEA;;;;iBChDc,iBAAiB,SAAS,mBAAmB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/retention.ts","../src/apply-event.ts","../src/storage.ts","../src/streamer.ts","../src/queue.ts","../src/config.ts","../src/index.ts"],"mappings":"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"}