@workflow/world-postgres 4.1.0-beta.45 → 4.1.0-beta.47

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/README.md CHANGED
@@ -50,15 +50,21 @@ const world = createWorld({
50
50
  jobPrefix: "myapp", // optional
51
51
  queueConcurrency: 10, // optional
52
52
  });
53
+
54
+ // Or pass an existing pg.Pool (shared with your app Drizzle, etc.); `world.close()` will not end it.
55
+ import { Pool } from "pg";
56
+ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
57
+ const worldFromPool = createWorld({ pool });
53
58
  ```
54
59
 
55
60
  ## Configuration Options
56
61
 
57
- | Option | Type | Default | Description |
58
- | ------------------ | -------- | -------------------------------------------------------------------------------------- | ----------------------------------- |
59
- | `connectionString` | `string` | `process.env.WORKFLOW_POSTGRES_URL` or `'postgres://world:world@localhost:5432/world'` | PostgreSQL connection string |
60
- | `jobPrefix` | `string` | `process.env.WORKFLOW_POSTGRES_JOB_PREFIX` | Optional prefix for queue job names |
61
- | `queueConcurrency` | `number` | `10` | Number of concurrent active step executions per process |
62
+ | Option | Type | Default | Description |
63
+ | ------------------ | --------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
64
+ | `connectionString` | `string` | `process.env.WORKFLOW_POSTGRES_URL` or `'postgres://world:world@localhost:5432/world'` | Used only when `pool` is omitted, to construct an internal pool |
65
+ | `pool` | `pg.Pool` | | Optional. When set, used for Drizzle, Graphile Worker, and stream writes. `world.close()` does not end it. |
66
+ | `jobPrefix` | `string` | `process.env.WORKFLOW_POSTGRES_JOB_PREFIX` | Optional prefix for queue job names |
67
+ | `queueConcurrency` | `number` | `10` | Number of concurrent active step executions per process |
62
68
 
63
69
  ## Environment Variables
64
70
 
@@ -75,7 +81,7 @@ This package uses PostgreSQL with the following components:
75
81
 
76
82
  - **graphile-worker**: For queue processing and job management
77
83
  - **Drizzle ORM**: For database operations and schema management
78
- - **postgres**: For PostgreSQL client connections
84
+ - **pg** (node-postgres): For PostgreSQL client connections. Drizzle and Graphile Worker share a `pg.Pool`, while LISTEN uses a dedicated `pg.Client` created from the same connection options.
79
85
 
80
86
  ### Quick Setup with CLI
81
87
 
@@ -115,7 +121,7 @@ Make sure your PostgreSQL database is accessible and the user has sufficient per
115
121
  ## Features
116
122
 
117
123
  - **Durable Storage**: Stores workflow runs, events, steps, hooks, and webhooks in PostgreSQL
118
- - **Queue Processing**: Uses graphile-worker as the durable queue and executes jobs inline in the worker
124
+ - **Queue Processing**: Uses graphile-worker as the durable queue and executes jobs over the workflow HTTP routes
119
125
  - **Durable Delays**: Re-schedules waits and retries in PostgreSQL
120
126
  - **Streaming**: Real-time event streaming capabilities
121
127
  - **Health Checks**: Built-in connection health monitoring
@@ -127,6 +133,7 @@ Make sure your PostgreSQL database is accessible and the user has sufficient per
127
133
  - Graphile jobs are acknowledged only after the workflow or step execution finishes, or after the worker durably schedules a delayed follow-up job
128
134
  - Backlog stays in PostgreSQL when all execution slots are busy
129
135
  - Retry and sleep-style delays use Graphile `runAt` scheduling
136
+ - Workflow and step execution is sent through `/.well-known/workflow/v1/flow` and `/.well-known/workflow/v1/step`
130
137
 
131
138
  ## Development
132
139
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AASA,iBAAe,aAAa,kBA6C3B;AAOD,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AASA,iBAAe,aAAa,kBA8C3B;AAOD,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/cli.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { dirname, join } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { config } from 'dotenv';
4
- import { drizzle } from 'drizzle-orm/postgres-js';
5
- import { migrate } from 'drizzle-orm/postgres-js/migrator';
6
- import postgres from 'postgres';
4
+ import { drizzle } from 'drizzle-orm/node-postgres';
5
+ import { migrate } from 'drizzle-orm/node-postgres/migrator';
6
+ import { Pool } from 'pg';
7
7
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
8
  async function setupDatabase() {
9
9
  // Load .env file if it exists
@@ -13,9 +13,9 @@ async function setupDatabase() {
13
13
  'postgres://world:world@localhost:5432/world';
14
14
  console.log('🔧 Setting up database schema...');
15
15
  console.log(`📍 Connection: ${connectionString.replace(/^(\w+:\/\/)([^@]+)@/, '$1[redacted]@')}`);
16
+ const pool = new Pool({ connectionString, max: 1 });
17
+ const db = drizzle(pool);
16
18
  try {
17
- const pgClient = postgres(connectionString, { max: 1 });
18
- const db = drizzle(pgClient);
19
19
  // Read the migration SQL file
20
20
  // The migrations are in src/drizzle/migrations, and this CLI is in dist/
21
21
  // So we need to go up one level from dist/ to reach src/
@@ -28,10 +28,11 @@ async function setupDatabase() {
28
28
  migrationsSchema: 'workflow_drizzle',
29
29
  });
30
30
  console.log('✅ Database schema created successfully!');
31
- await pgClient.end();
31
+ await pool.end();
32
32
  process.exit(0);
33
33
  }
34
34
  catch (error) {
35
+ await pool.end().catch(() => { });
35
36
  console.error('❌ Failed to setup database:', error);
36
37
  process.exit(1);
37
38
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,KAAK,UAAU,aAAa;IAC1B,8BAA8B;IAC9B,MAAM,EAAE,CAAC;IAET,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,YAAY;QACxB,6CAA6C,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CACT,kBAAkB,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC,EAAE,CACrF,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAC3B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACT,YAAY,CACb,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,gBAAgB,EAAE,CAAC,CAAC;QAE/D,wBAAwB;QACxB,MAAM,OAAO,CAAC,EAAE,EAAE;YAChB,gBAAgB;YAChB,eAAe,EAAE,qBAAqB;YACtC,gBAAgB,EAAE,kBAAkB;SACrC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,KAAK,UAAU,aAAa;IAC1B,8BAA8B;IAC9B,MAAM,EAAE,CAAC;IAET,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,YAAY;QACxB,6CAA6C,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CACT,kBAAkB,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC,EAAE,CACrF,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,8BAA8B;QAC9B,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAC3B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACT,YAAY,CACb,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,gBAAgB,EAAE,CAAC,CAAC;QAE/D,wBAAwB;QACxB,MAAM,OAAO,CAAC,EAAE,EAAE;YAChB,gBAAgB;YAChB,eAAe,EAAE,qBAAqB;YACtC,gBAAgB,EAAE,kBAAkB;SACrC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,aAAa,EAAE,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,6 +1,14 @@
1
- export interface PostgresWorldConfig {
1
+ import type { Pool } from 'pg';
2
+ type PgConnectionConfig = {
2
3
  connectionString: string;
4
+ pool?: undefined;
5
+ } | {
6
+ pool: Pool;
7
+ connectionString?: undefined;
8
+ };
9
+ export type PostgresWorldConfig = PgConnectionConfig & {
3
10
  jobPrefix?: string;
4
11
  queueConcurrency?: number;
5
- }
12
+ };
13
+ export {};
6
14
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,KAAK,kBAAkB,GACnB;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,gBAAgB,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC"}
@@ -1,8 +1,8 @@
1
- import type Postgres from 'postgres';
1
+ import type { Pool } from 'pg';
2
2
  import * as Schema from './schema.js';
3
3
  export { Schema };
4
4
  export type Drizzle = ReturnType<typeof createClient>;
5
- export declare function createClient(postgres: Postgres.Sql): import("drizzle-orm/postgres-js").PostgresJsDatabase<typeof Schema> & {
6
- $client: Postgres.Sql<{}>;
5
+ export declare function createClient(pool: Pool): import("drizzle-orm/node-postgres").NodePgDatabase<typeof Schema> & {
6
+ $client: Pool;
7
7
  };
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;;EAElD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI;;EAEtC"}
@@ -1,7 +1,7 @@
1
- import { drizzle } from 'drizzle-orm/postgres-js';
1
+ import { drizzle } from 'drizzle-orm/node-postgres';
2
2
  import * as Schema from './schema.js';
3
3
  export { Schema };
4
- export function createClient(postgres) {
5
- return drizzle(postgres, { schema: Schema });
4
+ export function createClient(pool) {
5
+ return drizzle(pool, { schema: Schema });
6
6
  }
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,CAAC;AAIlB,MAAM,UAAU,YAAY,CAAC,QAAsB;IACjD,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,CAAC;AAIlB,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,wBAAgB,WAAW,CACzB,MAAM,GAAE,mBAQP,GACA,KAAK,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA+BpC;AAGD,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,wBAAgB,WAAW,CACzB,MAAM,GAAE,mBAQP,GACA,KAAK,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA6BpC;AAGD,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import createPostgres from 'postgres';
1
+ import { Pool } from 'pg';
2
2
  import { createClient } from './drizzle/index.js';
3
3
  import { createQueue } from './queue.js';
4
4
  import { createEventsStorage, createHooksStorage, createRunsStorage, createStepsStorage, } from './storage.js';
@@ -18,11 +18,15 @@ export function createWorld(config = {
18
18
  queueConcurrency: parseInt(process.env.WORKFLOW_POSTGRES_WORKER_CONCURRENCY || '10', 10) ||
19
19
  10,
20
20
  }) {
21
- const postgres = createPostgres(config.connectionString);
22
- const drizzle = createClient(postgres);
23
- const queue = createQueue(config, postgres);
21
+ const pool = config.pool ||
22
+ new Pool({
23
+ connectionString: config.connectionString ||
24
+ 'postgres://world:world@localhost:5432/world',
25
+ });
26
+ const drizzle = createClient(pool);
27
+ const queue = createQueue(config, pool);
24
28
  const storage = createStorage(drizzle);
25
- const streamer = createStreamer(postgres, drizzle);
29
+ const streamer = createStreamer(pool, drizzle);
26
30
  return {
27
31
  ...storage,
28
32
  ...streamer,
@@ -33,17 +37,8 @@ export function createWorld(config = {
33
37
  async close() {
34
38
  await streamer.close();
35
39
  await queue.close();
36
- await postgres.end();
37
- // Force-destroy any TCP sockets that survived postgres.end().
38
- // postgres.js's terminate() calls socket.end() (graceful TCP FIN)
39
- // rather than socket.destroy(), leaving sockets in FIN_WAIT state
40
- // that prevent the process from exiting on slower networks (e.g.
41
- // CI Docker containers).
42
- // See: https://github.com/porsager/postgres/issues/1022
43
- for (const h of process._getActiveHandles?.() ?? []) {
44
- if (h?.constructor?.name === 'Socket' && !h._type && !h.destroyed) {
45
- h.destroy();
46
- }
40
+ if (pool !== config.pool) {
41
+ await pool.end();
47
42
  }
48
43
  },
49
44
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,SAA8B;IAC5B,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,6CAA6C;IAC/C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;IACnD,gBAAgB,EACd,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtE,EAAE;CACL;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,GAAG,OAAO;QACV,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;YACrB,8DAA8D;YAC9D,kEAAkE;YAClE,kEAAkE;YAClE,iEAAiE;YACjE,yBAAyB;YACzB,wDAAwD;YACxD,KAAK,MAAM,CAAC,IAAK,OAAe,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC7D,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;oBACjE,CAAY,CAAC,OAAO,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAID,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,SAA8B;IAC5B,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,6CAA6C;IAC/C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;IACnD,gBAAgB,EACd,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtE,EAAE;CACL;IAED,MAAM,IAAI,GACR,MAAM,CAAC,IAAI;QACX,IAAI,IAAI,CAAC;YACP,gBAAgB,EACd,MAAM,CAAC,gBAAgB;gBACvB,6CAA6C;SAChD,CAAC,CAAC;IAEL,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO;QACL,GAAG,OAAO;QACV,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAID,cAAc,qBAAqB,CAAC"}
package/dist/queue.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Queue } from '@workflow/world';
2
- import type Postgres from 'postgres';
2
+ import type { Pool } from 'pg';
3
3
  import type { PostgresWorldConfig } from './config.js';
4
4
  /**
5
5
  * The Postgres queue works by creating two job types in graphile-worker:
@@ -15,5 +15,5 @@ export type PostgresQueue = Queue & {
15
15
  start(): Promise<void>;
16
16
  close(): Promise<void>;
17
17
  };
18
- export declare function createQueue(config: PostgresWorldConfig, postgres: Postgres.Sql): PostgresQueue;
18
+ export declare function createQueue(config: PostgresWorldConfig, pool: Pool): PostgresQueue;
19
19
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,KAAK,EAIX,MAAM,iBAAiB,CAAC;AASzB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAGrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6BvD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,QAAQ,CAAC,GAAG,GACrB,aAAa,CA0Sf"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,KAAK,EAKX,MAAM,iBAAiB,CAAC;AASzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAuCvD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,IAAI,GACT,aAAa,CA2Zf"}
package/dist/queue.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import * as Stream from 'node:stream';
2
2
  import { JsonTransport } from '@vercel/queue';
3
- import { MessageId, QueuePayloadSchema, } from '@workflow/world';
4
- import { createLocalWorld, createQueueExecutor } from '@workflow/world-local';
3
+ import { getWorkflowPort } from '@workflow/utils/get-port';
4
+ import { MessageId, QueuePayloadSchema, WorkflowInvokePayloadSchema, } from '@workflow/world';
5
+ import { createLocalWorld } from '@workflow/world-local';
5
6
  import { Logger, makeWorkerUtils, run, } from 'graphile-worker';
6
7
  import { monotonicFactory } from 'ulid';
7
8
  import z from 'zod';
@@ -30,10 +31,9 @@ const GraphileHelpers = z.object({
30
31
  attempts: z.number().int().positive(),
31
32
  }),
32
33
  });
33
- export function createQueue(config, postgres) {
34
+ export function createQueue(config, pool) {
34
35
  const port = process.env.PORT ? Number(process.env.PORT) : undefined;
35
36
  const localWorld = createLocalWorld({ dataDir: undefined, port });
36
- const executor = createQueueExecutor({ port });
37
37
  const transport = new JsonTransport();
38
38
  const generateMessageId = monotonicFactory();
39
39
  const prefix = config.jobPrefix || 'workflow_';
@@ -41,18 +41,13 @@ export function createQueue(config, postgres) {
41
41
  __wkf_workflow_: `${prefix}flows`,
42
42
  __wkf_step_: `${prefix}steps`,
43
43
  };
44
- const createQueueHandler = (prefix, handler) => {
45
- const wrappedHandler = localWorld.createQueueHandler(prefix, handler);
46
- // Register the HTTP-compatible handler so Graphile workers can execute it
47
- // directly in-process when the route module has been loaded.
48
- executor.registerHandler(prefix, wrappedHandler);
49
- return wrappedHandler;
50
- };
44
+ const createQueueHandler = localWorld.createQueueHandler;
51
45
  const getDeploymentId = async () => {
52
46
  return 'postgres';
53
47
  };
54
48
  const completedMessages = new Set();
55
49
  const inflightMessages = new Map();
50
+ const inflightWorkflowRuns = new Map();
56
51
  let workerUtils = null;
57
52
  let runner = null;
58
53
  let startPromise = null;
@@ -87,49 +82,100 @@ export function createQueue(config, postgres) {
87
82
  maxAttempts: 3,
88
83
  });
89
84
  }
85
+ async function resolveExecutionBaseUrl() {
86
+ if (process.env.WORKFLOW_LOCAL_BASE_URL) {
87
+ return process.env.WORKFLOW_LOCAL_BASE_URL;
88
+ }
89
+ if (typeof port === 'number') {
90
+ return `http://localhost:${port}`;
91
+ }
92
+ if (process.env.PORT) {
93
+ return `http://localhost:${process.env.PORT}`;
94
+ }
95
+ const detectedPort = await getWorkflowPort();
96
+ if (typeof detectedPort === 'number') {
97
+ return `http://localhost:${detectedPort}`;
98
+ }
99
+ throw new Error('Unable to resolve base URL for workflow queue.');
100
+ }
101
+ function getQueueRoute(queueName) {
102
+ if (queueName.startsWith('__wkf_step_')) {
103
+ return 'step';
104
+ }
105
+ if (queueName.startsWith('__wkf_workflow_')) {
106
+ return 'flow';
107
+ }
108
+ throw new Error('Unknown queue name prefix');
109
+ }
110
+ async function executeMessageOverHttp({ queueName, messageId, attempt, body, headers: extraHeaders, }) {
111
+ const headers = {
112
+ ...extraHeaders,
113
+ 'content-type': 'application/json',
114
+ 'x-vqs-queue-name': queueName,
115
+ 'x-vqs-message-id': messageId,
116
+ 'x-vqs-message-attempt': String(attempt),
117
+ };
118
+ const baseUrl = await resolveExecutionBaseUrl();
119
+ const pathname = getQueueRoute(queueName);
120
+ const response = await fetch(`${baseUrl}/.well-known/workflow/v1/${pathname}`, {
121
+ method: 'POST',
122
+ duplex: 'half',
123
+ headers,
124
+ body,
125
+ });
126
+ const text = await response.text();
127
+ if (!response.ok) {
128
+ return {
129
+ type: 'error',
130
+ status: response.status,
131
+ text,
132
+ headers: Object.fromEntries(response.headers.entries()),
133
+ };
134
+ }
135
+ try {
136
+ const timeoutSeconds = Number(JSON.parse(text).timeoutSeconds);
137
+ if (Number.isFinite(timeoutSeconds) && timeoutSeconds >= 0) {
138
+ return { type: 'reschedule', timeoutSeconds };
139
+ }
140
+ }
141
+ catch { }
142
+ return { type: 'completed' };
143
+ }
90
144
  async function migratePgBossJobs(utils) {
91
145
  // Scenario A: Drizzle migration already ran — staging table exists
92
- const hasStaging = await postgres `
93
- SELECT EXISTS (
146
+ const hasStaging = await pool.query(`SELECT EXISTS (
94
147
  SELECT 1 FROM information_schema.tables
95
148
  WHERE table_schema = 'workflow'
96
149
  AND table_name = '_pgboss_pending_jobs'
97
- ) AS exists
98
- `;
99
- if (hasStaging[0].exists) {
100
- const jobs = await postgres `
101
- SELECT name, data, singleton_key, retry_limit
102
- FROM "workflow"."_pgboss_pending_jobs"
103
- `;
104
- for (const job of jobs) {
150
+ ) AS exists`);
151
+ if (hasStaging.rows[0]?.exists) {
152
+ const jobs = await pool.query(`SELECT name, data, singleton_key, retry_limit
153
+ FROM "workflow"."_pgboss_pending_jobs"`);
154
+ for (const job of jobs.rows) {
105
155
  await utils.addJob(job.name, job.data, {
106
156
  jobKey: job.singleton_key ?? undefined,
107
157
  maxAttempts: job.retry_limit ?? 3,
108
158
  });
109
159
  }
110
- await postgres `DROP TABLE "workflow"."_pgboss_pending_jobs"`;
160
+ await pool.query(`DROP TABLE "workflow"."_pgboss_pending_jobs"`);
111
161
  return;
112
162
  }
113
163
  // Scenario B: Drizzle migration didn't run — pgboss schema still exists
114
- const hasPgBoss = await postgres `
115
- SELECT EXISTS (
164
+ const hasPgBoss = await pool.query(`SELECT EXISTS (
116
165
  SELECT 1 FROM information_schema.schemata
117
166
  WHERE schema_name = 'pgboss'
118
- ) AS exists
119
- `;
120
- if (hasPgBoss[0].exists) {
121
- const jobs = await postgres `
122
- SELECT name, data, singleton_key, retry_limit
167
+ ) AS exists`);
168
+ if (hasPgBoss.rows[0]?.exists) {
169
+ const jobs = await pool.query(`SELECT name, data, singleton_key, retry_limit
123
170
  FROM pgboss.job
124
- WHERE state IN ('created', 'retry')
125
- `;
126
- for (const job of jobs) {
171
+ WHERE state IN ('created', 'retry')`);
172
+ for (const job of jobs.rows) {
127
173
  await utils.addJob(job.name, job.data, {
128
174
  jobKey: job.singleton_key ?? undefined,
129
175
  maxAttempts: job.retry_limit ?? 3,
130
176
  });
131
177
  }
132
- await postgres `DROP SCHEMA pgboss CASCADE`;
178
+ await pool.query(`DROP SCHEMA pgboss CASCADE`);
133
179
  }
134
180
  }
135
181
  async function start() {
@@ -137,7 +183,7 @@ export function createQueue(config, postgres) {
137
183
  startPromise = (async () => {
138
184
  try {
139
185
  workerUtils = await makeWorkerUtils({
140
- connectionString: config.connectionString,
186
+ pgPool: pool,
141
187
  logger: graphileLogger,
142
188
  });
143
189
  await workerUtils.migrate();
@@ -177,12 +223,21 @@ export function createQueue(config, postgres) {
177
223
  const attempt = graphileAttempt.success
178
224
  ? graphileAttempt.data.job.attempts
179
225
  : messageData.attempt;
226
+ const queueName = `${queue}${messageData.id}`;
227
+ const bodyStream = Stream.Readable.toWeb(Stream.Readable.from([messageData.data]));
228
+ const body = await transport.deserialize(bodyStream);
229
+ QueuePayloadSchema.parse(body);
230
+ const workflowRunSerializationKey = queue === '__wkf_workflow_'
231
+ ? (() => {
232
+ const workflowInvoke = WorkflowInvokePayloadSchema.safeParse(body);
233
+ if (!workflowInvoke.success) {
234
+ return undefined;
235
+ }
236
+ return `workflow:${workflowInvoke.data.runId}`;
237
+ })()
238
+ : undefined;
180
239
  const executeTask = async () => {
181
- const bodyStream = Stream.Readable.toWeb(Stream.Readable.from([messageData.data]));
182
- const body = await transport.deserialize(bodyStream);
183
- QueuePayloadSchema.parse(body);
184
- const queueName = `${queue}${messageData.id}`;
185
- const result = await executor.executeMessage({
240
+ const result = await executeMessageOverHttp({
186
241
  queueName,
187
242
  messageId: messageData.messageId,
188
243
  attempt,
@@ -212,6 +267,23 @@ export function createQueue(config, postgres) {
212
267
  };
213
268
  const idempotencyKey = messageData.idempotencyKey;
214
269
  if (!idempotencyKey) {
270
+ if (workflowRunSerializationKey) {
271
+ // Preserve step fan-out while preventing two workflow replays from
272
+ // mutating the same run's event log at the same time.
273
+ const previous = inflightWorkflowRuns.get(workflowRunSerializationKey);
274
+ const execution = (previous ?? Promise.resolve())
275
+ .catch(() => { })
276
+ .then(() => executeTask())
277
+ .finally(() => {
278
+ if (inflightWorkflowRuns.get(workflowRunSerializationKey) ===
279
+ execution) {
280
+ inflightWorkflowRuns.delete(workflowRunSerializationKey);
281
+ }
282
+ });
283
+ inflightWorkflowRuns.set(workflowRunSerializationKey, execution);
284
+ await execution;
285
+ return;
286
+ }
215
287
  await executeTask();
216
288
  return;
217
289
  }
@@ -242,7 +314,7 @@ export function createQueue(config, postgres) {
242
314
  taskList[jobName] = createTaskHandler(prefix);
243
315
  }
244
316
  runner = await run({
245
- connectionString: config.connectionString,
317
+ pgPool: pool,
246
318
  concurrency: config.queueConcurrency || 10,
247
319
  logger: graphileLogger,
248
320
  pollInterval: 500, // 500ms = 0.5s (graphile-worker uses LISTEN/NOTIFY when available)
@@ -264,7 +336,6 @@ export function createQueue(config, postgres) {
264
336
  workerUtils = null;
265
337
  }
266
338
  startPromise = null;
267
- await executor.close();
268
339
  await localWorld.close?.();
269
340
  },
270
341
  };
package/dist/queue.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,SAAS,EAET,kBAAkB,GAGnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EACL,MAAM,EACN,eAAe,EAEf,GAAG,GAEJ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,SAAS,oBAAoB;IAC3B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,CAAC;IAChE,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAa,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE;QACzE,IAAI,UAAU,EAAE;YAAE,OAAO;QACzB,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QACpE,MAAM,IAAI,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACjE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CACR,qBAAqB,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAClE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;AAC9C,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC;CACH,CAAC,CAAC;AAiBH,MAAM,UAAU,WAAW,CACzB,MAA2B,EAC3B,QAAsB;IAEtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC;IAC/C,MAAM,MAAM,GAAG;QACb,eAAe,EAAE,GAAG,MAAM,OAAO;QACjC,WAAW,EAAE,GAAG,MAAM,OAAO;KACiB,CAAC;IAEjD,MAAM,kBAAkB,GAAgC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,0EAA0E;QAC1E,6DAA6D;QAC7D,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,eAAe,GAA6B,KAAK,IAAI,EAAE;QAC3D,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,IAAI,WAAW,GAAuB,IAAI,CAAC;IAC3C,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,YAAY,GAAyB,IAAI,CAAC;IAE9C,SAAS,oBAAoB,CAAC,cAAsB;QAClD,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACtC,IAAI,iBAAiB,CAAC,IAAI,GAAG,iCAAiC,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC1D,IAAI,SAAS,EAAE,CAAC;gBACd,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,cAAc,CAAC,EAC5B,WAAW,EACX,OAAO,EACP,IAAI,EACJ,SAAS,EACT,OAAO,EACP,cAAc,EACd,OAAO,EACP,YAAY,EACZ,MAAM,GAWP;QACC,MAAM,KAAK,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,KAAK,GACT,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,GAAG,CAAC;YAClD,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,KAAK,CAAC,MAAM,CAChB,MAAM,CAAC,WAAW,CAAC,EACnB,WAAW,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO;YACP,SAAS;YACT,cAAc;YACd,OAAO;SACR,CAAC,EACF;YACE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,WAAW,EAAE,CAAC;SACf,CACF,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,iBAAiB,CAAC,KAAkB;QACjD,mEAAmE;QACnE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAA;;;;;;KAMhC,CAAC;QACF,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAA;;;OAG1B,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAA+B,EAAE;oBAChE,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;oBACtC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,CAAA,8CAA8C,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAA;;;;;KAK/B,CAAC;QACF,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAA;;;;OAI1B,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAA+B,EAAE;oBAChE,MAAM,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;oBACtC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,CAAA,4BAA4B,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBACH,WAAW,GAAG,MAAM,eAAe,CAAC;wBAClC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;wBACzC,MAAM,EAAE,cAAc;qBACvB,CAAC,CAAC;oBACH,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACrC,MAAM,cAAc,EAAE,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,MAAM,YAAY,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAmB,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3D,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,cAAc,CAAC;YACnB,WAAW;YACX,OAAO;YACP,IAAI;YACJ,SAAS;YACT,OAAO,EAAE,CAAC;YACV,cAAc,EAAE,IAAI,EAAE,cAAc;YACpC,OAAO,EAAE,IAAI,EAAE,OAAO;YACtB,YAAY,EAAE,IAAI,EAAE,YAAY;YAChC,MAAM,EAAE,IAAI,EAAE,cAAc,IAAI,SAAS;SAC1C,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,SAAS,iBAAiB,CAAC,KAAkB;QAC3C,OAAO,KAAK,EAAE,OAAgB,EAAE,OAAgB,EAAE,EAAE;YAClD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO;gBACrC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;gBACnC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;YACxB,MAAM,WAAW,GAAG,KAAK,IAA0C,EAAE;gBACnE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC;gBACF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,WAAW,CACtC,UAAwC,CACzC,CAAC;gBACF,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,SAAS,GAAG,GAAG,KAAK,GAAG,WAAW,CAAC,EAAE,EAAW,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC;oBAC3C,SAAS;oBACT,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,OAAO;oBACP,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;iBAC7B,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,gEAAgE;oBAChE,4BAA4B;oBAC5B,MAAM,cAAc,CAAC;wBACnB,WAAW,EAAE,KAAK;wBAClB,OAAO,EAAE,WAAW,CAAC,EAAE;wBACvB,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,OAAO,EAAE,OAAO,GAAG,CAAC;wBACpB,cAAc,EAAE,WAAW,CAAC,cAAc;wBAC1C,OAAO,EAAE,WAAW,CAAC,OAAO;wBAC5B,YAAY,EAAE,MAAM,CAAC,cAAc;wBACnC,MAAM,EAAE,WAAW,CAAC,cAAc,IAAI,WAAW,CAAC,SAAS;qBAC5D,CAAC,CAAC;oBACH,OAAO,aAAa,CAAC;gBACvB,CAAC;gBAED,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,IAAI,EAAE,CAC7E,CAAC;YACJ,CAAC,CAAC;YAEF,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;YAClD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,WAAW,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC;gBACf,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,WAAW,EAAE;iBAC5B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC3B,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACL,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,SAAS,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,cAAc;QAC3B,MAAM,QAAQ,GAGV,EAAE,CAAC;QACP,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAGlD,EAAE,CAAC;YACJ,QAAQ,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,GAAG,MAAM,GAAG,CAAC;YACjB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,WAAW,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;YAC1C,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,GAAG,EAAE,mEAAmE;YACtF,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,kBAAkB;QAClB,eAAe;QACf,KAAK;QACL,KAAK;QACL,KAAK,CAAC,KAAK;YACT,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,IAAoB,EAAyB,EAAE;IACrE,MAAM,QAAQ,GAAkB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACnE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAWV,OAAO,EAKR,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,oBAAoB,CAAC;AAiE1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DnE;AAmGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAk4BvE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAiErE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA8DrE"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAWV,OAAO,EAKR,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,oBAAoB,CAAC;AAiE1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DnE;AAmGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAq9BvE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAiErE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA4DrE"}