@windrun-huaiin/backend-core 15.0.0 → 16.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.
- package/LICENSE +1 -1
- package/dist/app/api/stripe/checkout/route.js +2 -2
- package/dist/app/api/stripe/checkout/route.mjs +1 -1
- package/dist/app/api/stripe/customer-portal/route.js +2 -2
- package/dist/app/api/stripe/customer-portal/route.mjs +1 -1
- package/dist/app/api/user/anonymous/init/route.js +6 -6
- package/dist/app/api/user/anonymous/init/route.mjs +1 -1
- package/dist/app/api/webhook/clerk/user/route.js +4 -4
- package/dist/app/api/webhook/clerk/user/route.mjs +1 -1
- package/dist/app/api/webhook/stripe/route.js +2 -2
- package/dist/app/api/webhook/stripe/route.mjs +1 -1
- package/dist/auth/auth-middleware.js +3 -3
- package/dist/auth/auth-middleware.mjs +1 -1
- package/dist/auth/auth-utils.js +10 -10
- package/dist/auth/auth-utils.mjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -0
- package/dist/index.mjs +8 -1
- package/dist/lib/index.js +19 -0
- package/dist/lib/index.mjs +1 -1
- package/dist/lib/money-price-helper.js +3 -3
- package/dist/lib/money-price-helper.mjs +1 -1
- package/dist/lib/stripe-config.js +8 -8
- package/dist/lib/stripe-config.mjs +1 -1
- package/dist/lib/upstash/qstash.d.ts +20 -7
- package/dist/lib/upstash/qstash.d.ts.map +1 -1
- package/dist/lib/upstash/qstash.js +45 -19
- package/dist/lib/upstash/qstash.mjs +35 -9
- package/dist/lib/upstash/redis-counter.js +7 -7
- package/dist/lib/upstash/redis-counter.mjs +1 -1
- package/dist/lib/upstash/redis-favorite.js +9 -9
- package/dist/lib/upstash/redis-favorite.mjs +1 -1
- package/dist/lib/upstash/redis-like.js +9 -9
- package/dist/lib/upstash/redis-like.mjs +1 -1
- package/dist/lib/upstash/redis-lock.js +6 -6
- package/dist/lib/upstash/redis-lock.mjs +1 -1
- package/dist/lib/upstash/redis-structures.d.ts +83 -0
- package/dist/lib/upstash/redis-structures.d.ts.map +1 -1
- package/dist/lib/upstash/redis-structures.js +245 -25
- package/dist/lib/upstash/redis-structures.mjs +203 -2
- package/dist/lib/upstash-config.d.ts.map +1 -1
- package/dist/lib/upstash-config.js +90 -18
- package/dist/lib/upstash-config.mjs +80 -8
- package/dist/prisma/prisma-transaction-util.js +2 -2
- package/dist/prisma/prisma-transaction-util.mjs +1 -1
- package/dist/services/aggregate/anonymous.aggregate.service.js +6 -6
- package/dist/services/aggregate/anonymous.aggregate.service.mjs +1 -1
- package/dist/services/aggregate/billing.aggregate.service.js +21 -21
- package/dist/services/aggregate/billing.aggregate.service.mjs +1 -1
- package/dist/services/aggregate/user.aggregate.service.js +10 -10
- package/dist/services/aggregate/user.aggregate.service.mjs +1 -1
- package/dist/services/ai/abort.d.ts +2 -0
- package/dist/services/ai/abort.d.ts.map +1 -0
- package/dist/services/ai/abort.js +24 -0
- package/dist/services/ai/abort.mjs +22 -0
- package/dist/services/ai/env.d.ts +21 -0
- package/dist/services/ai/env.d.ts.map +1 -0
- package/dist/services/ai/env.js +85 -0
- package/dist/services/ai/env.mjs +80 -0
- package/dist/services/ai/error.d.ts +3 -0
- package/dist/services/ai/error.d.ts.map +1 -0
- package/dist/services/ai/error.js +54 -0
- package/dist/services/ai/error.mjs +52 -0
- package/dist/services/ai/index.d.ts +9 -0
- package/dist/services/ai/index.d.ts.map +1 -0
- package/dist/services/ai/index.js +30 -0
- package/dist/services/ai/index.mjs +7 -0
- package/dist/services/ai/message-builder.d.ts +4 -0
- package/dist/services/ai/message-builder.d.ts.map +1 -0
- package/dist/services/ai/message-builder.js +15 -0
- package/dist/services/ai/message-builder.mjs +13 -0
- package/dist/services/ai/mock.d.ts +30 -0
- package/dist/services/ai/mock.d.ts.map +1 -0
- package/dist/services/ai/mock.js +314 -0
- package/dist/services/ai/mock.mjs +308 -0
- package/dist/services/ai/openrouter-client.d.ts +12 -0
- package/dist/services/ai/openrouter-client.d.ts.map +1 -0
- package/dist/services/ai/openrouter-client.js +81 -0
- package/dist/services/ai/openrouter-client.mjs +78 -0
- package/dist/services/ai/route.d.ts +6 -0
- package/dist/services/ai/route.d.ts.map +1 -0
- package/dist/services/ai/route.js +178 -0
- package/dist/services/ai/route.mjs +173 -0
- package/dist/services/ai/types.d.ts +98 -0
- package/dist/services/ai/types.d.ts.map +1 -0
- package/dist/services/context/user-context-service.js +3 -3
- package/dist/services/context/user-context-service.mjs +1 -1
- package/dist/services/database/apilog.service.js +14 -14
- package/dist/services/database/apilog.service.mjs +1 -1
- package/dist/services/database/credit.service.js +20 -20
- package/dist/services/database/credit.service.mjs +1 -1
- package/dist/services/database/creditAuditLog.service.js +13 -13
- package/dist/services/database/creditAuditLog.service.mjs +1 -1
- package/dist/services/database/subscription.service.js +16 -16
- package/dist/services/database/subscription.service.mjs +1 -1
- package/dist/services/database/transaction.service.js +18 -18
- package/dist/services/database/transaction.service.mjs +1 -1
- package/dist/services/database/user.service.js +14 -14
- package/dist/services/database/user.service.mjs +1 -1
- package/dist/services/database/userBackup.service.js +15 -15
- package/dist/services/database/userBackup.service.mjs +1 -1
- package/dist/services/stripe/webhook-handler.js +13 -13
- package/dist/services/stripe/webhook-handler.mjs +3 -3
- package/package.json +14 -4
- package/src/index.ts +1 -0
- package/src/lib/upstash/qstash.ts +55 -15
- package/src/lib/upstash/redis-structures.ts +248 -0
- package/src/lib/upstash-config.ts +106 -4
- package/src/services/ai/abort.ts +26 -0
- package/src/services/ai/env.ts +120 -0
- package/src/services/ai/error.ts +64 -0
- package/src/services/ai/index.ts +8 -0
- package/src/services/ai/message-builder.ts +17 -0
- package/src/services/ai/mock.ts +378 -0
- package/src/services/ai/openrouter-client.ts +94 -0
- package/src/services/ai/route.ts +218 -0
- package/src/services/ai/types.ts +131 -0
- package/dist/_virtual/_commonjs-dynamic-modules.js +0 -7
- package/dist/_virtual/_commonjs-dynamic-modules.mjs +0 -5
- package/dist/_virtual/_commonjsHelpers.js +0 -10
- package/dist/_virtual/_commonjsHelpers.mjs +0 -7
- package/dist/_virtual/aes.js +0 -5
- package/dist/_virtual/aes.mjs +0 -3
- package/dist/_virtual/blowfish.js +0 -5
- package/dist/_virtual/blowfish.mjs +0 -3
- package/dist/_virtual/cipher-core.js +0 -5
- package/dist/_virtual/cipher-core.mjs +0 -3
- package/dist/_virtual/core.js +0 -5
- package/dist/_virtual/core.mjs +0 -3
- package/dist/_virtual/enc-base64.js +0 -5
- package/dist/_virtual/enc-base64.mjs +0 -3
- package/dist/_virtual/enc-base64url.js +0 -5
- package/dist/_virtual/enc-base64url.mjs +0 -3
- package/dist/_virtual/enc-utf16.js +0 -5
- package/dist/_virtual/enc-utf16.mjs +0 -3
- package/dist/_virtual/evpkdf.js +0 -5
- package/dist/_virtual/evpkdf.mjs +0 -3
- package/dist/_virtual/format-hex.js +0 -5
- package/dist/_virtual/format-hex.mjs +0 -3
- package/dist/_virtual/hmac.js +0 -5
- package/dist/_virtual/hmac.mjs +0 -3
- package/dist/_virtual/index.js +0 -11
- package/dist/_virtual/index.mjs +0 -7
- package/dist/_virtual/index2.js +0 -5
- package/dist/_virtual/index2.mjs +0 -3
- package/dist/_virtual/lib-typedarrays.js +0 -5
- package/dist/_virtual/lib-typedarrays.mjs +0 -3
- package/dist/_virtual/md5.js +0 -5
- package/dist/_virtual/md5.mjs +0 -3
- package/dist/_virtual/mode-cfb.js +0 -5
- package/dist/_virtual/mode-cfb.mjs +0 -3
- package/dist/_virtual/mode-ctr-gladman.js +0 -5
- package/dist/_virtual/mode-ctr-gladman.mjs +0 -3
- package/dist/_virtual/mode-ctr.js +0 -5
- package/dist/_virtual/mode-ctr.mjs +0 -3
- package/dist/_virtual/mode-ecb.js +0 -5
- package/dist/_virtual/mode-ecb.mjs +0 -3
- package/dist/_virtual/mode-ofb.js +0 -5
- package/dist/_virtual/mode-ofb.mjs +0 -3
- package/dist/_virtual/pad-ansix923.js +0 -5
- package/dist/_virtual/pad-ansix923.mjs +0 -3
- package/dist/_virtual/pad-iso10126.js +0 -5
- package/dist/_virtual/pad-iso10126.mjs +0 -3
- package/dist/_virtual/pad-iso97971.js +0 -5
- package/dist/_virtual/pad-iso97971.mjs +0 -3
- package/dist/_virtual/pad-nopadding.js +0 -5
- package/dist/_virtual/pad-nopadding.mjs +0 -3
- package/dist/_virtual/pad-zeropadding.js +0 -5
- package/dist/_virtual/pad-zeropadding.mjs +0 -3
- package/dist/_virtual/pbkdf2.js +0 -5
- package/dist/_virtual/pbkdf2.mjs +0 -3
- package/dist/_virtual/rabbit-legacy.js +0 -5
- package/dist/_virtual/rabbit-legacy.mjs +0 -3
- package/dist/_virtual/rabbit.js +0 -5
- package/dist/_virtual/rabbit.mjs +0 -3
- package/dist/_virtual/rc4.js +0 -5
- package/dist/_virtual/rc4.mjs +0 -3
- package/dist/_virtual/ripemd160.js +0 -5
- package/dist/_virtual/ripemd160.mjs +0 -3
- package/dist/_virtual/sha1.js +0 -5
- package/dist/_virtual/sha1.mjs +0 -3
- package/dist/_virtual/sha224.js +0 -5
- package/dist/_virtual/sha224.mjs +0 -3
- package/dist/_virtual/sha256.js +0 -5
- package/dist/_virtual/sha256.mjs +0 -3
- package/dist/_virtual/sha3.js +0 -5
- package/dist/_virtual/sha3.mjs +0 -3
- package/dist/_virtual/sha384.js +0 -5
- package/dist/_virtual/sha384.mjs +0 -3
- package/dist/_virtual/sha512.js +0 -5
- package/dist/_virtual/sha512.mjs +0 -3
- package/dist/_virtual/tripledes.js +0 -5
- package/dist/_virtual/tripledes.mjs +0 -3
- package/dist/_virtual/x64-core.js +0 -5
- package/dist/_virtual/x64-core.mjs +0 -3
- package/dist/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 +0 -48
- package/dist/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 +0 -45
- package/dist/node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.js +0 -1848
- package/dist/node_modules/.pnpm/@upstash_qstash@2.10.1/node_modules/@upstash/qstash/chunk-35B33QW3.mjs +0 -1830
- package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.js +0 -5308
- package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/chunk-IH7W44G6.mjs +0 -5302
- package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/nodejs.js +0 -116
- package/dist/node_modules/.pnpm/@upstash_redis@1.37.0/node_modules/@upstash/redis/nodejs.mjs +0 -113
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.js +0 -248
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/aes.mjs +0 -246
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.js +0 -485
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/blowfish.mjs +0 -483
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.js +0 -906
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/cipher-core.mjs +0 -904
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.js +0 -818
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/core.mjs +0 -816
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.js +0 -146
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64.mjs +0 -144
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.js +0 -158
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-base64url.mjs +0 -156
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.js +0 -159
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/enc-utf16.mjs +0 -157
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.js +0 -146
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/evpkdf.mjs +0 -144
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.js +0 -77
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/format-hex.mjs +0 -75
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.js +0 -153
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/hmac.mjs +0 -151
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js +0 -62
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.mjs +0 -60
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.js +0 -86
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/lib-typedarrays.mjs +0 -84
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.js +0 -278
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/md5.mjs +0 -276
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.js +0 -91
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-cfb.mjs +0 -89
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.js +0 -127
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr-gladman.mjs +0 -125
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.js +0 -69
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ctr.mjs +0 -67
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.js +0 -51
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ecb.mjs +0 -49
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.js +0 -65
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/mode-ofb.mjs +0 -63
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.js +0 -60
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-ansix923.mjs +0 -58
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.js +0 -55
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso10126.mjs +0 -53
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.js +0 -51
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-iso97971.mjs +0 -49
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.js +0 -41
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-nopadding.mjs +0 -39
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.js +0 -58
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pad-zeropadding.mjs +0 -56
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.js +0 -157
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/pbkdf2.mjs +0 -155
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.js +0 -204
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit-legacy.mjs +0 -202
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.js +0 -206
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rabbit.mjs +0 -204
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.js +0 -153
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/rc4.mjs +0 -151
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.js +0 -277
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/ripemd160.mjs +0 -275
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.js +0 -160
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha1.mjs +0 -158
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.js +0 -91
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha224.mjs +0 -89
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.js +0 -209
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha256.mjs +0 -207
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.js +0 -337
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha3.mjs +0 -335
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.js +0 -95
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha384.mjs +0 -93
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.js +0 -337
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/sha512.mjs +0 -335
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.js +0 -793
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/tripledes.mjs +0 -791
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.js +0 -314
- package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/x64-core.mjs +0 -312
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/compact/verify.js +0 -26
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/compact/verify.mjs +0 -24
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/flattened/verify.js +0 -127
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jws/flattened/verify.mjs +0 -125
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jwt/verify.js +0 -20
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/jwt/verify.mjs +0 -18
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/key/import.js +0 -31
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/key/import.mjs +0 -29
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/buffer_utils.js +0 -18
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/buffer_utils.mjs +0 -14
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/check_key_type.js +0 -82
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/check_key_type.mjs +0 -80
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/crypto_key.js +0 -103
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/crypto_key.mjs +0 -101
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/epoch.js +0 -7
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/epoch.mjs +0 -3
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/invalid_key_input.js +0 -38
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/invalid_key_input.mjs +0 -33
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_disjoint.js +0 -27
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_disjoint.mjs +0 -23
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_jwk.js +0 -21
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_jwk.mjs +0 -16
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_object.js +0 -22
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/is_object.mjs +0 -18
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/jwt_claims_set.js +0 -111
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/jwt_claims_set.mjs +0 -107
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/secs.js +0 -61
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/secs.mjs +0 -57
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_algorithms.js +0 -16
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_algorithms.mjs +0 -12
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_crit.js +0 -40
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/lib/validate_crit.mjs +0 -36
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/base64url.js +0 -15
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/base64url.mjs +0 -13
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/check_key_length.js +0 -23
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/check_key_length.mjs +0 -19
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/dsa_digest.js +0 -30
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/dsa_digest.mjs +0 -26
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_named_curve.js +0 -60
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_named_curve.mjs +0 -56
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.js +0 -35
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.mjs +0 -31
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/hmac_digest.js +0 -20
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/hmac_digest.mjs +0 -16
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_like.js +0 -15
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_like.mjs +0 -10
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_object.js +0 -28
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/is_key_object.mjs +0 -5
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/jwk_to_key.js +0 -14
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/jwk_to_key.mjs +0 -10
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/node_key.js +0 -115
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/node_key.mjs +0 -111
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/sign.js +0 -42
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/sign.mjs +0 -19
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/verify.js +0 -54
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/verify.mjs +0 -31
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/webcrypto.js +0 -32
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/runtime/webcrypto.mjs +0 -7
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/util/errors.js +0 -69
- package/dist/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/esm/util/errors.mjs +0 -60
- package/dist/node_modules/.pnpm/neverthrow@7.2.0/node_modules/neverthrow/dist/index.es.js +0 -422
- package/dist/node_modules/.pnpm/neverthrow@7.2.0/node_modules/neverthrow/dist/index.es.mjs +0 -415
- package/dist/node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.web.js +0 -6
- package/dist/node_modules/.pnpm/uncrypto@0.1.3/node_modules/uncrypto/dist/crypto.web.mjs +0 -4
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var redis = require('@upstash/redis');
|
|
5
|
+
var qstash = require('@upstash/qstash');
|
|
6
6
|
|
|
7
7
|
let cachedRedis = null;
|
|
8
8
|
let cachedQstash = null;
|
|
@@ -19,6 +19,7 @@ let qstashWarnedHealthCheck = false;
|
|
|
19
19
|
let qstashWarnedHealthSchedule = false;
|
|
20
20
|
let redisHealthTimer = null;
|
|
21
21
|
let qstashHealthTimer = null;
|
|
22
|
+
let cachedRedisPrefixed = null;
|
|
22
23
|
const isNonEmpty = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
23
24
|
const isValidUrl = (value) => {
|
|
24
25
|
try {
|
|
@@ -29,6 +30,75 @@ const isValidUrl = (value) => {
|
|
|
29
30
|
return false;
|
|
30
31
|
}
|
|
31
32
|
};
|
|
33
|
+
const getRequiredRedisAppName = () => {
|
|
34
|
+
const appName = process.env.NEXT_PUBLIC_APP_NAME;
|
|
35
|
+
if (!isNonEmpty(appName)) {
|
|
36
|
+
throw new Error('[Upstash Config] NEXT_PUBLIC_APP_NAME is required for Redis key prefixing and must not be empty');
|
|
37
|
+
}
|
|
38
|
+
const normalized = appName.replace(/\s+/g, '').toLowerCase();
|
|
39
|
+
if (!normalized) {
|
|
40
|
+
throw new Error('[Upstash Config] NEXT_PUBLIC_APP_NAME must contain non-whitespace characters for Redis key prefixing');
|
|
41
|
+
}
|
|
42
|
+
return normalized;
|
|
43
|
+
};
|
|
44
|
+
const getRedisKeyPrefix = () => {
|
|
45
|
+
const envSuffix = process.env.NODE_ENV === 'production' ? 'live' : 'test';
|
|
46
|
+
return `${getRequiredRedisAppName()}_${envSuffix}`;
|
|
47
|
+
};
|
|
48
|
+
const prefixRedisKey = (prefix, key) => `${prefix}:${key}`;
|
|
49
|
+
const prefixRedisKeys = (prefix, keys) => keys.map((key) => prefixRedisKey(prefix, key));
|
|
50
|
+
const prefixFirstStringArg = (args, prefix) => {
|
|
51
|
+
if (typeof args[0] !== 'string') {
|
|
52
|
+
return args;
|
|
53
|
+
}
|
|
54
|
+
const nextArgs = [...args];
|
|
55
|
+
nextArgs[0] = prefixRedisKey(prefix, args[0]);
|
|
56
|
+
return nextArgs;
|
|
57
|
+
};
|
|
58
|
+
const prefixAllStringArgs = (args, prefix) => {
|
|
59
|
+
return args.map((arg) => (typeof arg === 'string' ? prefixRedisKey(prefix, arg) : arg));
|
|
60
|
+
};
|
|
61
|
+
const keyArrayCommands = new Set(['mget', 'del']);
|
|
62
|
+
const allStringKeyCommands = new Set(['exists']);
|
|
63
|
+
const createPrefixedPipeline = (target, prefix) => {
|
|
64
|
+
return new Proxy(target, {
|
|
65
|
+
get(obj, prop, receiver) {
|
|
66
|
+
const value = Reflect.get(obj, prop, receiver);
|
|
67
|
+
if (typeof value !== 'function') {
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
return (...args) => {
|
|
71
|
+
if (prop === 'eval' || prop === 'evalsha' || prop === 'evalro' || prop === 'evalshaRo') {
|
|
72
|
+
const [script, keys, argv] = args;
|
|
73
|
+
return value.call(obj, script, prefixRedisKeys(prefix, keys), argv);
|
|
74
|
+
}
|
|
75
|
+
if (prop === 'pipeline' || prop === 'multi') {
|
|
76
|
+
const nested = value.call(obj);
|
|
77
|
+
return createPrefixedPipeline(nested, prefix);
|
|
78
|
+
}
|
|
79
|
+
if (typeof prop === 'string' && keyArrayCommands.has(prop)) {
|
|
80
|
+
const nextArgs = prefixAllStringArgs(args, prefix);
|
|
81
|
+
return value.apply(obj, nextArgs);
|
|
82
|
+
}
|
|
83
|
+
if (typeof prop === 'string' && allStringKeyCommands.has(prop)) {
|
|
84
|
+
const nextArgs = prefixAllStringArgs(args, prefix);
|
|
85
|
+
return value.apply(obj, nextArgs);
|
|
86
|
+
}
|
|
87
|
+
if (prop === 'mset') {
|
|
88
|
+
const [entries] = args;
|
|
89
|
+
const prefixedEntries = Object.fromEntries(Object.entries(entries).map(([key, entryValue]) => [prefixRedisKey(prefix, key), entryValue]));
|
|
90
|
+
return value.call(obj, prefixedEntries);
|
|
91
|
+
}
|
|
92
|
+
if (prop === 'hmget') {
|
|
93
|
+
const nextArgs = prefixFirstStringArg(args, prefix);
|
|
94
|
+
return value.apply(obj, nextArgs);
|
|
95
|
+
}
|
|
96
|
+
const nextArgs = prefixFirstStringArg(args, prefix);
|
|
97
|
+
return value.apply(obj, nextArgs);
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
};
|
|
32
102
|
const parseMinutes = (value, fallback) => {
|
|
33
103
|
if (!isNonEmpty(value)) {
|
|
34
104
|
return fallback;
|
|
@@ -47,7 +117,7 @@ const scheduleRedisHealthCheck = () => {
|
|
|
47
117
|
return;
|
|
48
118
|
}
|
|
49
119
|
const delayMs = getRedisHealthIntervalMinutes() * 60000;
|
|
50
|
-
redisHealthTimer = setTimeout(() =>
|
|
120
|
+
redisHealthTimer = setTimeout(() => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
51
121
|
redisHealthTimer = null;
|
|
52
122
|
if (!cachedRedis) {
|
|
53
123
|
return;
|
|
@@ -77,7 +147,7 @@ const scheduleRedisHealthCheck = () => {
|
|
|
77
147
|
}
|
|
78
148
|
}), delayMs);
|
|
79
149
|
};
|
|
80
|
-
const checkQstashHealth = (token) =>
|
|
150
|
+
const checkQstashHealth = (token) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
81
151
|
const response = yield fetch(getQstashHealthcheckUrl(), {
|
|
82
152
|
method: 'GET',
|
|
83
153
|
headers: {
|
|
@@ -94,7 +164,7 @@ const scheduleQstashHealthCheck = (token) => {
|
|
|
94
164
|
return;
|
|
95
165
|
}
|
|
96
166
|
const delayMs = getQstashHealthIntervalMinutes() * 60000;
|
|
97
|
-
qstashHealthTimer = setTimeout(() =>
|
|
167
|
+
qstashHealthTimer = setTimeout(() => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
98
168
|
qstashHealthTimer = null;
|
|
99
169
|
if (!cachedQstash) {
|
|
100
170
|
return;
|
|
@@ -131,16 +201,16 @@ const scheduleQstashHealthCheck = (token) => {
|
|
|
131
201
|
* - read-through cached instance only
|
|
132
202
|
*/
|
|
133
203
|
const getRedis = () => {
|
|
134
|
-
return
|
|
204
|
+
return cachedRedisPrefixed;
|
|
135
205
|
};
|
|
136
|
-
const ensureRedis = () =>
|
|
137
|
-
if (
|
|
138
|
-
return
|
|
206
|
+
const ensureRedis = () => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
207
|
+
if (cachedRedisPrefixed) {
|
|
208
|
+
return cachedRedisPrefixed;
|
|
139
209
|
}
|
|
140
210
|
if (redisInitPromise) {
|
|
141
211
|
return redisInitPromise;
|
|
142
212
|
}
|
|
143
|
-
redisInitPromise = (() =>
|
|
213
|
+
redisInitPromise = (() => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
144
214
|
const { UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN } = process.env;
|
|
145
215
|
if (!isNonEmpty(UPSTASH_REDIS_REST_URL) || !isNonEmpty(UPSTASH_REDIS_REST_TOKEN)) {
|
|
146
216
|
if (!redisWarnedMissingEnv) {
|
|
@@ -157,14 +227,16 @@ const ensureRedis = () => tslib_es6.__awaiter(void 0, void 0, void 0, function*
|
|
|
157
227
|
return null;
|
|
158
228
|
}
|
|
159
229
|
try {
|
|
160
|
-
const
|
|
230
|
+
const keyPrefix = getRedisKeyPrefix();
|
|
231
|
+
const client = new redis.Redis({
|
|
161
232
|
url: UPSTASH_REDIS_REST_URL,
|
|
162
233
|
token: UPSTASH_REDIS_REST_TOKEN,
|
|
163
234
|
});
|
|
164
235
|
yield client.ping();
|
|
165
236
|
cachedRedis = client;
|
|
237
|
+
cachedRedisPrefixed = createPrefixedPipeline(client, keyPrefix);
|
|
166
238
|
scheduleRedisHealthCheck();
|
|
167
|
-
return
|
|
239
|
+
return cachedRedisPrefixed;
|
|
168
240
|
}
|
|
169
241
|
catch (error) {
|
|
170
242
|
if (!redisWarnedInitError) {
|
|
@@ -189,14 +261,14 @@ const ensureRedis = () => tslib_es6.__awaiter(void 0, void 0, void 0, function*
|
|
|
189
261
|
const getQstash = () => {
|
|
190
262
|
return cachedQstash;
|
|
191
263
|
};
|
|
192
|
-
const ensureQstash = () =>
|
|
264
|
+
const ensureQstash = () => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
193
265
|
if (cachedQstash) {
|
|
194
266
|
return cachedQstash;
|
|
195
267
|
}
|
|
196
268
|
if (qstashInitPromise) {
|
|
197
269
|
return qstashInitPromise;
|
|
198
270
|
}
|
|
199
|
-
qstashInitPromise = (() =>
|
|
271
|
+
qstashInitPromise = (() => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
200
272
|
const { QSTASH_TOKEN } = process.env;
|
|
201
273
|
if (!isNonEmpty(QSTASH_TOKEN)) {
|
|
202
274
|
if (!qstashWarnedMissingEnv) {
|
|
@@ -206,7 +278,7 @@ const ensureQstash = () => tslib_es6.__awaiter(void 0, void 0, void 0, function*
|
|
|
206
278
|
return null;
|
|
207
279
|
}
|
|
208
280
|
try {
|
|
209
|
-
const client = new
|
|
281
|
+
const client = new qstash.Client({ token: QSTASH_TOKEN });
|
|
210
282
|
yield checkQstashHealth(QSTASH_TOKEN);
|
|
211
283
|
cachedQstash = client;
|
|
212
284
|
scheduleQstashHealthCheck(QSTASH_TOKEN);
|
|
@@ -226,14 +298,14 @@ const ensureQstash = () => tslib_es6.__awaiter(void 0, void 0, void 0, function*
|
|
|
226
298
|
}))();
|
|
227
299
|
return qstashInitPromise;
|
|
228
300
|
});
|
|
229
|
-
const withRedis = (fn) =>
|
|
301
|
+
const withRedis = (fn) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
230
302
|
const redis = yield ensureRedis();
|
|
231
303
|
if (!redis) {
|
|
232
304
|
return null;
|
|
233
305
|
}
|
|
234
306
|
return fn(redis);
|
|
235
307
|
});
|
|
236
|
-
const withQstash = (fn) =>
|
|
308
|
+
const withQstash = (fn) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
237
309
|
const qstash = yield ensureQstash();
|
|
238
310
|
if (!qstash) {
|
|
239
311
|
return null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { __awaiter } from '
|
|
2
|
-
import { Redis
|
|
3
|
-
import { Client } from '
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
|
+
import { Redis } from '@upstash/redis';
|
|
3
|
+
import { Client } from '@upstash/qstash';
|
|
4
4
|
|
|
5
5
|
let cachedRedis = null;
|
|
6
6
|
let cachedQstash = null;
|
|
@@ -17,6 +17,7 @@ let qstashWarnedHealthCheck = false;
|
|
|
17
17
|
let qstashWarnedHealthSchedule = false;
|
|
18
18
|
let redisHealthTimer = null;
|
|
19
19
|
let qstashHealthTimer = null;
|
|
20
|
+
let cachedRedisPrefixed = null;
|
|
20
21
|
const isNonEmpty = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
21
22
|
const isValidUrl = (value) => {
|
|
22
23
|
try {
|
|
@@ -27,6 +28,75 @@ const isValidUrl = (value) => {
|
|
|
27
28
|
return false;
|
|
28
29
|
}
|
|
29
30
|
};
|
|
31
|
+
const getRequiredRedisAppName = () => {
|
|
32
|
+
const appName = process.env.NEXT_PUBLIC_APP_NAME;
|
|
33
|
+
if (!isNonEmpty(appName)) {
|
|
34
|
+
throw new Error('[Upstash Config] NEXT_PUBLIC_APP_NAME is required for Redis key prefixing and must not be empty');
|
|
35
|
+
}
|
|
36
|
+
const normalized = appName.replace(/\s+/g, '').toLowerCase();
|
|
37
|
+
if (!normalized) {
|
|
38
|
+
throw new Error('[Upstash Config] NEXT_PUBLIC_APP_NAME must contain non-whitespace characters for Redis key prefixing');
|
|
39
|
+
}
|
|
40
|
+
return normalized;
|
|
41
|
+
};
|
|
42
|
+
const getRedisKeyPrefix = () => {
|
|
43
|
+
const envSuffix = process.env.NODE_ENV === 'production' ? 'live' : 'test';
|
|
44
|
+
return `${getRequiredRedisAppName()}_${envSuffix}`;
|
|
45
|
+
};
|
|
46
|
+
const prefixRedisKey = (prefix, key) => `${prefix}:${key}`;
|
|
47
|
+
const prefixRedisKeys = (prefix, keys) => keys.map((key) => prefixRedisKey(prefix, key));
|
|
48
|
+
const prefixFirstStringArg = (args, prefix) => {
|
|
49
|
+
if (typeof args[0] !== 'string') {
|
|
50
|
+
return args;
|
|
51
|
+
}
|
|
52
|
+
const nextArgs = [...args];
|
|
53
|
+
nextArgs[0] = prefixRedisKey(prefix, args[0]);
|
|
54
|
+
return nextArgs;
|
|
55
|
+
};
|
|
56
|
+
const prefixAllStringArgs = (args, prefix) => {
|
|
57
|
+
return args.map((arg) => (typeof arg === 'string' ? prefixRedisKey(prefix, arg) : arg));
|
|
58
|
+
};
|
|
59
|
+
const keyArrayCommands = new Set(['mget', 'del']);
|
|
60
|
+
const allStringKeyCommands = new Set(['exists']);
|
|
61
|
+
const createPrefixedPipeline = (target, prefix) => {
|
|
62
|
+
return new Proxy(target, {
|
|
63
|
+
get(obj, prop, receiver) {
|
|
64
|
+
const value = Reflect.get(obj, prop, receiver);
|
|
65
|
+
if (typeof value !== 'function') {
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
return (...args) => {
|
|
69
|
+
if (prop === 'eval' || prop === 'evalsha' || prop === 'evalro' || prop === 'evalshaRo') {
|
|
70
|
+
const [script, keys, argv] = args;
|
|
71
|
+
return value.call(obj, script, prefixRedisKeys(prefix, keys), argv);
|
|
72
|
+
}
|
|
73
|
+
if (prop === 'pipeline' || prop === 'multi') {
|
|
74
|
+
const nested = value.call(obj);
|
|
75
|
+
return createPrefixedPipeline(nested, prefix);
|
|
76
|
+
}
|
|
77
|
+
if (typeof prop === 'string' && keyArrayCommands.has(prop)) {
|
|
78
|
+
const nextArgs = prefixAllStringArgs(args, prefix);
|
|
79
|
+
return value.apply(obj, nextArgs);
|
|
80
|
+
}
|
|
81
|
+
if (typeof prop === 'string' && allStringKeyCommands.has(prop)) {
|
|
82
|
+
const nextArgs = prefixAllStringArgs(args, prefix);
|
|
83
|
+
return value.apply(obj, nextArgs);
|
|
84
|
+
}
|
|
85
|
+
if (prop === 'mset') {
|
|
86
|
+
const [entries] = args;
|
|
87
|
+
const prefixedEntries = Object.fromEntries(Object.entries(entries).map(([key, entryValue]) => [prefixRedisKey(prefix, key), entryValue]));
|
|
88
|
+
return value.call(obj, prefixedEntries);
|
|
89
|
+
}
|
|
90
|
+
if (prop === 'hmget') {
|
|
91
|
+
const nextArgs = prefixFirstStringArg(args, prefix);
|
|
92
|
+
return value.apply(obj, nextArgs);
|
|
93
|
+
}
|
|
94
|
+
const nextArgs = prefixFirstStringArg(args, prefix);
|
|
95
|
+
return value.apply(obj, nextArgs);
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
};
|
|
30
100
|
const parseMinutes = (value, fallback) => {
|
|
31
101
|
if (!isNonEmpty(value)) {
|
|
32
102
|
return fallback;
|
|
@@ -129,11 +199,11 @@ const scheduleQstashHealthCheck = (token) => {
|
|
|
129
199
|
* - read-through cached instance only
|
|
130
200
|
*/
|
|
131
201
|
const getRedis = () => {
|
|
132
|
-
return
|
|
202
|
+
return cachedRedisPrefixed;
|
|
133
203
|
};
|
|
134
204
|
const ensureRedis = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
135
|
-
if (
|
|
136
|
-
return
|
|
205
|
+
if (cachedRedisPrefixed) {
|
|
206
|
+
return cachedRedisPrefixed;
|
|
137
207
|
}
|
|
138
208
|
if (redisInitPromise) {
|
|
139
209
|
return redisInitPromise;
|
|
@@ -155,14 +225,16 @@ const ensureRedis = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
155
225
|
return null;
|
|
156
226
|
}
|
|
157
227
|
try {
|
|
158
|
-
const
|
|
228
|
+
const keyPrefix = getRedisKeyPrefix();
|
|
229
|
+
const client = new Redis({
|
|
159
230
|
url: UPSTASH_REDIS_REST_URL,
|
|
160
231
|
token: UPSTASH_REDIS_REST_TOKEN,
|
|
161
232
|
});
|
|
162
233
|
yield client.ping();
|
|
163
234
|
cachedRedis = client;
|
|
235
|
+
cachedRedisPrefixed = createPrefixedPipeline(client, keyPrefix);
|
|
164
236
|
scheduleRedisHealthCheck();
|
|
165
|
-
return
|
|
237
|
+
return cachedRedisPrefixed;
|
|
166
238
|
}
|
|
167
239
|
catch (error) {
|
|
168
240
|
if (!redisWarnedInitError) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var tslib = require('tslib');
|
|
4
4
|
var prisma = require('./prisma.js');
|
|
5
5
|
|
|
6
6
|
// 事务工具类,回滚时打印回滚日志
|
|
7
7
|
function runInTransaction(fn, operationName) {
|
|
8
|
-
return
|
|
8
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
9
9
|
const start = Date.now();
|
|
10
10
|
try {
|
|
11
11
|
return yield prisma.prisma.$transaction(fn);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var tslib = require('tslib');
|
|
4
4
|
var user_service = require('../database/user.service.js');
|
|
5
5
|
var subscription_service = require('../database/subscription.service.js');
|
|
6
6
|
var credit_service = require('../database/credit.service.js');
|
|
@@ -13,7 +13,7 @@ var creditInit = require('../../lib/credit-init.js');
|
|
|
13
13
|
const ANONYMOUS_INIT_LOCK_NAMESPACE = 92831;
|
|
14
14
|
class AnonymousAggregateService {
|
|
15
15
|
lockFingerprintInit(tx, fingerprintId) {
|
|
16
|
-
return
|
|
16
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
17
17
|
yield tx.$executeRaw `
|
|
18
18
|
SELECT pg_advisory_xact_lock(
|
|
19
19
|
${client.Prisma.raw(String(ANONYMOUS_INIT_LOCK_NAMESPACE))},
|
|
@@ -23,7 +23,7 @@ class AnonymousAggregateService {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
findLatestUserContextByFingerprintId(fingerprintId, tx) {
|
|
26
|
-
return
|
|
26
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
27
27
|
const existingUsers = yield user_service.userService.findListByFingerprintId(fingerprintId, tx);
|
|
28
28
|
if (existingUsers.length === 0) {
|
|
29
29
|
return null;
|
|
@@ -44,7 +44,7 @@ class AnonymousAggregateService {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
createAnonymousUser(fingerprintId, tx, options) {
|
|
47
|
-
return
|
|
47
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
48
48
|
const newUser = yield user_service.userService.createUser({
|
|
49
49
|
fingerprintId,
|
|
50
50
|
sourceRef: options === null || options === void 0 ? void 0 : options.sourceRef,
|
|
@@ -70,8 +70,8 @@ class AnonymousAggregateService {
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
getOrCreateByFingerprintId(fingerprintId, options) {
|
|
73
|
-
return
|
|
74
|
-
return prismaTransactionUtil.runInTransaction((tx) =>
|
|
73
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
return prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
75
75
|
yield this.lockFingerprintInit(tx, fingerprintId);
|
|
76
76
|
const existingContext = yield this.findLatestUserContextByFingerprintId(fingerprintId, tx);
|
|
77
77
|
if (existingContext) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __awaiter } from '
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
2
|
import { userService } from '../database/user.service.mjs';
|
|
3
3
|
import { subscriptionService } from '../database/subscription.service.mjs';
|
|
4
4
|
import { creditService } from '../database/credit.service.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var tslib = require('tslib');
|
|
4
4
|
var constants = require('../database/constants.js');
|
|
5
5
|
require('../../prisma/prisma.js');
|
|
6
6
|
var prismaTransactionUtil = require('../../prisma/prisma-transaction-util.js');
|
|
@@ -11,8 +11,8 @@ require('@prisma/client');
|
|
|
11
11
|
|
|
12
12
|
class BillingAggregateService {
|
|
13
13
|
recordSubscriptionInitPayment(context) {
|
|
14
|
-
return
|
|
15
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
14
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
16
16
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
17
17
|
const now = new Date();
|
|
18
18
|
// 订阅截止时间统一为到期日最后1s
|
|
@@ -62,8 +62,8 @@ class BillingAggregateService {
|
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
completeOneTimeCheckout(params) {
|
|
65
|
-
return
|
|
66
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
65
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
67
67
|
var _a;
|
|
68
68
|
const now = new Date();
|
|
69
69
|
yield transaction_service.transactionService.update(params.orderId, {
|
|
@@ -91,8 +91,8 @@ class BillingAggregateService {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
recordInitialInvoiceDetails(params) {
|
|
94
|
-
return
|
|
95
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
94
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
96
96
|
var _a, _b, _c;
|
|
97
97
|
yield transaction_service.transactionService.update(params.orderId, {
|
|
98
98
|
payInvoiceId: params.invoiceId,
|
|
@@ -106,8 +106,8 @@ class BillingAggregateService {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
recordSubscriptionRenewalPayment(context) {
|
|
109
|
-
return
|
|
110
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
109
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
111
111
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
112
112
|
yield transaction_service.transactionService.createTransaction({
|
|
113
113
|
userId: context.userId,
|
|
@@ -160,8 +160,8 @@ class BillingAggregateService {
|
|
|
160
160
|
});
|
|
161
161
|
}
|
|
162
162
|
recordInitialPaymentFailure(params) {
|
|
163
|
-
return
|
|
164
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
163
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
165
165
|
var _a, _b;
|
|
166
166
|
yield transaction_service.transactionService.updateStatus(params.orderId, constants.OrderStatus.FAILED, {
|
|
167
167
|
paymentStatus: constants.PaymentStatus.UN_PAID,
|
|
@@ -175,8 +175,8 @@ class BillingAggregateService {
|
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
recordRenewalPaymentFailure(context) {
|
|
178
|
-
return
|
|
179
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
178
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
179
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
180
180
|
var _a, _b, _c, _d, _e, _f;
|
|
181
181
|
yield transaction_service.transactionService.createTransaction({
|
|
182
182
|
userId: context.userId,
|
|
@@ -216,8 +216,8 @@ class BillingAggregateService {
|
|
|
216
216
|
});
|
|
217
217
|
}
|
|
218
218
|
syncSubscriptionFromStripe(params) {
|
|
219
|
-
return
|
|
220
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
219
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
220
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
221
221
|
if (params.isUserCancel) {
|
|
222
222
|
// 记录用户取消订阅的时间信息
|
|
223
223
|
yield transaction_service.transactionService.update(params.orderId, {
|
|
@@ -234,8 +234,8 @@ class BillingAggregateService {
|
|
|
234
234
|
});
|
|
235
235
|
}
|
|
236
236
|
processSubscriptionCancel(context) {
|
|
237
|
-
return
|
|
238
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
237
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
238
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
239
239
|
var _a;
|
|
240
240
|
// 更新订单, 记录取消信息
|
|
241
241
|
yield transaction_service.transactionService.update(context.orderId, {
|
|
@@ -250,8 +250,8 @@ class BillingAggregateService {
|
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
252
|
processSubscriptionRefund(context) {
|
|
253
|
-
return
|
|
254
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
253
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
254
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
255
255
|
var _a, _b;
|
|
256
256
|
const now = new Date();
|
|
257
257
|
yield transaction_service.transactionService.update(context.transaction.orderId, {
|
|
@@ -280,8 +280,8 @@ class BillingAggregateService {
|
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
282
|
processOneTimeRefund(context) {
|
|
283
|
-
return
|
|
284
|
-
yield prismaTransactionUtil.runInTransaction((tx) =>
|
|
283
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
284
|
+
yield prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
285
285
|
var _a, _b;
|
|
286
286
|
const now = new Date();
|
|
287
287
|
yield transaction_service.transactionService.update(context.transaction.orderId, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __awaiter } from '
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
2
|
import { SubscriptionStatus, PaymentStatus, OrderStatus, TransactionType, PaySupplier, OperationType, CreditType } from '../database/constants.mjs';
|
|
3
3
|
import '../../prisma/prisma.mjs';
|
|
4
4
|
import { runInTransaction } from '../../prisma/prisma-transaction-util.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var tslib = require('tslib');
|
|
4
4
|
var constants = require('../database/constants.js');
|
|
5
5
|
var user_service = require('../database/user.service.js');
|
|
6
6
|
var subscription_service = require('../database/subscription.service.js');
|
|
@@ -12,8 +12,8 @@ var creditInit = require('../../lib/credit-init.js');
|
|
|
12
12
|
|
|
13
13
|
class UserAggregateService {
|
|
14
14
|
initAnonymousUser(fingerprintId, options) {
|
|
15
|
-
return
|
|
16
|
-
return prismaTransactionUtil.runInTransaction((tx) =>
|
|
15
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
return prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
17
17
|
const newUser = yield user_service.userService.createUser({
|
|
18
18
|
fingerprintId,
|
|
19
19
|
sourceRef: options === null || options === void 0 ? void 0 : options.sourceRef,
|
|
@@ -46,8 +46,8 @@ class UserAggregateService {
|
|
|
46
46
|
* - 不需要 CREATE,只需 UPDATE 确保逻辑一致
|
|
47
47
|
*/
|
|
48
48
|
createNewRegisteredUser(clerkUserId, email, fingerprintId, userName, sourceRef) {
|
|
49
|
-
return
|
|
50
|
-
return prismaTransactionUtil.runInTransaction((tx) =>
|
|
49
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
return prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
51
51
|
const newUser = yield user_service.userService.createUser({
|
|
52
52
|
clerkUserId,
|
|
53
53
|
email,
|
|
@@ -71,8 +71,8 @@ class UserAggregateService {
|
|
|
71
71
|
}
|
|
72
72
|
// 注意积分审查日志的处理
|
|
73
73
|
upgradeToRegistered(userId, email, clerkUserId, userName) {
|
|
74
|
-
return
|
|
75
|
-
return prismaTransactionUtil.runInTransaction((tx) =>
|
|
74
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
return prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
76
76
|
const updateUser = yield user_service.userService.upgradeToRegistered(userId, {
|
|
77
77
|
email,
|
|
78
78
|
clerkUserId,
|
|
@@ -94,8 +94,8 @@ class UserAggregateService {
|
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
handleUserUnregister(clerkUserId) {
|
|
97
|
-
return
|
|
98
|
-
return prismaTransactionUtil.runInTransaction((tx) =>
|
|
97
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
return prismaTransactionUtil.runInTransaction((tx) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
99
99
|
// 根据clerkUserId查找用户
|
|
100
100
|
const user = yield user_service.userService.findByClerkUserId(clerkUserId, tx);
|
|
101
101
|
if (!user) {
|
|
@@ -117,7 +117,7 @@ class UserAggregateService {
|
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
findUserWithRelations(userId, tx) {
|
|
120
|
-
return
|
|
120
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
121
121
|
return tx.user.findUnique({
|
|
122
122
|
where: { userId },
|
|
123
123
|
include: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __awaiter } from '
|
|
1
|
+
import { __awaiter } from 'tslib';
|
|
2
2
|
import { UserStatus, OperationType, CreditType } from '../database/constants.mjs';
|
|
3
3
|
import { userService } from '../database/user.service.mjs';
|
|
4
4
|
import { subscriptionService } from '../database/subscription.service.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/services/ai/abort.ts"],"names":[],"mappings":"AAAA,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAyBtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function createUpstreamAbortSignal(requestSignal, timeoutMs) {
|
|
4
|
+
const controller = new AbortController();
|
|
5
|
+
const timeoutId = setTimeout(() => controller.abort('timeout'), timeoutMs);
|
|
6
|
+
const forwardAbort = () => {
|
|
7
|
+
var _a;
|
|
8
|
+
clearTimeout(timeoutId);
|
|
9
|
+
controller.abort((_a = requestSignal.reason) !== null && _a !== void 0 ? _a : 'request_aborted');
|
|
10
|
+
};
|
|
11
|
+
if (requestSignal.aborted) {
|
|
12
|
+
forwardAbort();
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
requestSignal.addEventListener('abort', forwardAbort, { once: true });
|
|
16
|
+
}
|
|
17
|
+
controller.signal.addEventListener('abort', () => {
|
|
18
|
+
clearTimeout(timeoutId);
|
|
19
|
+
requestSignal.removeEventListener('abort', forwardAbort);
|
|
20
|
+
}, { once: true });
|
|
21
|
+
return controller.signal;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.createUpstreamAbortSignal = createUpstreamAbortSignal;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
function createUpstreamAbortSignal(requestSignal, timeoutMs) {
|
|
2
|
+
const controller = new AbortController();
|
|
3
|
+
const timeoutId = setTimeout(() => controller.abort('timeout'), timeoutMs);
|
|
4
|
+
const forwardAbort = () => {
|
|
5
|
+
var _a;
|
|
6
|
+
clearTimeout(timeoutId);
|
|
7
|
+
controller.abort((_a = requestSignal.reason) !== null && _a !== void 0 ? _a : 'request_aborted');
|
|
8
|
+
};
|
|
9
|
+
if (requestSignal.aborted) {
|
|
10
|
+
forwardAbort();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
requestSignal.addEventListener('abort', forwardAbort, { once: true });
|
|
14
|
+
}
|
|
15
|
+
controller.signal.addEventListener('abort', () => {
|
|
16
|
+
clearTimeout(timeoutId);
|
|
17
|
+
requestSignal.removeEventListener('abort', forwardAbort);
|
|
18
|
+
}, { once: true });
|
|
19
|
+
return controller.signal;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { createUpstreamAbortSignal };
|