@fedify/postgres 2.3.8 → 2.3.9
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 : Temporal.Duration.from(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 : Temporal.Duration.from(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
|
@@ -158,6 +158,7 @@ var PostgresMessageQueue = class {
|
|
|
158
158
|
async listen(handler, options = {}) {
|
|
159
159
|
await this.initialize();
|
|
160
160
|
const { signal } = options;
|
|
161
|
+
if (signal?.aborted) return;
|
|
161
162
|
const poll = async () => {
|
|
162
163
|
while (!signal?.aborted) {
|
|
163
164
|
let processed = false;
|
|
@@ -251,6 +252,7 @@ var PostgresMessageQueue = class {
|
|
|
251
252
|
};
|
|
252
253
|
const timeouts = /* @__PURE__ */ new Set();
|
|
253
254
|
const listen = await this.#sql.listen(this.#channelName, async (delay) => {
|
|
255
|
+
if (signal?.aborted) return;
|
|
254
256
|
try {
|
|
255
257
|
const durationMs = Temporal.Duration.from(delay).total("millisecond");
|
|
256
258
|
if (durationMs < 1) await safeSerializedPoll("notify-immediate");
|
|
@@ -274,31 +276,35 @@ var PostgresMessageQueue = class {
|
|
|
274
276
|
timeouts.clear();
|
|
275
277
|
};
|
|
276
278
|
signal?.addEventListener("abort", clearTimeouts, { once: true });
|
|
277
|
-
let unlistenError;
|
|
278
279
|
try {
|
|
279
280
|
while (!signal?.aborted) {
|
|
280
|
-
let timeout;
|
|
281
281
|
await new Promise((resolve) => {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
signal?.removeEventListener("abort",
|
|
285
|
-
resolve(
|
|
282
|
+
const onAbort = () => {
|
|
283
|
+
clearTimeout(timeout);
|
|
284
|
+
signal?.removeEventListener("abort", onAbort);
|
|
285
|
+
resolve();
|
|
286
|
+
};
|
|
287
|
+
const timeout = setTimeout(() => {
|
|
288
|
+
signal?.removeEventListener("abort", onAbort);
|
|
289
|
+
resolve();
|
|
286
290
|
}, this.#pollIntervalMs);
|
|
287
|
-
|
|
291
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
288
292
|
});
|
|
289
|
-
if (timeout != null) timeouts.delete(timeout);
|
|
290
293
|
await safeSerializedPoll("interval");
|
|
291
294
|
}
|
|
292
295
|
} finally {
|
|
293
296
|
signal?.removeEventListener("abort", clearTimeouts);
|
|
294
297
|
clearTimeouts();
|
|
298
|
+
await pollLock;
|
|
295
299
|
try {
|
|
296
300
|
await listen.unlisten();
|
|
297
301
|
} catch (error) {
|
|
298
|
-
if (!isConnectionDestroyedError(error))
|
|
302
|
+
if (!isConnectionDestroyedError(error)) logger.error("Error while unlistening from channel {channelName}: {error}", {
|
|
303
|
+
channelName: this.#channelName,
|
|
304
|
+
error
|
|
305
|
+
});
|
|
299
306
|
}
|
|
300
307
|
}
|
|
301
|
-
if (unlistenError != null) throw unlistenError;
|
|
302
308
|
}
|
|
303
309
|
/**
|
|
304
310
|
* Initializes the message queue table if it does not already exist.
|
package/dist/mq.js
CHANGED
|
@@ -155,6 +155,7 @@ var PostgresMessageQueue = class {
|
|
|
155
155
|
async listen(handler, options = {}) {
|
|
156
156
|
await this.initialize();
|
|
157
157
|
const { signal } = options;
|
|
158
|
+
if (signal?.aborted) return;
|
|
158
159
|
const poll = async () => {
|
|
159
160
|
while (!signal?.aborted) {
|
|
160
161
|
let processed = false;
|
|
@@ -248,6 +249,7 @@ var PostgresMessageQueue = class {
|
|
|
248
249
|
};
|
|
249
250
|
const timeouts = /* @__PURE__ */ new Set();
|
|
250
251
|
const listen = await this.#sql.listen(this.#channelName, async (delay) => {
|
|
252
|
+
if (signal?.aborted) return;
|
|
251
253
|
try {
|
|
252
254
|
const durationMs = Temporal.Duration.from(delay).total("millisecond");
|
|
253
255
|
if (durationMs < 1) await safeSerializedPoll("notify-immediate");
|
|
@@ -271,31 +273,35 @@ var PostgresMessageQueue = class {
|
|
|
271
273
|
timeouts.clear();
|
|
272
274
|
};
|
|
273
275
|
signal?.addEventListener("abort", clearTimeouts, { once: true });
|
|
274
|
-
let unlistenError;
|
|
275
276
|
try {
|
|
276
277
|
while (!signal?.aborted) {
|
|
277
|
-
let timeout;
|
|
278
278
|
await new Promise((resolve) => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
signal?.removeEventListener("abort",
|
|
282
|
-
resolve(
|
|
279
|
+
const onAbort = () => {
|
|
280
|
+
clearTimeout(timeout);
|
|
281
|
+
signal?.removeEventListener("abort", onAbort);
|
|
282
|
+
resolve();
|
|
283
|
+
};
|
|
284
|
+
const timeout = setTimeout(() => {
|
|
285
|
+
signal?.removeEventListener("abort", onAbort);
|
|
286
|
+
resolve();
|
|
283
287
|
}, this.#pollIntervalMs);
|
|
284
|
-
|
|
288
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
285
289
|
});
|
|
286
|
-
if (timeout != null) timeouts.delete(timeout);
|
|
287
290
|
await safeSerializedPoll("interval");
|
|
288
291
|
}
|
|
289
292
|
} finally {
|
|
290
293
|
signal?.removeEventListener("abort", clearTimeouts);
|
|
291
294
|
clearTimeouts();
|
|
295
|
+
await pollLock;
|
|
292
296
|
try {
|
|
293
297
|
await listen.unlisten();
|
|
294
298
|
} catch (error) {
|
|
295
|
-
if (!isConnectionDestroyedError(error))
|
|
299
|
+
if (!isConnectionDestroyedError(error)) logger.error("Error while unlistening from channel {channelName}: {error}", {
|
|
300
|
+
channelName: this.#channelName,
|
|
301
|
+
error
|
|
302
|
+
});
|
|
296
303
|
}
|
|
297
304
|
}
|
|
298
|
-
if (unlistenError != null) throw unlistenError;
|
|
299
305
|
}
|
|
300
306
|
/**
|
|
301
307
|
* 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.3.
|
|
3
|
+
"version": "2.3.9",
|
|
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.3.
|
|
77
|
+
"@fedify/fedify": "^2.3.9"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@std/async": "npm:@jsr/std__async@^1.0.13",
|
|
81
81
|
"tsdown": "^0.22.0",
|
|
82
82
|
"typescript": "^6.0.0",
|
|
83
83
|
"@fedify/fixture": "^2.0.0",
|
|
84
|
-
"@fedify/testing": "^2.3.
|
|
84
|
+
"@fedify/testing": "^2.3.9"
|
|
85
85
|
},
|
|
86
86
|
"scripts": {
|
|
87
87
|
"build:self": "tsdown",
|