@windrun-huaiin/backend-core 13.0.0 → 14.0.0

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 (104) hide show
  1. package/dist/_virtual/index.js +7 -3
  2. package/dist/_virtual/index.mjs +5 -3
  3. package/dist/_virtual/index2.js +2 -6
  4. package/dist/_virtual/index2.mjs +2 -6
  5. package/dist/index.js +2 -0
  6. package/dist/index.mjs +1 -1
  7. package/dist/lib/index.js +2 -0
  8. package/dist/lib/index.mjs +1 -1
  9. package/dist/lib/upstash/qstash.d.ts.map +1 -1
  10. package/dist/lib/upstash/qstash.js +66 -62
  11. package/dist/lib/upstash/qstash.mjs +67 -63
  12. package/dist/lib/upstash/redis-counter.d.ts.map +1 -1
  13. package/dist/lib/upstash/redis-counter.js +9 -24
  14. package/dist/lib/upstash/redis-counter.mjs +10 -25
  15. package/dist/lib/upstash/redis-favorite.d.ts.map +1 -1
  16. package/dist/lib/upstash/redis-favorite.js +22 -36
  17. package/dist/lib/upstash/redis-favorite.mjs +23 -37
  18. package/dist/lib/upstash/redis-like.d.ts.map +1 -1
  19. package/dist/lib/upstash/redis-like.js +22 -36
  20. package/dist/lib/upstash/redis-like.mjs +23 -37
  21. package/dist/lib/upstash/redis-lock.d.ts.map +1 -1
  22. package/dist/lib/upstash/redis-lock.js +22 -38
  23. package/dist/lib/upstash/redis-lock.mjs +23 -39
  24. package/dist/lib/upstash/redis-structures.d.ts.map +1 -1
  25. package/dist/lib/upstash/redis-structures.js +77 -113
  26. package/dist/lib/upstash/redis-structures.mjs +78 -114
  27. package/dist/lib/upstash-config.d.ts +9 -1
  28. package/dist/lib/upstash-config.d.ts.map +1 -1
  29. package/dist/lib/upstash-config.js +221 -27
  30. package/dist/lib/upstash-config.mjs +220 -28
  31. package/dist/node_modules/.pnpm/{@upstash_qstash@2.8.4/node_modules/@upstash/qstash/chunk-RQPZUJXG.js → @upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.js} +897 -468
  32. package/dist/node_modules/.pnpm/{@upstash_qstash@2.8.4/node_modules/@upstash/qstash/chunk-RQPZUJXG.mjs → @upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.mjs} +895 -468
  33. package/dist/node_modules/.pnpm/{@upstash_redis@1.36.1/node_modules/@upstash/redis/chunk-LLI2WIYN.js → @upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.js} +657 -40
  34. package/dist/node_modules/.pnpm/{@upstash_redis@1.36.1/node_modules/@upstash/redis/chunk-LLI2WIYN.mjs → @upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.mjs} +657 -41
  35. package/dist/node_modules/.pnpm/{@upstash_redis@1.36.1 → @upstash_redis@1.37.0}/node_modules/@upstash/redis/nodejs.js +6 -5
  36. package/dist/node_modules/.pnpm/{@upstash_redis@1.36.1 → @upstash_redis@1.37.0}/node_modules/@upstash/redis/nodejs.mjs +2 -2
  37. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js +1 -1
  38. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +1 -1
  39. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/flattened/verify.js +6 -6
  40. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jwt/verify.js +1 -1
  41. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/key/import.js +2 -2
  42. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/epoch.js +3 -1
  43. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_disjoint.js +3 -1
  44. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_jwk.js +1 -1
  45. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_object.js +3 -1
  46. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/jwt_claims_set.js +7 -5
  47. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/secs.js +3 -1
  48. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_algorithms.js +3 -1
  49. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_crit.js +3 -1
  50. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/check_key_length.js +3 -1
  51. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/dsa_digest.js +3 -1
  52. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_named_curve.js +4 -2
  53. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.js +3 -1
  54. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/hmac_digest.js +3 -1
  55. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_like.js +1 -1
  56. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_object.js +3 -1
  57. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/jwk_to_key.js +3 -1
  58. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/node_key.js +6 -4
  59. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/sign.js +6 -4
  60. package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/verify.js +7 -5
  61. package/dist/prisma/prisma.d.ts +1 -1
  62. package/dist/prisma/prisma.d.ts.map +1 -1
  63. package/package.json +5 -5
  64. package/src/lib/upstash/qstash.ts +64 -62
  65. package/src/lib/upstash/redis-counter.ts +10 -26
  66. package/src/lib/upstash/redis-favorite.ts +23 -42
  67. package/src/lib/upstash/redis-like.ts +23 -42
  68. package/src/lib/upstash/redis-lock.ts +23 -49
  69. package/src/lib/upstash/redis-structures.ts +82 -131
  70. package/src/lib/upstash-config.ts +231 -24
  71. package/dist/_virtual/index3.js +0 -5
  72. package/dist/_virtual/index3.mjs +0 -3
  73. package/dist/node_modules/.pnpm/@upstash_lock@0.2.1_typescript@5.9.3/node_modules/@upstash/lock/dist/index.js +0 -191
  74. package/dist/node_modules/.pnpm/@upstash_lock@0.2.1_typescript@5.9.3/node_modules/@upstash/lock/dist/index.mjs +0 -189
  75. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/errors.js +0 -54
  76. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/errors.mjs +0 -51
  77. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/iso.js +0 -44
  78. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/iso.mjs +0 -35
  79. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/parse.js +0 -31
  80. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/parse.mjs +0 -18
  81. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/schemas.js +0 -587
  82. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/classic/schemas.mjs +0 -527
  83. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/api.js +0 -447
  84. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/api.mjs +0 -399
  85. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/checks.js +0 -245
  86. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/checks.mjs +0 -232
  87. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/core.js +0 -68
  88. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/core.mjs +0 -62
  89. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/doc.js +0 -39
  90. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/doc.mjs +0 -37
  91. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/errors.js +0 -80
  92. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/errors.mjs +0 -75
  93. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/parse.js +0 -101
  94. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/parse.mjs +0 -86
  95. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/regexes.js +0 -102
  96. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/regexes.mjs +0 -76
  97. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/registries.js +0 -56
  98. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/registries.mjs +0 -52
  99. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/schemas.js +0 -1205
  100. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/schemas.mjs +0 -1157
  101. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/util.js +0 -407
  102. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/util.mjs +0 -374
  103. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/versions.js +0 -9
  104. package/dist/node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/versions.mjs +0 -7
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../node_modules/.pnpm/@upstash_lock@0.2.1_typescript@5.9.3/node_modules/@upstash/lock/dist/index.js');
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var distExports = index.__require();
5
+ var _commonjsHelpers = require('./_commonjsHelpers.js');
6
+ var index = require('../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js');
6
7
 
7
- exports.distExports = distExports;
8
+ var cryptoJsExports = index.__require();
9
+ var crypto2 = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(cryptoJsExports);
10
+
11
+ exports.default = crypto2;
@@ -1,5 +1,7 @@
1
- import { __require as requireDist } from '../node_modules/.pnpm/@upstash_lock@0.2.1_typescript@5.9.3/node_modules/@upstash/lock/dist/index.mjs';
1
+ import { getDefaultExportFromCjs } from './_commonjsHelpers.mjs';
2
+ import { __require as requireCryptoJs } from '../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs';
2
3
 
3
- var distExports = requireDist();
4
+ var cryptoJsExports = requireCryptoJs();
5
+ var crypto2 = /*@__PURE__*/getDefaultExportFromCjs(cryptoJsExports);
4
6
 
5
- export { distExports as d };
7
+ export { crypto2 as default };
@@ -1,9 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var _commonjsHelpers = require('./_commonjsHelpers.js');
4
- var index = require('../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js');
3
+ var cryptoJs = {exports: {}};
5
4
 
6
- var cryptoJsExports = index.__require();
7
- var crypto2 = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(cryptoJsExports);
8
-
9
- module.exports = crypto2;
5
+ exports.__module = cryptoJs;
@@ -1,7 +1,3 @@
1
- import { getDefaultExportFromCjs } from './_commonjsHelpers.mjs';
2
- import { __require as requireCryptoJs } from '../node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs';
1
+ var cryptoJs = {exports: {}};
3
2
 
4
- var cryptoJsExports = requireCryptoJs();
5
- var crypto2 = /*@__PURE__*/getDefaultExportFromCjs(cryptoJsExports);
6
-
7
- export { crypto2 as default };
3
+ export { cryptoJs as __module };
package/dist/index.js CHANGED
@@ -94,6 +94,8 @@ exports.requireAuth = authUtils.requireAuth;
94
94
  exports.requireAuthWithUser = authUtils.requireAuthWithUser;
95
95
  exports.getQstash = upstashConfig.getQstash;
96
96
  exports.getRedis = upstashConfig.getRedis;
97
+ exports.withQstash = upstashConfig.withQstash;
98
+ exports.withRedis = upstashConfig.withRedis;
97
99
  exports.acquireLock = redisLock.acquireLock;
98
100
  exports.releaseLock = redisLock.releaseLock;
99
101
  exports.withLock = redisLock.withLock;
package/dist/index.mjs CHANGED
@@ -18,7 +18,7 @@ export { fingerprintConfig } from './lib/fingerprint-config.mjs';
18
18
  export { creditsConfig, freeAmount, freeExpiredDays, freeRegisterAmount, oneTimeExpiredDays } from './lib/credit-init.mjs';
19
19
  export { ActiveSubscriptionExistsError, cancelSubscription, createCheckoutSession, createCustomerPortalSession, createOrGetCustomer, fetchPaymentId, stripe, updateSubscription, validateStripeWebhook } from './lib/stripe-config.mjs';
20
20
  export { ApiAuthUtils, getAuthenticatedUser, requireAuth, requireAuthWithUser } from './lib/auth-utils.mjs';
21
- export { getQstash, getRedis } from './lib/upstash-config.mjs';
21
+ export { getQstash, getRedis, withQstash, withRedis } from './lib/upstash-config.mjs';
22
22
  export { acquireLock, releaseLock, withLock } from './lib/upstash/redis-lock.mjs';
23
23
  export { getTargetLikeCount, getUserLikedTargets, isTargetLiked, likeTarget, unlikeTarget } from './lib/upstash/redis-like.mjs';
24
24
  export { addFavorite, getFavoriteCount, getUserFavorites, isFavorited, removeFavorite } from './lib/upstash/redis-favorite.mjs';
package/dist/lib/index.js CHANGED
@@ -42,6 +42,8 @@ exports.requireAuth = authUtils.requireAuth;
42
42
  exports.requireAuthWithUser = authUtils.requireAuthWithUser;
43
43
  exports.getQstash = upstashConfig.getQstash;
44
44
  exports.getRedis = upstashConfig.getRedis;
45
+ exports.withQstash = upstashConfig.withQstash;
46
+ exports.withRedis = upstashConfig.withRedis;
45
47
  exports.acquireLock = redisLock.acquireLock;
46
48
  exports.releaseLock = redisLock.releaseLock;
47
49
  exports.withLock = redisLock.withLock;
@@ -4,7 +4,7 @@ export { fingerprintConfig } from './fingerprint-config.mjs';
4
4
  export { creditsConfig, freeAmount, freeExpiredDays, freeRegisterAmount, oneTimeExpiredDays } from './credit-init.mjs';
5
5
  export { ActiveSubscriptionExistsError, cancelSubscription, createCheckoutSession, createCustomerPortalSession, createOrGetCustomer, fetchPaymentId, stripe, updateSubscription, validateStripeWebhook } from './stripe-config.mjs';
6
6
  export { ApiAuthUtils, getAuthenticatedUser, requireAuth, requireAuthWithUser } from './auth-utils.mjs';
7
- export { getQstash, getRedis } from './upstash-config.mjs';
7
+ export { getQstash, getRedis, withQstash, withRedis } from './upstash-config.mjs';
8
8
  export { acquireLock, releaseLock, withLock } from './upstash/redis-lock.mjs';
9
9
  export { getTargetLikeCount, getUserLikedTargets, isTargetLiked, likeTarget, unlikeTarget } from './upstash/redis-like.mjs';
10
10
  export { addFavorite, getFavoriteCount, getUserFavorites, isFavorited, removeFavorite } from './upstash/redis-favorite.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"qstash.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/qstash.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAW1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,qBAAqB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KACpD,OAAO,CAAC,MAAM,GAAG,IAAI,CAYvB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAoB5F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,OAAO,CAgBxE,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,OAAO,CAqBzF,CAAC"}
1
+ {"version":3,"file":"qstash.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/qstash.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAQ1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,qBAAqB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KACpD,OAAO,CAAC,MAAM,GAAG,IAAI,CASvB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAiB5F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,OAAO,CAexE,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,OAAO,CAqBzF,CAAC"}
@@ -1,103 +1,107 @@
1
1
  'use strict';
2
2
 
3
3
  var tslib_es6 = require('../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.js');
4
- var chunkRQPZUJXG = require('../../node_modules/.pnpm/@upstash_qstash@2.8.4/node_modules/@upstash/qstash/chunk-RQPZUJXG.js');
4
+ var chunk35B33QW3 = require('../../node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.js');
5
5
  var upstashConfig = require('../upstash-config.js');
6
6
 
7
7
  let cachedReceiver = null;
8
- let receiverInitAttempted = false;
8
+ let receiverWarnedMissingEnv = false;
9
+ let receiverWarnedInitError = false;
9
10
  const isTruthy = (value) => value === '1' || value === 'true' || value === 'TRUE';
10
11
  const shouldSkipVerify = () => process.env.NODE_ENV === 'development' && isTruthy(process.env.SKIP_UPSTASH_QSTASH_VERIFY);
11
12
  const getReceiver = () => {
12
13
  if (cachedReceiver) {
13
14
  return cachedReceiver;
14
15
  }
15
- if (receiverInitAttempted) {
16
- return null;
17
- }
18
- receiverInitAttempted = true;
19
16
  const currentSigningKey = process.env.QSTASH_CURRENT_SIGNING_KEY;
20
17
  const nextSigningKey = process.env.QSTASH_NEXT_SIGNING_KEY;
21
18
  if (!currentSigningKey || !nextSigningKey) {
19
+ if (!receiverWarnedMissingEnv) {
20
+ receiverWarnedMissingEnv = true;
21
+ console.warn('[Upstash Config] QStash Receiver disabled: missing QSTASH_CURRENT_SIGNING_KEY or QSTASH_NEXT_SIGNING_KEY');
22
+ }
23
+ return null;
24
+ }
25
+ try {
26
+ cachedReceiver = new chunk35B33QW3.Receiver({
27
+ currentSigningKey,
28
+ nextSigningKey,
29
+ });
30
+ return cachedReceiver;
31
+ }
32
+ catch (error) {
33
+ if (!receiverWarnedInitError) {
34
+ receiverWarnedInitError = true;
35
+ const message = error instanceof Error ? error.message : String(error);
36
+ console.warn(`[Upstash Config] QStash Receiver init failed: ${message}`);
37
+ }
22
38
  return null;
23
39
  }
24
- cachedReceiver = new chunkRQPZUJXG.Receiver({
25
- currentSigningKey,
26
- nextSigningKey,
27
- });
28
- return cachedReceiver;
29
40
  };
30
41
  /**
31
42
  * Publish a message. Returns message id or null if QStash is unavailable.
32
43
  */
33
44
  const publishMessage = (options) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
34
- var _a;
35
- const client = upstashConfig.getQstash();
36
- if (!client) {
37
- return null;
38
- }
39
- const result = yield client.publishJSON({
40
- url: options.url,
41
- body: options.body,
42
- });
43
- return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
45
+ return upstashConfig.withQstash((client) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
46
+ var _a;
47
+ const result = yield client.publishJSON({
48
+ url: options.url,
49
+ body: options.body,
50
+ });
51
+ return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
52
+ }));
44
53
  });
45
54
  /**
46
55
  * Publish a delayed message. Returns message id or null if QStash is unavailable.
47
56
  */
48
57
  const publishDelayedMessage = (options) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
49
- var _a;
50
- const client = upstashConfig.getQstash();
51
- if (!client) {
52
- return null;
53
- }
54
- const result = yield client.publishJSON({
55
- url: options.url,
56
- body: options.body,
57
- delay: options.delaySec,
58
- });
59
- return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
58
+ return upstashConfig.withQstash((client) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
59
+ var _a;
60
+ const result = yield client.publishJSON({
61
+ url: options.url,
62
+ body: options.body,
63
+ delay: options.delaySec,
64
+ });
65
+ return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
66
+ }));
60
67
  });
61
68
  /**
62
69
  * Schedule a recurring message. Returns schedule id or null if QStash is unavailable.
63
70
  */
64
71
  const scheduleMessage = (options) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
65
- var _a, _b, _c, _d, _e, _f;
66
- const client = upstashConfig.getQstash();
67
- if (!client) {
68
- return null;
69
- }
70
- const anyClient = client;
71
- const result = (_c = (yield ((_b = (_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.create) === null || _b === void 0 ? void 0 : _b.call(_a, {
72
- url: options.url,
73
- body: options.body,
74
- cron: options.cron,
75
- })))) !== null && _c !== void 0 ? _c : (yield ((_d = anyClient.publishJSON) === null || _d === void 0 ? void 0 : _d.call(anyClient, {
76
- url: options.url,
77
- body: options.body,
78
- cron: options.cron,
79
- })));
80
- return typeof result === 'string' ? result : (_f = (_e = result === null || result === void 0 ? void 0 : result.scheduleId) !== null && _e !== void 0 ? _e : result === null || result === void 0 ? void 0 : result.id) !== null && _f !== void 0 ? _f : null;
72
+ return upstashConfig.withQstash((client) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
73
+ var _a, _b, _c, _d, _e, _f;
74
+ const anyClient = client;
75
+ const result = (_c = (yield ((_b = (_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.create) === null || _b === void 0 ? void 0 : _b.call(_a, {
76
+ url: options.url,
77
+ body: options.body,
78
+ cron: options.cron,
79
+ })))) !== null && _c !== void 0 ? _c : (yield ((_d = anyClient.publishJSON) === null || _d === void 0 ? void 0 : _d.call(anyClient, {
80
+ url: options.url,
81
+ body: options.body,
82
+ cron: options.cron,
83
+ })));
84
+ return typeof result === 'string' ? result : (_f = (_e = result === null || result === void 0 ? void 0 : result.scheduleId) !== null && _e !== void 0 ? _e : result === null || result === void 0 ? void 0 : result.id) !== null && _f !== void 0 ? _f : null;
85
+ }));
81
86
  });
82
87
  /**
83
88
  * Cancel a scheduled message. Returns false if QStash is unavailable.
84
89
  */
85
90
  const cancelSchedule = (scheduleId) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
86
- var _a, _b;
87
- const client = upstashConfig.getQstash();
88
- if (!client) {
91
+ const result = yield upstashConfig.withQstash((client) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
92
+ var _a, _b;
93
+ const anyClient = client;
94
+ if ((_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.delete) {
95
+ yield anyClient.schedules.delete(scheduleId);
96
+ return true;
97
+ }
98
+ if ((_b = anyClient.schedules) === null || _b === void 0 ? void 0 : _b.remove) {
99
+ yield anyClient.schedules.remove(scheduleId);
100
+ return true;
101
+ }
89
102
  return false;
90
- }
91
- const anyClient = client;
92
- if ((_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.delete) {
93
- yield anyClient.schedules.delete(scheduleId);
94
- return true;
95
- }
96
- if ((_b = anyClient.schedules) === null || _b === void 0 ? void 0 : _b.remove) {
97
- yield anyClient.schedules.remove(scheduleId);
98
- return true;
99
- }
100
- return false;
103
+ }));
104
+ return result !== null && result !== void 0 ? result : false;
101
105
  });
102
106
  /**
103
107
  * Verify QStash signature. Throws on failure in non-dev environments.
@@ -1,101 +1,105 @@
1
1
  import { __awaiter } from '../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.mjs';
2
- import { Receiver } from '../../node_modules/.pnpm/@upstash_qstash@2.8.4/node_modules/@upstash/qstash/chunk-RQPZUJXG.mjs';
3
- import { getQstash } from '../upstash-config.mjs';
2
+ import { Receiver } from '../../node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.mjs';
3
+ import { withQstash } from '../upstash-config.mjs';
4
4
 
5
5
  let cachedReceiver = null;
6
- let receiverInitAttempted = false;
6
+ let receiverWarnedMissingEnv = false;
7
+ let receiverWarnedInitError = false;
7
8
  const isTruthy = (value) => value === '1' || value === 'true' || value === 'TRUE';
8
9
  const shouldSkipVerify = () => process.env.NODE_ENV === 'development' && isTruthy(process.env.SKIP_UPSTASH_QSTASH_VERIFY);
9
10
  const getReceiver = () => {
10
11
  if (cachedReceiver) {
11
12
  return cachedReceiver;
12
13
  }
13
- if (receiverInitAttempted) {
14
- return null;
15
- }
16
- receiverInitAttempted = true;
17
14
  const currentSigningKey = process.env.QSTASH_CURRENT_SIGNING_KEY;
18
15
  const nextSigningKey = process.env.QSTASH_NEXT_SIGNING_KEY;
19
16
  if (!currentSigningKey || !nextSigningKey) {
17
+ if (!receiverWarnedMissingEnv) {
18
+ receiverWarnedMissingEnv = true;
19
+ console.warn('[Upstash Config] QStash Receiver disabled: missing QSTASH_CURRENT_SIGNING_KEY or QSTASH_NEXT_SIGNING_KEY');
20
+ }
21
+ return null;
22
+ }
23
+ try {
24
+ cachedReceiver = new Receiver({
25
+ currentSigningKey,
26
+ nextSigningKey,
27
+ });
28
+ return cachedReceiver;
29
+ }
30
+ catch (error) {
31
+ if (!receiverWarnedInitError) {
32
+ receiverWarnedInitError = true;
33
+ const message = error instanceof Error ? error.message : String(error);
34
+ console.warn(`[Upstash Config] QStash Receiver init failed: ${message}`);
35
+ }
20
36
  return null;
21
37
  }
22
- cachedReceiver = new Receiver({
23
- currentSigningKey,
24
- nextSigningKey,
25
- });
26
- return cachedReceiver;
27
38
  };
28
39
  /**
29
40
  * Publish a message. Returns message id or null if QStash is unavailable.
30
41
  */
31
42
  const publishMessage = (options) => __awaiter(void 0, void 0, void 0, function* () {
32
- var _a;
33
- const client = getQstash();
34
- if (!client) {
35
- return null;
36
- }
37
- const result = yield client.publishJSON({
38
- url: options.url,
39
- body: options.body,
40
- });
41
- return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
43
+ return withQstash((client) => __awaiter(void 0, void 0, void 0, function* () {
44
+ var _a;
45
+ const result = yield client.publishJSON({
46
+ url: options.url,
47
+ body: options.body,
48
+ });
49
+ return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
50
+ }));
42
51
  });
43
52
  /**
44
53
  * Publish a delayed message. Returns message id or null if QStash is unavailable.
45
54
  */
46
55
  const publishDelayedMessage = (options) => __awaiter(void 0, void 0, void 0, function* () {
47
- var _a;
48
- const client = getQstash();
49
- if (!client) {
50
- return null;
51
- }
52
- const result = yield client.publishJSON({
53
- url: options.url,
54
- body: options.body,
55
- delay: options.delaySec,
56
- });
57
- return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
56
+ return withQstash((client) => __awaiter(void 0, void 0, void 0, function* () {
57
+ var _a;
58
+ const result = yield client.publishJSON({
59
+ url: options.url,
60
+ body: options.body,
61
+ delay: options.delaySec,
62
+ });
63
+ return typeof result === 'string' ? result : (_a = result === null || result === void 0 ? void 0 : result.messageId) !== null && _a !== void 0 ? _a : null;
64
+ }));
58
65
  });
59
66
  /**
60
67
  * Schedule a recurring message. Returns schedule id or null if QStash is unavailable.
61
68
  */
62
69
  const scheduleMessage = (options) => __awaiter(void 0, void 0, void 0, function* () {
63
- var _a, _b, _c, _d, _e, _f;
64
- const client = getQstash();
65
- if (!client) {
66
- return null;
67
- }
68
- const anyClient = client;
69
- const result = (_c = (yield ((_b = (_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.create) === null || _b === void 0 ? void 0 : _b.call(_a, {
70
- url: options.url,
71
- body: options.body,
72
- cron: options.cron,
73
- })))) !== null && _c !== void 0 ? _c : (yield ((_d = anyClient.publishJSON) === null || _d === void 0 ? void 0 : _d.call(anyClient, {
74
- url: options.url,
75
- body: options.body,
76
- cron: options.cron,
77
- })));
78
- return typeof result === 'string' ? result : (_f = (_e = result === null || result === void 0 ? void 0 : result.scheduleId) !== null && _e !== void 0 ? _e : result === null || result === void 0 ? void 0 : result.id) !== null && _f !== void 0 ? _f : null;
70
+ return withQstash((client) => __awaiter(void 0, void 0, void 0, function* () {
71
+ var _a, _b, _c, _d, _e, _f;
72
+ const anyClient = client;
73
+ const result = (_c = (yield ((_b = (_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.create) === null || _b === void 0 ? void 0 : _b.call(_a, {
74
+ url: options.url,
75
+ body: options.body,
76
+ cron: options.cron,
77
+ })))) !== null && _c !== void 0 ? _c : (yield ((_d = anyClient.publishJSON) === null || _d === void 0 ? void 0 : _d.call(anyClient, {
78
+ url: options.url,
79
+ body: options.body,
80
+ cron: options.cron,
81
+ })));
82
+ return typeof result === 'string' ? result : (_f = (_e = result === null || result === void 0 ? void 0 : result.scheduleId) !== null && _e !== void 0 ? _e : result === null || result === void 0 ? void 0 : result.id) !== null && _f !== void 0 ? _f : null;
83
+ }));
79
84
  });
80
85
  /**
81
86
  * Cancel a scheduled message. Returns false if QStash is unavailable.
82
87
  */
83
88
  const cancelSchedule = (scheduleId) => __awaiter(void 0, void 0, void 0, function* () {
84
- var _a, _b;
85
- const client = getQstash();
86
- if (!client) {
89
+ const result = yield withQstash((client) => __awaiter(void 0, void 0, void 0, function* () {
90
+ var _a, _b;
91
+ const anyClient = client;
92
+ if ((_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.delete) {
93
+ yield anyClient.schedules.delete(scheduleId);
94
+ return true;
95
+ }
96
+ if ((_b = anyClient.schedules) === null || _b === void 0 ? void 0 : _b.remove) {
97
+ yield anyClient.schedules.remove(scheduleId);
98
+ return true;
99
+ }
87
100
  return false;
88
- }
89
- const anyClient = client;
90
- if ((_a = anyClient.schedules) === null || _a === void 0 ? void 0 : _a.delete) {
91
- yield anyClient.schedules.delete(scheduleId);
92
- return true;
93
- }
94
- if ((_b = anyClient.schedules) === null || _b === void 0 ? void 0 : _b.remove) {
95
- yield anyClient.schedules.remove(scheduleId);
96
- return true;
97
- }
98
- return false;
101
+ }));
102
+ return result !== null && result !== void 0 ? result : false;
99
103
  });
100
104
  /**
101
105
  * Verify QStash signature. Throws on failure in non-dev environments.
@@ -1 +1 @@
1
- {"version":3,"file":"redis-counter.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/redis-counter.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,EAAE,cAAS,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAM/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAOnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAW/F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAM5E,CAAC"}
1
+ {"version":3,"file":"redis-counter.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/redis-counter.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,EAAE,cAAS,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAE/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAKnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAK/F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAE5E,CAAC"}
@@ -7,46 +7,31 @@ var upstashConfig = require('../upstash-config.js');
7
7
  * Increment a counter (e.g. views, forwards). Returns null if Redis is unavailable.
8
8
  */
9
9
  const incrCounter = (key_1, ...args_1) => tslib_es6.__awaiter(void 0, [key_1, ...args_1], void 0, function* (key, delta = 1) {
10
- const redis = upstashConfig.getRedis();
11
- if (!redis) {
12
- return null;
13
- }
14
- return redis.incrby(key, delta);
10
+ return upstashConfig.withRedis((redis) => redis.incrby(key, delta));
15
11
  });
16
12
  /**
17
13
  * Get a counter value. Returns null if Redis is unavailable.
18
14
  */
19
15
  const getCounter = (key) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
20
- const redis = upstashConfig.getRedis();
21
- if (!redis) {
22
- return null;
23
- }
24
- const value = yield redis.get(key);
25
- return value !== null && value !== void 0 ? value : 0;
16
+ return upstashConfig.withRedis((redis) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
17
+ const value = yield redis.get(key);
18
+ return value !== null && value !== void 0 ? value : 0;
19
+ }));
26
20
  });
27
21
  /**
28
22
  * Increment a unique counter via SET (e.g. unique views). Returns null if Redis is unavailable.
29
23
  */
30
24
  const incrUniqueCounter = (setKey, memberId) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
31
- const redis = upstashConfig.getRedis();
32
- if (!redis) {
33
- return null;
34
- }
35
- const added = yield redis.sadd(setKey, memberId);
36
- if (added === 1) {
25
+ return upstashConfig.withRedis((redis) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
26
+ yield redis.sadd(setKey, memberId);
37
27
  return redis.scard(setKey);
38
- }
39
- return redis.scard(setKey);
28
+ }));
40
29
  });
41
30
  /**
42
31
  * Get unique counter value (SET cardinality). Returns null if Redis is unavailable.
43
32
  */
44
33
  const getUniqueCounter = (setKey) => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
45
- const redis = upstashConfig.getRedis();
46
- if (!redis) {
47
- return null;
48
- }
49
- return redis.scard(setKey);
34
+ return upstashConfig.withRedis((redis) => redis.scard(setKey));
50
35
  });
51
36
 
52
37
  exports.getCounter = getCounter;
@@ -1,50 +1,35 @@
1
1
  import { __awaiter } from '../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.46.2_tslib@2.8.1_typescript@5.9.3/node_modules/tslib/tslib.es6.mjs';
2
- import { getRedis } from '../upstash-config.mjs';
2
+ import { withRedis } from '../upstash-config.mjs';
3
3
 
4
4
  /**
5
5
  * Increment a counter (e.g. views, forwards). Returns null if Redis is unavailable.
6
6
  */
7
7
  const incrCounter = (key_1, ...args_1) => __awaiter(void 0, [key_1, ...args_1], void 0, function* (key, delta = 1) {
8
- const redis = getRedis();
9
- if (!redis) {
10
- return null;
11
- }
12
- return redis.incrby(key, delta);
8
+ return withRedis((redis) => redis.incrby(key, delta));
13
9
  });
14
10
  /**
15
11
  * Get a counter value. Returns null if Redis is unavailable.
16
12
  */
17
13
  const getCounter = (key) => __awaiter(void 0, void 0, void 0, function* () {
18
- const redis = getRedis();
19
- if (!redis) {
20
- return null;
21
- }
22
- const value = yield redis.get(key);
23
- return value !== null && value !== void 0 ? value : 0;
14
+ return withRedis((redis) => __awaiter(void 0, void 0, void 0, function* () {
15
+ const value = yield redis.get(key);
16
+ return value !== null && value !== void 0 ? value : 0;
17
+ }));
24
18
  });
25
19
  /**
26
20
  * Increment a unique counter via SET (e.g. unique views). Returns null if Redis is unavailable.
27
21
  */
28
22
  const incrUniqueCounter = (setKey, memberId) => __awaiter(void 0, void 0, void 0, function* () {
29
- const redis = getRedis();
30
- if (!redis) {
31
- return null;
32
- }
33
- const added = yield redis.sadd(setKey, memberId);
34
- if (added === 1) {
23
+ return withRedis((redis) => __awaiter(void 0, void 0, void 0, function* () {
24
+ yield redis.sadd(setKey, memberId);
35
25
  return redis.scard(setKey);
36
- }
37
- return redis.scard(setKey);
26
+ }));
38
27
  });
39
28
  /**
40
29
  * Get unique counter value (SET cardinality). Returns null if Redis is unavailable.
41
30
  */
42
31
  const getUniqueCounter = (setKey) => __awaiter(void 0, void 0, void 0, function* () {
43
- const redis = getRedis();
44
- if (!redis) {
45
- return null;
46
- }
47
- return redis.scard(setKey);
32
+ return withRedis((redis) => redis.scard(setKey));
48
33
  });
49
34
 
50
35
  export { getCounter, getUniqueCounter, incrCounter, incrUniqueCounter };
@@ -1 +1 @@
1
- {"version":3,"file":"redis-favorite.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/redis-favorite.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAY1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAY7F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAQ1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAO9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAO9E,CAAC"}
1
+ {"version":3,"file":"redis-favorite.d.ts","sourceRoot":"","sources":["../../../src/lib/upstash/redis-favorite.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAS1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAS7F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAK1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAE9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAE9E,CAAC"}