@upstash/qstash 2.7.9 → 2.7.11-canary
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/{chunk-QK55BUNQ.mjs → chunk-KWSSCN6R.mjs} +30 -0
- package/{chunk-UPFTIDSI.mjs → chunk-XLCNEVA2.mjs} +1 -1
- package/cloudflare.js +2942 -6
- package/cloudflare.mjs +1 -1
- package/h3.js +3333 -5
- package/h3.mjs +2 -2
- package/hono.js +2942 -6
- package/hono.mjs +1 -1
- package/index.js +1623 -27
- package/index.mjs +1 -1
- package/nextjs.js +4598 -34
- package/nextjs.mjs +1631 -7
- package/nuxt.js +828 -7
- package/nuxt.mjs +2 -2
- package/package.json +1 -1
- package/solidjs.js +2946 -11
- package/solidjs.mjs +1 -1
- package/svelte.js +2943 -8
- package/svelte.mjs +1 -1
- package/workflow.js +2939 -3
- package/workflow.mjs +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -167
- package/chunk-R5CZPV7H.js +0 -2952
- package/chunk-VN7YQ2UN.js +0 -1
- package/chunk-YBZBGHDQ.js +0 -403
package/nuxt.js
CHANGED
|
@@ -1,11 +1,832 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
6
29
|
|
|
7
30
|
// platforms/nuxt.ts
|
|
8
|
-
var
|
|
31
|
+
var nuxt_exports = {};
|
|
32
|
+
__export(nuxt_exports, {
|
|
33
|
+
verifySignatureNuxt: () => verifySignatureNuxt
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(nuxt_exports);
|
|
36
|
+
|
|
37
|
+
// node_modules/defu/dist/defu.mjs
|
|
38
|
+
function isPlainObject(value) {
|
|
39
|
+
if (value === null || typeof value !== "object") {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const prototype = Object.getPrototypeOf(value);
|
|
43
|
+
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (Symbol.iterator in value) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
if (Symbol.toStringTag in value) {
|
|
50
|
+
return Object.prototype.toString.call(value) === "[object Module]";
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
function _defu(baseObject, defaults, namespace = ".", merger) {
|
|
55
|
+
if (!isPlainObject(defaults)) {
|
|
56
|
+
return _defu(baseObject, {}, namespace, merger);
|
|
57
|
+
}
|
|
58
|
+
const object = Object.assign({}, defaults);
|
|
59
|
+
for (const key in baseObject) {
|
|
60
|
+
if (key === "__proto__" || key === "constructor") {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const value = baseObject[key];
|
|
64
|
+
if (value === null || value === void 0) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (merger && merger(object, key, value, namespace)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray(value) && Array.isArray(object[key])) {
|
|
71
|
+
object[key] = [...value, ...object[key]];
|
|
72
|
+
} else if (isPlainObject(value) && isPlainObject(object[key])) {
|
|
73
|
+
object[key] = _defu(
|
|
74
|
+
value,
|
|
75
|
+
object[key],
|
|
76
|
+
(namespace ? `${namespace}.` : "") + key.toString(),
|
|
77
|
+
merger
|
|
78
|
+
);
|
|
79
|
+
} else {
|
|
80
|
+
object[key] = value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return object;
|
|
84
|
+
}
|
|
85
|
+
function createDefu(merger) {
|
|
86
|
+
return (...arguments_) => (
|
|
87
|
+
// eslint-disable-next-line unicorn/no-array-reduce
|
|
88
|
+
arguments_.reduce((p, c) => _defu(p, c, "", merger), {})
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
var defu = createDefu();
|
|
92
|
+
var defuFn = createDefu((object, key, currentValue) => {
|
|
93
|
+
if (object[key] !== void 0 && typeof currentValue === "function") {
|
|
94
|
+
object[key] = currentValue(object[key]);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
var defuArrayFn = createDefu((object, key, currentValue) => {
|
|
99
|
+
if (Array.isArray(object[key]) && typeof currentValue === "function") {
|
|
100
|
+
object[key] = currentValue(object[key]);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// node_modules/h3/dist/index.mjs
|
|
106
|
+
function hasProp(obj, prop) {
|
|
107
|
+
try {
|
|
108
|
+
return prop in obj;
|
|
109
|
+
} catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
var __defProp$2 = Object.defineProperty;
|
|
114
|
+
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
115
|
+
var __publicField$2 = (obj, key, value) => {
|
|
116
|
+
__defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
117
|
+
return value;
|
|
118
|
+
};
|
|
119
|
+
var H3Error = class extends Error {
|
|
120
|
+
constructor(message, opts = {}) {
|
|
121
|
+
super(message, opts);
|
|
122
|
+
__publicField$2(this, "statusCode", 500);
|
|
123
|
+
__publicField$2(this, "fatal", false);
|
|
124
|
+
__publicField$2(this, "unhandled", false);
|
|
125
|
+
__publicField$2(this, "statusMessage");
|
|
126
|
+
__publicField$2(this, "data");
|
|
127
|
+
__publicField$2(this, "cause");
|
|
128
|
+
if (opts.cause && !this.cause) {
|
|
129
|
+
this.cause = opts.cause;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
toJSON() {
|
|
133
|
+
const obj = {
|
|
134
|
+
message: this.message,
|
|
135
|
+
statusCode: sanitizeStatusCode(this.statusCode, 500)
|
|
136
|
+
};
|
|
137
|
+
if (this.statusMessage) {
|
|
138
|
+
obj.statusMessage = sanitizeStatusMessage(this.statusMessage);
|
|
139
|
+
}
|
|
140
|
+
if (this.data !== void 0) {
|
|
141
|
+
obj.data = this.data;
|
|
142
|
+
}
|
|
143
|
+
return obj;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
__publicField$2(H3Error, "__h3_error__", true);
|
|
147
|
+
function createError(input) {
|
|
148
|
+
if (typeof input === "string") {
|
|
149
|
+
return new H3Error(input);
|
|
150
|
+
}
|
|
151
|
+
if (isError(input)) {
|
|
152
|
+
return input;
|
|
153
|
+
}
|
|
154
|
+
const err2 = new H3Error(input.message ?? input.statusMessage ?? "", {
|
|
155
|
+
cause: input.cause || input
|
|
156
|
+
});
|
|
157
|
+
if (hasProp(input, "stack")) {
|
|
158
|
+
try {
|
|
159
|
+
Object.defineProperty(err2, "stack", {
|
|
160
|
+
get() {
|
|
161
|
+
return input.stack;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
} catch {
|
|
165
|
+
try {
|
|
166
|
+
err2.stack = input.stack;
|
|
167
|
+
} catch {
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (input.data) {
|
|
172
|
+
err2.data = input.data;
|
|
173
|
+
}
|
|
174
|
+
if (input.statusCode) {
|
|
175
|
+
err2.statusCode = sanitizeStatusCode(input.statusCode, err2.statusCode);
|
|
176
|
+
} else if (input.status) {
|
|
177
|
+
err2.statusCode = sanitizeStatusCode(input.status, err2.statusCode);
|
|
178
|
+
}
|
|
179
|
+
if (input.statusMessage) {
|
|
180
|
+
err2.statusMessage = input.statusMessage;
|
|
181
|
+
} else if (input.statusText) {
|
|
182
|
+
err2.statusMessage = input.statusText;
|
|
183
|
+
}
|
|
184
|
+
if (err2.statusMessage) {
|
|
185
|
+
const originalMessage = err2.statusMessage;
|
|
186
|
+
const sanitizedMessage = sanitizeStatusMessage(err2.statusMessage);
|
|
187
|
+
if (sanitizedMessage !== originalMessage) {
|
|
188
|
+
console.warn(
|
|
189
|
+
"[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default."
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (input.fatal !== void 0) {
|
|
194
|
+
err2.fatal = input.fatal;
|
|
195
|
+
}
|
|
196
|
+
if (input.unhandled !== void 0) {
|
|
197
|
+
err2.unhandled = input.unhandled;
|
|
198
|
+
}
|
|
199
|
+
return err2;
|
|
200
|
+
}
|
|
201
|
+
function isError(input) {
|
|
202
|
+
return input?.constructor?.__h3_error__ === true;
|
|
203
|
+
}
|
|
204
|
+
function isMethod(event, expected, allowHead) {
|
|
205
|
+
if (allowHead && event.method === "HEAD") {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
if (typeof expected === "string") {
|
|
209
|
+
if (event.method === expected) {
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
} else if (expected.includes(event.method)) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
function assertMethod(event, expected, allowHead) {
|
|
218
|
+
if (!isMethod(event, expected, allowHead)) {
|
|
219
|
+
throw createError({
|
|
220
|
+
statusCode: 405,
|
|
221
|
+
statusMessage: "HTTP method is not allowed."
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function getRequestHeaders(event) {
|
|
226
|
+
const _headers = {};
|
|
227
|
+
for (const key in event.node.req.headers) {
|
|
228
|
+
const val = event.node.req.headers[key];
|
|
229
|
+
_headers[key] = Array.isArray(val) ? val.filter(Boolean).join(", ") : val;
|
|
230
|
+
}
|
|
231
|
+
return _headers;
|
|
232
|
+
}
|
|
233
|
+
function getRequestHeader(event, name) {
|
|
234
|
+
const headers = getRequestHeaders(event);
|
|
235
|
+
const value = headers[name.toLowerCase()];
|
|
236
|
+
return value;
|
|
237
|
+
}
|
|
238
|
+
var getHeader = getRequestHeader;
|
|
239
|
+
var RawBodySymbol = Symbol.for("h3RawBody");
|
|
240
|
+
var ParsedBodySymbol = Symbol.for("h3ParsedBody");
|
|
241
|
+
var PayloadMethods$1 = ["PATCH", "POST", "PUT", "DELETE"];
|
|
242
|
+
function readRawBody(event, encoding = "utf8") {
|
|
243
|
+
assertMethod(event, PayloadMethods$1);
|
|
244
|
+
const _rawBody = event._requestBody || event.web?.request?.body || event.node.req[RawBodySymbol] || event.node.req.rawBody || event.node.req.body;
|
|
245
|
+
if (_rawBody) {
|
|
246
|
+
const promise2 = Promise.resolve(_rawBody).then((_resolved) => {
|
|
247
|
+
if (Buffer.isBuffer(_resolved)) {
|
|
248
|
+
return _resolved;
|
|
249
|
+
}
|
|
250
|
+
if (typeof _resolved.pipeTo === "function") {
|
|
251
|
+
return new Promise((resolve, reject) => {
|
|
252
|
+
const chunks = [];
|
|
253
|
+
_resolved.pipeTo(
|
|
254
|
+
new WritableStream({
|
|
255
|
+
write(chunk) {
|
|
256
|
+
chunks.push(chunk);
|
|
257
|
+
},
|
|
258
|
+
close() {
|
|
259
|
+
resolve(Buffer.concat(chunks));
|
|
260
|
+
},
|
|
261
|
+
abort(reason) {
|
|
262
|
+
reject(reason);
|
|
263
|
+
}
|
|
264
|
+
})
|
|
265
|
+
).catch(reject);
|
|
266
|
+
});
|
|
267
|
+
} else if (typeof _resolved.pipe === "function") {
|
|
268
|
+
return new Promise((resolve, reject) => {
|
|
269
|
+
const chunks = [];
|
|
270
|
+
_resolved.on("data", (chunk) => {
|
|
271
|
+
chunks.push(chunk);
|
|
272
|
+
}).on("end", () => {
|
|
273
|
+
resolve(Buffer.concat(chunks));
|
|
274
|
+
}).on("error", reject);
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
if (_resolved.constructor === Object) {
|
|
278
|
+
return Buffer.from(JSON.stringify(_resolved));
|
|
279
|
+
}
|
|
280
|
+
return Buffer.from(_resolved);
|
|
281
|
+
});
|
|
282
|
+
return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2;
|
|
283
|
+
}
|
|
284
|
+
if (!Number.parseInt(event.node.req.headers["content-length"] || "") && !String(event.node.req.headers["transfer-encoding"] ?? "").split(",").map((e) => e.trim()).filter(Boolean).includes("chunked")) {
|
|
285
|
+
return Promise.resolve(void 0);
|
|
286
|
+
}
|
|
287
|
+
const promise = event.node.req[RawBodySymbol] = new Promise(
|
|
288
|
+
(resolve, reject) => {
|
|
289
|
+
const bodyData = [];
|
|
290
|
+
event.node.req.on("error", (err2) => {
|
|
291
|
+
reject(err2);
|
|
292
|
+
}).on("data", (chunk) => {
|
|
293
|
+
bodyData.push(chunk);
|
|
294
|
+
}).on("end", () => {
|
|
295
|
+
resolve(Buffer.concat(bodyData));
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
);
|
|
299
|
+
const result = encoding ? promise.then((buff) => buff.toString(encoding)) : promise;
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
var DISALLOWED_STATUS_CHARS = /[^\u0009\u0020-\u007E]/g;
|
|
303
|
+
function sanitizeStatusMessage(statusMessage = "") {
|
|
304
|
+
return statusMessage.replace(DISALLOWED_STATUS_CHARS, "");
|
|
305
|
+
}
|
|
306
|
+
function sanitizeStatusCode(statusCode, defaultStatusCode = 200) {
|
|
307
|
+
if (!statusCode) {
|
|
308
|
+
return defaultStatusCode;
|
|
309
|
+
}
|
|
310
|
+
if (typeof statusCode === "string") {
|
|
311
|
+
statusCode = Number.parseInt(statusCode, 10);
|
|
312
|
+
}
|
|
313
|
+
if (statusCode < 100 || statusCode > 999) {
|
|
314
|
+
return defaultStatusCode;
|
|
315
|
+
}
|
|
316
|
+
return statusCode;
|
|
317
|
+
}
|
|
318
|
+
var getSessionPromise = Symbol("getSession");
|
|
319
|
+
function defineEventHandler(handler) {
|
|
320
|
+
if (typeof handler === "function") {
|
|
321
|
+
handler.__is_handler__ = true;
|
|
322
|
+
return handler;
|
|
323
|
+
}
|
|
324
|
+
const _hooks = {
|
|
325
|
+
onRequest: _normalizeArray(handler.onRequest),
|
|
326
|
+
onBeforeResponse: _normalizeArray(handler.onBeforeResponse)
|
|
327
|
+
};
|
|
328
|
+
const _handler = (event) => {
|
|
329
|
+
return _callHandler(event, handler.handler, _hooks);
|
|
330
|
+
};
|
|
331
|
+
_handler.__is_handler__ = true;
|
|
332
|
+
_handler.__resolve__ = handler.handler.__resolve__;
|
|
333
|
+
_handler.__websocket__ = handler.websocket;
|
|
334
|
+
return _handler;
|
|
335
|
+
}
|
|
336
|
+
function _normalizeArray(input) {
|
|
337
|
+
return input ? Array.isArray(input) ? input : [input] : void 0;
|
|
338
|
+
}
|
|
339
|
+
async function _callHandler(event, handler, hooks) {
|
|
340
|
+
if (hooks.onRequest) {
|
|
341
|
+
for (const hook of hooks.onRequest) {
|
|
342
|
+
await hook(event);
|
|
343
|
+
if (event.handled) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
const body = await handler(event);
|
|
349
|
+
const response = { body };
|
|
350
|
+
if (hooks.onBeforeResponse) {
|
|
351
|
+
for (const hook of hooks.onBeforeResponse) {
|
|
352
|
+
await hook(event, response);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return response.body;
|
|
356
|
+
}
|
|
357
|
+
var H3Headers = globalThis.Headers;
|
|
358
|
+
var H3Response = globalThis.Response;
|
|
9
359
|
|
|
360
|
+
// src/receiver.ts
|
|
361
|
+
var jose = __toESM(require("jose"));
|
|
362
|
+
var import_crypto_js = __toESM(require("crypto-js"));
|
|
363
|
+
var SignatureError = class extends Error {
|
|
364
|
+
constructor(message) {
|
|
365
|
+
super(message);
|
|
366
|
+
this.name = "SignatureError";
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
var Receiver = class {
|
|
370
|
+
currentSigningKey;
|
|
371
|
+
nextSigningKey;
|
|
372
|
+
constructor(config) {
|
|
373
|
+
this.currentSigningKey = config.currentSigningKey;
|
|
374
|
+
this.nextSigningKey = config.nextSigningKey;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Verify the signature of a request.
|
|
378
|
+
*
|
|
379
|
+
* Tries to verify the signature with the current signing key.
|
|
380
|
+
* If that fails, maybe because you have rotated the keys recently, it will
|
|
381
|
+
* try to verify the signature with the next signing key.
|
|
382
|
+
*
|
|
383
|
+
* If that fails, the signature is invalid and a `SignatureError` is thrown.
|
|
384
|
+
*/
|
|
385
|
+
async verify(request) {
|
|
386
|
+
const isValid = await this.verifyWithKey(this.currentSigningKey, request);
|
|
387
|
+
if (isValid) {
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
return this.verifyWithKey(this.nextSigningKey, request);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Verify signature with a specific signing key
|
|
394
|
+
*/
|
|
395
|
+
async verifyWithKey(key, request) {
|
|
396
|
+
const jwt = await jose.jwtVerify(request.signature, new TextEncoder().encode(key), {
|
|
397
|
+
issuer: "Upstash",
|
|
398
|
+
clockTolerance: request.clockTolerance
|
|
399
|
+
}).catch((error) => {
|
|
400
|
+
throw new SignatureError(error.message);
|
|
401
|
+
});
|
|
402
|
+
const p = jwt.payload;
|
|
403
|
+
if (request.url !== void 0 && p.sub !== request.url) {
|
|
404
|
+
throw new SignatureError(`invalid subject: ${p.sub}, want: ${request.url}`);
|
|
405
|
+
}
|
|
406
|
+
const bodyHash = import_crypto_js.default.SHA256(request.body).toString(import_crypto_js.default.enc.Base64url);
|
|
407
|
+
const padding = new RegExp(/=+$/);
|
|
408
|
+
if (p.body.replace(padding, "") !== bodyHash.replace(padding, "")) {
|
|
409
|
+
throw new SignatureError(`body hash does not match, want: ${p.body}, got: ${bodyHash}`);
|
|
410
|
+
}
|
|
411
|
+
return true;
|
|
412
|
+
}
|
|
413
|
+
};
|
|
10
414
|
|
|
11
|
-
|
|
415
|
+
// node_modules/neverthrow/dist/index.es.js
|
|
416
|
+
var defaultErrorConfig = {
|
|
417
|
+
withStackTrace: false
|
|
418
|
+
};
|
|
419
|
+
var createNeverThrowError = (message, result, config = defaultErrorConfig) => {
|
|
420
|
+
const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error };
|
|
421
|
+
const maybeStack = config.withStackTrace ? new Error().stack : void 0;
|
|
422
|
+
return {
|
|
423
|
+
data,
|
|
424
|
+
message,
|
|
425
|
+
stack: maybeStack
|
|
426
|
+
};
|
|
427
|
+
};
|
|
428
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
429
|
+
function adopt(value) {
|
|
430
|
+
return value instanceof P ? value : new P(function(resolve) {
|
|
431
|
+
resolve(value);
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
return new (P || (P = Promise))(function(resolve, reject) {
|
|
435
|
+
function fulfilled(value) {
|
|
436
|
+
try {
|
|
437
|
+
step(generator.next(value));
|
|
438
|
+
} catch (e) {
|
|
439
|
+
reject(e);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
function rejected(value) {
|
|
443
|
+
try {
|
|
444
|
+
step(generator["throw"](value));
|
|
445
|
+
} catch (e) {
|
|
446
|
+
reject(e);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
function step(result) {
|
|
450
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
451
|
+
}
|
|
452
|
+
step((generator = generator.apply(thisArg, [])).next());
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
function __values(o) {
|
|
456
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
457
|
+
if (m)
|
|
458
|
+
return m.call(o);
|
|
459
|
+
if (o && typeof o.length === "number")
|
|
460
|
+
return {
|
|
461
|
+
next: function() {
|
|
462
|
+
if (o && i >= o.length)
|
|
463
|
+
o = void 0;
|
|
464
|
+
return { value: o && o[i++], done: !o };
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
468
|
+
}
|
|
469
|
+
function __await(v) {
|
|
470
|
+
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
|
471
|
+
}
|
|
472
|
+
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
473
|
+
if (!Symbol.asyncIterator)
|
|
474
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
475
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
476
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
|
|
477
|
+
return this;
|
|
478
|
+
}, i;
|
|
479
|
+
function verb(n) {
|
|
480
|
+
if (g[n])
|
|
481
|
+
i[n] = function(v) {
|
|
482
|
+
return new Promise(function(a, b) {
|
|
483
|
+
q.push([n, v, a, b]) > 1 || resume(n, v);
|
|
484
|
+
});
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
function resume(n, v) {
|
|
488
|
+
try {
|
|
489
|
+
step(g[n](v));
|
|
490
|
+
} catch (e) {
|
|
491
|
+
settle(q[0][3], e);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
function step(r) {
|
|
495
|
+
r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
|
|
496
|
+
}
|
|
497
|
+
function fulfill(value) {
|
|
498
|
+
resume("next", value);
|
|
499
|
+
}
|
|
500
|
+
function reject(value) {
|
|
501
|
+
resume("throw", value);
|
|
502
|
+
}
|
|
503
|
+
function settle(f, v) {
|
|
504
|
+
if (f(v), q.shift(), q.length)
|
|
505
|
+
resume(q[0][0], q[0][1]);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
function __asyncDelegator(o) {
|
|
509
|
+
var i, p;
|
|
510
|
+
return i = {}, verb("next"), verb("throw", function(e) {
|
|
511
|
+
throw e;
|
|
512
|
+
}), verb("return"), i[Symbol.iterator] = function() {
|
|
513
|
+
return this;
|
|
514
|
+
}, i;
|
|
515
|
+
function verb(n, f) {
|
|
516
|
+
i[n] = o[n] ? function(v) {
|
|
517
|
+
return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v;
|
|
518
|
+
} : f;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
function __asyncValues(o) {
|
|
522
|
+
if (!Symbol.asyncIterator)
|
|
523
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
524
|
+
var m = o[Symbol.asyncIterator], i;
|
|
525
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() {
|
|
526
|
+
return this;
|
|
527
|
+
}, i);
|
|
528
|
+
function verb(n) {
|
|
529
|
+
i[n] = o[n] && function(v) {
|
|
530
|
+
return new Promise(function(resolve, reject) {
|
|
531
|
+
v = o[n](v), settle(resolve, reject, v.done, v.value);
|
|
532
|
+
});
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
function settle(resolve, reject, d, v) {
|
|
536
|
+
Promise.resolve(v).then(function(v2) {
|
|
537
|
+
resolve({ value: v2, done: d });
|
|
538
|
+
}, reject);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
var ResultAsync = class _ResultAsync {
|
|
542
|
+
constructor(res) {
|
|
543
|
+
this._promise = res;
|
|
544
|
+
}
|
|
545
|
+
static fromSafePromise(promise) {
|
|
546
|
+
const newPromise = promise.then((value) => new Ok(value));
|
|
547
|
+
return new _ResultAsync(newPromise);
|
|
548
|
+
}
|
|
549
|
+
static fromPromise(promise, errorFn) {
|
|
550
|
+
const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e)));
|
|
551
|
+
return new _ResultAsync(newPromise);
|
|
552
|
+
}
|
|
553
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
554
|
+
static fromThrowable(fn, errorFn) {
|
|
555
|
+
return (...args) => {
|
|
556
|
+
return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () {
|
|
557
|
+
try {
|
|
558
|
+
return new Ok(yield fn(...args));
|
|
559
|
+
} catch (error) {
|
|
560
|
+
return new Err(errorFn ? errorFn(error) : error);
|
|
561
|
+
}
|
|
562
|
+
}))());
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
static combine(asyncResultList) {
|
|
566
|
+
return combineResultAsyncList(asyncResultList);
|
|
567
|
+
}
|
|
568
|
+
static combineWithAllErrors(asyncResultList) {
|
|
569
|
+
return combineResultAsyncListWithAllErrors(asyncResultList);
|
|
570
|
+
}
|
|
571
|
+
map(f) {
|
|
572
|
+
return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
573
|
+
if (res.isErr()) {
|
|
574
|
+
return new Err(res.error);
|
|
575
|
+
}
|
|
576
|
+
return new Ok(yield f(res.value));
|
|
577
|
+
})));
|
|
578
|
+
}
|
|
579
|
+
mapErr(f) {
|
|
580
|
+
return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
581
|
+
if (res.isOk()) {
|
|
582
|
+
return new Ok(res.value);
|
|
583
|
+
}
|
|
584
|
+
return new Err(yield f(res.error));
|
|
585
|
+
})));
|
|
586
|
+
}
|
|
587
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
588
|
+
andThen(f) {
|
|
589
|
+
return new _ResultAsync(this._promise.then((res) => {
|
|
590
|
+
if (res.isErr()) {
|
|
591
|
+
return new Err(res.error);
|
|
592
|
+
}
|
|
593
|
+
const newValue = f(res.value);
|
|
594
|
+
return newValue instanceof _ResultAsync ? newValue._promise : newValue;
|
|
595
|
+
}));
|
|
596
|
+
}
|
|
597
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
598
|
+
orElse(f) {
|
|
599
|
+
return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
600
|
+
if (res.isErr()) {
|
|
601
|
+
return f(res.error);
|
|
602
|
+
}
|
|
603
|
+
return new Ok(res.value);
|
|
604
|
+
})));
|
|
605
|
+
}
|
|
606
|
+
match(ok2, _err) {
|
|
607
|
+
return this._promise.then((res) => res.match(ok2, _err));
|
|
608
|
+
}
|
|
609
|
+
unwrapOr(t) {
|
|
610
|
+
return this._promise.then((res) => res.unwrapOr(t));
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`.
|
|
614
|
+
*/
|
|
615
|
+
safeUnwrap() {
|
|
616
|
+
return __asyncGenerator(this, arguments, function* safeUnwrap_1() {
|
|
617
|
+
return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap()))))));
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
// Makes ResultAsync implement PromiseLike<Result>
|
|
621
|
+
then(successCallback, failureCallback) {
|
|
622
|
+
return this._promise.then(successCallback, failureCallback);
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2)));
|
|
626
|
+
var fromPromise = ResultAsync.fromPromise;
|
|
627
|
+
var fromSafePromise = ResultAsync.fromSafePromise;
|
|
628
|
+
var fromAsyncThrowable = ResultAsync.fromThrowable;
|
|
629
|
+
var combineResultList = (resultList) => {
|
|
630
|
+
let acc = ok([]);
|
|
631
|
+
for (const result of resultList) {
|
|
632
|
+
if (result.isErr()) {
|
|
633
|
+
acc = err(result.error);
|
|
634
|
+
break;
|
|
635
|
+
} else {
|
|
636
|
+
acc.map((list) => list.push(result.value));
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
return acc;
|
|
640
|
+
};
|
|
641
|
+
var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);
|
|
642
|
+
var combineResultListWithAllErrors = (resultList) => {
|
|
643
|
+
let acc = ok([]);
|
|
644
|
+
for (const result of resultList) {
|
|
645
|
+
if (result.isErr() && acc.isErr()) {
|
|
646
|
+
acc.error.push(result.error);
|
|
647
|
+
} else if (result.isErr() && acc.isOk()) {
|
|
648
|
+
acc = err([result.error]);
|
|
649
|
+
} else if (result.isOk() && acc.isOk()) {
|
|
650
|
+
acc.value.push(result.value);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
return acc;
|
|
654
|
+
};
|
|
655
|
+
var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);
|
|
656
|
+
var Result;
|
|
657
|
+
(function(Result2) {
|
|
658
|
+
function fromThrowable2(fn, errorFn) {
|
|
659
|
+
return (...args) => {
|
|
660
|
+
try {
|
|
661
|
+
const result = fn(...args);
|
|
662
|
+
return ok(result);
|
|
663
|
+
} catch (e) {
|
|
664
|
+
return err(errorFn ? errorFn(e) : e);
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
}
|
|
668
|
+
Result2.fromThrowable = fromThrowable2;
|
|
669
|
+
function combine(resultList) {
|
|
670
|
+
return combineResultList(resultList);
|
|
671
|
+
}
|
|
672
|
+
Result2.combine = combine;
|
|
673
|
+
function combineWithAllErrors(resultList) {
|
|
674
|
+
return combineResultListWithAllErrors(resultList);
|
|
675
|
+
}
|
|
676
|
+
Result2.combineWithAllErrors = combineWithAllErrors;
|
|
677
|
+
})(Result || (Result = {}));
|
|
678
|
+
var ok = (value) => new Ok(value);
|
|
679
|
+
var err = (err2) => new Err(err2);
|
|
680
|
+
var Ok = class {
|
|
681
|
+
constructor(value) {
|
|
682
|
+
this.value = value;
|
|
683
|
+
}
|
|
684
|
+
isOk() {
|
|
685
|
+
return true;
|
|
686
|
+
}
|
|
687
|
+
isErr() {
|
|
688
|
+
return !this.isOk();
|
|
689
|
+
}
|
|
690
|
+
map(f) {
|
|
691
|
+
return ok(f(this.value));
|
|
692
|
+
}
|
|
693
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
694
|
+
mapErr(_f) {
|
|
695
|
+
return ok(this.value);
|
|
696
|
+
}
|
|
697
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
698
|
+
andThen(f) {
|
|
699
|
+
return f(this.value);
|
|
700
|
+
}
|
|
701
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
702
|
+
orElse(_f) {
|
|
703
|
+
return ok(this.value);
|
|
704
|
+
}
|
|
705
|
+
asyncAndThen(f) {
|
|
706
|
+
return f(this.value);
|
|
707
|
+
}
|
|
708
|
+
asyncMap(f) {
|
|
709
|
+
return ResultAsync.fromSafePromise(f(this.value));
|
|
710
|
+
}
|
|
711
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
712
|
+
unwrapOr(_v) {
|
|
713
|
+
return this.value;
|
|
714
|
+
}
|
|
715
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
716
|
+
match(ok2, _err) {
|
|
717
|
+
return ok2(this.value);
|
|
718
|
+
}
|
|
719
|
+
safeUnwrap() {
|
|
720
|
+
const value = this.value;
|
|
721
|
+
return function* () {
|
|
722
|
+
return value;
|
|
723
|
+
}();
|
|
724
|
+
}
|
|
725
|
+
_unsafeUnwrap(_) {
|
|
726
|
+
return this.value;
|
|
727
|
+
}
|
|
728
|
+
_unsafeUnwrapErr(config) {
|
|
729
|
+
throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config);
|
|
730
|
+
}
|
|
731
|
+
};
|
|
732
|
+
var Err = class {
|
|
733
|
+
constructor(error) {
|
|
734
|
+
this.error = error;
|
|
735
|
+
}
|
|
736
|
+
isOk() {
|
|
737
|
+
return false;
|
|
738
|
+
}
|
|
739
|
+
isErr() {
|
|
740
|
+
return !this.isOk();
|
|
741
|
+
}
|
|
742
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
743
|
+
map(_f) {
|
|
744
|
+
return err(this.error);
|
|
745
|
+
}
|
|
746
|
+
mapErr(f) {
|
|
747
|
+
return err(f(this.error));
|
|
748
|
+
}
|
|
749
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
750
|
+
andThen(_f) {
|
|
751
|
+
return err(this.error);
|
|
752
|
+
}
|
|
753
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
754
|
+
orElse(f) {
|
|
755
|
+
return f(this.error);
|
|
756
|
+
}
|
|
757
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
758
|
+
asyncAndThen(_f) {
|
|
759
|
+
return errAsync(this.error);
|
|
760
|
+
}
|
|
761
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
762
|
+
asyncMap(_f) {
|
|
763
|
+
return errAsync(this.error);
|
|
764
|
+
}
|
|
765
|
+
unwrapOr(v) {
|
|
766
|
+
return v;
|
|
767
|
+
}
|
|
768
|
+
match(_ok, err2) {
|
|
769
|
+
return err2(this.error);
|
|
770
|
+
}
|
|
771
|
+
safeUnwrap() {
|
|
772
|
+
const error = this.error;
|
|
773
|
+
return function* () {
|
|
774
|
+
yield err(error);
|
|
775
|
+
throw new Error("Do not use this generator out of `safeTry`");
|
|
776
|
+
}();
|
|
777
|
+
}
|
|
778
|
+
_unsafeUnwrap(config) {
|
|
779
|
+
throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config);
|
|
780
|
+
}
|
|
781
|
+
_unsafeUnwrapErr(_) {
|
|
782
|
+
return this.error;
|
|
783
|
+
}
|
|
784
|
+
};
|
|
785
|
+
var fromThrowable = Result.fromThrowable;
|
|
786
|
+
|
|
787
|
+
// platforms/h3.ts
|
|
788
|
+
var verifySignatureH3 = (handler, config) => {
|
|
789
|
+
const currentSigningKey = config?.currentSigningKey ?? process.env.QSTASH_CURRENT_SIGNING_KEY;
|
|
790
|
+
if (!currentSigningKey) {
|
|
791
|
+
throw new Error(
|
|
792
|
+
"currentSigningKey is required, either in the config or as env variable QSTASH_CURRENT_SIGNING_KEY"
|
|
793
|
+
);
|
|
794
|
+
}
|
|
795
|
+
const nextSigningKey = config?.nextSigningKey ?? process.env.QSTASH_NEXT_SIGNING_KEY;
|
|
796
|
+
if (!nextSigningKey) {
|
|
797
|
+
throw new Error(
|
|
798
|
+
"nextSigningKey is required, either in the config or as env variable QSTASH_NEXT_SIGNING_KEY"
|
|
799
|
+
);
|
|
800
|
+
}
|
|
801
|
+
const receiver = new Receiver({
|
|
802
|
+
currentSigningKey,
|
|
803
|
+
nextSigningKey
|
|
804
|
+
});
|
|
805
|
+
return defineEventHandler(async (event) => {
|
|
806
|
+
const signature = getHeader(event, "upstash-signature");
|
|
807
|
+
if (!signature) {
|
|
808
|
+
return { status: 403, body: "`Upstash-Signature` header is missing" };
|
|
809
|
+
}
|
|
810
|
+
if (typeof signature !== "string") {
|
|
811
|
+
throw new TypeError("`Upstash-Signature` header is not a string");
|
|
812
|
+
}
|
|
813
|
+
const body = await readRawBody(event);
|
|
814
|
+
const isValid = await receiver.verify({
|
|
815
|
+
signature,
|
|
816
|
+
body: JSON.stringify(body),
|
|
817
|
+
clockTolerance: config?.clockTolerance
|
|
818
|
+
});
|
|
819
|
+
if (!isValid) {
|
|
820
|
+
return { status: 403, body: "invalid signature" };
|
|
821
|
+
}
|
|
822
|
+
event._requestBody = body;
|
|
823
|
+
return handler(event);
|
|
824
|
+
});
|
|
825
|
+
};
|
|
826
|
+
|
|
827
|
+
// platforms/nuxt.ts
|
|
828
|
+
var verifySignatureNuxt = verifySignatureH3;
|
|
829
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
830
|
+
0 && (module.exports = {
|
|
831
|
+
verifySignatureNuxt
|
|
832
|
+
});
|