@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/nuxt.js CHANGED
@@ -1,11 +1,832 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkYBZBGHDQjs = require('./chunk-YBZBGHDQ.js');
4
- require('./chunk-VN7YQ2UN.js');
5
- require('./chunk-R5CZPV7H.js');
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 verifySignatureNuxt = _chunkYBZBGHDQjs.verifySignatureH3;
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
- exports.verifySignatureNuxt = verifySignatureNuxt;
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
+ });