@zuplo/cli 7.4.5 → 7.4.7

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 (198) hide show
  1. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwks/remote.d.ts +4 -4
  2. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/general/verify.d.ts +3 -3
  3. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/encrypt.d.ts +8 -14
  4. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/sign.d.ts +8 -14
  5. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/unsecured.d.ts +9 -15
  6. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +30 -8
  7. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +8 -4
  8. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +6 -13
  9. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/general/decrypt.js +19 -19
  10. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/general/encrypt.js +27 -20
  11. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwk/embedded.js +15 -1
  12. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwk/thumbprint.js +11 -5
  13. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwks/local.js +45 -53
  14. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwks/remote.js +82 -103
  15. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/compact/sign.js +10 -9
  16. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/flattened/sign.js +2 -1
  17. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/flattened/verify.js +8 -7
  18. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/general/sign.js +5 -3
  19. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/general/verify.js +51 -21
  20. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/decrypt.js +7 -9
  21. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/encrypt.js +21 -50
  22. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/sign.js +8 -41
  23. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/unsecured.js +21 -42
  24. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/generate_key_pair.js +6 -2
  25. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/generate_secret.js +7 -6
  26. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/import.js +16 -12
  27. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/asn1.js +7 -2
  28. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/content_encryption.js +7 -15
  29. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/deflate.js +8 -0
  30. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/helpers.js +1 -1
  31. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +85 -28
  32. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +40 -12
  33. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwk_metadata.js +20 -0
  34. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jws_sign.js +47 -36
  35. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jws_verify.js +77 -45
  36. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +82 -47
  37. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key.js +24 -9
  38. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_management.js +10 -4
  39. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_options.js +6 -0
  40. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/options.js +26 -0
  41. package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/type_checks.js +11 -13
  42. package/node_modules/@modelcontextprotocol/client/node_modules/jose/package.json +1 -1
  43. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwks/remote.d.ts +4 -4
  44. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/general/verify.d.ts +3 -3
  45. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/encrypt.d.ts +8 -14
  46. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/sign.d.ts +8 -14
  47. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/unsecured.d.ts +9 -15
  48. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +30 -8
  49. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +8 -4
  50. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +6 -13
  51. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/general/decrypt.js +19 -19
  52. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/general/encrypt.js +27 -20
  53. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwk/embedded.js +15 -1
  54. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwk/thumbprint.js +11 -5
  55. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/local.js +45 -53
  56. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +82 -103
  57. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/compact/sign.js +10 -9
  58. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/flattened/sign.js +2 -1
  59. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/flattened/verify.js +8 -7
  60. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/general/sign.js +5 -3
  61. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/general/verify.js +51 -21
  62. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/decrypt.js +7 -9
  63. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/encrypt.js +21 -50
  64. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/sign.js +8 -41
  65. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/unsecured.js +21 -42
  66. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/generate_key_pair.js +6 -2
  67. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/generate_secret.js +7 -6
  68. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/import.js +16 -12
  69. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/asn1.js +7 -2
  70. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/content_encryption.js +7 -15
  71. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/deflate.js +8 -0
  72. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/helpers.js +1 -1
  73. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +85 -28
  74. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +40 -12
  75. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwk_metadata.js +20 -0
  76. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_sign.js +47 -36
  77. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_verify.js +77 -45
  78. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +82 -47
  79. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key.js +24 -9
  80. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_management.js +10 -4
  81. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_options.js +6 -0
  82. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/options.js +26 -0
  83. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/type_checks.js +11 -13
  84. package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +1 -1
  85. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts +35 -0
  86. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.d.ts.map +1 -0
  87. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.js +352 -0
  88. package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.mjs +294 -0
  89. package/node_modules/@posthog/core/dist/index.d.ts +2 -0
  90. package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
  91. package/node_modules/@posthog/core/dist/index.js +164 -79
  92. package/node_modules/@posthog/core/dist/index.mjs +2 -1
  93. package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts +12 -18
  94. package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts.map +1 -1
  95. package/node_modules/@posthog/core/dist/posthog-core-stateless.js +15 -47
  96. package/node_modules/@posthog/core/dist/posthog-core-stateless.mjs +15 -47
  97. package/node_modules/@posthog/core/dist/surveys/index.d.ts +1 -0
  98. package/node_modules/@posthog/core/dist/surveys/index.d.ts.map +1 -1
  99. package/node_modules/@posthog/core/dist/surveys/index.js +13 -0
  100. package/node_modules/@posthog/core/dist/surveys/index.mjs +2 -1
  101. package/node_modules/@posthog/core/dist/surveys/property-matching.d.ts +11 -0
  102. package/node_modules/@posthog/core/dist/surveys/property-matching.d.ts.map +1 -0
  103. package/node_modules/@posthog/core/dist/surveys/property-matching.js +89 -0
  104. package/node_modules/@posthog/core/dist/surveys/property-matching.mjs +46 -0
  105. package/node_modules/@posthog/core/dist/types.d.ts +15 -4
  106. package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
  107. package/node_modules/@posthog/core/package.json +2 -2
  108. package/node_modules/@posthog/core/src/featureFlagLocalEvaluation.ts +375 -0
  109. package/node_modules/@posthog/core/src/index.ts +19 -0
  110. package/node_modules/@posthog/core/src/logs/index.spec.ts +77 -0
  111. package/node_modules/@posthog/core/src/logs/index.ts +1 -1
  112. package/node_modules/@posthog/core/src/posthog-core-stateless.ts +40 -65
  113. package/node_modules/@posthog/core/src/surveys/index.ts +1 -0
  114. package/node_modules/@posthog/core/src/surveys/property-matching.spec.ts +174 -0
  115. package/node_modules/@posthog/core/src/surveys/property-matching.ts +75 -0
  116. package/node_modules/@posthog/core/src/types.ts +20 -4
  117. package/node_modules/@posthog/types/dist/index.d.ts +1 -1
  118. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  119. package/node_modules/@posthog/types/dist/posthog-config.d.ts +20 -5
  120. package/node_modules/@posthog/types/dist/posthog-config.d.ts.map +1 -1
  121. package/node_modules/@posthog/types/package.json +1 -1
  122. package/node_modules/@posthog/types/src/index.ts +1 -0
  123. package/node_modules/@posthog/types/src/posthog-config.ts +21 -5
  124. package/node_modules/@zuplo/core/customer.cli.minified.js +269 -269
  125. package/node_modules/@zuplo/core/index.minified.js +276 -276
  126. package/node_modules/@zuplo/core/package.json +1 -1
  127. package/node_modules/@zuplo/graphql/package.json +1 -1
  128. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  129. package/node_modules/@zuplo/otel/package.json +1 -1
  130. package/node_modules/@zuplo/runtime/out/esm/{chunk-IZE65N7D.js → chunk-CUK3VROF.js} +2 -2
  131. package/node_modules/@zuplo/runtime/out/esm/{chunk-4CDML74A.js → chunk-K4TBJG47.js} +2 -2
  132. package/node_modules/@zuplo/runtime/out/esm/{chunk-4VE55TG3.js → chunk-S4EBLGSU.js} +2 -2
  133. package/node_modules/@zuplo/runtime/out/esm/{chunk-4POCC75H.js → chunk-XF3IIUDX.js} +4 -4
  134. package/node_modules/@zuplo/runtime/out/esm/{chunk-4POCC75H.js.map → chunk-XF3IIUDX.js.map} +1 -1
  135. package/node_modules/@zuplo/runtime/out/esm/chunk-XIFGUD6K.js +403 -0
  136. package/node_modules/@zuplo/runtime/out/esm/chunk-XIFGUD6K.js.map +1 -0
  137. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  138. package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
  139. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  140. package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
  141. package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
  142. package/node_modules/@zuplo/runtime/package.json +1 -1
  143. package/node_modules/fast-uri/index.js +201 -48
  144. package/node_modules/fast-uri/lib/schemes.js +9 -4
  145. package/node_modules/fast-uri/lib/utils.js +388 -91
  146. package/node_modules/fast-uri/package.json +1 -1
  147. package/node_modules/fast-uri/test/component-safe-serialization.test.js +105 -0
  148. package/node_modules/fast-uri/test/equal.test.js +31 -3
  149. package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
  150. package/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
  151. package/node_modules/fast-uri/test/ipv6-validation.test.js +90 -0
  152. package/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
  153. package/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
  154. package/node_modules/fast-uri/test/parse.test.js +7 -3
  155. package/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
  156. package/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
  157. package/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
  158. package/node_modules/fast-uri/test/security-normalization.test.js +101 -0
  159. package/node_modules/fast-uri/test/security.test.js +75 -3
  160. package/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
  161. package/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
  162. package/node_modules/hono/dist/cjs/client/client.js +25 -11
  163. package/node_modules/hono/dist/cjs/client/utils.js +3 -0
  164. package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
  165. package/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
  166. package/node_modules/hono/dist/cjs/middleware/etag/index.js +1 -1
  167. package/node_modules/hono/dist/cjs/request.js +8 -4
  168. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +10 -3
  169. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +47 -83
  170. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +2 -1
  171. package/node_modules/hono/dist/cjs/router/trie-router/node.js +4 -3
  172. package/node_modules/hono/dist/cjs/router/utils.js +27 -0
  173. package/node_modules/hono/dist/cjs/utils/cookie.js +1 -1
  174. package/node_modules/hono/dist/cjs/utils/stream.js +7 -1
  175. package/node_modules/hono/dist/client/client.js +25 -11
  176. package/node_modules/hono/dist/client/utils.js +3 -0
  177. package/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
  178. package/node_modules/hono/dist/jsx/dom/render.js +2 -0
  179. package/node_modules/hono/dist/middleware/etag/index.js +1 -1
  180. package/node_modules/hono/dist/request.js +8 -4
  181. package/node_modules/hono/dist/router/reg-exp-router/node.js +6 -2
  182. package/node_modules/hono/dist/router/reg-exp-router/router.js +53 -84
  183. package/node_modules/hono/dist/router/reg-exp-router/trie.js +2 -1
  184. package/node_modules/hono/dist/router/trie-router/node.js +4 -3
  185. package/node_modules/hono/dist/router/utils.js +5 -0
  186. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -0
  187. package/node_modules/hono/dist/types/router/utils.d.ts +1 -0
  188. package/node_modules/hono/dist/utils/cookie.js +1 -1
  189. package/node_modules/hono/dist/utils/stream.js +7 -1
  190. package/node_modules/hono/package.json +1 -1
  191. package/package.json +11 -11
  192. package/node_modules/@zuplo/runtime/out/esm/chunk-4SX4HBWT.js +0 -409
  193. package/node_modules/@zuplo/runtime/out/esm/chunk-4SX4HBWT.js.map +0 -1
  194. /package/node_modules/@zuplo/runtime/out/esm/{chunk-IZE65N7D.js.map → chunk-CUK3VROF.js.map} +0 -0
  195. /package/node_modules/@zuplo/runtime/out/esm/{chunk-4CDML74A.js.map → chunk-K4TBJG47.js.map} +0 -0
  196. /package/node_modules/@zuplo/runtime/out/esm/{chunk-4VE55TG3.js.map → chunk-S4EBLGSU.js.map} +0 -0
  197. /package/node_modules/@zuplo/runtime/out/esm/{chunk-4POCC75H.js.LEGAL.txt → chunk-XF3IIUDX.js.LEGAL.txt} +0 -0
  198. /package/node_modules/@zuplo/runtime/out/esm/{chunk-4SX4HBWT.js.LEGAL.txt → chunk-XIFGUD6K.js.LEGAL.txt} +0 -0
@@ -5,7 +5,7 @@ import { jweAlgorithm, jweEncryption } from './jwe_algorithms.js';
5
5
  import { JOSENotSupported, JWEInvalid } from '../util/errors.js';
6
6
  import { decodeBase64url, digest } from './helpers.js';
7
7
  import { generateCek, encrypt, decrypt } from './content_encryption.js';
8
- import { isObject } from './type_checks.js';
8
+ import { assertUint8Array, isObject } from './type_checks.js';
9
9
  import { checkCryptoKey, checkModulusLength, checkUsage } from './crypto_key.js';
10
10
  import { concat, encode, uint32be } from './buffer_utils.js';
11
11
  import { assertCryptoKey } from './is_key_like.js';
@@ -110,7 +110,7 @@ function assertNoEncryptedKey(encryptedKey) {
110
110
  if (encryptedKey !== undefined)
111
111
  throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');
112
112
  }
113
- export async function decryptKeyManagement(alg, enc, key, encryptedKey, joseHeader, options) {
113
+ export async function decryptKeyManagement(alg, enc, key, encryptedKey, joseHeader, maxPBES2Count) {
114
114
  const entry = jweAlgorithm(alg);
115
115
  if (alg === 'dir') {
116
116
  assertNoEncryptedKey(encryptedKey);
@@ -152,7 +152,7 @@ export async function decryptKeyManagement(alg, enc, key, encryptedKey, joseHead
152
152
  assertEncryptedKey(encryptedKey);
153
153
  if (typeof joseHeader.p2c !== 'number')
154
154
  throw new JWEInvalid(`JOSE Header "p2c" (PBES2 Count) missing or invalid`);
155
- const p2cLimit = options?.maxPBES2Count || 10_000;
155
+ const p2cLimit = maxPBES2Count || 10_000;
156
156
  if (joseHeader.p2c > p2cLimit)
157
157
  throw new JWEInvalid(`JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds`);
158
158
  if (typeof joseHeader.p2s !== 'string')
@@ -190,8 +190,14 @@ export async function encryptKeyManagement(alg, enc, key, providedCek, providedP
190
190
  case 'ECDH': {
191
191
  assertEcdhKey(key);
192
192
  const { apu, apv } = providedParameters;
193
+ if (apu !== undefined) {
194
+ assertUint8Array(apu, '"apu"');
195
+ }
196
+ if (apv !== undefined) {
197
+ assertUint8Array(apv, '"apv"');
198
+ }
193
199
  let ephemeralKey;
194
- if (providedParameters.epk) {
200
+ if (providedParameters.epk !== undefined) {
195
201
  ephemeralKey = (await prepareKey(entry, providedParameters.epk, 'decrypt'));
196
202
  }
197
203
  else {
@@ -0,0 +1,6 @@
1
+ export function validateExtractableOption(extractable) {
2
+ if (extractable !== undefined && typeof extractable !== 'boolean') {
3
+ throw new TypeError('"extractable" option must be a boolean');
4
+ }
5
+ return extractable;
6
+ }
@@ -1,4 +1,5 @@
1
1
  import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js';
2
+ import { isObject } from './type_checks.js';
2
3
  export const JWS_RECOGNIZED = { __proto__: null, b64: true };
3
4
  export const JWE_RECOGNIZED = { __proto__: null };
4
5
  export function validateAlgorithms(option, algorithms) {
@@ -46,3 +47,28 @@ export function validateCrit(Err, recognizedDefault, recognizedOption, protected
46
47
  }
47
48
  return protectedHeader.crit;
48
49
  }
50
+ export function validateB64(protectedHeader, extensions) {
51
+ if (extensions.includes('b64')) {
52
+ const b64 = protectedHeader.b64;
53
+ if (typeof b64 !== 'boolean') {
54
+ throw new JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');
55
+ }
56
+ return b64;
57
+ }
58
+ return true;
59
+ }
60
+ export function serializeJoseHeader(Err, header) {
61
+ let serialized;
62
+ let parsed;
63
+ try {
64
+ serialized = JSON.stringify(header);
65
+ parsed = JSON.parse(serialized);
66
+ }
67
+ catch (cause) {
68
+ throw new Err('JOSE Header is not valid JSON', { cause });
69
+ }
70
+ if (!isObject(parsed)) {
71
+ throw new Err('JOSE Header is not a JSON object');
72
+ }
73
+ return [parsed, serialized];
74
+ }
@@ -1,3 +1,8 @@
1
+ export function assertUint8Array(input, label) {
2
+ if (!(input instanceof Uint8Array)) {
3
+ throw new TypeError(`${label} must be an instance of Uint8Array`);
4
+ }
5
+ }
1
6
  export function isObject(input) {
2
7
  if (typeof input !== 'object' ||
3
8
  input === null ||
@@ -5,14 +10,12 @@ export function isObject(input) {
5
10
  return false;
6
11
  }
7
12
  const prototype = Object.getPrototypeOf(input);
8
- if (prototype === null) {
9
- return true;
10
- }
11
- let proto = prototype;
12
- while (Object.getPrototypeOf(proto) !== null) {
13
- proto = Object.getPrototypeOf(proto);
14
- }
15
- return prototype === proto;
13
+ return prototype === null || Object.getPrototypeOf(prototype) === null;
14
+ }
15
+ export function isJwkSet(input) {
16
+ return (isObject(input) &&
17
+ Array.isArray(input.keys) &&
18
+ Array.from(input.keys).every(isObject));
16
19
  }
17
20
  export function isDisjoint(...headers) {
18
21
  const parameters = new Set();
@@ -28,8 +31,3 @@ export function isDisjoint(...headers) {
28
31
  }
29
32
  return true;
30
33
  }
31
- export const isJWK = (key) => isObject(key) && typeof key.kty === 'string';
32
- export const isPrivateJWK = (key) => key.kty !== 'oct' &&
33
- ((key.kty === 'AKP' && typeof key.priv === 'string') || typeof key.d === 'string');
34
- export const isPublicJWK = (key) => key.kty !== 'oct' && key.d === undefined && key.priv === undefined;
35
- export const isSecretJWK = (key) => key.kty === 'oct' && typeof key.k === 'string';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jose",
3
- "version": "6.2.9",
3
+ "version": "6.2.10",
4
4
  "description": "JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes",
5
5
  "keywords": [
6
6
  "akp",
@@ -0,0 +1,35 @@
1
+ import type { FeatureFlagValue, JsonType } from './types';
2
+ export type FeatureFlagPropertyValue = string | number | (string | number)[] | boolean;
3
+ export type FeatureFlagProperty = {
4
+ key: string;
5
+ value: FeatureFlagPropertyValue;
6
+ operator?: string;
7
+ };
8
+ export type FeatureFlagSemverParsingPolicy = 'strict' | 'legacy-permissive';
9
+ export type MatchFeatureFlagPropertyOptions = {
10
+ warnFunction?: (message: string) => void;
11
+ semverParsingPolicy?: FeatureFlagSemverParsingPolicy;
12
+ };
13
+ export type FeatureFlagVariant = {
14
+ key: string;
15
+ rollout_percentage: number;
16
+ };
17
+ export type FeatureFlagVariantLookupEntry = {
18
+ valueMin: number;
19
+ valueMax: number;
20
+ key: string;
21
+ };
22
+ export declare class InconclusiveMatchError extends Error {
23
+ constructor(message: string);
24
+ }
25
+ type SemverTuple = [number, number, number];
26
+ export declare function parseFeatureFlagSemver(value: string, parsingPolicy?: FeatureFlagSemverParsingPolicy): SemverTuple;
27
+ export declare function relativeDateParseForFeatureFlagMatching(value: string): Date | null;
28
+ export declare function matchFeatureFlagProperty(property: FeatureFlagProperty, propertyValues: Record<string, any>, options?: MatchFeatureFlagPropertyOptions): boolean;
29
+ export declare function hashSHA1(text: string): Promise<string>;
30
+ export declare function getFeatureFlagHash(key: string, bucketingValue: string, salt?: string): Promise<number>;
31
+ export declare function getFeatureFlagVariantLookupTable(variants: readonly FeatureFlagVariant[]): FeatureFlagVariantLookupEntry[];
32
+ export declare function getFeatureFlagVariant(key: string, bucketingValue: string, variants: readonly FeatureFlagVariant[]): Promise<string | undefined>;
33
+ export declare function resolveFeatureFlagPayload(payloads: Readonly<Record<string, JsonType | undefined>> | null | undefined, flagValue: FeatureFlagValue | null | undefined): JsonType | null;
34
+ export {};
35
+ //# sourceMappingURL=featureFlagLocalEvaluation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureFlagLocalEvaluation.d.ts","sourceRoot":"","sources":["../src/featureFlagLocalEvaluation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAA;AAEtF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,wBAAwB,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,QAAQ,GAAG,mBAAmB,CAAA;AAE3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,mBAAmB,CAAC,EAAE,8BAA8B,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AASD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAK5B;AAWD,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAa3C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,8BAAyC,GACvD,WAAW,CAeb;AAwED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAmBlF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,mBAAmB,EAC7B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnC,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CA+IT;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5D;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhH;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,6BAA6B,EAAE,CASjC;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACtC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAK7B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3E,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC7C,QAAQ,GAAG,IAAI,CAMjB"}
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getFeatureFlagHash: ()=>getFeatureFlagHash,
28
+ relativeDateParseForFeatureFlagMatching: ()=>relativeDateParseForFeatureFlagMatching,
29
+ InconclusiveMatchError: ()=>InconclusiveMatchError,
30
+ parseFeatureFlagSemver: ()=>parseFeatureFlagSemver,
31
+ resolveFeatureFlagPayload: ()=>resolveFeatureFlagPayload,
32
+ getFeatureFlagVariantLookupTable: ()=>getFeatureFlagVariantLookupTable,
33
+ hashSHA1: ()=>hashSHA1,
34
+ matchFeatureFlagProperty: ()=>matchFeatureFlagProperty,
35
+ getFeatureFlagVariant: ()=>getFeatureFlagVariant
36
+ });
37
+ const external_featureFlagUtils_js_namespaceObject = require("./featureFlagUtils.js");
38
+ const NULL_VALUES_ALLOWED_OPERATORS = [
39
+ 'is_not',
40
+ 'is_set'
41
+ ];
42
+ const LONG_SCALE = 0xfffffffffffffff;
43
+ class InconclusiveMatchError extends Error {
44
+ constructor(message){
45
+ super(message);
46
+ this.name = this.constructor.name;
47
+ Object.setPrototypeOf(this, InconclusiveMatchError.prototype);
48
+ }
49
+ }
50
+ function isValidRegex(regex) {
51
+ try {
52
+ new RegExp(regex);
53
+ return true;
54
+ } catch {
55
+ return false;
56
+ }
57
+ }
58
+ function parseSemverNumericIdentifier(part, raw, parsingPolicy) {
59
+ if (!/^\d+$/.test(part) || 'strict' === parsingPolicy && part.length > 1 && '0' === part[0]) throw new InconclusiveMatchError(`Invalid semver: ${raw}`);
60
+ return parseInt(part, 10);
61
+ }
62
+ function parseFeatureFlagSemver(value, parsingPolicy = 'strict') {
63
+ const text = String(value).trim().replace(/^[vV]/, '');
64
+ const baseVersion = text.split('-')[0].split('+')[0];
65
+ if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`);
66
+ const parts = baseVersion.split('.');
67
+ const parsePart = (part)=>{
68
+ if (void 0 === part || '' === part) return 0;
69
+ return parseSemverNumericIdentifier(part, value, parsingPolicy);
70
+ };
71
+ return [
72
+ parsePart(parts[0]),
73
+ parsePart(parts[1]),
74
+ parsePart(parts[2])
75
+ ];
76
+ }
77
+ function compareSemverTuples(a, b) {
78
+ for(let i = 0; i < 3; i++){
79
+ if (a[i] < b[i]) return -1;
80
+ if (a[i] > b[i]) return 1;
81
+ }
82
+ return 0;
83
+ }
84
+ function computeTildeBounds(value, parsingPolicy) {
85
+ const parsed = parseFeatureFlagSemver(value, parsingPolicy);
86
+ return {
87
+ lower: [
88
+ parsed[0],
89
+ parsed[1],
90
+ parsed[2]
91
+ ],
92
+ upper: [
93
+ parsed[0],
94
+ parsed[1] + 1,
95
+ 0
96
+ ]
97
+ };
98
+ }
99
+ function computeCaretBounds(value, parsingPolicy) {
100
+ const [major, minor, patch] = parseFeatureFlagSemver(value, parsingPolicy);
101
+ const lower = [
102
+ major,
103
+ minor,
104
+ patch
105
+ ];
106
+ let upper;
107
+ upper = major > 0 ? [
108
+ major + 1,
109
+ 0,
110
+ 0
111
+ ] : minor > 0 ? [
112
+ 0,
113
+ minor + 1,
114
+ 0
115
+ ] : [
116
+ 0,
117
+ 0,
118
+ patch + 1
119
+ ];
120
+ return {
121
+ lower,
122
+ upper
123
+ };
124
+ }
125
+ function computeWildcardBounds(value, parsingPolicy) {
126
+ const text = String(value).trim().replace(/^[vV]/, '');
127
+ const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '');
128
+ if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
129
+ const parts = cleanedText.split('.');
130
+ const parseWildcardPart = (part)=>{
131
+ if ('legacy-permissive' === parsingPolicy) {
132
+ const parsed = parseInt(part, 10);
133
+ if (!isNaN(parsed)) return parsed;
134
+ } else try {
135
+ return parseSemverNumericIdentifier(part, value, parsingPolicy);
136
+ } catch {}
137
+ throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);
138
+ };
139
+ const major = parseWildcardPart(parts[0]);
140
+ if (1 === parts.length) return {
141
+ lower: [
142
+ major,
143
+ 0,
144
+ 0
145
+ ],
146
+ upper: [
147
+ major + 1,
148
+ 0,
149
+ 0
150
+ ]
151
+ };
152
+ const minor = parseWildcardPart(parts[1]);
153
+ return {
154
+ lower: [
155
+ major,
156
+ minor,
157
+ 0
158
+ ],
159
+ upper: [
160
+ major,
161
+ minor + 1,
162
+ 0
163
+ ]
164
+ };
165
+ }
166
+ function convertToDateTime(value) {
167
+ if (value instanceof Date) return value;
168
+ if ('string' == typeof value || 'number' == typeof value) {
169
+ const date = new Date(value);
170
+ if (!isNaN(date.valueOf())) return date;
171
+ throw new InconclusiveMatchError(`${value} is in an invalid date format`);
172
+ }
173
+ throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`);
174
+ }
175
+ function relativeDateParseForFeatureFlagMatching(value) {
176
+ const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/;
177
+ const match = value.match(regex);
178
+ const parsedDt = new Date(new Date().toISOString());
179
+ if (!match || !match.groups) return null;
180
+ const number = parseInt(match.groups['number']);
181
+ if (number >= 10000) return null;
182
+ const interval = match.groups['interval'];
183
+ if ('h' === interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number);
184
+ else if ('d' === interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number);
185
+ else if ('w' === interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number);
186
+ else if ('m' === interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number);
187
+ else {
188
+ if ('y' !== interval) return null;
189
+ parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number);
190
+ }
191
+ return parsedDt;
192
+ }
193
+ function matchFeatureFlagProperty(property, propertyValues, options = {}) {
194
+ const key = property.key;
195
+ const value = property.value;
196
+ const operator = property.operator || 'exact';
197
+ const parsingPolicy = options.semverParsingPolicy ?? 'strict';
198
+ if (key in propertyValues) {
199
+ if ('is_not_set' === operator) return false;
200
+ } else {
201
+ if ('is_not_set' === operator) return true;
202
+ throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`);
203
+ }
204
+ const overrideValue = propertyValues[key];
205
+ if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {
206
+ options.warnFunction?.(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`);
207
+ return false;
208
+ }
209
+ const computeExactMatch = (target, actual)=>{
210
+ if (Array.isArray(target)) return target.map((item)=>String(item).toLowerCase()).includes(String(actual).toLowerCase());
211
+ return String(target).toLowerCase() === String(actual).toLowerCase();
212
+ };
213
+ const compare = (lhs, rhs, comparisonOperator)=>{
214
+ if ('gt' === comparisonOperator) return lhs > rhs;
215
+ if ('gte' === comparisonOperator) return lhs >= rhs;
216
+ if ('lt' === comparisonOperator) return lhs < rhs;
217
+ if ('lte' === comparisonOperator) return lhs <= rhs;
218
+ throw new Error(`Invalid operator: ${comparisonOperator}`);
219
+ };
220
+ switch(operator){
221
+ case 'exact':
222
+ return computeExactMatch(value, overrideValue);
223
+ case 'is_not':
224
+ return !computeExactMatch(value, overrideValue);
225
+ case 'is_set':
226
+ return key in propertyValues;
227
+ case 'icontains':
228
+ return String(overrideValue).toLowerCase().includes(String(value).toLowerCase());
229
+ case 'not_icontains':
230
+ return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase());
231
+ case 'starts_with':
232
+ return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase());
233
+ case 'not_starts_with':
234
+ return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase());
235
+ case 'ends_with':
236
+ return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase());
237
+ case 'not_ends_with':
238
+ return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase());
239
+ case 'regex':
240
+ return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value));
241
+ case 'not_regex':
242
+ return isValidRegex(String(value)) && null === String(overrideValue).match(String(value));
243
+ case 'gt':
244
+ case 'gte':
245
+ case 'lt':
246
+ case 'lte':
247
+ {
248
+ const parsedValue = 'number' == typeof value ? value : parseFloat(String(value));
249
+ const parsedOverride = 'number' == typeof overrideValue ? overrideValue : null != overrideValue ? parseFloat(String(overrideValue)) : NaN;
250
+ if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) return compare(parsedOverride, parsedValue, operator);
251
+ return compare(String(overrideValue), String(value), operator);
252
+ }
253
+ case 'is_date_after':
254
+ case 'is_date_before':
255
+ {
256
+ if ('boolean' == typeof value) throw new InconclusiveMatchError('Date operations cannot be performed on boolean values');
257
+ let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));
258
+ if (null == parsedDate) parsedDate = convertToDateTime(value);
259
+ const overrideDate = convertToDateTime(overrideValue);
260
+ return 'is_date_before' === operator ? overrideDate < parsedDate : overrideDate > parsedDate;
261
+ }
262
+ case 'semver_eq':
263
+ return 0 === compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
264
+ case 'semver_neq':
265
+ return 0 !== compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy));
266
+ case 'semver_gt':
267
+ return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) > 0;
268
+ case 'semver_gte':
269
+ return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) >= 0;
270
+ case 'semver_lt':
271
+ return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) < 0;
272
+ case 'semver_lte':
273
+ return compareSemverTuples(parseFeatureFlagSemver(String(overrideValue), parsingPolicy), parseFeatureFlagSemver(String(value), parsingPolicy)) <= 0;
274
+ case 'semver_tilde':
275
+ {
276
+ const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
277
+ const { lower, upper } = computeTildeBounds(String(value), parsingPolicy);
278
+ return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
279
+ }
280
+ case 'semver_caret':
281
+ {
282
+ const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
283
+ const { lower, upper } = computeCaretBounds(String(value), parsingPolicy);
284
+ return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
285
+ }
286
+ case 'semver_wildcard':
287
+ {
288
+ const overrideParsed = parseFeatureFlagSemver(String(overrideValue), parsingPolicy);
289
+ const { lower, upper } = computeWildcardBounds(String(value), parsingPolicy);
290
+ return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;
291
+ }
292
+ default:
293
+ throw new InconclusiveMatchError(`Unknown operator: ${operator}`);
294
+ }
295
+ }
296
+ async function hashSHA1(text) {
297
+ const subtle = globalThis.crypto?.subtle;
298
+ if (!subtle) throw new Error('SubtleCrypto API not available');
299
+ const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text));
300
+ return Array.from(new Uint8Array(hashBuffer)).map((byte)=>byte.toString(16).padStart(2, '0')).join('');
301
+ }
302
+ async function getFeatureFlagHash(key, bucketingValue, salt = '') {
303
+ const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`);
304
+ return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE;
305
+ }
306
+ function getFeatureFlagVariantLookupTable(variants) {
307
+ const table = [];
308
+ let valueMin = 0;
309
+ for (const variant of variants){
310
+ const valueMax = valueMin + variant.rollout_percentage / 100.0;
311
+ table.push({
312
+ valueMin,
313
+ valueMax,
314
+ key: variant.key
315
+ });
316
+ valueMin = valueMax;
317
+ }
318
+ return table;
319
+ }
320
+ async function getFeatureFlagVariant(key, bucketingValue, variants) {
321
+ const hashValue = await getFeatureFlagHash(key, bucketingValue, 'variant');
322
+ return getFeatureFlagVariantLookupTable(variants).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax)?.key;
323
+ }
324
+ function resolveFeatureFlagPayload(payloads, flagValue) {
325
+ if (false === flagValue || null == flagValue || !payloads) return null;
326
+ const payloadKey = 'boolean' == typeof flagValue ? flagValue.toString() : flagValue;
327
+ const payload = payloads[payloadKey] || null;
328
+ return null == payload ? null : (0, external_featureFlagUtils_js_namespaceObject.parsePayload)(payload);
329
+ }
330
+ exports.InconclusiveMatchError = __webpack_exports__.InconclusiveMatchError;
331
+ exports.getFeatureFlagHash = __webpack_exports__.getFeatureFlagHash;
332
+ exports.getFeatureFlagVariant = __webpack_exports__.getFeatureFlagVariant;
333
+ exports.getFeatureFlagVariantLookupTable = __webpack_exports__.getFeatureFlagVariantLookupTable;
334
+ exports.hashSHA1 = __webpack_exports__.hashSHA1;
335
+ exports.matchFeatureFlagProperty = __webpack_exports__.matchFeatureFlagProperty;
336
+ exports.parseFeatureFlagSemver = __webpack_exports__.parseFeatureFlagSemver;
337
+ exports.relativeDateParseForFeatureFlagMatching = __webpack_exports__.relativeDateParseForFeatureFlagMatching;
338
+ exports.resolveFeatureFlagPayload = __webpack_exports__.resolveFeatureFlagPayload;
339
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
340
+ "InconclusiveMatchError",
341
+ "getFeatureFlagHash",
342
+ "getFeatureFlagVariant",
343
+ "getFeatureFlagVariantLookupTable",
344
+ "hashSHA1",
345
+ "matchFeatureFlagProperty",
346
+ "parseFeatureFlagSemver",
347
+ "relativeDateParseForFeatureFlagMatching",
348
+ "resolveFeatureFlagPayload"
349
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
350
+ Object.defineProperty(exports, '__esModule', {
351
+ value: true
352
+ });