@fedify/postgres 2.2.13 → 2.2.14
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/dist/kv.cjs +2 -1
- package/dist/kv.js +2 -1
- package/dist/mq.cjs +16 -10
- package/dist/mq.js +16 -10
- package/package.json +3 -3
package/dist/kv.cjs
CHANGED
|
@@ -58,11 +58,12 @@ var PostgresKvStore = class {
|
|
|
58
58
|
async set(key, value, options) {
|
|
59
59
|
await this.initialize();
|
|
60
60
|
const ttl = options?.ttl == null ? null : options.ttl.toString();
|
|
61
|
+
const jsonValue = value === null ? this.#sql`'null'::jsonb` : this.#json(value);
|
|
61
62
|
await this.#sql`
|
|
62
63
|
INSERT INTO ${this.#sql(this.#tableName)} (key, value, ttl)
|
|
63
64
|
VALUES (
|
|
64
65
|
${key},
|
|
65
|
-
${
|
|
66
|
+
${jsonValue},
|
|
66
67
|
${ttl}
|
|
67
68
|
)
|
|
68
69
|
ON CONFLICT (key)
|
package/dist/kv.js
CHANGED
|
@@ -57,11 +57,12 @@ var PostgresKvStore = class {
|
|
|
57
57
|
async set(key, value, options) {
|
|
58
58
|
await this.initialize();
|
|
59
59
|
const ttl = options?.ttl == null ? null : options.ttl.toString();
|
|
60
|
+
const jsonValue = value === null ? this.#sql`'null'::jsonb` : this.#json(value);
|
|
60
61
|
await this.#sql`
|
|
61
62
|
INSERT INTO ${this.#sql(this.#tableName)} (key, value, ttl)
|
|
62
63
|
VALUES (
|
|
63
64
|
${key},
|
|
64
|
-
${
|
|
65
|
+
${jsonValue},
|
|
65
66
|
${ttl}
|
|
66
67
|
)
|
|
67
68
|
ON CONFLICT (key)
|
package/dist/mq.cjs
CHANGED
|
@@ -140,6 +140,7 @@ var PostgresMessageQueue = class {
|
|
|
140
140
|
async listen(handler, options = {}) {
|
|
141
141
|
await this.initialize();
|
|
142
142
|
const { signal } = options;
|
|
143
|
+
if (signal?.aborted) return;
|
|
143
144
|
const poll = async () => {
|
|
144
145
|
while (!signal?.aborted) {
|
|
145
146
|
let processed = false;
|
|
@@ -233,6 +234,7 @@ var PostgresMessageQueue = class {
|
|
|
233
234
|
};
|
|
234
235
|
const timeouts = /* @__PURE__ */ new Set();
|
|
235
236
|
const listen = await this.#sql.listen(this.#channelName, async (delay) => {
|
|
237
|
+
if (signal?.aborted) return;
|
|
236
238
|
try {
|
|
237
239
|
const durationMs = Temporal.Duration.from(delay).total("millisecond");
|
|
238
240
|
if (durationMs < 1) await safeSerializedPoll("notify-immediate");
|
|
@@ -256,31 +258,35 @@ var PostgresMessageQueue = class {
|
|
|
256
258
|
timeouts.clear();
|
|
257
259
|
};
|
|
258
260
|
signal?.addEventListener("abort", clearTimeouts, { once: true });
|
|
259
|
-
let unlistenError;
|
|
260
261
|
try {
|
|
261
262
|
while (!signal?.aborted) {
|
|
262
|
-
let timeout;
|
|
263
263
|
await new Promise((resolve) => {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
signal?.removeEventListener("abort",
|
|
267
|
-
resolve(
|
|
264
|
+
const onAbort = () => {
|
|
265
|
+
clearTimeout(timeout);
|
|
266
|
+
signal?.removeEventListener("abort", onAbort);
|
|
267
|
+
resolve();
|
|
268
|
+
};
|
|
269
|
+
const timeout = setTimeout(() => {
|
|
270
|
+
signal?.removeEventListener("abort", onAbort);
|
|
271
|
+
resolve();
|
|
268
272
|
}, this.#pollIntervalMs);
|
|
269
|
-
|
|
273
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
270
274
|
});
|
|
271
|
-
if (timeout != null) timeouts.delete(timeout);
|
|
272
275
|
await safeSerializedPoll("interval");
|
|
273
276
|
}
|
|
274
277
|
} finally {
|
|
275
278
|
signal?.removeEventListener("abort", clearTimeouts);
|
|
276
279
|
clearTimeouts();
|
|
280
|
+
await pollLock;
|
|
277
281
|
try {
|
|
278
282
|
await listen.unlisten();
|
|
279
283
|
} catch (error) {
|
|
280
|
-
if (!isConnectionDestroyedError(error))
|
|
284
|
+
if (!isConnectionDestroyedError(error)) logger.error("Error while unlistening from channel {channelName}: {error}", {
|
|
285
|
+
channelName: this.#channelName,
|
|
286
|
+
error
|
|
287
|
+
});
|
|
281
288
|
}
|
|
282
289
|
}
|
|
283
|
-
if (unlistenError != null) throw unlistenError;
|
|
284
290
|
}
|
|
285
291
|
/**
|
|
286
292
|
* Initializes the message queue table if it does not already exist.
|
package/dist/mq.js
CHANGED
|
@@ -137,6 +137,7 @@ var PostgresMessageQueue = class {
|
|
|
137
137
|
async listen(handler, options = {}) {
|
|
138
138
|
await this.initialize();
|
|
139
139
|
const { signal } = options;
|
|
140
|
+
if (signal?.aborted) return;
|
|
140
141
|
const poll = async () => {
|
|
141
142
|
while (!signal?.aborted) {
|
|
142
143
|
let processed = false;
|
|
@@ -230,6 +231,7 @@ var PostgresMessageQueue = class {
|
|
|
230
231
|
};
|
|
231
232
|
const timeouts = /* @__PURE__ */ new Set();
|
|
232
233
|
const listen = await this.#sql.listen(this.#channelName, async (delay) => {
|
|
234
|
+
if (signal?.aborted) return;
|
|
233
235
|
try {
|
|
234
236
|
const durationMs = Temporal.Duration.from(delay).total("millisecond");
|
|
235
237
|
if (durationMs < 1) await safeSerializedPoll("notify-immediate");
|
|
@@ -253,31 +255,35 @@ var PostgresMessageQueue = class {
|
|
|
253
255
|
timeouts.clear();
|
|
254
256
|
};
|
|
255
257
|
signal?.addEventListener("abort", clearTimeouts, { once: true });
|
|
256
|
-
let unlistenError;
|
|
257
258
|
try {
|
|
258
259
|
while (!signal?.aborted) {
|
|
259
|
-
let timeout;
|
|
260
260
|
await new Promise((resolve) => {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
signal?.removeEventListener("abort",
|
|
264
|
-
resolve(
|
|
261
|
+
const onAbort = () => {
|
|
262
|
+
clearTimeout(timeout);
|
|
263
|
+
signal?.removeEventListener("abort", onAbort);
|
|
264
|
+
resolve();
|
|
265
|
+
};
|
|
266
|
+
const timeout = setTimeout(() => {
|
|
267
|
+
signal?.removeEventListener("abort", onAbort);
|
|
268
|
+
resolve();
|
|
265
269
|
}, this.#pollIntervalMs);
|
|
266
|
-
|
|
270
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
267
271
|
});
|
|
268
|
-
if (timeout != null) timeouts.delete(timeout);
|
|
269
272
|
await safeSerializedPoll("interval");
|
|
270
273
|
}
|
|
271
274
|
} finally {
|
|
272
275
|
signal?.removeEventListener("abort", clearTimeouts);
|
|
273
276
|
clearTimeouts();
|
|
277
|
+
await pollLock;
|
|
274
278
|
try {
|
|
275
279
|
await listen.unlisten();
|
|
276
280
|
} catch (error) {
|
|
277
|
-
if (!isConnectionDestroyedError(error))
|
|
281
|
+
if (!isConnectionDestroyedError(error)) logger.error("Error while unlistening from channel {channelName}: {error}", {
|
|
282
|
+
channelName: this.#channelName,
|
|
283
|
+
error
|
|
284
|
+
});
|
|
278
285
|
}
|
|
279
286
|
}
|
|
280
|
-
if (unlistenError != null) throw unlistenError;
|
|
281
287
|
}
|
|
282
288
|
/**
|
|
283
289
|
* 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.
|
|
3
|
+
"version": "2.2.14",
|
|
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.
|
|
77
|
+
"@fedify/fedify": "^2.2.14"
|
|
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": "^6.0.0",
|
|
83
83
|
"@fedify/fixture": "^2.0.0",
|
|
84
|
-
"@fedify/testing": "^2.2.
|
|
84
|
+
"@fedify/testing": "^2.2.14"
|
|
85
85
|
},
|
|
86
86
|
"scripts": {
|
|
87
87
|
"build:self": "tsdown",
|