@zuplo/cli 7.6.8 → 7.6.10
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/node_modules/@inquirer/checkbox/package.json +3 -3
- package/node_modules/@inquirer/confirm/dist/index.js +1 -1
- package/node_modules/@inquirer/confirm/package.json +3 -3
- package/node_modules/@inquirer/core/dist/lib/create-prompt.js +66 -47
- package/node_modules/@inquirer/core/package.json +2 -2
- package/node_modules/@inquirer/editor/package.json +3 -3
- package/node_modules/@inquirer/expand/package.json +3 -3
- package/node_modules/@inquirer/input/package.json +3 -3
- package/node_modules/@inquirer/number/package.json +3 -3
- package/node_modules/@inquirer/password/package.json +3 -3
- package/node_modules/@inquirer/rawlist/package.json +3 -3
- package/node_modules/@inquirer/search/package.json +3 -3
- package/node_modules/@inquirer/select/package.json +3 -3
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/index.d.ts +1 -2
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +12 -25
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +18 -32
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +12 -25
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +24 -50
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +15 -30
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +29 -52
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwk/embedded.d.ts +5 -8
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwk/thumbprint.d.ts +7 -9
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwks/local.d.ts +10 -13
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwks/remote.d.ts +29 -41
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/compact/sign.d.ts +8 -13
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/compact/verify.d.ts +14 -26
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/flattened/sign.d.ts +10 -19
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/flattened/verify.d.ts +14 -26
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/general/sign.d.ts +19 -33
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jws/general/verify.d.ts +17 -32
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/decrypt.d.ts +20 -27
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/encrypt.d.ts +30 -35
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/sign.d.ts +8 -13
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/unsecured.d.ts +10 -19
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/jwt/verify.d.ts +19 -22
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/key/export.d.ts +10 -10
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/key/generate_key_pair.d.ts +15 -22
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/key/generate_secret.d.ts +12 -19
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/key/import.d.ts +25 -31
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/types.d.ts +184 -319
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/util/base64url.d.ts +7 -7
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/util/decode_jwt.d.ts +5 -7
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/util/decode_protected_header.d.ts +6 -5
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/types/util/errors.d.ts +50 -88
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/index.js +70 -32
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +6 -8
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +25 -48
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +14 -14
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +34 -64
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/general/decrypt.js +38 -49
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwe/general/encrypt.js +100 -172
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwk/embedded.js +29 -32
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwk/thumbprint.js +51 -70
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwks/local.js +53 -64
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwks/remote.js +88 -136
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/compact/sign.js +19 -21
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/compact/verify.js +7 -8
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/flattened/sign.js +22 -31
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/flattened/verify.js +11 -24
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/general/sign.js +55 -73
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jws/general/verify.js +43 -69
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/decrypt.js +12 -20
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/encrypt.js +43 -70
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/sign.js +17 -16
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/unsecured.js +31 -40
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/jwt/verify.js +12 -14
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/export.js +32 -41
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/generate_key_pair.js +32 -49
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/generate_secret.js +35 -40
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/key/import.js +48 -56
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/asn1.js +128 -169
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/buffer_utils.js +72 -41
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/content_encryption.js +75 -119
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/deflate.js +35 -47
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +102 -93
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +178 -234
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +71 -138
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jws_algorithms.js +62 -61
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jws_sign.js +43 -82
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jws_verify.js +78 -131
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +123 -209
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key.js +147 -139
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_algorithm.js +13 -8
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_descriptor.js +8 -6
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_management.js +169 -235
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/validate.js +122 -0
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/util/base64url.js +14 -37
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -31
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/util/decode_protected_header.js +18 -23
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/util/errors.js +94 -84
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/package.json +17 -81
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/index.d.ts +1 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +12 -25
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +18 -32
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +12 -25
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +24 -50
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +15 -30
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +29 -52
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwk/embedded.d.ts +5 -8
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwk/thumbprint.d.ts +7 -9
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwks/local.d.ts +10 -13
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwks/remote.d.ts +29 -41
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/compact/sign.d.ts +8 -13
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/compact/verify.d.ts +14 -26
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/flattened/sign.d.ts +10 -19
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/flattened/verify.d.ts +14 -26
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/general/sign.d.ts +19 -33
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jws/general/verify.d.ts +17 -32
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/decrypt.d.ts +20 -27
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/encrypt.d.ts +30 -35
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/sign.d.ts +8 -13
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/unsecured.d.ts +10 -19
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/verify.d.ts +19 -22
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/key/export.d.ts +10 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/key/generate_key_pair.d.ts +15 -22
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/key/generate_secret.d.ts +12 -19
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/key/import.d.ts +25 -31
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/types.d.ts +184 -319
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/util/base64url.d.ts +7 -7
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/util/decode_jwt.d.ts +5 -7
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/util/decode_protected_header.d.ts +6 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/util/errors.d.ts +50 -88
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/index.js +70 -32
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +6 -8
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +25 -48
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +14 -14
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +34 -64
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/general/decrypt.js +38 -49
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwe/general/encrypt.js +100 -172
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwk/embedded.js +29 -32
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwk/thumbprint.js +51 -70
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/local.js +53 -64
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +88 -136
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/compact/sign.js +19 -21
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/compact/verify.js +7 -8
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/flattened/sign.js +22 -31
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/flattened/verify.js +11 -24
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/general/sign.js +55 -73
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jws/general/verify.js +43 -69
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/decrypt.js +12 -20
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/encrypt.js +43 -70
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/sign.js +17 -16
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/unsecured.js +31 -40
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwt/verify.js +12 -14
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/export.js +32 -41
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/generate_key_pair.js +32 -49
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/generate_secret.js +35 -40
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/key/import.js +48 -56
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/asn1.js +128 -169
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/buffer_utils.js +72 -41
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/content_encryption.js +75 -119
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/deflate.js +35 -47
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +102 -93
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +178 -234
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +71 -138
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_algorithms.js +62 -61
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_sign.js +43 -82
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_verify.js +78 -131
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +123 -209
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key.js +147 -139
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_algorithm.js +13 -8
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_descriptor.js +8 -6
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_management.js +169 -235
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/validate.js +122 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/util/base64url.js +14 -37
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -31
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/util/decode_protected_header.js +18 -23
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/util/errors.js +94 -84
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +17 -81
- package/node_modules/@posthog/core/dist/cookie.js +17 -13
- package/node_modules/@posthog/core/dist/error-tracking/chunk-ids.js +15 -11
- package/node_modules/@posthog/core/dist/error-tracking/coercers/dom-exception-coercer.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.js +12 -9
- package/node_modules/@posthog/core/dist/error-tracking/coercers/error-event-coercer.mjs +0 -1
- package/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/index.js +51 -63
- package/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/promise-rejection-event.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.js +15 -11
- package/node_modules/@posthog/core/dist/error-tracking/coercers/utils.js +16 -12
- package/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/exception-steps.js +18 -14
- package/node_modules/@posthog/core/dist/error-tracking/exception-steps.mjs +2 -2
- package/node_modules/@posthog/core/dist/error-tracking/index.js +41 -49
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.js +13 -9
- package/node_modules/@posthog/core/dist/error-tracking/parsers/base.mjs +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/chrome.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/parsers/gecko.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/parsers/index.js +17 -13
- package/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs +4 -4
- package/node_modules/@posthog/core/dist/error-tracking/parsers/node.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/parsers/opera.js +14 -10
- package/node_modules/@posthog/core/dist/error-tracking/parsers/safari.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/parsers/winjs.js +12 -8
- package/node_modules/@posthog/core/dist/error-tracking/release.js +15 -11
- package/node_modules/@posthog/core/dist/error-tracking/types.js +15 -11
- package/node_modules/@posthog/core/dist/error-tracking/utils.js +15 -11
- package/node_modules/@posthog/core/dist/eventemitter.js +15 -11
- package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.js +18 -14
- package/node_modules/@posthog/core/dist/featureFlagLocalEvaluation.mjs +1 -1
- package/node_modules/@posthog/core/dist/featureFlagUtils.js +30 -25
- package/node_modules/@posthog/core/dist/featureFlagUtils.mjs +2 -2
- package/node_modules/@posthog/core/dist/gzip.js +16 -12
- package/node_modules/@posthog/core/dist/index.js +302 -310
- package/node_modules/@posthog/core/dist/index.mjs +12 -12
- package/node_modules/@posthog/core/dist/logs/index.js +13 -9
- package/node_modules/@posthog/core/dist/logs/index.mjs +1 -1
- package/node_modules/@posthog/core/dist/logs/logs-utils.js +16 -12
- package/node_modules/@posthog/core/dist/logs/types.js +2 -2
- package/node_modules/@posthog/core/dist/logs/types.mjs +1 -0
- package/node_modules/@posthog/core/dist/metrics/config.js +15 -11
- package/node_modules/@posthog/core/dist/metrics/index.js +15 -11
- package/node_modules/@posthog/core/dist/metrics/index.mjs +2 -2
- package/node_modules/@posthog/core/dist/metrics/metrics-utils.js +14 -10
- package/node_modules/@posthog/core/dist/metrics/types.js +2 -2
- package/node_modules/@posthog/core/dist/metrics/types.mjs +1 -0
- package/node_modules/@posthog/core/dist/posthog-core-stateless.js +16 -12
- package/node_modules/@posthog/core/dist/posthog-core-stateless.mjs +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.d.ts +14 -0
- package/node_modules/@posthog/core/dist/posthog-core.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.js +12 -8
- package/node_modules/@posthog/core/dist/surveys/activation.js +14 -10
- package/node_modules/@posthog/core/dist/surveys/events.js +14 -10
- package/node_modules/@posthog/core/dist/surveys/index.js +30 -26
- package/node_modules/@posthog/core/dist/surveys/index.mjs +6 -7
- package/node_modules/@posthog/core/dist/surveys/keys.js +16 -12
- package/node_modules/@posthog/core/dist/surveys/property-matching.js +19 -14
- package/node_modules/@posthog/core/dist/surveys/translations.js +16 -12
- package/node_modules/@posthog/core/dist/surveys/validation.js +13 -9
- package/node_modules/@posthog/core/dist/testing/PostHogCoreTestClient.d.ts +3 -3
- package/node_modules/@posthog/core/dist/testing/PostHogCoreTestClient.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/testing/PostHogCoreTestClient.js +15 -11
- package/node_modules/@posthog/core/dist/testing/PostHogCoreTestClient.mjs +3 -3
- package/node_modules/@posthog/core/dist/testing/index.js +21 -21
- package/node_modules/@posthog/core/dist/testing/test-utils.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/testing/test-utils.js +19 -18
- package/node_modules/@posthog/core/dist/testing/test-utils.mjs +7 -10
- package/node_modules/@posthog/core/dist/tracing-headers.js +12 -8
- package/node_modules/@posthog/core/dist/types.d.ts +1 -0
- package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/types.js +31 -26
- package/node_modules/@posthog/core/dist/types.mjs +1 -1
- package/node_modules/@posthog/core/dist/utils/bot-detection.js +16 -12
- package/node_modules/@posthog/core/dist/utils/browser-utils.js +12 -8
- package/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.js +14 -10
- package/node_modules/@posthog/core/dist/utils/index.d.ts +1 -0
- package/node_modules/@posthog/core/dist/utils/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/utils/index.js +205 -192
- package/node_modules/@posthog/core/dist/utils/index.mjs +4 -3
- package/node_modules/@posthog/core/dist/utils/json-utils.js +24 -19
- package/node_modules/@posthog/core/dist/utils/logger.js +17 -12
- package/node_modules/@posthog/core/dist/utils/number-utils.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/utils/number-utils.js +14 -10
- package/node_modules/@posthog/core/dist/utils/number-utils.mjs +1 -1
- package/node_modules/@posthog/core/dist/utils/otlp-any-value.js +15 -11
- package/node_modules/@posthog/core/dist/utils/otlp-any-value.mjs +1 -1
- package/node_modules/@posthog/core/dist/utils/otlp-resource.js +17 -13
- package/node_modules/@posthog/core/dist/utils/promise-queue.js +12 -8
- package/node_modules/@posthog/core/dist/utils/string-utils.js +21 -16
- package/node_modules/@posthog/core/dist/utils/type-utils.js +31 -27
- package/node_modules/@posthog/core/dist/utils/type-utils.mjs +2 -2
- package/node_modules/@posthog/core/dist/utils/user-agent-utils.js +16 -12
- package/node_modules/@posthog/core/dist/utils/webview-app-utils.d.ts +12 -0
- package/node_modules/@posthog/core/dist/utils/webview-app-utils.d.ts.map +1 -0
- package/node_modules/@posthog/core/dist/utils/webview-app-utils.js +132 -0
- package/node_modules/@posthog/core/dist/utils/webview-app-utils.mjs +94 -0
- package/node_modules/@posthog/core/dist/vendor/uuidv7.js +22 -17
- package/node_modules/@posthog/core/dist/vendor/uuidv7.mjs +1 -1
- package/node_modules/@posthog/core/package.json +8 -8
- package/node_modules/@posthog/core/src/error-tracking/coercers/promise-rejection-event.spec.ts +4 -4
- package/node_modules/@posthog/core/src/error-tracking/error-properties-builder.parse.spec.ts +1 -1
- package/node_modules/@posthog/core/src/error-tracking/parsers/base.spec.ts +21 -2
- package/node_modules/@posthog/core/src/error-tracking/parsers/base.ts +6 -2
- package/node_modules/@posthog/core/src/featureFlagLocalEvaluation.ts +1 -1
- package/node_modules/@posthog/core/src/featureFlagUtils.ts +4 -4
- package/node_modules/@posthog/core/src/logs/index.spec.ts +89 -89
- package/node_modules/@posthog/core/src/metrics/index.spec.ts +24 -24
- package/node_modules/@posthog/core/src/posthog-core.ts +14 -1
- package/node_modules/@posthog/core/src/surveys/activation.spec.ts +1 -1
- package/node_modules/@posthog/core/src/surveys/events.spec.ts +1 -1
- package/node_modules/@posthog/core/src/surveys/keys.spec.ts +1 -1
- package/node_modules/@posthog/core/src/surveys/translations.spec.ts +8 -8
- package/node_modules/@posthog/core/src/testing/PostHogCoreTestClient.ts +6 -6
- package/node_modules/@posthog/core/src/testing/test-utils.ts +7 -12
- package/node_modules/@posthog/core/src/types.ts +1 -0
- package/node_modules/@posthog/core/src/utils/bucketed-rate-limiter.spec.ts +13 -13
- package/node_modules/@posthog/core/src/utils/index.ts +1 -0
- package/node_modules/@posthog/core/src/utils/json-utils.spec.ts +5 -5
- package/node_modules/@posthog/core/src/utils/number-utils.spec.ts +20 -0
- package/node_modules/@posthog/core/src/utils/number-utils.ts +3 -1
- package/node_modules/@posthog/core/src/utils/otlp-any-value.spec.ts +4 -4
- package/node_modules/@posthog/core/src/utils/promise-queue.spec.ts +3 -3
- package/node_modules/@posthog/core/src/utils/type-utils.ts +4 -4
- package/node_modules/@posthog/core/src/utils/webview-app-utils.spec.ts +118 -0
- package/node_modules/@posthog/core/src/utils/webview-app-utils.ts +49 -0
- package/node_modules/@posthog/types/dist/capture-log.js +2 -2
- package/node_modules/@posthog/types/dist/capture-log.mjs +1 -0
- package/node_modules/@posthog/types/dist/capture-metric.js +15 -11
- package/node_modules/@posthog/types/dist/capture.js +2 -2
- package/node_modules/@posthog/types/dist/capture.mjs +1 -0
- package/node_modules/@posthog/types/dist/common.js +2 -2
- package/node_modules/@posthog/types/dist/common.mjs +1 -0
- package/node_modules/@posthog/types/dist/feature-flags.d.ts +1 -1
- package/node_modules/@posthog/types/dist/feature-flags.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/feature-flags.js +2 -2
- package/node_modules/@posthog/types/dist/feature-flags.mjs +1 -0
- package/node_modules/@posthog/types/dist/index.js +12 -8
- package/node_modules/@posthog/types/dist/index.mjs +1 -2
- package/node_modules/@posthog/types/dist/posthog-config.d.ts +15 -1
- package/node_modules/@posthog/types/dist/posthog-config.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/posthog-config.js +2 -2
- package/node_modules/@posthog/types/dist/posthog-config.mjs +1 -0
- package/node_modules/@posthog/types/dist/posthog.d.ts +2 -2
- package/node_modules/@posthog/types/dist/posthog.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/posthog.js +2 -2
- package/node_modules/@posthog/types/dist/posthog.mjs +1 -0
- package/node_modules/@posthog/types/dist/request.js +2 -2
- package/node_modules/@posthog/types/dist/request.mjs +1 -0
- package/node_modules/@posthog/types/dist/segment.js +2 -2
- package/node_modules/@posthog/types/dist/segment.mjs +1 -0
- package/node_modules/@posthog/types/dist/session-recording.js +2 -2
- package/node_modules/@posthog/types/dist/session-recording.mjs +1 -0
- package/node_modules/@posthog/types/dist/survey.js +2 -2
- package/node_modules/@posthog/types/dist/survey.mjs +1 -0
- package/node_modules/@posthog/types/dist/toolbar.js +2 -2
- package/node_modules/@posthog/types/dist/toolbar.mjs +1 -0
- package/node_modules/@posthog/types/dist/tree-shakeable.js +2 -2
- package/node_modules/@posthog/types/dist/tree-shakeable.mjs +1 -0
- package/node_modules/@posthog/types/package.json +4 -6
- package/node_modules/@posthog/types/src/feature-flags.ts +1 -1
- package/node_modules/@posthog/types/src/posthog-config.ts +16 -1
- package/node_modules/@posthog/types/src/posthog.ts +2 -2
- package/node_modules/@posthog/types/src/tree-shakeable.ts +1 -1
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-ZZCZZHOD.js → chunk-R4PTES5B.js} +104 -104
- package/node_modules/@zuplo/runtime/out/esm/chunk-R4PTES5B.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/types/index.d.ts +59 -9
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/hono/dist/cjs/client/client.js +4 -4
- package/node_modules/hono/dist/cjs/hono-base.js +7 -6
- package/node_modules/hono/dist/cjs/jsx/base.js +18 -1
- package/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +2 -2
- package/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/hono/dist/client/client.js +4 -4
- package/node_modules/hono/dist/hono-base.js +7 -6
- package/node_modules/hono/dist/jsx/base.js +15 -1
- package/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/hono/dist/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/hono/dist/types/context.d.ts +2 -2
- package/node_modules/hono/dist/types/jsx/base.d.ts +3 -0
- package/node_modules/hono/package.json +2 -2
- package/package.json +11 -11
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/base64.js +0 -22
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/crypto_key.js +0 -28
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/helpers.js +0 -42
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/invalid_key_input.js +0 -26
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/is_key_like.js +0 -17
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwk_metadata.js +0 -20
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/jwk_to_key.js +0 -17
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/key_options.js +0 -6
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/options.js +0 -74
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/signing.js +0 -26
- package/node_modules/@modelcontextprotocol/client/node_modules/jose/dist/webapi/lib/type_checks.js +0 -33
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/base64.js +0 -22
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/crypto_key.js +0 -28
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/helpers.js +0 -42
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/invalid_key_input.js +0 -26
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/is_key_like.js +0 -17
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwk_metadata.js +0 -20
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwk_to_key.js +0 -17
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_options.js +0 -6
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/options.js +0 -74
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/signing.js +0 -26
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/type_checks.js +0 -33
- package/node_modules/@zuplo/runtime/out/esm/chunk-ZZCZZHOD.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-ZZCZZHOD.js.LEGAL.txt → chunk-R4PTES5B.js.LEGAL.txt} +0 -0
package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jws_verify.js
CHANGED
|
@@ -1,139 +1,86 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
snapshot.header = header;
|
|
23
|
-
return snapshot;
|
|
1
|
+
import { jwsAlgorithm } from "./jws_algorithms.js";
|
|
2
|
+
import { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from "../util/errors.js";
|
|
3
|
+
import { concat, decoder, encoder, encode } from "./buffer_utils.js";
|
|
4
|
+
import { decodeBase64url, encodeBase64url, parseJoseHeader, isDisjoint, isObject, validateB64, validateCrit, validateAlgorithms, JWS_RECOGNIZED } from "./validate.js";
|
|
5
|
+
import { prepareKey, rawKey, checkModulusLength } from "./key.js";
|
|
6
|
+
function snapshotJws(jws, sharedPayload) {
|
|
7
|
+
const encodedProtected = jws.protected, inputHeader = jws.header, header = isObject(inputHeader) ? { ...inputHeader } : inputHeader;
|
|
8
|
+
let payload = sharedPayload ? sharedPayload[0] : jws.payload;
|
|
9
|
+
!sharedPayload && payload instanceof Uint8Array && (payload = new Uint8Array(payload));
|
|
10
|
+
const signature = jws.signature, snapshot = { payload, signature };
|
|
11
|
+
if (encodedProtected !== void 0 && (snapshot.protected = encodedProtected), inputHeader !== void 0 && (snapshot.header = header), encodedProtected === void 0 && header === void 0)
|
|
12
|
+
throw new JWSInvalid('Flattened JWS must have either of the "protected" or "header" members');
|
|
13
|
+
if (encodedProtected !== void 0 && typeof encodedProtected != "string")
|
|
14
|
+
throw new JWSInvalid("JWS Protected Header incorrect type");
|
|
15
|
+
if (payload === void 0)
|
|
16
|
+
throw new JWSInvalid("JWS Payload missing");
|
|
17
|
+
if (typeof signature != "string")
|
|
18
|
+
throw new JWSInvalid("JWS Signature missing or incorrect type");
|
|
19
|
+
if (header !== void 0 && !isObject(header))
|
|
20
|
+
throw new JWSInvalid("JWS Unprotected Header incorrect type");
|
|
21
|
+
return snapshot;
|
|
24
22
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const result = { payload };
|
|
28
|
-
if (jws.protected !== undefined) {
|
|
29
|
-
result.protectedHeader = parsedProt;
|
|
30
|
-
}
|
|
31
|
-
if (jws.header !== undefined) {
|
|
32
|
-
result.unprotectedHeader = jws.header;
|
|
33
|
-
}
|
|
34
|
-
if (resolvedKey) {
|
|
35
|
-
return { ...result, key };
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
23
|
+
function prepareVerify(options) {
|
|
24
|
+
return [options && validateAlgorithms("algorithms", options.algorithms), options?.crit];
|
|
38
25
|
}
|
|
39
|
-
|
|
40
|
-
|
|
26
|
+
function parseProtectedHeader(encodedProtected) {
|
|
27
|
+
return encodedProtected === void 0 ? {} : parseJoseHeader(encodedProtected, JWSInvalid, "JWS Protected Header is invalid");
|
|
41
28
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
function validateJwsHeaders(parsedProt, joseHeader, shared) {
|
|
48
|
-
const b64 = validateB64(parsedProt, validateCrit(JWSInvalid, JWS_RECOGNIZED, shared[1], parsedProt, joseHeader));
|
|
49
|
-
const alg = joseHeader.alg;
|
|
50
|
-
if (typeof alg !== 'string' || !alg) {
|
|
51
|
-
throw new JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');
|
|
52
|
-
}
|
|
53
|
-
if (shared[0] && !shared[0].has(alg)) {
|
|
54
|
-
throw new JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter value not allowed');
|
|
55
|
-
}
|
|
56
|
-
return [b64, alg];
|
|
57
|
-
}
|
|
58
|
-
export function parseJwsHeaders(encodedProtected, header, shared, parsedProtected) {
|
|
59
|
-
const parsedProt = parseProtectedHeader(encodedProtected, parsedProtected);
|
|
60
|
-
let joseHeader;
|
|
61
|
-
if (header !== undefined) {
|
|
62
|
-
if (!isDisjoint(parsedProt, header)) {
|
|
63
|
-
throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');
|
|
64
|
-
}
|
|
65
|
-
joseHeader = { ...parsedProt, ...header };
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
joseHeader = parsedProt;
|
|
69
|
-
}
|
|
70
|
-
return [parsedProt, joseHeader, ...validateJwsHeaders(parsedProt, joseHeader, shared)];
|
|
71
|
-
}
|
|
72
|
-
export function encodeJsonUnencodedPayload(payload) {
|
|
73
|
-
const invalid = /[\p{Cs}\p{Cn}]/u.exec(payload)?.[0];
|
|
74
|
-
if (invalid !== undefined) {
|
|
75
|
-
throw new JWSInvalid(/\p{Cs}/u.test(invalid)
|
|
76
|
-
? 'JWS Payload must be a well-formed Unicode string'
|
|
77
|
-
: 'JWS Payload must not contain unassigned Unicode code points');
|
|
78
|
-
}
|
|
79
|
-
return encoder.encode(payload);
|
|
29
|
+
function encodeJsonUnencodedPayload(payload) {
|
|
30
|
+
const invalid = /[\p{Cs}\p{Cn}]/u.exec(payload)?.[0];
|
|
31
|
+
if (invalid !== void 0)
|
|
32
|
+
throw new JWSInvalid(/\p{Cs}/u.test(invalid) ? "JWS Payload must be a well-formed Unicode string" : "JWS Payload must not contain unassigned Unicode code points");
|
|
33
|
+
return encoder.encode(payload);
|
|
80
34
|
}
|
|
81
35
|
function encodeCompactUnencodedPayload(payload) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async function verifyPrepared(jws, shared, key, encodedProtected, parsedProt, alg, signingPayload) {
|
|
90
|
-
let resolvedKey = false;
|
|
91
|
-
if (typeof key === 'function') {
|
|
92
|
-
key = await key(parsedProt, jws);
|
|
93
|
-
resolvedKey = true;
|
|
94
|
-
}
|
|
95
|
-
const b64 = typeof signingPayload === 'string';
|
|
96
|
-
const entry = jwsAlgorithm(alg);
|
|
97
|
-
const data = concat(encodedProtected !== undefined ? encode(encodedProtected) : new Uint8Array(), encode('.'), b64
|
|
98
|
-
?
|
|
99
|
-
(shared[2] ??= encodeBase64url(signingPayload, 'payload', JWSInvalid))
|
|
100
|
-
: signingPayload);
|
|
101
|
-
const signature = decodeBase64url(jws.signature, 'signature', JWSInvalid);
|
|
102
|
-
const k = await prepareKey(entry, key, 'verify');
|
|
103
|
-
if (!(await verify(entry, k, signature, data))) {
|
|
104
|
-
throw new JWSSignatureVerificationFailed();
|
|
105
|
-
}
|
|
106
|
-
const payload = b64 ? decodeBase64url(signingPayload, 'payload', JWSInvalid) : signingPayload;
|
|
107
|
-
return [payload, parsedProt, b64, k, resolvedKey];
|
|
36
|
+
try {
|
|
37
|
+
return encode(payload);
|
|
38
|
+
} catch {
|
|
39
|
+
throw new JWSInvalid("JWS Compact Serialization payload must use only ASCII characters");
|
|
40
|
+
}
|
|
108
41
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
42
|
+
async function verifySignature(jws, shared, key, encodeUnencodedPayload, parsedProtected) {
|
|
43
|
+
const { protected: encodedProtected, header, payload: inputPayload } = jws, parsedProt = parsedProtected ?? parseProtectedHeader(encodedProtected);
|
|
44
|
+
if (!isDisjoint(parsedProt, header))
|
|
45
|
+
throw new JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");
|
|
46
|
+
const joseHeader = { ...parsedProt, ...header }, b64 = validateB64(parsedProt, validateCrit(JWSInvalid, JWS_RECOGNIZED, shared[1], parsedProt, joseHeader)), { alg } = joseHeader;
|
|
47
|
+
if (typeof alg != "string" || !alg)
|
|
48
|
+
throw new JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');
|
|
49
|
+
if (shared[0] && !shared[0].has(alg))
|
|
50
|
+
throw new JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter value not allowed');
|
|
51
|
+
if (b64) {
|
|
52
|
+
if (typeof inputPayload != "string")
|
|
53
|
+
throw new JWSInvalid("JWS Payload must be a string");
|
|
54
|
+
} else if (typeof inputPayload != "string" && !(inputPayload instanceof Uint8Array))
|
|
55
|
+
throw new JWSInvalid("JWS Payload must be a string or an Uint8Array instance");
|
|
56
|
+
const signingPayload = b64 || typeof inputPayload != "string" ? inputPayload : encodeUnencodedPayload(inputPayload);
|
|
57
|
+
let resolvedKey = !1;
|
|
58
|
+
typeof key == "function" && (key = await key(parsedProt, jws), resolvedKey = !0);
|
|
59
|
+
const entry = jwsAlgorithm(alg), data = concat(encodedProtected !== void 0 ? encode(encodedProtected) : new Uint8Array(), encode("."), typeof signingPayload == "string" ? shared[2] ??= encodeBase64url(signingPayload, "payload", JWSInvalid) : signingPayload), signature = decodeBase64url(jws.signature, "signature", JWSInvalid), k = await prepareKey(entry, key, "verify"), cryptoKey = await rawKey(k, entry.subtle, "verify");
|
|
60
|
+
entry.minRsaBits && checkModulusLength(entry.alg, cryptoKey);
|
|
61
|
+
let verified = !1;
|
|
62
|
+
try {
|
|
63
|
+
verified = await crypto.subtle.verify(entry.signing, cryptoKey, signature, data);
|
|
64
|
+
} catch {
|
|
65
|
+
}
|
|
66
|
+
if (!verified)
|
|
67
|
+
throw new JWSSignatureVerificationFailed();
|
|
68
|
+
const result = { payload: typeof signingPayload == "string" ? decodeBase64url(signingPayload, "payload", JWSInvalid) : signingPayload };
|
|
69
|
+
return encodedProtected !== void 0 && (result.protectedHeader = parsedProt), header !== void 0 && (result.unprotectedHeader = header), resolvedKey ? [{ ...result, key: k }, b64] : [result, b64];
|
|
122
70
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');
|
|
131
|
-
if (length !== 3) {
|
|
132
|
-
throw new JWSInvalid('Invalid Compact JWS');
|
|
133
|
-
}
|
|
134
|
-
const compactJws = { payload, protected: protectedHeader, signature };
|
|
135
|
-
const parsedProt = parseProtectedHeader(protectedHeader);
|
|
136
|
-
const [b64, alg] = validateJwsHeaders(parsedProt, parsedProt, shared);
|
|
137
|
-
const signingPayload = b64 ? payload : encodeCompactUnencodedPayload(payload);
|
|
138
|
-
return verifyPrepared(compactJws, shared, key, protectedHeader, parsedProt, alg, signingPayload);
|
|
71
|
+
async function verifyCompact(jws, shared, key) {
|
|
72
|
+
if (jws instanceof Uint8Array && (jws = decoder.decode(jws)), typeof jws != "string")
|
|
73
|
+
throw new JWSInvalid("Compact JWS must be a string or Uint8Array");
|
|
74
|
+
const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split(".");
|
|
75
|
+
if (length !== 3)
|
|
76
|
+
throw new JWSInvalid("Invalid Compact JWS");
|
|
77
|
+
return verifySignature({ payload, protected: protectedHeader, signature }, shared, key, encodeCompactUnencodedPayload);
|
|
139
78
|
}
|
|
79
|
+
export {
|
|
80
|
+
encodeJsonUnencodedPayload,
|
|
81
|
+
parseProtectedHeader,
|
|
82
|
+
prepareVerify,
|
|
83
|
+
snapshotJws,
|
|
84
|
+
verifyCompact,
|
|
85
|
+
verifySignature
|
|
86
|
+
};
|
package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwt_claims_set.js
CHANGED
|
@@ -1,232 +1,146 @@
|
|
|
1
|
-
import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from
|
|
2
|
-
import { encoder, strictDecoder } from
|
|
3
|
-
import { isObject } from
|
|
4
|
-
const epoch = (date) => Math.floor(date.getTime() /
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
const REGEX = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;
|
|
14
|
-
const checkFailed = 'check_failed';
|
|
1
|
+
import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from "../util/errors.js";
|
|
2
|
+
import { encoder, strictDecoder } from "./buffer_utils.js";
|
|
3
|
+
import { isObject } from "./validate.js";
|
|
4
|
+
const epoch = (date) => Math.floor(date.getTime() / 1e3), multipliers = {
|
|
5
|
+
s: 1,
|
|
6
|
+
m: 60,
|
|
7
|
+
h: 3600,
|
|
8
|
+
d: 86400,
|
|
9
|
+
w: 604800,
|
|
10
|
+
y: 31557600
|
|
11
|
+
}, REGEX = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i, checkFailed = "check_failed";
|
|
15
12
|
function invalidDuration() {
|
|
16
|
-
|
|
13
|
+
throw new TypeError("Invalid time period format");
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
invalidDuration();
|
|
25
|
-
}
|
|
26
|
-
const value = parseFloat(matched[2]);
|
|
27
|
-
const numericDate = Math.round(value * multipliers[matched[3][0].toLowerCase()]);
|
|
28
|
-
if (!Number.isFinite(numericDate)) {
|
|
29
|
-
invalidDuration();
|
|
30
|
-
}
|
|
31
|
-
if (matched[1] === '-' || matched[4] === 'ago') {
|
|
32
|
-
return -numericDate;
|
|
33
|
-
}
|
|
34
|
-
return numericDate;
|
|
15
|
+
function secs(str) {
|
|
16
|
+
typeof str != "string" && invalidDuration();
|
|
17
|
+
const matched = REGEX.exec(str);
|
|
18
|
+
(!matched || matched[4] && matched[1]) && invalidDuration();
|
|
19
|
+
const value = parseFloat(matched[2]), numericDate2 = Math.round(value * multipliers[matched[3][0].toLowerCase()]);
|
|
20
|
+
return Number.isFinite(numericDate2) || invalidDuration(), matched[1] === "-" || matched[4] === "ago" ? -numericDate2 : numericDate2;
|
|
35
21
|
}
|
|
36
22
|
function validateInput(label, input) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return input;
|
|
23
|
+
if (!Number.isFinite(input))
|
|
24
|
+
throw new TypeError(`Invalid ${label} input`);
|
|
25
|
+
return input;
|
|
41
26
|
}
|
|
42
27
|
function validateStringClaim(claim, value) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
28
|
+
if (typeof value != "string")
|
|
29
|
+
throw new TypeError(`"${claim}" claim must be a string`);
|
|
46
30
|
}
|
|
47
31
|
function validateAudienceClaim(value) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
throw new TypeError('"aud" claim must be a string or an array of strings');
|
|
51
|
-
}
|
|
32
|
+
if (typeof value != "string" && (!Array.isArray(value) || Array.from(value).some((member) => typeof member != "string")))
|
|
33
|
+
throw new TypeError('"aud" claim must be a string or an array of strings');
|
|
52
34
|
}
|
|
53
35
|
function numericDate(value, label) {
|
|
54
|
-
|
|
55
|
-
return validateInput(label, value);
|
|
56
|
-
if (value instanceof Date)
|
|
57
|
-
return validateInput(label, epoch(value));
|
|
58
|
-
return epoch(new Date()) + secs(value);
|
|
36
|
+
return typeof value == "number" ? validateInput(label, value) : value instanceof Date ? validateInput(label, epoch(value)) : epoch(/* @__PURE__ */ new Date()) + secs(value);
|
|
59
37
|
}
|
|
60
38
|
const normalizeTyp = (value) => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return audOption.some((aud) => audPayload.includes(aud));
|
|
70
|
-
}
|
|
71
|
-
return false;
|
|
72
|
-
};
|
|
73
|
-
function validateNumericDate(payload, claim, required = false) {
|
|
74
|
-
const value = payload[claim];
|
|
75
|
-
if (value === undefined && !required)
|
|
76
|
-
return undefined;
|
|
77
|
-
if (typeof value !== 'number') {
|
|
78
|
-
throw new JWTClaimValidationFailed(`"${claim}" claim must be a number`, payload, claim, 'invalid');
|
|
79
|
-
}
|
|
39
|
+
const normalized = value.toLowerCase();
|
|
40
|
+
return value.includes("/") ? normalized : `application/${normalized}`;
|
|
41
|
+
}, checkAudiencePresence = (audPayload, audOption) => typeof audPayload == "string" ? audOption.includes(audPayload) : Array.isArray(audPayload) ? audOption.some((aud) => audPayload.includes(aud)) : !1;
|
|
42
|
+
function validateNumericDate(payload, claim, required = !1) {
|
|
43
|
+
const value = payload[claim];
|
|
44
|
+
if (!(value === void 0 && !required)) {
|
|
45
|
+
if (typeof value != "number")
|
|
46
|
+
throw new JWTClaimValidationFailed(`"${claim}" claim must be a number`, payload, claim, "invalid");
|
|
80
47
|
return value;
|
|
48
|
+
}
|
|
81
49
|
}
|
|
82
50
|
function unexpectedClaim(payload, claim) {
|
|
83
|
-
|
|
51
|
+
throw new JWTClaimValidationFailed(`unexpected "${claim}" claim value`, payload, claim, checkFailed);
|
|
84
52
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
const { clockTolerance } = options;
|
|
128
|
-
let tolerance = 0;
|
|
129
|
-
if (typeof clockTolerance === 'string') {
|
|
130
|
-
tolerance = secs(clockTolerance);
|
|
131
|
-
}
|
|
132
|
-
else if (clockTolerance !== undefined) {
|
|
133
|
-
if (typeof clockTolerance !== 'number') {
|
|
134
|
-
throw new TypeError('Invalid clockTolerance option type');
|
|
135
|
-
}
|
|
136
|
-
tolerance = clockTolerance;
|
|
137
|
-
}
|
|
138
|
-
validateInput('clockTolerance option', tolerance);
|
|
139
|
-
const { currentDate } = options;
|
|
140
|
-
const now = validateInput('currentDate option', epoch(currentDate === undefined ? new Date() : currentDate));
|
|
141
|
-
const iat = validateNumericDate(payload, 'iat', maxTokenAge !== undefined);
|
|
142
|
-
const nbf = validateNumericDate(payload, 'nbf');
|
|
143
|
-
if (nbf !== undefined) {
|
|
144
|
-
if (nbf > now + tolerance) {
|
|
145
|
-
throw new JWTClaimValidationFailed('"nbf" claim timestamp check failed', payload, 'nbf', checkFailed);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
const exp = validateNumericDate(payload, 'exp');
|
|
149
|
-
if (exp !== undefined) {
|
|
150
|
-
if (exp <= now - tolerance) {
|
|
151
|
-
throw new JWTExpired('"exp" claim timestamp check failed', payload, 'exp', checkFailed);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (maxTokenAge !== undefined) {
|
|
155
|
-
const age = now - iat;
|
|
156
|
-
const max = validateInput('maxTokenAge option', typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge));
|
|
157
|
-
if (age - tolerance > max) {
|
|
158
|
-
throw new JWTExpired('"iat" claim timestamp check failed (too far in the past)', payload, 'iat', checkFailed);
|
|
159
|
-
}
|
|
160
|
-
if (age < -tolerance) {
|
|
161
|
-
throw new JWTClaimValidationFailed('"iat" claim timestamp check failed (it should be in the past)', payload, 'iat', checkFailed);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
return payload;
|
|
53
|
+
function validateClaimsSet(protectedHeader, encodedPayload, options = {}) {
|
|
54
|
+
let payload;
|
|
55
|
+
try {
|
|
56
|
+
payload = JSON.parse(strictDecoder.decode(encodedPayload));
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
if (!isObject(payload))
|
|
60
|
+
throw new JWTInvalid("JWT Claims Set must be a top-level JSON object");
|
|
61
|
+
const { typ } = options;
|
|
62
|
+
if (typ !== void 0 && (typeof protectedHeader.typ != "string" || normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ)))
|
|
63
|
+
throw new JWTClaimValidationFailed('unexpected "typ" JWT header value', payload, "typ", checkFailed);
|
|
64
|
+
const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options, presenceCheck = [...requiredClaims];
|
|
65
|
+
maxTokenAge !== void 0 && presenceCheck.push("iat"), audience !== void 0 && presenceCheck.push("aud"), subject !== void 0 && presenceCheck.push("sub"), issuer !== void 0 && presenceCheck.push("iss");
|
|
66
|
+
for (const claim of new Set(presenceCheck.reverse()))
|
|
67
|
+
if (!Object.hasOwn(payload, claim))
|
|
68
|
+
throw new JWTClaimValidationFailed(`missing required "${claim}" claim`, payload, claim, "missing");
|
|
69
|
+
issuer !== void 0 && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss) && unexpectedClaim(payload, "iss"), subject !== void 0 && payload.sub !== subject && unexpectedClaim(payload, "sub"), audience !== void 0 && !checkAudiencePresence(payload.aud, typeof audience == "string" ? [audience] : audience) && unexpectedClaim(payload, "aud");
|
|
70
|
+
const { clockTolerance } = options;
|
|
71
|
+
let tolerance = 0;
|
|
72
|
+
if (typeof clockTolerance == "string")
|
|
73
|
+
tolerance = secs(clockTolerance);
|
|
74
|
+
else if (clockTolerance !== void 0) {
|
|
75
|
+
if (typeof clockTolerance != "number")
|
|
76
|
+
throw new TypeError("Invalid clockTolerance option type");
|
|
77
|
+
tolerance = clockTolerance;
|
|
78
|
+
}
|
|
79
|
+
validateInput("clockTolerance option", tolerance);
|
|
80
|
+
const { currentDate } = options, now = validateInput("currentDate option", epoch(currentDate === void 0 ? /* @__PURE__ */ new Date() : currentDate)), iat = validateNumericDate(payload, "iat", maxTokenAge !== void 0), nbf = validateNumericDate(payload, "nbf");
|
|
81
|
+
if (nbf !== void 0 && nbf > now + tolerance)
|
|
82
|
+
throw new JWTClaimValidationFailed('"nbf" claim timestamp check failed', payload, "nbf", checkFailed);
|
|
83
|
+
const exp = validateNumericDate(payload, "exp");
|
|
84
|
+
if (exp !== void 0 && exp <= now - tolerance)
|
|
85
|
+
throw new JWTExpired('"exp" claim timestamp check failed', payload, "exp", checkFailed);
|
|
86
|
+
if (maxTokenAge !== void 0) {
|
|
87
|
+
const age = now - iat, max = validateInput("maxTokenAge option", typeof maxTokenAge == "number" ? maxTokenAge : secs(maxTokenAge));
|
|
88
|
+
if (age - tolerance > max)
|
|
89
|
+
throw new JWTExpired('"iat" claim timestamp check failed (too far in the past)', payload, "iat", checkFailed);
|
|
90
|
+
if (age < -tolerance)
|
|
91
|
+
throw new JWTClaimValidationFailed('"iat" claim timestamp check failed (it should be in the past)', payload, "iat", checkFailed);
|
|
92
|
+
}
|
|
93
|
+
return payload;
|
|
165
94
|
}
|
|
166
95
|
let producerPayloads;
|
|
167
96
|
function producerPayload(producer) {
|
|
168
|
-
|
|
97
|
+
return producerPayloads.get(producer);
|
|
169
98
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
return encoder.encode(JSON.stringify(payload));
|
|
99
|
+
function jwtData(producer) {
|
|
100
|
+
const payload = producerPayload(producer);
|
|
101
|
+
for (const claim of ["iat", "nbf", "exp"]) {
|
|
102
|
+
const value = payload[claim];
|
|
103
|
+
if (typeof value == "number" && !Number.isFinite(value))
|
|
104
|
+
throw new TypeError(`"${claim}" claim must be a finite number`);
|
|
105
|
+
}
|
|
106
|
+
return encoder.encode(JSON.stringify(payload));
|
|
179
107
|
}
|
|
180
|
-
|
|
181
|
-
|
|
108
|
+
function jwtClaim(producer, claim) {
|
|
109
|
+
return producerPayload(producer)[claim];
|
|
182
110
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
setNotBefore(value) {
|
|
212
|
-
producerPayload(this).nbf = numericDate(value, 'setNotBefore');
|
|
213
|
-
return this;
|
|
214
|
-
}
|
|
215
|
-
setExpirationTime(value) {
|
|
216
|
-
producerPayload(this).exp = numericDate(value, 'setExpirationTime');
|
|
217
|
-
return this;
|
|
218
|
-
}
|
|
219
|
-
setIssuedAt(value) {
|
|
220
|
-
const payload = producerPayload(this);
|
|
221
|
-
if (value === undefined) {
|
|
222
|
-
payload.iat = epoch(new Date());
|
|
223
|
-
}
|
|
224
|
-
else if (typeof value === 'string') {
|
|
225
|
-
payload.iat = validateInput('setIssuedAt', epoch(new Date()) + secs(value));
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
payload.iat = numericDate(value, 'setIssuedAt');
|
|
229
|
-
}
|
|
230
|
-
return this;
|
|
231
|
-
}
|
|
111
|
+
class JWTClaimsBuilder {
|
|
112
|
+
constructor(payload = {}) {
|
|
113
|
+
if (!isObject(payload))
|
|
114
|
+
throw new TypeError("JWT Claims Set MUST be an object");
|
|
115
|
+
(producerPayloads ||= /* @__PURE__ */ new WeakMap()).set(this, structuredClone(payload));
|
|
116
|
+
}
|
|
117
|
+
setIssuer(value) {
|
|
118
|
+
return validateStringClaim("iss", value), producerPayload(this).iss = value, this;
|
|
119
|
+
}
|
|
120
|
+
setSubject(value) {
|
|
121
|
+
return validateStringClaim("sub", value), producerPayload(this).sub = value, this;
|
|
122
|
+
}
|
|
123
|
+
setAudience(value) {
|
|
124
|
+
return validateAudienceClaim(value), producerPayload(this).aud = value, this;
|
|
125
|
+
}
|
|
126
|
+
setJti(value) {
|
|
127
|
+
return validateStringClaim("jti", value), producerPayload(this).jti = value, this;
|
|
128
|
+
}
|
|
129
|
+
setNotBefore(value) {
|
|
130
|
+
return producerPayload(this).nbf = numericDate(value, "setNotBefore"), this;
|
|
131
|
+
}
|
|
132
|
+
setExpirationTime(value) {
|
|
133
|
+
return producerPayload(this).exp = numericDate(value, "setExpirationTime"), this;
|
|
134
|
+
}
|
|
135
|
+
setIssuedAt(value) {
|
|
136
|
+
const payload = producerPayload(this);
|
|
137
|
+
return value === void 0 ? payload.iat = epoch(/* @__PURE__ */ new Date()) : typeof value == "string" ? payload.iat = validateInput("setIssuedAt", epoch(/* @__PURE__ */ new Date()) + secs(value)) : payload.iat = numericDate(value, "setIssuedAt"), this;
|
|
138
|
+
}
|
|
232
139
|
}
|
|
140
|
+
export {
|
|
141
|
+
JWTClaimsBuilder,
|
|
142
|
+
jwtClaim,
|
|
143
|
+
jwtData,
|
|
144
|
+
secs,
|
|
145
|
+
validateClaimsSet
|
|
146
|
+
};
|