@fedify/postgres 2.2.0-pr.715.28 → 2.2.0-pr.731.34

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.
Files changed (3) hide show
  1. package/dist/mq.cjs +31 -19
  2. package/dist/mq.js +31 -19
  3. package/package.json +3 -3
package/dist/mq.cjs CHANGED
@@ -28,6 +28,10 @@ function withTimeout(result, timeoutMs) {
28
28
  function isInitializationRaceError(error) {
29
29
  return error instanceof postgres.default.PostgresError && (error.constraint_name === "pg_type_typname_nsp_index" || error.constraint_name === "pg_class_relname_nsp_index" || error.code === "42P07" || error.code === "42710");
30
30
  }
31
+ function isConnectionDestroyedError(error) {
32
+ if (typeof error !== "object" || error == null) return false;
33
+ return "code" in error && error.code === "CONNECTION_DESTROYED" || "errno" in error && error.errno === "CONNECTION_DESTROYED";
34
+ }
31
35
  function getCreatedIndexName(tableName) {
32
36
  let hash = 0;
33
37
  for (let i = 0; i < tableName.length; i++) hash = hash * 31 + tableName.charCodeAt(i) >>> 0;
@@ -246,28 +250,36 @@ var PostgresMessageQueue = class {
246
250
  await safeSerializedPoll("notify-fallback");
247
251
  }
248
252
  }, () => safeSerializedPoll("subscribe"));
249
- signal?.addEventListener("abort", () => {
250
- listen.unlisten();
253
+ const clearTimeouts = () => {
251
254
  for (const timeout of timeouts) clearTimeout(timeout);
252
255
  timeouts.clear();
253
- });
254
- while (!signal?.aborted) {
255
- let timeout;
256
- await new Promise((resolve) => {
257
- signal?.addEventListener("abort", resolve);
258
- timeout = setTimeout(() => {
259
- signal?.removeEventListener("abort", resolve);
260
- resolve(0);
261
- }, this.#pollIntervalMs);
262
- timeouts.add(timeout);
263
- });
264
- if (timeout != null) timeouts.delete(timeout);
265
- await safeSerializedPoll("interval");
256
+ };
257
+ signal?.addEventListener("abort", clearTimeouts, { once: true });
258
+ let unlistenError;
259
+ try {
260
+ while (!signal?.aborted) {
261
+ let timeout;
262
+ await new Promise((resolve) => {
263
+ signal?.addEventListener("abort", resolve, { once: true });
264
+ timeout = setTimeout(() => {
265
+ signal?.removeEventListener("abort", resolve);
266
+ resolve(0);
267
+ }, this.#pollIntervalMs);
268
+ timeouts.add(timeout);
269
+ });
270
+ if (timeout != null) timeouts.delete(timeout);
271
+ await safeSerializedPoll("interval");
272
+ }
273
+ } finally {
274
+ signal?.removeEventListener("abort", clearTimeouts);
275
+ clearTimeouts();
276
+ try {
277
+ await listen.unlisten();
278
+ } catch (error) {
279
+ if (!isConnectionDestroyedError(error)) unlistenError = error;
280
+ }
266
281
  }
267
- await new Promise((resolve) => {
268
- signal?.addEventListener("abort", () => resolve());
269
- if (signal?.aborted) return resolve();
270
- });
282
+ if (unlistenError != null) throw unlistenError;
271
283
  }
272
284
  /**
273
285
  * Initializes the message queue table if it does not already exist.
package/dist/mq.js CHANGED
@@ -25,6 +25,10 @@ function withTimeout(result, timeoutMs) {
25
25
  function isInitializationRaceError(error) {
26
26
  return error instanceof postgres.PostgresError && (error.constraint_name === "pg_type_typname_nsp_index" || error.constraint_name === "pg_class_relname_nsp_index" || error.code === "42P07" || error.code === "42710");
27
27
  }
28
+ function isConnectionDestroyedError(error) {
29
+ if (typeof error !== "object" || error == null) return false;
30
+ return "code" in error && error.code === "CONNECTION_DESTROYED" || "errno" in error && error.errno === "CONNECTION_DESTROYED";
31
+ }
28
32
  function getCreatedIndexName(tableName) {
29
33
  let hash = 0;
30
34
  for (let i = 0; i < tableName.length; i++) hash = hash * 31 + tableName.charCodeAt(i) >>> 0;
@@ -243,28 +247,36 @@ var PostgresMessageQueue = class {
243
247
  await safeSerializedPoll("notify-fallback");
244
248
  }
245
249
  }, () => safeSerializedPoll("subscribe"));
246
- signal?.addEventListener("abort", () => {
247
- listen.unlisten();
250
+ const clearTimeouts = () => {
248
251
  for (const timeout of timeouts) clearTimeout(timeout);
249
252
  timeouts.clear();
250
- });
251
- while (!signal?.aborted) {
252
- let timeout;
253
- await new Promise((resolve) => {
254
- signal?.addEventListener("abort", resolve);
255
- timeout = setTimeout(() => {
256
- signal?.removeEventListener("abort", resolve);
257
- resolve(0);
258
- }, this.#pollIntervalMs);
259
- timeouts.add(timeout);
260
- });
261
- if (timeout != null) timeouts.delete(timeout);
262
- await safeSerializedPoll("interval");
253
+ };
254
+ signal?.addEventListener("abort", clearTimeouts, { once: true });
255
+ let unlistenError;
256
+ try {
257
+ while (!signal?.aborted) {
258
+ let timeout;
259
+ await new Promise((resolve) => {
260
+ signal?.addEventListener("abort", resolve, { once: true });
261
+ timeout = setTimeout(() => {
262
+ signal?.removeEventListener("abort", resolve);
263
+ resolve(0);
264
+ }, this.#pollIntervalMs);
265
+ timeouts.add(timeout);
266
+ });
267
+ if (timeout != null) timeouts.delete(timeout);
268
+ await safeSerializedPoll("interval");
269
+ }
270
+ } finally {
271
+ signal?.removeEventListener("abort", clearTimeouts);
272
+ clearTimeouts();
273
+ try {
274
+ await listen.unlisten();
275
+ } catch (error) {
276
+ if (!isConnectionDestroyedError(error)) unlistenError = error;
277
+ }
263
278
  }
264
- await new Promise((resolve) => {
265
- signal?.addEventListener("abort", () => resolve());
266
- if (signal?.aborted) return resolve();
267
- });
279
+ if (unlistenError != null) throw unlistenError;
268
280
  }
269
281
  /**
270
282
  * Initializes the message queue table if it does not already exist.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fedify/postgres",
3
- "version": "2.2.0-pr.715.28+06979f5f",
3
+ "version": "2.2.0-pr.731.34+1e1bb860",
4
4
  "description": "PostgreSQL drivers for Fedify",
5
5
  "keywords": [
6
6
  "fedify",
@@ -74,14 +74,14 @@
74
74
  },
75
75
  "peerDependencies": {
76
76
  "postgres": "^3.4.7",
77
- "@fedify/fedify": "^2.2.0-pr.715.28+06979f5f"
77
+ "@fedify/fedify": "^2.2.0-pr.731.34+1e1bb860"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@std/async": "npm:@jsr/std__async@^1.0.13",
81
81
  "tsdown": "^0.21.6",
82
82
  "typescript": "^5.9.2",
83
83
  "@fedify/fixture": "^2.0.0",
84
- "@fedify/testing": "^2.2.0-pr.715.28+06979f5f"
84
+ "@fedify/testing": "^2.2.0-pr.731.34+1e1bb860"
85
85
  },
86
86
  "scripts": {
87
87
  "build:self": "tsdown",