@outfoxx/sunday 1.1.0-beta.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/build/date-time-types.d.ts +35 -0
- package/build/date-time-types.js +699 -0
- package/build/date-time-types.js.map +1 -0
- package/build/{esm/event-parser.d.ts → event-parser.d.ts} +1 -1
- package/build/{esm/event-parser.js → event-parser.js} +10 -12
- package/build/event-parser.js.map +1 -0
- package/build/{esm/fetch-event-source.d.ts → fetch-event-source.d.ts} +26 -18
- package/build/fetch-event-source.js +365 -0
- package/build/fetch-event-source.js.map +1 -0
- package/build/{esnext/fetch-request-factory.d.ts → fetch-request-factory.d.ts} +18 -20
- package/build/fetch-request-factory.js +316 -0
- package/build/fetch-request-factory.js.map +1 -0
- package/build/fetch.d.ts +9 -0
- package/build/fetch.js +140 -0
- package/build/fetch.js.map +1 -0
- package/build/{esnext/header-parameters.js → header-parameters.js} +31 -2
- package/build/header-parameters.js.map +1 -0
- package/build/index.d.ts +26 -0
- package/build/index.js +41 -0
- package/build/index.js.map +1 -0
- package/build/{main/logger.d.ts → logger.d.ts} +9 -0
- package/build/logger.js +36 -0
- package/build/logger.js.map +1 -0
- package/build/media-type-codecs/any-text-decoder.d.ts +7 -0
- package/build/{esm/media-type-codecs → media-type-codecs}/any-text-decoder.js +9 -9
- package/build/media-type-codecs/any-text-decoder.js.map +1 -0
- package/build/media-type-codecs/any-text-encoder.d.ts +6 -0
- package/build/{esm/media-type-codecs → media-type-codecs}/any-text-encoder.js +9 -5
- package/build/media-type-codecs/any-text-encoder.js.map +1 -0
- package/build/media-type-codecs/binary-decoder.d.ts +7 -0
- package/build/{esnext/media-type-codecs → media-type-codecs}/binary-decoder.js +13 -9
- package/build/media-type-codecs/binary-decoder.js.map +1 -0
- package/build/media-type-codecs/binary-encoder.d.ts +6 -0
- package/build/{esnext/media-type-codecs → media-type-codecs}/binary-encoder.js +12 -8
- package/build/media-type-codecs/binary-encoder.js.map +1 -0
- package/build/media-type-codecs/cbor-decoder.d.ts +13 -0
- package/build/media-type-codecs/cbor-decoder.js +38 -0
- package/build/media-type-codecs/cbor-decoder.js.map +1 -0
- package/build/media-type-codecs/cbor-encoder.d.ts +12 -0
- package/build/media-type-codecs/cbor-encoder.js +36 -0
- package/build/media-type-codecs/cbor-encoder.js.map +1 -0
- package/build/{esm/media-type-codecs → media-type-codecs}/cbor-tags.d.ts +2 -0
- package/build/{esnext/media-type-codecs → media-type-codecs}/cbor-tags.js +2 -0
- package/build/media-type-codecs/cbor-tags.js.map +1 -0
- package/build/media-type-codecs/default-policies.d.ts +3 -0
- package/build/media-type-codecs/default-policies.js +33 -0
- package/build/media-type-codecs/default-policies.js.map +1 -0
- package/build/media-type-codecs/json-decoder.d.ts +14 -0
- package/build/media-type-codecs/json-decoder.js +40 -0
- package/build/media-type-codecs/json-decoder.js.map +1 -0
- package/build/media-type-codecs/json-encoder.d.ts +13 -0
- package/build/media-type-codecs/json-encoder.js +43 -0
- package/build/media-type-codecs/json-encoder.js.map +1 -0
- package/build/media-type-codecs/media-type-decoder.d.ts +14 -0
- package/build/{esm/media-type-codecs → media-type-codecs}/media-type-decoder.js +1 -2
- package/build/media-type-codecs/media-type-decoder.js.map +1 -0
- package/build/{main/media-type-codecs → media-type-codecs}/media-type-decoders.d.ts +6 -8
- package/build/media-type-codecs/media-type-decoders.js +63 -0
- package/build/media-type-codecs/media-type-decoders.js.map +1 -0
- package/build/{main/media-type-codecs → media-type-codecs}/media-type-encoder.d.ts +3 -3
- package/build/{esnext/media-type-codecs → media-type-codecs}/media-type-encoder.js +2 -4
- package/build/media-type-codecs/media-type-encoder.js.map +1 -0
- package/build/{esnext/media-type-codecs → media-type-codecs}/media-type-encoders.d.ts +6 -8
- package/build/media-type-codecs/media-type-encoders.js +65 -0
- package/build/media-type-codecs/media-type-encoders.js.map +1 -0
- package/build/media-type-codecs/www-form-url-encoder.d.ts +31 -0
- package/build/media-type-codecs/www-form-url-encoder.js +281 -0
- package/build/media-type-codecs/www-form-url-encoder.js.map +1 -0
- package/build/{esm/media-type.js → media-type.js} +23 -23
- package/build/media-type.js.map +1 -0
- package/build/problem.d.ts +35 -0
- package/build/problem.js +122 -0
- package/build/problem.js.map +1 -0
- package/build/request-adapters.d.ts +23 -0
- package/build/request-adapters.js +53 -0
- package/build/request-adapters.js.map +1 -0
- package/build/request-factory.d.ts +39 -0
- package/build/request-factory.js.map +1 -0
- package/build/result-response.js.map +1 -0
- package/build/schema-builtins.d.ts +21 -0
- package/build/schema-builtins.js +201 -0
- package/build/schema-builtins.js.map +1 -0
- package/build/schema-policy.d.ts +31 -0
- package/build/schema-policy.js +41 -0
- package/build/schema-policy.js.map +1 -0
- package/build/schema-runtime.d.ts +25 -0
- package/build/schema-runtime.js +77 -0
- package/build/schema-runtime.js.map +1 -0
- package/build/{esnext/sunday-error.d.ts → sunday-error.d.ts} +2 -3
- package/build/{esm/sunday-error.js → sunday-error.js} +9 -4
- package/build/sunday-error.js.map +1 -0
- package/build/{esm/url-template.js → url-template.js} +5 -3
- package/build/url-template.js.map +1 -0
- package/build/util/async-iterables.d.ts +15 -0
- package/build/util/async-iterables.js +179 -0
- package/build/util/async-iterables.js.map +1 -0
- package/build/util/errors.js +65 -0
- package/build/util/errors.js.map +1 -0
- package/build/util/nullify.d.ts +5 -0
- package/build/util/nullify.js +37 -0
- package/build/util/nullify.js.map +1 -0
- package/build/util/numbers.d.ts +11 -0
- package/build/{esnext/util/temporal.js → util/numbers.js} +14 -4
- package/build/util/numbers.js.map +1 -0
- package/build/util/subscriptions.d.ts +16 -0
- package/build/util/subscriptions.js +78 -0
- package/build/util/subscriptions.js.map +1 -0
- package/build/{esm/util/any.js → util/unknowns.js} +2 -3
- package/build/util/unknowns.js.map +1 -0
- package/package.json +58 -58
- package/build/esm/any-type.d.ts +0 -4
- package/build/esm/any-type.js +0 -15
- package/build/esm/any-type.js.map +0 -1
- package/build/esm/class-type.d.ts +0 -2
- package/build/esm/class-type.js +0 -15
- package/build/esm/class-type.js.map +0 -1
- package/build/esm/date-time-types.d.ts +0 -2
- package/build/esm/date-time-types.js +0 -16
- package/build/esm/date-time-types.js.map +0 -1
- package/build/esm/event-parser.js.map +0 -1
- package/build/esm/fetch-event-source.js +0 -290
- package/build/esm/fetch-event-source.js.map +0 -1
- package/build/esm/fetch-request-factory.d.ts +0 -34
- package/build/esm/fetch-request-factory.js +0 -181
- package/build/esm/fetch-request-factory.js.map +0 -1
- package/build/esm/fetch.d.ts +0 -7
- package/build/esm/fetch.js +0 -90
- package/build/esm/fetch.js.map +0 -1
- package/build/esm/header-parameters.js +0 -53
- package/build/esm/header-parameters.js.map +0 -1
- package/build/esm/index.d.ts +0 -26
- package/build/esm/index.js +0 -40
- package/build/esm/index.js.map +0 -1
- package/build/esm/logger.d.ts +0 -8
- package/build/esm/logger.js +0 -15
- package/build/esm/logger.js.map +0 -1
- package/build/esm/media-type-codecs/any-text-decoder.d.ts +0 -7
- package/build/esm/media-type-codecs/any-text-decoder.js.map +0 -1
- package/build/esm/media-type-codecs/any-text-encoder.d.ts +0 -5
- package/build/esm/media-type-codecs/any-text-encoder.js.map +0 -1
- package/build/esm/media-type-codecs/binary-decoder.d.ts +0 -6
- package/build/esm/media-type-codecs/binary-decoder.js +0 -29
- package/build/esm/media-type-codecs/binary-decoder.js.map +0 -1
- package/build/esm/media-type-codecs/binary-encoder.d.ts +0 -5
- package/build/esm/media-type-codecs/binary-encoder.js +0 -26
- package/build/esm/media-type-codecs/binary-encoder.js.map +0 -1
- package/build/esm/media-type-codecs/cbor-decoder.d.ts +0 -39
- package/build/esm/media-type-codecs/cbor-decoder.js +0 -426
- package/build/esm/media-type-codecs/cbor-decoder.js.map +0 -1
- package/build/esm/media-type-codecs/cbor-encoder.d.ts +0 -43
- package/build/esm/media-type-codecs/cbor-encoder.js +0 -236
- package/build/esm/media-type-codecs/cbor-encoder.js.map +0 -1
- package/build/esm/media-type-codecs/cbor-tags.js +0 -18
- package/build/esm/media-type-codecs/cbor-tags.js.map +0 -1
- package/build/esm/media-type-codecs/json-decoder.d.ts +0 -39
- package/build/esm/media-type-codecs/json-decoder.js +0 -380
- package/build/esm/media-type-codecs/json-decoder.js.map +0 -1
- package/build/esm/media-type-codecs/json-encoder.d.ts +0 -44
- package/build/esm/media-type-codecs/json-encoder.js +0 -273
- package/build/esm/media-type-codecs/json-encoder.js.map +0 -1
- package/build/esm/media-type-codecs/media-type-decoder.d.ts +0 -11
- package/build/esm/media-type-codecs/media-type-decoder.js.map +0 -1
- package/build/esm/media-type-codecs/media-type-decoders.d.ts +0 -18
- package/build/esm/media-type-codecs/media-type-decoders.js +0 -58
- package/build/esm/media-type-codecs/media-type-decoders.js.map +0 -1
- package/build/esm/media-type-codecs/media-type-encoder.d.ts +0 -12
- package/build/esm/media-type-codecs/media-type-encoder.js +0 -24
- package/build/esm/media-type-codecs/media-type-encoder.js.map +0 -1
- package/build/esm/media-type-codecs/media-type-encoders.d.ts +0 -18
- package/build/esm/media-type-codecs/media-type-encoders.js +0 -60
- package/build/esm/media-type-codecs/media-type-encoders.js.map +0 -1
- package/build/esm/media-type-codecs/www-form-url-encoder.d.ts +0 -59
- package/build/esm/media-type-codecs/www-form-url-encoder.js +0 -192
- package/build/esm/media-type-codecs/www-form-url-encoder.js.map +0 -1
- package/build/esm/media-type.js.map +0 -1
- package/build/esm/problem.d.ts +0 -31
- package/build/esm/problem.js +0 -158
- package/build/esm/problem.js.map +0 -1
- package/build/esm/request-factory.d.ts +0 -44
- package/build/esm/request-factory.js.map +0 -1
- package/build/esm/result-response.js.map +0 -1
- package/build/esm/sunday-error.d.ts +0 -11
- package/build/esm/sunday-error.js.map +0 -1
- package/build/esm/url-template.js.map +0 -1
- package/build/esm/util/any.js.map +0 -1
- package/build/esm/util/base64.d.ts +0 -5
- package/build/esm/util/base64.js +0 -77
- package/build/esm/util/base64.js.map +0 -1
- package/build/esm/util/error.js +0 -26
- package/build/esm/util/error.js.map +0 -1
- package/build/esm/util/hex.d.ts +0 -4
- package/build/esm/util/hex.js +0 -32
- package/build/esm/util/hex.js.map +0 -1
- package/build/esm/util/rxjs.d.ts +0 -5
- package/build/esm/util/rxjs.js +0 -31
- package/build/esm/util/rxjs.js.map +0 -1
- package/build/esm/util/stream-rxjs.d.ts +0 -2
- package/build/esm/util/stream-rxjs.js +0 -39
- package/build/esm/util/stream-rxjs.js.map +0 -1
- package/build/esm/util/temporal.d.ts +0 -2
- package/build/esm/util/temporal.js +0 -31
- package/build/esm/util/temporal.js.map +0 -1
- package/build/esnext/any-type.d.ts +0 -4
- package/build/esnext/any-type.js +0 -15
- package/build/esnext/any-type.js.map +0 -1
- package/build/esnext/class-type.d.ts +0 -2
- package/build/esnext/class-type.js +0 -15
- package/build/esnext/class-type.js.map +0 -1
- package/build/esnext/date-time-types.d.ts +0 -2
- package/build/esnext/date-time-types.js +0 -16
- package/build/esnext/date-time-types.js.map +0 -1
- package/build/esnext/event-parser.d.ts +0 -17
- package/build/esnext/event-parser.js +0 -153
- package/build/esnext/event-parser.js.map +0 -1
- package/build/esnext/fetch-event-source.d.ts +0 -58
- package/build/esnext/fetch-event-source.js +0 -290
- package/build/esnext/fetch-event-source.js.map +0 -1
- package/build/esnext/fetch-request-factory.js +0 -181
- package/build/esnext/fetch-request-factory.js.map +0 -1
- package/build/esnext/fetch.d.ts +0 -7
- package/build/esnext/fetch.js +0 -90
- package/build/esnext/fetch.js.map +0 -1
- package/build/esnext/header-parameters.d.ts +0 -3
- package/build/esnext/header-parameters.js.map +0 -1
- package/build/esnext/index.d.ts +0 -26
- package/build/esnext/index.js +0 -40
- package/build/esnext/index.js.map +0 -1
- package/build/esnext/logger.d.ts +0 -8
- package/build/esnext/logger.js +0 -15
- package/build/esnext/logger.js.map +0 -1
- package/build/esnext/media-type-codecs/any-text-decoder.d.ts +0 -7
- package/build/esnext/media-type-codecs/any-text-decoder.js +0 -29
- package/build/esnext/media-type-codecs/any-text-decoder.js.map +0 -1
- package/build/esnext/media-type-codecs/any-text-encoder.d.ts +0 -5
- package/build/esnext/media-type-codecs/any-text-encoder.js +0 -23
- package/build/esnext/media-type-codecs/any-text-encoder.js.map +0 -1
- package/build/esnext/media-type-codecs/binary-decoder.d.ts +0 -6
- package/build/esnext/media-type-codecs/binary-decoder.js.map +0 -1
- package/build/esnext/media-type-codecs/binary-encoder.d.ts +0 -5
- package/build/esnext/media-type-codecs/binary-encoder.js.map +0 -1
- package/build/esnext/media-type-codecs/cbor-decoder.d.ts +0 -39
- package/build/esnext/media-type-codecs/cbor-decoder.js +0 -426
- package/build/esnext/media-type-codecs/cbor-decoder.js.map +0 -1
- package/build/esnext/media-type-codecs/cbor-encoder.d.ts +0 -43
- package/build/esnext/media-type-codecs/cbor-encoder.js +0 -236
- package/build/esnext/media-type-codecs/cbor-encoder.js.map +0 -1
- package/build/esnext/media-type-codecs/cbor-tags.d.ts +0 -4
- package/build/esnext/media-type-codecs/cbor-tags.js.map +0 -1
- package/build/esnext/media-type-codecs/json-decoder.d.ts +0 -39
- package/build/esnext/media-type-codecs/json-decoder.js +0 -380
- package/build/esnext/media-type-codecs/json-decoder.js.map +0 -1
- package/build/esnext/media-type-codecs/json-encoder.d.ts +0 -44
- package/build/esnext/media-type-codecs/json-encoder.js +0 -273
- package/build/esnext/media-type-codecs/json-encoder.js.map +0 -1
- package/build/esnext/media-type-codecs/media-type-decoder.d.ts +0 -11
- package/build/esnext/media-type-codecs/media-type-decoder.js +0 -19
- package/build/esnext/media-type-codecs/media-type-decoder.js.map +0 -1
- package/build/esnext/media-type-codecs/media-type-decoders.d.ts +0 -18
- package/build/esnext/media-type-codecs/media-type-decoders.js +0 -58
- package/build/esnext/media-type-codecs/media-type-decoders.js.map +0 -1
- package/build/esnext/media-type-codecs/media-type-encoder.d.ts +0 -12
- package/build/esnext/media-type-codecs/media-type-encoder.js.map +0 -1
- package/build/esnext/media-type-codecs/media-type-encoders.js +0 -60
- package/build/esnext/media-type-codecs/media-type-encoders.js.map +0 -1
- package/build/esnext/media-type-codecs/www-form-url-encoder.d.ts +0 -59
- package/build/esnext/media-type-codecs/www-form-url-encoder.js +0 -192
- package/build/esnext/media-type-codecs/www-form-url-encoder.js.map +0 -1
- package/build/esnext/media-type.d.ts +0 -94
- package/build/esnext/media-type.js +0 -305
- package/build/esnext/media-type.js.map +0 -1
- package/build/esnext/problem.d.ts +0 -31
- package/build/esnext/problem.js +0 -158
- package/build/esnext/problem.js.map +0 -1
- package/build/esnext/request-factory.d.ts +0 -44
- package/build/esnext/request-factory.js +0 -15
- package/build/esnext/request-factory.js.map +0 -1
- package/build/esnext/result-response.d.ts +0 -4
- package/build/esnext/result-response.js +0 -15
- package/build/esnext/result-response.js.map +0 -1
- package/build/esnext/sunday-error.js +0 -31
- package/build/esnext/sunday-error.js.map +0 -1
- package/build/esnext/url-template.d.ts +0 -6
- package/build/esnext/url-template.js +0 -31
- package/build/esnext/url-template.js.map +0 -1
- package/build/esnext/util/any.d.ts +0 -2
- package/build/esnext/util/any.js +0 -24
- package/build/esnext/util/any.js.map +0 -1
- package/build/esnext/util/base64.d.ts +0 -5
- package/build/esnext/util/base64.js +0 -77
- package/build/esnext/util/base64.js.map +0 -1
- package/build/esnext/util/error.d.ts +0 -2
- package/build/esnext/util/error.js +0 -26
- package/build/esnext/util/error.js.map +0 -1
- package/build/esnext/util/hex.d.ts +0 -4
- package/build/esnext/util/hex.js +0 -32
- package/build/esnext/util/hex.js.map +0 -1
- package/build/esnext/util/rxjs.d.ts +0 -5
- package/build/esnext/util/rxjs.js +0 -31
- package/build/esnext/util/rxjs.js.map +0 -1
- package/build/esnext/util/stream-rxjs.d.ts +0 -2
- package/build/esnext/util/stream-rxjs.js +0 -39
- package/build/esnext/util/stream-rxjs.js.map +0 -1
- package/build/esnext/util/temporal.d.ts +0 -2
- package/build/esnext/util/temporal.js.map +0 -1
- package/build/main/any-type.d.ts +0 -4
- package/build/main/any-type.js +0 -16
- package/build/main/any-type.js.map +0 -1
- package/build/main/class-type.d.ts +0 -2
- package/build/main/class-type.js +0 -16
- package/build/main/class-type.js.map +0 -1
- package/build/main/date-time-types.d.ts +0 -2
- package/build/main/date-time-types.js +0 -27
- package/build/main/date-time-types.js.map +0 -1
- package/build/main/event-parser.d.ts +0 -17
- package/build/main/event-parser.js +0 -157
- package/build/main/event-parser.js.map +0 -1
- package/build/main/fetch-event-source.d.ts +0 -58
- package/build/main/fetch-event-source.js +0 -294
- package/build/main/fetch-event-source.js.map +0 -1
- package/build/main/fetch-request-factory.d.ts +0 -34
- package/build/main/fetch-request-factory.js +0 -185
- package/build/main/fetch-request-factory.js.map +0 -1
- package/build/main/fetch.d.ts +0 -7
- package/build/main/fetch.js +0 -94
- package/build/main/fetch.js.map +0 -1
- package/build/main/header-parameters.d.ts +0 -3
- package/build/main/header-parameters.js +0 -56
- package/build/main/header-parameters.js.map +0 -1
- package/build/main/index.d.ts +0 -26
- package/build/main/index.js +0 -52
- package/build/main/index.js.map +0 -1
- package/build/main/logger.js +0 -16
- package/build/main/logger.js.map +0 -1
- package/build/main/media-type-codecs/any-text-decoder.d.ts +0 -7
- package/build/main/media-type-codecs/any-text-decoder.js +0 -33
- package/build/main/media-type-codecs/any-text-decoder.js.map +0 -1
- package/build/main/media-type-codecs/any-text-encoder.d.ts +0 -5
- package/build/main/media-type-codecs/any-text-encoder.js +0 -27
- package/build/main/media-type-codecs/any-text-encoder.js.map +0 -1
- package/build/main/media-type-codecs/binary-decoder.d.ts +0 -6
- package/build/main/media-type-codecs/binary-decoder.js +0 -33
- package/build/main/media-type-codecs/binary-decoder.js.map +0 -1
- package/build/main/media-type-codecs/binary-encoder.d.ts +0 -5
- package/build/main/media-type-codecs/binary-encoder.js +0 -30
- package/build/main/media-type-codecs/binary-encoder.js.map +0 -1
- package/build/main/media-type-codecs/cbor-decoder.d.ts +0 -39
- package/build/main/media-type-codecs/cbor-decoder.js +0 -430
- package/build/main/media-type-codecs/cbor-decoder.js.map +0 -1
- package/build/main/media-type-codecs/cbor-encoder.d.ts +0 -43
- package/build/main/media-type-codecs/cbor-encoder.js +0 -240
- package/build/main/media-type-codecs/cbor-encoder.js.map +0 -1
- package/build/main/media-type-codecs/cbor-tags.d.ts +0 -4
- package/build/main/media-type-codecs/cbor-tags.js +0 -21
- package/build/main/media-type-codecs/cbor-tags.js.map +0 -1
- package/build/main/media-type-codecs/json-decoder.d.ts +0 -39
- package/build/main/media-type-codecs/json-decoder.js +0 -384
- package/build/main/media-type-codecs/json-decoder.js.map +0 -1
- package/build/main/media-type-codecs/json-encoder.d.ts +0 -44
- package/build/main/media-type-codecs/json-encoder.js +0 -277
- package/build/main/media-type-codecs/json-encoder.js.map +0 -1
- package/build/main/media-type-codecs/media-type-decoder.d.ts +0 -11
- package/build/main/media-type-codecs/media-type-decoder.js +0 -23
- package/build/main/media-type-codecs/media-type-decoder.js.map +0 -1
- package/build/main/media-type-codecs/media-type-decoders.js +0 -62
- package/build/main/media-type-codecs/media-type-decoders.js.map +0 -1
- package/build/main/media-type-codecs/media-type-encoder.js +0 -29
- package/build/main/media-type-codecs/media-type-encoder.js.map +0 -1
- package/build/main/media-type-codecs/media-type-encoders.d.ts +0 -18
- package/build/main/media-type-codecs/media-type-encoders.js +0 -64
- package/build/main/media-type-codecs/media-type-encoders.js.map +0 -1
- package/build/main/media-type-codecs/www-form-url-encoder.d.ts +0 -59
- package/build/main/media-type-codecs/www-form-url-encoder.js +0 -196
- package/build/main/media-type-codecs/www-form-url-encoder.js.map +0 -1
- package/build/main/media-type.d.ts +0 -94
- package/build/main/media-type.js +0 -309
- package/build/main/media-type.js.map +0 -1
- package/build/main/problem.d.ts +0 -31
- package/build/main/problem.js +0 -161
- package/build/main/problem.js.map +0 -1
- package/build/main/request-factory.d.ts +0 -44
- package/build/main/request-factory.js +0 -16
- package/build/main/request-factory.js.map +0 -1
- package/build/main/result-response.d.ts +0 -4
- package/build/main/result-response.js +0 -16
- package/build/main/result-response.js.map +0 -1
- package/build/main/sunday-error.d.ts +0 -11
- package/build/main/sunday-error.js +0 -35
- package/build/main/sunday-error.js.map +0 -1
- package/build/main/url-template.d.ts +0 -6
- package/build/main/url-template.js +0 -35
- package/build/main/url-template.js.map +0 -1
- package/build/main/util/any.d.ts +0 -2
- package/build/main/util/any.js +0 -29
- package/build/main/util/any.js.map +0 -1
- package/build/main/util/base64.d.ts +0 -5
- package/build/main/util/base64.js +0 -80
- package/build/main/util/base64.js.map +0 -1
- package/build/main/util/error.d.ts +0 -2
- package/build/main/util/error.js +0 -31
- package/build/main/util/error.js.map +0 -1
- package/build/main/util/hex.d.ts +0 -4
- package/build/main/util/hex.js +0 -35
- package/build/main/util/hex.js.map +0 -1
- package/build/main/util/rxjs.d.ts +0 -5
- package/build/main/util/rxjs.js +0 -36
- package/build/main/util/rxjs.js.map +0 -1
- package/build/main/util/stream-rxjs.d.ts +0 -2
- package/build/main/util/stream-rxjs.js +0 -43
- package/build/main/util/stream-rxjs.js.map +0 -1
- package/build/main/util/temporal.d.ts +0 -2
- package/build/main/util/temporal.js +0 -36
- package/build/main/util/temporal.js.map +0 -1
- /package/build/{esm/header-parameters.d.ts → header-parameters.d.ts} +0 -0
- /package/build/{esm/media-type.d.ts → media-type.d.ts} +0 -0
- /package/build/{esm/request-factory.js → request-factory.js} +0 -0
- /package/build/{esm/result-response.d.ts → result-response.d.ts} +0 -0
- /package/build/{esm/result-response.js → result-response.js} +0 -0
- /package/build/{esm/url-template.d.ts → url-template.d.ts} +0 -0
- /package/build/{esm/util/error.d.ts → util/errors.d.ts} +0 -0
- /package/build/{esm/util/any.d.ts → util/unknowns.d.ts} +0 -0
|
@@ -12,13 +12,17 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
export class MediaType {
|
|
15
|
+
type;
|
|
16
|
+
tree;
|
|
17
|
+
subtype;
|
|
18
|
+
suffix;
|
|
19
|
+
parameters;
|
|
15
20
|
constructor(params) {
|
|
16
|
-
var _a, _b;
|
|
17
21
|
this.type = params.type;
|
|
18
|
-
this.tree =
|
|
22
|
+
this.tree = params.tree ?? MediaType.Tree.Standard;
|
|
19
23
|
this.subtype = params.subtype.toLowerCase();
|
|
20
24
|
this.suffix = params.suffix;
|
|
21
|
-
this.parameters = Object.entries(
|
|
25
|
+
this.parameters = Object.entries(params.parameters ?? {}).reduce((obj, [name, value]) => {
|
|
22
26
|
obj[name.toLowerCase()] = value.toLowerCase();
|
|
23
27
|
return obj;
|
|
24
28
|
}, {});
|
|
@@ -27,19 +31,16 @@ export class MediaType {
|
|
|
27
31
|
return this.parameters[name];
|
|
28
32
|
}
|
|
29
33
|
with(params) {
|
|
30
|
-
var _a, _b, _c, _d, _e;
|
|
31
34
|
return new MediaType({
|
|
32
|
-
type:
|
|
33
|
-
tree:
|
|
34
|
-
subtype:
|
|
35
|
-
suffix:
|
|
36
|
-
parameters:
|
|
35
|
+
type: params.type ?? this.type,
|
|
36
|
+
tree: params.tree ?? this.tree,
|
|
37
|
+
subtype: params.subtype ?? this.subtype,
|
|
38
|
+
suffix: params.suffix ?? this.suffix,
|
|
39
|
+
parameters: params.parameters ?? this.parameters,
|
|
37
40
|
});
|
|
38
41
|
}
|
|
39
42
|
withParameter(parameter, value) {
|
|
40
|
-
const parameters =
|
|
41
|
-
[parameter]: value,
|
|
42
|
-
});
|
|
43
|
+
const parameters = { ...this.parameters, [parameter]: value };
|
|
43
44
|
return this.with({ parameters });
|
|
44
45
|
}
|
|
45
46
|
get value() {
|
|
@@ -47,7 +48,7 @@ export class MediaType {
|
|
|
47
48
|
const tree = this.tree;
|
|
48
49
|
const suffix = this.suffix ? `+${this.suffix.toLowerCase()}` : '';
|
|
49
50
|
const parameters = Object.keys(this.parameters)
|
|
50
|
-
.sort()
|
|
51
|
+
.sort((p1, p2) => p1.localeCompare(p2, 'und'))
|
|
51
52
|
.map((key) => `;${key}=${this.parameters[key]}`)
|
|
52
53
|
.join('');
|
|
53
54
|
return `${type}/${tree}${this.subtype}${suffix}${parameters}`;
|
|
@@ -163,10 +164,9 @@ export class MediaType {
|
|
|
163
164
|
ParameterName["CharSet"] = "charset";
|
|
164
165
|
})(ParameterName = MediaType.ParameterName || (MediaType.ParameterName = {}));
|
|
165
166
|
function from(value, def = undefined) {
|
|
166
|
-
var _a, _b, _c, _d, _e, _f;
|
|
167
167
|
const reqDef = () => {
|
|
168
168
|
if (!def) {
|
|
169
|
-
throw Error('Invalid media type');
|
|
169
|
+
throw new Error('Invalid media type');
|
|
170
170
|
}
|
|
171
171
|
return def;
|
|
172
172
|
};
|
|
@@ -175,22 +175,22 @@ export class MediaType {
|
|
|
175
175
|
}
|
|
176
176
|
fullRegex.lastIndex = 0;
|
|
177
177
|
const match = fullRegex.exec(value);
|
|
178
|
-
if (
|
|
178
|
+
if (match?.[0] != value) {
|
|
179
179
|
return reqDef();
|
|
180
180
|
}
|
|
181
|
-
const type = MediaType.Type.from(
|
|
181
|
+
const type = MediaType.Type.from(match[1]?.toLowerCase());
|
|
182
182
|
if (!type) {
|
|
183
183
|
return reqDef();
|
|
184
184
|
}
|
|
185
|
-
const tree =
|
|
186
|
-
const subtype =
|
|
185
|
+
const tree = MediaType.Tree.from(match[2]?.toLowerCase()) ?? MediaType.Tree.Standard;
|
|
186
|
+
const subtype = match[3]?.toLowerCase();
|
|
187
187
|
if (!subtype) {
|
|
188
188
|
return reqDef();
|
|
189
189
|
}
|
|
190
|
-
const suffix = MediaType.Suffix.from(
|
|
190
|
+
const suffix = MediaType.Suffix.from(match[4]?.toLowerCase());
|
|
191
191
|
const parameters = {};
|
|
192
|
-
let parametersMatch = paramRegex.exec(
|
|
193
|
-
while (parametersMatch
|
|
192
|
+
let parametersMatch = paramRegex.exec(match[5] ?? '');
|
|
193
|
+
while (parametersMatch?.[0]) {
|
|
194
194
|
const name = parametersMatch[1];
|
|
195
195
|
if (!name)
|
|
196
196
|
continue;
|
|
@@ -209,7 +209,7 @@ export class MediaType {
|
|
|
209
209
|
});
|
|
210
210
|
}
|
|
211
211
|
MediaType.from = from;
|
|
212
|
-
const fullRegex = /^(
|
|
212
|
+
const fullRegex = /^([a-z]+|\*)\/(x(?:-|\\.)|(?:vnd|prs|x)\.|\*)?([a-z0-9\-.]+|\*)(?:\+([a-z]+))?( *(?:; *[\w.-]+ *= *[\w.-]+ *)*)$/gi;
|
|
213
213
|
const paramRegex = / *; *([\w.-]+) *= *([\w.-]+)/gi;
|
|
214
214
|
MediaType.Plain = new MediaType({
|
|
215
215
|
type: MediaType.Type.Text,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type.js","sourceRoot":"","sources":["../src/media-type.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,MAAM,OAAO,SAAS;IACpB,IAAI,CAAiB;IACrB,IAAI,CAAiB;IACrB,OAAO,CAAS;IAChB,MAAM,CAAoB;IAC1B,UAAU,CAAyB;IAEnC,YAAY,MAMX;QACC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9D,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAsC;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,MAMJ;QACC,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAC9B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YACpC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;SACjD,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CACX,SAA2C,EAC3C,KAAa;QAEb,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aAC5C,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;aAC7C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,IACE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAC/B,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAChC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EACvB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAC/B,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG;YAChC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EACvB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IACE,IAAI,CAAC,OAAO,IAAI,GAAG;YACnB,KAAK,CAAC,OAAO,IAAI,GAAG;YACpB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,QAAQ;aACZ,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACxC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAEhC,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChD,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,WAAiB,SAAS;IACxB,IAAY,IAYX;IAZD,WAAY,IAAI;QACd,mCAA2B,CAAA;QAC3B,uBAAe,CAAA;QACf,2BAAmB,CAAA;QACnB,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,+BAAuB,CAAA;QACvB,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,iBAAS,CAAA;IACX,CAAC,EAZW,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAYf;IAED,WAAiB,IAAI;QACnB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAa,CAAC;gBAChD,CAAC,CAAE,KAAc;gBACjB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,SAAI,OAInB,CAAA;IACH,CAAC,EANgB,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAMpB;IAED,IAAY,IAOX;IAPD,WAAY,IAAI;QACd,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,yBAAiB,CAAA;QACjB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,iBAAS,CAAA;IACX,CAAC,EAPW,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAOf;IAED,WAAiB,IAAI;QACnB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAa,CAAC;gBAChD,CAAC,CAAE,KAAc;gBACjB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,SAAI,OAInB,CAAA;IACH,CAAC,EANgB,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAMpB;IAED,IAAY,MASX;IATD,WAAY,MAAM;QAChB,qBAAW,CAAA;QACX,uBAAa,CAAA;QACb,qBAAW,CAAA;QACX,qBAAW,CAAA;QACX,qCAA2B,CAAA;QAC3B,yBAAe,CAAA;QACf,qBAAW,CAAA;QACX,uBAAa,CAAA;IACf,CAAC,EATW,MAAM,GAAN,gBAAM,KAAN,gBAAM,QASjB;IAED,WAAiB,MAAM;QACrB,SAAgB,IAAI,CAAC,KAAa;YAChC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAe,CAAC;gBACpD,CAAC,CAAE,KAAgB;gBACnB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAJe,WAAI,OAInB,CAAA;IACH,CAAC,EANgB,MAAM,GAAN,gBAAM,KAAN,gBAAM,QAMtB;IAED,IAAY,aAEX;IAFD,WAAY,aAAa;QACvB,oCAAmB,CAAA;IACrB,CAAC,EAFW,aAAa,GAAb,uBAAa,KAAb,uBAAa,QAExB;IAOD,SAAgB,IAAI,CAClB,KAAqB,EACrB,MAA6B,SAAS;QAEtC,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE1E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,IAAI,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAErD,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IA1De,cAAI,OA0DnB,CAAA;IAED,MAAM,SAAS,GACb,oHAAoH,CAAC;IACvH,MAAM,UAAU,GAAG,gCAAgC,CAAC;IAEvC,eAAK,GAAG,IAAI,SAAS,CAAC;QACjC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEU,cAAI,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEU,qBAAW,GAAG,IAAI,SAAS,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEU,qBAAW,GAAG,IAAI,SAAS,CAAC;QACvC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEU,2BAAiB,GAAG,IAAI,SAAS,CAAC;QAC7C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CAAC;IAEU,oBAAU,GAAG,IAAI,SAAS,CAAC;QACtC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEU,sBAAY,GAAG,IAAI,SAAS,CAAC;QACxC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;QAC7B,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IAEU,aAAG,GAAG,IAAI,SAAS,CAAC;QAC/B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,iBAAO,GAAG,IAAI,SAAS,CAAC;QACnC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;QACzB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,kBAAQ,GAAG,IAAI,SAAS,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;QAC1B,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEU,wBAAc,GAAG,IAAI,SAAS,CAAC;QAC1C,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;IAEU,uBAAa,GAAG,IAAI,SAAS,CAAC;QACzC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG;QACxB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,GAAG;KACnB,CAAC,CAAC;IAEU,iBAAO,GAAG,IAAI,SAAS,CAAC;QACnC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;IAEU,mBAAS,GAAG,IAAI,SAAS,CAAC;QACrC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;IAEU,oBAAU,GAAG,IAAI,SAAS,CAAC;QACtC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW;QAChC,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CAAC;AACL,CAAC,EAjPgB,SAAS,KAAT,SAAS,QAiPzB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SchemaLike } from './schema-runtime.js';
|
|
3
|
+
export interface Problem {
|
|
4
|
+
type: URL;
|
|
5
|
+
title: string;
|
|
6
|
+
status: number;
|
|
7
|
+
detail?: string;
|
|
8
|
+
instance?: URL;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export declare const ProblemWireSchema: z.ZodObject<{
|
|
12
|
+
type: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<URL, URL>]>>;
|
|
13
|
+
title: z.ZodString;
|
|
14
|
+
status: z.ZodNumber;
|
|
15
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
16
|
+
instance: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<URL, URL>]>>;
|
|
17
|
+
}, z.core.$loose>;
|
|
18
|
+
export type ProblemSpec = z.infer<typeof ProblemWireSchema>;
|
|
19
|
+
export declare class Problem extends Error implements Problem {
|
|
20
|
+
static readonly BLANK_URL: URL;
|
|
21
|
+
type: URL;
|
|
22
|
+
title: string;
|
|
23
|
+
status: number;
|
|
24
|
+
detail?: string;
|
|
25
|
+
instance?: URL;
|
|
26
|
+
private readonly _parameters?;
|
|
27
|
+
get parameters(): Record<string, unknown> | undefined;
|
|
28
|
+
constructor(spec: ProblemSpec);
|
|
29
|
+
toString(): string;
|
|
30
|
+
static fromStatus(status: number, title: string): Problem;
|
|
31
|
+
static fromResponse(response: Response): Promise<Problem>;
|
|
32
|
+
private static parseURL;
|
|
33
|
+
}
|
|
34
|
+
export declare function createProblemCodec<TProblem extends Problem, TWire extends z.infer<typeof ProblemWireSchema>>(problemType: new (spec: TWire) => TProblem, wireSchema: z.ZodType<TWire>): z.ZodType<TProblem>;
|
|
35
|
+
export declare const ProblemSchema: SchemaLike<Problem>;
|
package/build/problem.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import { ResponseExample } from './fetch.js';
|
|
16
|
+
import { defineSchema, } from './schema-runtime.js';
|
|
17
|
+
export const ProblemWireSchema = z.looseObject({
|
|
18
|
+
type: z.union([z.string(), z.instanceof(URL)]).optional(),
|
|
19
|
+
title: z.string(),
|
|
20
|
+
status: z.number(),
|
|
21
|
+
detail: z.string().optional(),
|
|
22
|
+
instance: z.union([z.string(), z.instanceof(URL)]).optional(),
|
|
23
|
+
});
|
|
24
|
+
export class Problem extends Error {
|
|
25
|
+
static BLANK_URL = new URL('about:blank');
|
|
26
|
+
type;
|
|
27
|
+
title;
|
|
28
|
+
status;
|
|
29
|
+
detail;
|
|
30
|
+
instance;
|
|
31
|
+
_parameters;
|
|
32
|
+
get parameters() {
|
|
33
|
+
return this._parameters;
|
|
34
|
+
}
|
|
35
|
+
constructor(spec) {
|
|
36
|
+
super(`${spec.status.toString()} ${spec.type} - ${spec.title}`);
|
|
37
|
+
const { type, title, status, detail, instance, ...parameters } = spec;
|
|
38
|
+
delete parameters.stack; // Fix for browsers that add stack to Error objects
|
|
39
|
+
this.type = Problem.parseURL(type) ?? Problem.BLANK_URL;
|
|
40
|
+
this.status = status;
|
|
41
|
+
this.title = title;
|
|
42
|
+
this.detail = detail;
|
|
43
|
+
this.instance = Problem.parseURL(instance);
|
|
44
|
+
this._parameters = Object.keys(parameters).length ? parameters : undefined;
|
|
45
|
+
}
|
|
46
|
+
toString() {
|
|
47
|
+
const self = this;
|
|
48
|
+
return JSON.stringify({
|
|
49
|
+
type: this.type,
|
|
50
|
+
status: this.status,
|
|
51
|
+
title: this.title,
|
|
52
|
+
detail: this.detail,
|
|
53
|
+
instance: this.instance,
|
|
54
|
+
url: self.request?.url,
|
|
55
|
+
response: self.response?.example,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
static fromStatus(status, title) {
|
|
59
|
+
return new Problem({
|
|
60
|
+
type: Problem.BLANK_URL,
|
|
61
|
+
title,
|
|
62
|
+
status,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
static async fromResponse(response) {
|
|
66
|
+
const [bodyExcerpt, body] = await ResponseExample.bodyExcerpt(response, 256);
|
|
67
|
+
return new Problem({
|
|
68
|
+
type: Problem.BLANK_URL,
|
|
69
|
+
title: response.statusText,
|
|
70
|
+
status: response.status,
|
|
71
|
+
request: {
|
|
72
|
+
url: response.url,
|
|
73
|
+
},
|
|
74
|
+
response: {
|
|
75
|
+
headers: response.headers,
|
|
76
|
+
ok: response.ok,
|
|
77
|
+
redirected: response.redirected,
|
|
78
|
+
status: response.status,
|
|
79
|
+
statusText: response.statusText,
|
|
80
|
+
type: response.type,
|
|
81
|
+
url: response.url,
|
|
82
|
+
body,
|
|
83
|
+
example: ResponseExample.build(response, bodyExcerpt),
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
static parseURL(value) {
|
|
88
|
+
if (value == null) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
if (value instanceof URL) {
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
if (typeof value === 'string') {
|
|
95
|
+
try {
|
|
96
|
+
return new URL(value);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export function createProblemCodec(problemType, wireSchema) {
|
|
106
|
+
return z.codec(wireSchema, z.instanceof(problemType), {
|
|
107
|
+
decode: (value) => new problemType(value),
|
|
108
|
+
encode: (value) => ({
|
|
109
|
+
type: value.type?.toString() ?? Problem.BLANK_URL.toString(),
|
|
110
|
+
title: value.title,
|
|
111
|
+
status: value.status,
|
|
112
|
+
detail: value.detail,
|
|
113
|
+
instance: value.instance?.toString(),
|
|
114
|
+
...value.parameters,
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export const ProblemSchema = defineSchema(() => createProblemCodec(Problem, ProblemWireSchema), {
|
|
119
|
+
id: Symbol.for('@outfoxx/sunday/ProblemSchema'),
|
|
120
|
+
debugName: 'ProblemSchema',
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=problem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RequestAdapter, RequestFactory } from './request-factory.js';
|
|
2
|
+
export declare abstract class HeaderTokenAuthorizingAdapter implements RequestAdapter {
|
|
3
|
+
header: string;
|
|
4
|
+
tokenHeaderType: string;
|
|
5
|
+
applyToken(request: Request, accessToken: string): Request;
|
|
6
|
+
abstract adapt(requestFactory: RequestFactory, request: Request): Promise<Request>;
|
|
7
|
+
}
|
|
8
|
+
export declare class StaticHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
9
|
+
private readonly accessToken;
|
|
10
|
+
constructor(accessToken: string);
|
|
11
|
+
adapt(_requestFactory: RequestFactory, request: Request): Promise<Request>;
|
|
12
|
+
}
|
|
13
|
+
export interface TokenAuthorization {
|
|
14
|
+
token: string;
|
|
15
|
+
expires: Date;
|
|
16
|
+
}
|
|
17
|
+
export declare class RefreshingHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
18
|
+
private readonly refresh;
|
|
19
|
+
private authorization?;
|
|
20
|
+
constructor(refresh: (requestFactory: RequestFactory) => Promise<TokenAuthorization>);
|
|
21
|
+
shouldRefresh(): boolean;
|
|
22
|
+
adapt(requestFactory: RequestFactory, request: Request): Promise<Request>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export class HeaderTokenAuthorizingAdapter {
|
|
15
|
+
header = 'Authorization';
|
|
16
|
+
tokenHeaderType = 'Bearer';
|
|
17
|
+
applyToken(request, accessToken) {
|
|
18
|
+
const requestClone = request.clone();
|
|
19
|
+
requestClone.headers.set(this.header, `${this.tokenHeaderType} ${accessToken}`);
|
|
20
|
+
return requestClone;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class StaticHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
24
|
+
accessToken;
|
|
25
|
+
constructor(accessToken) {
|
|
26
|
+
super();
|
|
27
|
+
this.accessToken = accessToken;
|
|
28
|
+
}
|
|
29
|
+
async adapt(_requestFactory, request) {
|
|
30
|
+
return this.applyToken(request, this.accessToken);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class RefreshingHeaderTokenAuthorizingAdapter extends HeaderTokenAuthorizingAdapter {
|
|
34
|
+
refresh;
|
|
35
|
+
authorization;
|
|
36
|
+
constructor(refresh) {
|
|
37
|
+
super();
|
|
38
|
+
this.refresh = refresh;
|
|
39
|
+
}
|
|
40
|
+
shouldRefresh() {
|
|
41
|
+
if (!this.authorization) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return this.authorization.expires.getTime() <= Date.now();
|
|
45
|
+
}
|
|
46
|
+
async adapt(requestFactory, request) {
|
|
47
|
+
if (!this.authorization || this.shouldRefresh()) {
|
|
48
|
+
this.authorization = await this.refresh(requestFactory);
|
|
49
|
+
}
|
|
50
|
+
return this.applyToken(request, this.authorization.token);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=request-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-adapters.js","sourceRoot":"","sources":["../src/request-adapters.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,MAAM,OAAgB,6BAA6B;IACjD,MAAM,GAAG,eAAe,CAAC;IACzB,eAAe,GAAG,QAAQ,CAAC;IAE3B,UAAU,CAAC,OAAgB,EAAE,WAAmB;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,YAAY,CAAC,OAAO,CAAC,GAAG,CACtB,IAAI,CAAC,MAAM,EACX,GAAG,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE,CACzC,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;CAMF;AAED,MAAM,OAAO,mCAAoC,SAAQ,6BAA6B;IACvD;IAA7B,YAA6B,WAAmB;QAC9C,KAAK,EAAE,CAAC;QADmB,gBAAW,GAAX,WAAW,CAAQ;IAEhD,CAAC;IAED,KAAK,CAAC,KAAK,CACT,eAA+B,EAC/B,OAAgB;QAEhB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF;AAOD,MAAM,OAAO,uCAAwC,SAAQ,6BAA6B;IAIrE;IAHX,aAAa,CAAsB;IAE3C,YACmB,OAEe;QAEhC,KAAK,EAAE,CAAC;QAJS,YAAO,GAAP,OAAO,CAEQ;IAGlC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK,CACT,cAA8B,EAC9B,OAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MediaType } from './media-type.js';
|
|
2
|
+
import { TextMediaTypeDecoder } from './media-type-codecs/media-type-decoder.js';
|
|
3
|
+
import { Problem } from './problem.js';
|
|
4
|
+
import { ResultResponse } from './result-response.js';
|
|
5
|
+
import { SchemaLike } from './schema-runtime.js';
|
|
6
|
+
import { URLTemplate } from './url-template.js';
|
|
7
|
+
import { Logger } from './logger.js';
|
|
8
|
+
export interface RequestFactory {
|
|
9
|
+
readonly baseUrl: URLTemplate;
|
|
10
|
+
registerProblem(type: URL | string, problemType: SchemaLike<Problem>): void;
|
|
11
|
+
request(requestSpec: RequestSpec<unknown>): Promise<Request>;
|
|
12
|
+
response(request: Request, dataExpected?: boolean): Promise<Response>;
|
|
13
|
+
response<B>(requestSpec: RequestSpec<B>, dataExpected?: boolean): Promise<Response>;
|
|
14
|
+
resultResponse<B, R>(requestSpec: RequestSpec<B>, resultType: SchemaLike<R>): Promise<ResultResponse<R>>;
|
|
15
|
+
resultResponse<B>(requestSpec: RequestSpec<B>): Promise<ResultResponse<void>>;
|
|
16
|
+
result<B, R>(requestSpec: RequestSpec<B>, resultType: SchemaLike<R>): Promise<R>;
|
|
17
|
+
result<B>(requestSpec: RequestSpec<B>): Promise<void>;
|
|
18
|
+
eventSource(requestSpec: RequestSpec<void>): ExtEventSource;
|
|
19
|
+
eventStream<E>(requestSpec: RequestSpec<void>, decoder: (decoder: TextMediaTypeDecoder, event: string | undefined, id: string | undefined, data: string, logger?: Logger) => E | undefined): AsyncIterable<E>;
|
|
20
|
+
}
|
|
21
|
+
export interface ExtEventSource extends EventSource {
|
|
22
|
+
connect(): void;
|
|
23
|
+
}
|
|
24
|
+
export type RequestMethod = 'GET' | 'PUT' | 'POST' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
|
25
|
+
export interface RequestSpec<B> {
|
|
26
|
+
method: RequestMethod;
|
|
27
|
+
pathTemplate: string;
|
|
28
|
+
pathParameters?: Record<string, unknown>;
|
|
29
|
+
queryParameters?: Record<string, unknown>;
|
|
30
|
+
body?: B;
|
|
31
|
+
bodyType?: SchemaLike<B>;
|
|
32
|
+
contentTypes?: MediaType[];
|
|
33
|
+
acceptTypes?: MediaType[];
|
|
34
|
+
headers?: Record<string, unknown>;
|
|
35
|
+
signal?: AbortSignal;
|
|
36
|
+
}
|
|
37
|
+
export interface RequestAdapter {
|
|
38
|
+
adapt(requestFactory: RequestFactory, request: Request): Promise<Request>;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-factory.js","sourceRoot":"","sources":["../src/request-factory.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result-response.js","sourceRoot":"","sources":["../src/result-response.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { SchemaPolicy } from './schema-policy.js';
|
|
3
|
+
export type BuiltinSchemaSet = {
|
|
4
|
+
readonly urlSchema: z.ZodType<URL>;
|
|
5
|
+
readonly arrayBufferSchema: z.ZodType<ArrayBuffer>;
|
|
6
|
+
};
|
|
7
|
+
export declare const UNKNOWN_SCHEMA: z.ZodUnknown;
|
|
8
|
+
export declare const ANY_SCHEMA: z.ZodUnknown;
|
|
9
|
+
export declare const NULL_SCHEMA: z.ZodNull;
|
|
10
|
+
export declare const STRING_SCHEMA: z.ZodString;
|
|
11
|
+
export declare const NUMBER_SCHEMA: z.ZodNumber;
|
|
12
|
+
export declare const BOOLEAN_SCHEMA: z.ZodBoolean;
|
|
13
|
+
export declare const UnknownSchema: z.ZodUnknown;
|
|
14
|
+
export declare const AnySchema: z.ZodUnknown;
|
|
15
|
+
export declare const NullSchema: z.ZodNull;
|
|
16
|
+
export declare const StringSchema: z.ZodString;
|
|
17
|
+
export declare const NumberSchema: z.ZodNumber;
|
|
18
|
+
export declare const BooleanSchema: z.ZodBoolean;
|
|
19
|
+
export declare function builtinSchemasForPolicy(policy: SchemaPolicy): BuiltinSchemaSet;
|
|
20
|
+
export declare const URLSchema: import("./schema-runtime.js").SchemaDef<z.ZodType<URL, unknown, z.core.$ZodTypeInternals<URL, unknown>>>;
|
|
21
|
+
export declare const ArrayBufferSchema: import("./schema-runtime.js").SchemaDef<z.ZodType<ArrayBuffer, unknown, z.core.$ZodTypeInternals<ArrayBuffer, unknown>>>;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// Copyright 2020 Outfox, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { TaggedValue } from 'cbor-redux';
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
import { base64Tag, base64UrlTag, uriTag } from './media-type-codecs/cbor-tags.js';
|
|
17
|
+
import { ArrayBufferEncoding, } from './schema-policy.js';
|
|
18
|
+
import { defineSchema } from './schema-runtime.js';
|
|
19
|
+
export const UNKNOWN_SCHEMA = z.unknown();
|
|
20
|
+
export const ANY_SCHEMA = UNKNOWN_SCHEMA;
|
|
21
|
+
export const NULL_SCHEMA = z.null();
|
|
22
|
+
export const STRING_SCHEMA = z.string();
|
|
23
|
+
export const NUMBER_SCHEMA = z.number();
|
|
24
|
+
export const BOOLEAN_SCHEMA = z.boolean();
|
|
25
|
+
export const UnknownSchema = UNKNOWN_SCHEMA;
|
|
26
|
+
export const AnySchema = ANY_SCHEMA;
|
|
27
|
+
export const NullSchema = NULL_SCHEMA;
|
|
28
|
+
export const StringSchema = STRING_SCHEMA;
|
|
29
|
+
export const NumberSchema = NUMBER_SCHEMA;
|
|
30
|
+
export const BooleanSchema = BOOLEAN_SCHEMA;
|
|
31
|
+
const URL_OUTPUT_SCHEMA = z.instanceof(URL);
|
|
32
|
+
const ARRAY_BUFFER_OUTPUT_SCHEMA = z.instanceof(ArrayBuffer);
|
|
33
|
+
const ARRAY_BUFFER_RAW_INPUT_SCHEMA = z.union([
|
|
34
|
+
ARRAY_BUFFER_OUTPUT_SCHEMA,
|
|
35
|
+
z.instanceof(Uint8Array),
|
|
36
|
+
]);
|
|
37
|
+
const policySchemas = new Map();
|
|
38
|
+
function decodeURL(value, ctx) {
|
|
39
|
+
try {
|
|
40
|
+
return new URL(value);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
ctx.issues.push({
|
|
44
|
+
code: 'invalid_format',
|
|
45
|
+
format: 'url',
|
|
46
|
+
input: value,
|
|
47
|
+
message: `Invalid URL value`,
|
|
48
|
+
});
|
|
49
|
+
return z.NEVER;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const URL_JSON_CODEC = z.codec(z.string(), URL_OUTPUT_SCHEMA, {
|
|
53
|
+
decode: decodeURL,
|
|
54
|
+
encode: (value) => value.toString(),
|
|
55
|
+
});
|
|
56
|
+
const URL_CBOR_CODEC = z.codec(z.union([z.string(), z.instanceof(TaggedValue)]), URL_OUTPUT_SCHEMA, {
|
|
57
|
+
decode: (value, ctx) => {
|
|
58
|
+
// Tagged URL input is accepted for compatibility and decoded before untagged string input.
|
|
59
|
+
if (value instanceof TaggedValue) {
|
|
60
|
+
if (value.tag == uriTag) {
|
|
61
|
+
const string = z.string().parse(value.value);
|
|
62
|
+
return decodeURL(string, ctx);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
ctx.issues.push({
|
|
66
|
+
code: 'invalid_value',
|
|
67
|
+
values: [uriTag],
|
|
68
|
+
input: value.tag,
|
|
69
|
+
message: `Invalid tag for URL`,
|
|
70
|
+
});
|
|
71
|
+
return z.NEVER;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return decodeURL(value, ctx);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
encode: (value) => {
|
|
79
|
+
// CBOR tag 32 carries the same URI string Jackson expects when tags are ignored.
|
|
80
|
+
return new TaggedValue(value.toString(), uriTag);
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
function base64Decoder(encoding) {
|
|
84
|
+
let options;
|
|
85
|
+
switch (encoding) {
|
|
86
|
+
case ArrayBufferEncoding.BASE64:
|
|
87
|
+
options = { alphabet: 'base64', lastChunkHandling: 'loose' };
|
|
88
|
+
break;
|
|
89
|
+
case ArrayBufferEncoding.BASE64URL:
|
|
90
|
+
options = { alphabet: 'base64url', lastChunkHandling: 'loose' };
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
throw new TypeError(`Invalid ArrayBufferEncoding: ${encoding}`);
|
|
94
|
+
}
|
|
95
|
+
return (value) => {
|
|
96
|
+
const array = Uint8Array.fromBase64(value, options);
|
|
97
|
+
return array
|
|
98
|
+
.buffer
|
|
99
|
+
.slice();
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function base64Encoder(encoding) {
|
|
103
|
+
let options;
|
|
104
|
+
switch (encoding) {
|
|
105
|
+
case ArrayBufferEncoding.BASE64:
|
|
106
|
+
options = { alphabet: 'base64', omitPadding: true };
|
|
107
|
+
break;
|
|
108
|
+
case ArrayBufferEncoding.BASE64URL:
|
|
109
|
+
options = { alphabet: 'base64url', omitPadding: true };
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
throw new TypeError(`Invalid ArrayBufferEncoding: ${encoding}`);
|
|
113
|
+
}
|
|
114
|
+
return (value) => {
|
|
115
|
+
return new Uint8Array(value).toBase64(options);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function createArrayBufferSchema(policy) {
|
|
119
|
+
switch (policy.format) {
|
|
120
|
+
case 'json':
|
|
121
|
+
return z.codec(z.string(), ARRAY_BUFFER_OUTPUT_SCHEMA, {
|
|
122
|
+
decode: base64Decoder(policy.arrayBufferEncoding),
|
|
123
|
+
encode: base64Encoder(policy.arrayBufferEncoding),
|
|
124
|
+
});
|
|
125
|
+
case 'cbor':
|
|
126
|
+
if (policy.arrayBufferEncoding == ArrayBufferEncoding.RAW_BYTES) {
|
|
127
|
+
return z.codec(ARRAY_BUFFER_RAW_INPUT_SCHEMA, ARRAY_BUFFER_OUTPUT_SCHEMA, {
|
|
128
|
+
decode: (v) => (ArrayBuffer.isView(v)
|
|
129
|
+
? v.buffer.slice(v.byteOffset, v.byteOffset + v.byteLength)
|
|
130
|
+
: v),
|
|
131
|
+
encode: (v) => v,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const b64Decode = base64Decoder(policy.arrayBufferEncoding);
|
|
136
|
+
const b64Encode = base64Encoder(policy.arrayBufferEncoding);
|
|
137
|
+
const textTag = policy.arrayBufferEncoding === ArrayBufferEncoding.BASE64 ? base64Tag : base64UrlTag;
|
|
138
|
+
return z.codec(z.union([z.string(), z.instanceof(TaggedValue)]), ARRAY_BUFFER_OUTPUT_SCHEMA, {
|
|
139
|
+
decode: (value, ctx) => {
|
|
140
|
+
// Tagged textual binary values are accepted for compatibility and decoded before policy-based untagged text.
|
|
141
|
+
if (value instanceof TaggedValue) {
|
|
142
|
+
const string = z.string().decode(value.value);
|
|
143
|
+
switch (value.tag) {
|
|
144
|
+
case base64Tag:
|
|
145
|
+
return Uint8Array
|
|
146
|
+
.fromBase64(string, { alphabet: 'base64', lastChunkHandling: 'loose' })
|
|
147
|
+
.buffer;
|
|
148
|
+
case base64UrlTag:
|
|
149
|
+
return Uint8Array
|
|
150
|
+
.fromBase64(string, { alphabet: 'base64url', lastChunkHandling: 'loose' })
|
|
151
|
+
.buffer;
|
|
152
|
+
default:
|
|
153
|
+
ctx.issues.push({
|
|
154
|
+
code: 'invalid_value',
|
|
155
|
+
values: [base64UrlTag, base64Tag],
|
|
156
|
+
input: value.tag
|
|
157
|
+
});
|
|
158
|
+
return z.NEVER;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return b64Decode(value);
|
|
162
|
+
},
|
|
163
|
+
encode: (value) => {
|
|
164
|
+
// CBOR tags 33/34 preserve Jackson-compatible textual payloads for base64 modes.
|
|
165
|
+
return new TaggedValue(b64Encode(value), textTag);
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function createPolicySchemas(policy) {
|
|
172
|
+
return {
|
|
173
|
+
urlSchema: policy.format === 'cbor' ? URL_CBOR_CODEC : URL_JSON_CODEC,
|
|
174
|
+
arrayBufferSchema: createArrayBufferSchema(policy),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function policyKey(policy) {
|
|
178
|
+
return [
|
|
179
|
+
policy.format,
|
|
180
|
+
policy.arrayBufferEncoding.toString(),
|
|
181
|
+
].join(':');
|
|
182
|
+
}
|
|
183
|
+
export function builtinSchemasForPolicy(policy) {
|
|
184
|
+
const key = policyKey(policy);
|
|
185
|
+
const cached = policySchemas.get(key);
|
|
186
|
+
if (cached) {
|
|
187
|
+
return cached;
|
|
188
|
+
}
|
|
189
|
+
const schemas = createPolicySchemas(policy);
|
|
190
|
+
policySchemas.set(key, schemas);
|
|
191
|
+
return schemas;
|
|
192
|
+
}
|
|
193
|
+
export const URLSchema = defineSchema((runtime) => builtinSchemasForPolicy(runtime.policy).urlSchema, {
|
|
194
|
+
id: Symbol.for('@outfoxx/sunday/URLSchema'),
|
|
195
|
+
debugName: 'URLSchema',
|
|
196
|
+
});
|
|
197
|
+
export const ArrayBufferSchema = defineSchema((runtime) => builtinSchemasForPolicy(runtime.policy).arrayBufferSchema, {
|
|
198
|
+
id: Symbol.for('@outfoxx/sunday/ArrayBufferSchema'),
|
|
199
|
+
debugName: 'ArrayBufferSchema',
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=schema-builtins.js.map
|