@outfoxx/sunday 1.1.0-beta.2 → 1.1.0-beta.21
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 +1 -1
- package/build/esm/any-type.js.map +1 -0
- package/build/esm/class-type.js.map +1 -0
- package/build/esm/date-time-types.js.map +1 -0
- package/{dist → build/esm}/event-parser.js +3 -4
- package/build/esm/event-parser.js.map +1 -0
- package/{dist → build/esm}/fetch-event-source.d.ts +0 -2
- package/{dist → build/esm}/fetch-event-source.js +59 -50
- package/build/esm/fetch-event-source.js.map +1 -0
- package/{dist → build/esm}/fetch-request-factory.js +11 -14
- package/build/esm/fetch-request-factory.js.map +1 -0
- package/{dist → build/esm}/fetch.js +5 -7
- package/build/esm/fetch.js.map +1 -0
- package/build/esm/header-parameters.js.map +1 -0
- package/{dist → build/esm}/index.d.ts +1 -0
- package/{dist → build/esm}/index.js +1 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/logger.js.map +1 -0
- package/build/esm/media-type-codecs/any-text-decoder.js.map +1 -0
- package/build/esm/media-type-codecs/any-text-encoder.js.map +1 -0
- package/build/esm/media-type-codecs/binary-decoder.js.map +1 -0
- package/build/esm/media-type-codecs/binary-encoder.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/cbor-decoder.js +11 -7
- package/build/esm/media-type-codecs/cbor-decoder.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/cbor-encoder.d.ts +2 -1
- package/{dist → build/esm}/media-type-codecs/cbor-encoder.js +53 -50
- package/build/esm/media-type-codecs/cbor-encoder.js.map +1 -0
- package/build/esm/media-type-codecs/cbor-tags.js.map +1 -0
- package/build/esm/media-type-codecs/json-decoder.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/json-encoder.js +46 -51
- package/build/esm/media-type-codecs/json-encoder.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/media-type-decoder.js +1 -2
- package/build/esm/media-type-codecs/media-type-decoder.js.map +1 -0
- package/build/esm/media-type-codecs/media-type-decoders.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/media-type-encoder.js +2 -4
- package/build/esm/media-type-codecs/media-type-encoder.js.map +1 -0
- package/build/esm/media-type-codecs/media-type-encoders.js.map +1 -0
- package/{dist → build/esm}/media-type-codecs/www-form-url-encoder.js +12 -6
- package/build/esm/media-type-codecs/www-form-url-encoder.js.map +1 -0
- package/{dist → build/esm}/media-type.js +14 -17
- package/build/esm/media-type.js.map +1 -0
- package/{dist → build/esm}/problem.js +5 -7
- package/build/esm/problem.js.map +1 -0
- package/build/esm/request-adapters.d.ts +23 -0
- package/build/esm/request-adapters.js +52 -0
- package/build/esm/request-adapters.js.map +1 -0
- package/{dist → build/esm}/request-factory.d.ts +3 -1
- package/build/esm/request-factory.js.map +1 -0
- package/build/esm/result-response.js.map +1 -0
- package/build/esm/sunday-error.js.map +1 -0
- package/{dist → build/esm}/url-template.js +2 -2
- package/build/esm/url-template.js.map +1 -0
- package/{dist → build/esm}/util/any.js +1 -2
- package/build/esm/util/any.js.map +1 -0
- package/build/esm/util/base64.js.map +1 -0
- package/{dist → build/esm}/util/error.js +1 -1
- package/build/esm/util/error.js.map +1 -0
- package/build/esm/util/hex.js.map +1 -0
- package/build/esm/util/rxjs.d.ts +27 -0
- package/build/esm/util/rxjs.js +79 -0
- package/build/esm/util/rxjs.js.map +1 -0
- package/build/esm/util/temporal.js.map +1 -0
- package/build/esnext/any-type.d.ts +4 -0
- package/build/esnext/any-type.js +15 -0
- package/build/esnext/any-type.js.map +1 -0
- package/build/esnext/class-type.d.ts +2 -0
- package/build/esnext/class-type.js +15 -0
- package/build/esnext/class-type.js.map +1 -0
- package/build/esnext/date-time-types.d.ts +2 -0
- package/build/esnext/date-time-types.js +16 -0
- package/build/esnext/date-time-types.js.map +1 -0
- package/build/esnext/event-parser.d.ts +17 -0
- package/build/esnext/event-parser.js +152 -0
- package/build/esnext/event-parser.js.map +1 -0
- package/build/esnext/fetch-event-source.d.ts +56 -0
- package/build/esnext/fetch-event-source.js +296 -0
- package/build/esnext/fetch-event-source.js.map +1 -0
- package/build/esnext/fetch-request-factory.d.ts +34 -0
- package/build/esnext/fetch-request-factory.js +178 -0
- package/build/esnext/fetch-request-factory.js.map +1 -0
- package/build/esnext/fetch.d.ts +7 -0
- package/build/esnext/fetch.js +88 -0
- package/build/esnext/fetch.js.map +1 -0
- package/build/esnext/header-parameters.d.ts +3 -0
- package/build/esnext/header-parameters.js +53 -0
- package/build/esnext/header-parameters.js.map +1 -0
- package/build/esnext/index.d.ts +27 -0
- package/build/esnext/index.js +41 -0
- package/build/esnext/index.js.map +1 -0
- package/build/esnext/logger.d.ts +8 -0
- package/build/esnext/logger.js +15 -0
- package/build/esnext/logger.js.map +1 -0
- package/build/esnext/media-type-codecs/any-text-decoder.d.ts +7 -0
- package/build/esnext/media-type-codecs/any-text-decoder.js +29 -0
- package/build/esnext/media-type-codecs/any-text-decoder.js.map +1 -0
- package/build/esnext/media-type-codecs/any-text-encoder.d.ts +5 -0
- package/build/esnext/media-type-codecs/any-text-encoder.js +23 -0
- package/build/esnext/media-type-codecs/any-text-encoder.js.map +1 -0
- package/build/esnext/media-type-codecs/binary-decoder.d.ts +6 -0
- package/build/esnext/media-type-codecs/binary-decoder.js +29 -0
- package/build/esnext/media-type-codecs/binary-decoder.js.map +1 -0
- package/build/esnext/media-type-codecs/binary-encoder.d.ts +5 -0
- package/build/esnext/media-type-codecs/binary-encoder.js +26 -0
- package/build/esnext/media-type-codecs/binary-encoder.js.map +1 -0
- package/build/esnext/media-type-codecs/cbor-decoder.d.ts +39 -0
- package/build/esnext/media-type-codecs/cbor-decoder.js +430 -0
- package/build/esnext/media-type-codecs/cbor-decoder.js.map +1 -0
- package/build/esnext/media-type-codecs/cbor-encoder.d.ts +44 -0
- package/build/esnext/media-type-codecs/cbor-encoder.js +242 -0
- package/build/esnext/media-type-codecs/cbor-encoder.js.map +1 -0
- package/build/esnext/media-type-codecs/cbor-tags.d.ts +4 -0
- package/build/esnext/media-type-codecs/cbor-tags.js +18 -0
- package/build/esnext/media-type-codecs/cbor-tags.js.map +1 -0
- package/build/esnext/media-type-codecs/json-decoder.d.ts +39 -0
- package/build/esnext/media-type-codecs/json-decoder.js +380 -0
- package/build/esnext/media-type-codecs/json-decoder.js.map +1 -0
- package/build/esnext/media-type-codecs/json-encoder.d.ts +44 -0
- package/build/esnext/media-type-codecs/json-encoder.js +271 -0
- package/build/esnext/media-type-codecs/json-encoder.js.map +1 -0
- package/build/esnext/media-type-codecs/media-type-decoder.d.ts +11 -0
- package/build/esnext/media-type-codecs/media-type-decoder.js +18 -0
- package/build/esnext/media-type-codecs/media-type-decoder.js.map +1 -0
- package/build/esnext/media-type-codecs/media-type-decoders.d.ts +18 -0
- package/build/esnext/media-type-codecs/media-type-decoders.js +58 -0
- package/build/esnext/media-type-codecs/media-type-decoders.js.map +1 -0
- package/build/esnext/media-type-codecs/media-type-encoder.d.ts +12 -0
- package/build/esnext/media-type-codecs/media-type-encoder.js +22 -0
- package/build/esnext/media-type-codecs/media-type-encoder.js.map +1 -0
- package/build/esnext/media-type-codecs/media-type-encoders.d.ts +18 -0
- package/build/esnext/media-type-codecs/media-type-encoders.js +60 -0
- package/build/esnext/media-type-codecs/media-type-encoders.js.map +1 -0
- package/build/esnext/media-type-codecs/www-form-url-encoder.d.ts +59 -0
- package/build/esnext/media-type-codecs/www-form-url-encoder.js +198 -0
- package/build/esnext/media-type-codecs/www-form-url-encoder.js.map +1 -0
- package/build/esnext/media-type.d.ts +94 -0
- package/build/esnext/media-type.js +302 -0
- package/build/esnext/media-type.js.map +1 -0
- package/build/esnext/problem.d.ts +31 -0
- package/build/esnext/problem.js +156 -0
- package/build/esnext/problem.js.map +1 -0
- package/build/esnext/request-adapters.d.ts +23 -0
- package/build/esnext/request-adapters.js +52 -0
- package/build/esnext/request-adapters.js.map +1 -0
- package/build/esnext/request-factory.d.ts +46 -0
- package/build/esnext/request-factory.js +15 -0
- package/build/esnext/request-factory.js.map +1 -0
- package/build/esnext/result-response.d.ts +4 -0
- package/build/esnext/result-response.js +15 -0
- package/build/esnext/result-response.js.map +1 -0
- package/build/esnext/sunday-error.d.ts +11 -0
- package/build/esnext/sunday-error.js +31 -0
- package/build/esnext/sunday-error.js.map +1 -0
- package/build/esnext/url-template.d.ts +6 -0
- package/build/esnext/url-template.js +31 -0
- package/build/esnext/url-template.js.map +1 -0
- package/build/esnext/util/any.d.ts +2 -0
- package/build/esnext/util/any.js +23 -0
- package/build/esnext/util/any.js.map +1 -0
- package/build/esnext/util/base64.d.ts +5 -0
- package/build/esnext/util/base64.js +77 -0
- package/build/esnext/util/base64.js.map +1 -0
- package/build/esnext/util/error.d.ts +2 -0
- package/build/esnext/util/error.js +26 -0
- package/build/esnext/util/error.js.map +1 -0
- package/build/esnext/util/hex.d.ts +4 -0
- package/build/esnext/util/hex.js +32 -0
- package/build/esnext/util/hex.js.map +1 -0
- package/build/esnext/util/rxjs.d.ts +27 -0
- package/build/esnext/util/rxjs.js +79 -0
- package/build/esnext/util/rxjs.js.map +1 -0
- package/build/esnext/util/temporal.d.ts +2 -0
- package/build/esnext/util/temporal.js +31 -0
- package/build/esnext/util/temporal.js.map +1 -0
- package/build/main/any-type.d.ts +4 -0
- package/build/main/any-type.js +16 -0
- package/build/main/any-type.js.map +1 -0
- package/build/main/class-type.d.ts +2 -0
- package/build/main/class-type.js +16 -0
- package/build/main/class-type.js.map +1 -0
- package/build/main/date-time-types.d.ts +2 -0
- package/build/main/date-time-types.js +27 -0
- package/build/main/date-time-types.js.map +1 -0
- package/build/main/event-parser.d.ts +17 -0
- package/build/main/event-parser.js +156 -0
- package/build/main/event-parser.js.map +1 -0
- package/build/main/fetch-event-source.d.ts +56 -0
- package/build/main/fetch-event-source.js +300 -0
- package/build/main/fetch-event-source.js.map +1 -0
- package/build/main/fetch-request-factory.d.ts +34 -0
- package/build/main/fetch-request-factory.js +182 -0
- package/build/main/fetch-request-factory.js.map +1 -0
- package/build/main/fetch.d.ts +7 -0
- package/build/main/fetch.js +92 -0
- package/build/main/fetch.js.map +1 -0
- package/build/main/header-parameters.d.ts +3 -0
- package/build/main/header-parameters.js +56 -0
- package/build/main/header-parameters.js.map +1 -0
- package/build/main/index.d.ts +27 -0
- package/build/main/index.js +53 -0
- package/build/main/index.js.map +1 -0
- package/build/main/logger.d.ts +8 -0
- package/build/main/logger.js +16 -0
- package/build/main/logger.js.map +1 -0
- package/build/main/media-type-codecs/any-text-decoder.d.ts +7 -0
- package/build/main/media-type-codecs/any-text-decoder.js +33 -0
- package/build/main/media-type-codecs/any-text-decoder.js.map +1 -0
- package/build/main/media-type-codecs/any-text-encoder.d.ts +5 -0
- package/build/main/media-type-codecs/any-text-encoder.js +27 -0
- package/build/main/media-type-codecs/any-text-encoder.js.map +1 -0
- package/build/main/media-type-codecs/binary-decoder.d.ts +6 -0
- package/build/main/media-type-codecs/binary-decoder.js +33 -0
- package/build/main/media-type-codecs/binary-decoder.js.map +1 -0
- package/build/main/media-type-codecs/binary-encoder.d.ts +5 -0
- package/build/main/media-type-codecs/binary-encoder.js +30 -0
- package/build/main/media-type-codecs/binary-encoder.js.map +1 -0
- package/build/main/media-type-codecs/cbor-decoder.d.ts +39 -0
- package/build/main/media-type-codecs/cbor-decoder.js +434 -0
- package/build/main/media-type-codecs/cbor-decoder.js.map +1 -0
- package/build/main/media-type-codecs/cbor-encoder.d.ts +44 -0
- package/build/main/media-type-codecs/cbor-encoder.js +246 -0
- package/build/main/media-type-codecs/cbor-encoder.js.map +1 -0
- package/build/main/media-type-codecs/cbor-tags.d.ts +4 -0
- package/build/main/media-type-codecs/cbor-tags.js +21 -0
- package/build/main/media-type-codecs/cbor-tags.js.map +1 -0
- package/build/main/media-type-codecs/json-decoder.d.ts +39 -0
- package/build/main/media-type-codecs/json-decoder.js +384 -0
- package/build/main/media-type-codecs/json-decoder.js.map +1 -0
- package/build/main/media-type-codecs/json-encoder.d.ts +44 -0
- package/build/main/media-type-codecs/json-encoder.js +275 -0
- package/build/main/media-type-codecs/json-encoder.js.map +1 -0
- package/build/main/media-type-codecs/media-type-decoder.d.ts +11 -0
- package/build/main/media-type-codecs/media-type-decoder.js +22 -0
- package/build/main/media-type-codecs/media-type-decoder.js.map +1 -0
- package/build/main/media-type-codecs/media-type-decoders.d.ts +18 -0
- package/build/main/media-type-codecs/media-type-decoders.js +62 -0
- package/build/main/media-type-codecs/media-type-decoders.js.map +1 -0
- package/build/main/media-type-codecs/media-type-encoder.d.ts +12 -0
- package/build/main/media-type-codecs/media-type-encoder.js +27 -0
- package/build/main/media-type-codecs/media-type-encoder.js.map +1 -0
- package/build/main/media-type-codecs/media-type-encoders.d.ts +18 -0
- package/build/main/media-type-codecs/media-type-encoders.js +64 -0
- package/build/main/media-type-codecs/media-type-encoders.js.map +1 -0
- package/build/main/media-type-codecs/www-form-url-encoder.d.ts +59 -0
- package/build/main/media-type-codecs/www-form-url-encoder.js +202 -0
- package/build/main/media-type-codecs/www-form-url-encoder.js.map +1 -0
- package/build/main/media-type.d.ts +94 -0
- package/build/main/media-type.js +306 -0
- package/build/main/media-type.js.map +1 -0
- package/build/main/problem.d.ts +31 -0
- package/build/main/problem.js +159 -0
- package/build/main/problem.js.map +1 -0
- package/build/main/request-adapters.d.ts +23 -0
- package/build/main/request-adapters.js +58 -0
- package/build/main/request-adapters.js.map +1 -0
- package/build/main/request-factory.d.ts +46 -0
- package/build/main/request-factory.js +16 -0
- package/build/main/request-factory.js.map +1 -0
- package/build/main/result-response.d.ts +4 -0
- package/build/main/result-response.js +16 -0
- package/build/main/result-response.js.map +1 -0
- package/build/main/sunday-error.d.ts +11 -0
- package/build/main/sunday-error.js +35 -0
- package/build/main/sunday-error.js.map +1 -0
- package/build/main/url-template.d.ts +6 -0
- package/build/main/url-template.js +35 -0
- package/build/main/url-template.js.map +1 -0
- package/build/main/util/any.d.ts +2 -0
- package/build/main/util/any.js +28 -0
- package/build/main/util/any.js.map +1 -0
- package/build/main/util/base64.d.ts +5 -0
- package/build/main/util/base64.js +80 -0
- package/build/main/util/base64.js.map +1 -0
- package/build/main/util/error.d.ts +2 -0
- package/build/main/util/error.js +31 -0
- package/build/main/util/error.js.map +1 -0
- package/build/main/util/hex.d.ts +4 -0
- package/build/main/util/hex.js +35 -0
- package/build/main/util/hex.js.map +1 -0
- package/build/main/util/rxjs.d.ts +27 -0
- package/build/main/util/rxjs.js +86 -0
- package/build/main/util/rxjs.js.map +1 -0
- package/build/main/util/temporal.d.ts +2 -0
- package/build/main/util/temporal.js +36 -0
- package/build/main/util/temporal.js.map +1 -0
- package/package.json +48 -34
- package/src/fetch-event-source.ts +68 -42
- package/src/fetch-request-factory.ts +8 -5
- package/src/index.ts +1 -0
- package/src/media-type-codecs/cbor-decoder.ts +19 -10
- package/src/media-type-codecs/cbor-encoder.ts +57 -56
- package/src/media-type-codecs/json-encoder.ts +47 -54
- package/src/media-type-codecs/www-form-url-encoder.ts +14 -5
- package/src/problem.ts +1 -0
- package/src/request-adapters.ts +81 -0
- package/src/request-factory.ts +3 -1
- package/src/url-template.ts +2 -3
- package/src/util/rxjs.ts +84 -2
- package/dist/any-type.js.map +0 -1
- package/dist/class-type.js.map +0 -1
- package/dist/date-time-types.js.map +0 -1
- package/dist/event-parser.js.map +0 -1
- package/dist/fetch-event-source.js.map +0 -1
- package/dist/fetch-request-factory.js.map +0 -1
- package/dist/fetch.js.map +0 -1
- package/dist/header-parameters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/media-type-codecs/any-text-decoder.js.map +0 -1
- package/dist/media-type-codecs/any-text-encoder.js.map +0 -1
- package/dist/media-type-codecs/binary-decoder.js.map +0 -1
- package/dist/media-type-codecs/binary-encoder.js.map +0 -1
- package/dist/media-type-codecs/cbor-decoder.js.map +0 -1
- package/dist/media-type-codecs/cbor-encoder.js.map +0 -1
- package/dist/media-type-codecs/cbor-tags.js.map +0 -1
- package/dist/media-type-codecs/json-decoder.js.map +0 -1
- package/dist/media-type-codecs/json-encoder.js.map +0 -1
- package/dist/media-type-codecs/media-type-decoder.js.map +0 -1
- package/dist/media-type-codecs/media-type-decoders.js.map +0 -1
- package/dist/media-type-codecs/media-type-encoder.js.map +0 -1
- package/dist/media-type-codecs/media-type-encoders.js.map +0 -1
- package/dist/media-type-codecs/www-form-url-encoder.js.map +0 -1
- package/dist/media-type.js.map +0 -1
- package/dist/problem.js.map +0 -1
- package/dist/request-factory.js.map +0 -1
- package/dist/result-response.js.map +0 -1
- package/dist/sunday-error.js.map +0 -1
- package/dist/url-template.js.map +0 -1
- package/dist/util/any.js.map +0 -1
- package/dist/util/base64.js.map +0 -1
- package/dist/util/error.js.map +0 -1
- package/dist/util/hex.js.map +0 -1
- package/dist/util/rxjs.d.ts +0 -5
- package/dist/util/rxjs.js +0 -31
- package/dist/util/rxjs.js.map +0 -1
- package/dist/util/stream-rxjs.d.ts +0 -2
- package/dist/util/stream-rxjs.js +0 -39
- package/dist/util/stream-rxjs.js.map +0 -1
- package/dist/util/temporal.js.map +0 -1
- package/src/util/stream-rxjs.ts +0 -42
- /package/{dist → build/esm}/any-type.d.ts +0 -0
- /package/{dist → build/esm}/any-type.js +0 -0
- /package/{dist → build/esm}/class-type.d.ts +0 -0
- /package/{dist → build/esm}/class-type.js +0 -0
- /package/{dist → build/esm}/date-time-types.d.ts +0 -0
- /package/{dist → build/esm}/date-time-types.js +0 -0
- /package/{dist → build/esm}/event-parser.d.ts +0 -0
- /package/{dist → build/esm}/fetch-request-factory.d.ts +0 -0
- /package/{dist → build/esm}/fetch.d.ts +0 -0
- /package/{dist → build/esm}/header-parameters.d.ts +0 -0
- /package/{dist → build/esm}/header-parameters.js +0 -0
- /package/{dist → build/esm}/logger.d.ts +0 -0
- /package/{dist → build/esm}/logger.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/any-text-decoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/any-text-decoder.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/any-text-encoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/any-text-encoder.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/binary-decoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/binary-decoder.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/binary-encoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/binary-encoder.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/cbor-decoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/cbor-tags.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/cbor-tags.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/json-decoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/json-decoder.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/json-encoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-decoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-decoders.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-decoders.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-encoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-encoders.d.ts +0 -0
- /package/{dist → build/esm}/media-type-codecs/media-type-encoders.js +0 -0
- /package/{dist → build/esm}/media-type-codecs/www-form-url-encoder.d.ts +0 -0
- /package/{dist → build/esm}/media-type.d.ts +0 -0
- /package/{dist → build/esm}/problem.d.ts +0 -0
- /package/{dist → build/esm}/request-factory.js +0 -0
- /package/{dist → build/esm}/result-response.d.ts +0 -0
- /package/{dist → build/esm}/result-response.js +0 -0
- /package/{dist → build/esm}/sunday-error.d.ts +0 -0
- /package/{dist → build/esm}/sunday-error.js +0 -0
- /package/{dist → build/esm}/url-template.d.ts +0 -0
- /package/{dist → build/esm}/util/any.d.ts +0 -0
- /package/{dist → build/esm}/util/base64.d.ts +0 -0
- /package/{dist → build/esm}/util/base64.js +0 -0
- /package/{dist → build/esm}/util/error.d.ts +0 -0
- /package/{dist → build/esm}/util/hex.d.ts +0 -0
- /package/{dist → build/esm}/util/hex.js +0 -0
- /package/{dist → build/esm}/util/temporal.d.ts +0 -0
- /package/{dist → build/esm}/util/temporal.js +0 -0
|
@@ -0,0 +1,271 @@
|
|
|
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 { ChronoField, DateTimeFormatter, DateTimeFormatterBuilder, Instant, LocalDate, LocalDateTime, LocalTime, OffsetDateTime, OffsetTime, ResolverStyle, ZonedDateTime, } from '@js-joda/core';
|
|
15
|
+
import { JsonIncludeType, JsonStringifier } from '@outfoxx/jackson-js';
|
|
16
|
+
import 'reflect-metadata';
|
|
17
|
+
import { Base64 } from '../util/base64';
|
|
18
|
+
import { encodeSeconds, secondsToNumber } from '../util/temporal';
|
|
19
|
+
export class JSONEncoder {
|
|
20
|
+
constructor(dateEncoding) {
|
|
21
|
+
this.dateEncoding = dateEncoding;
|
|
22
|
+
this.stringifier = new JsonStringifier();
|
|
23
|
+
this.instantSerializer = (_, value) => {
|
|
24
|
+
if (value == null) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
switch (this.dateEncoding) {
|
|
28
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
29
|
+
return DateTimeFormatter.ISO_INSTANT.format(value);
|
|
30
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
31
|
+
return value.toEpochMilli();
|
|
32
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
33
|
+
return secondsToNumber(value.epochSecond(), value.nano());
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
this.zonedDateTimeSerializer = (_, value) => {
|
|
37
|
+
if (value == null) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
switch (this.dateEncoding) {
|
|
41
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
42
|
+
return DateTimeFormatter.ISO_ZONED_DATE_TIME.format(value);
|
|
43
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
44
|
+
return value.toInstant().toEpochMilli();
|
|
45
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
46
|
+
const instant = value.toInstant();
|
|
47
|
+
return secondsToNumber(instant.epochSecond(), instant.nano());
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
this.offsetDateTimeSerializer = (_, value) => {
|
|
51
|
+
if (value == null) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
switch (this.dateEncoding) {
|
|
55
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
56
|
+
return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value);
|
|
57
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
58
|
+
return value.toInstant().toEpochMilli();
|
|
59
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
60
|
+
const instant = value.toInstant();
|
|
61
|
+
return secondsToNumber(instant.epochSecond(), instant.nano());
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
this.offsetTimeFormatter = new DateTimeFormatterBuilder()
|
|
65
|
+
.parseCaseInsensitive()
|
|
66
|
+
.append(DateTimeFormatter.ISO_LOCAL_TIME)
|
|
67
|
+
.appendOffsetId()
|
|
68
|
+
.toFormatter(ResolverStyle.STRICT);
|
|
69
|
+
this.offsetTimeSerializer = (_, value) => {
|
|
70
|
+
if (value == null) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
if (this.dateEncoding == JSONEncoder.DateEncoding.ISO8601) {
|
|
74
|
+
return this.offsetTimeFormatter.format(value);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return [
|
|
78
|
+
value.hour(),
|
|
79
|
+
value.minute(),
|
|
80
|
+
...encodeSeconds(value.second(), this.dateEncoding == JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
81
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
82
|
+
: value.nano()),
|
|
83
|
+
value.offset().toString(),
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
this.localDateTimeSerializer = (_, value) => {
|
|
88
|
+
if (value == null) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
if (this.dateEncoding == JSONEncoder.DateEncoding.ISO8601) {
|
|
92
|
+
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return [
|
|
96
|
+
value.year(),
|
|
97
|
+
value.monthValue(),
|
|
98
|
+
value.dayOfMonth(),
|
|
99
|
+
value.hour(),
|
|
100
|
+
value.minute(),
|
|
101
|
+
...encodeSeconds(value.second(), this.dateEncoding == JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
102
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
103
|
+
: value.nano()),
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
this.localDateSerializer = (_, value) => {
|
|
108
|
+
if (value == null) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
if (this.dateEncoding == JSONEncoder.DateEncoding.ISO8601) {
|
|
112
|
+
return DateTimeFormatter.ISO_LOCAL_DATE.format(value);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return [value.year(), value.monthValue(), value.dayOfMonth()];
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
this.localTimeSerializer = (_, value) => {
|
|
119
|
+
if (value == null) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
if (this.dateEncoding == JSONEncoder.DateEncoding.ISO8601) {
|
|
123
|
+
return DateTimeFormatter.ISO_LOCAL_TIME.format(value);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
return [
|
|
127
|
+
value.hour(),
|
|
128
|
+
value.minute(),
|
|
129
|
+
...encodeSeconds(value.second(), this.dateEncoding == JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH
|
|
130
|
+
? value.get(ChronoField.MILLI_OF_SECOND)
|
|
131
|
+
: value.nano()),
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
this.dateSerializer = (_, value) => {
|
|
136
|
+
if (value == null) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
switch (this.dateEncoding) {
|
|
140
|
+
case JSONEncoder.DateEncoding.ISO8601:
|
|
141
|
+
return value.toISOString();
|
|
142
|
+
case JSONEncoder.DateEncoding.MILLISECONDS_SINCE_EPOCH:
|
|
143
|
+
return value.getTime();
|
|
144
|
+
case JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH:
|
|
145
|
+
return value.getTime() / 1000.0;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this.urlSerializer = (_, value) => {
|
|
149
|
+
if (value == null) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
return value.toString();
|
|
153
|
+
};
|
|
154
|
+
this.arrayBufferSerializer = (_, value) => {
|
|
155
|
+
if (value == null) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
return Base64.encode(value);
|
|
159
|
+
};
|
|
160
|
+
this.customSerializers = [
|
|
161
|
+
{
|
|
162
|
+
type: () => Date,
|
|
163
|
+
mapper: this.dateSerializer,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: () => Instant,
|
|
167
|
+
mapper: this.instantSerializer,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: () => ZonedDateTime,
|
|
171
|
+
mapper: this.zonedDateTimeSerializer,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: () => OffsetDateTime,
|
|
175
|
+
mapper: this.offsetDateTimeSerializer,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: () => OffsetTime,
|
|
179
|
+
mapper: this.offsetTimeSerializer,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: () => LocalDateTime,
|
|
183
|
+
mapper: this.localDateTimeSerializer,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: () => LocalDate,
|
|
187
|
+
mapper: this.localDateSerializer,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: () => LocalTime,
|
|
191
|
+
mapper: this.localTimeSerializer,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
type: () => URL,
|
|
195
|
+
mapper: this.urlSerializer,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
type: () => ArrayBuffer,
|
|
199
|
+
mapper: this.arrayBufferSerializer,
|
|
200
|
+
},
|
|
201
|
+
];
|
|
202
|
+
}
|
|
203
|
+
static get default() {
|
|
204
|
+
return new JSONEncoder(JSONEncoder.DateEncoding.DECIMAL_SECONDS_SINCE_EPOCH);
|
|
205
|
+
}
|
|
206
|
+
encode(value, type, includeNulls = false) {
|
|
207
|
+
// Use natural type when subtypes exist
|
|
208
|
+
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes',
|
|
209
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
210
|
+
value.constructor ?? {})) {
|
|
211
|
+
type = [Object];
|
|
212
|
+
}
|
|
213
|
+
return this.stringifier.stringify(value, {
|
|
214
|
+
serializers: this.customSerializers,
|
|
215
|
+
features: {
|
|
216
|
+
serialization: {
|
|
217
|
+
DEFAULT_PROPERTY_INCLUSION: {
|
|
218
|
+
value: includeNulls
|
|
219
|
+
? JsonIncludeType.ALWAYS
|
|
220
|
+
: JsonIncludeType.NON_NULL,
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
mainCreator: () => type ?? [Object],
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
encodeObject(value, type, includeNulls = false) {
|
|
228
|
+
// Use natural type when subtypes exist
|
|
229
|
+
if (Reflect.hasMetadata('jackson:defaultContextGroup:JsonSubTypes',
|
|
230
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
231
|
+
value.constructor ?? {})) {
|
|
232
|
+
type = [Object];
|
|
233
|
+
}
|
|
234
|
+
return this.stringifier.transform(value, {
|
|
235
|
+
serializers: this.customSerializers,
|
|
236
|
+
features: {
|
|
237
|
+
serialization: {
|
|
238
|
+
DEFAULT_PROPERTY_INCLUSION: {
|
|
239
|
+
value: includeNulls
|
|
240
|
+
? JsonIncludeType.ALWAYS
|
|
241
|
+
: JsonIncludeType.NON_NULL,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
mainCreator: () => type ?? [Object],
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
(function (JSONEncoder) {
|
|
250
|
+
/**
|
|
251
|
+
* Configures how temporal values are encoded.
|
|
252
|
+
*/
|
|
253
|
+
let DateEncoding;
|
|
254
|
+
(function (DateEncoding) {
|
|
255
|
+
/**
|
|
256
|
+
* Encode temporal values numerically using seconds with decimal
|
|
257
|
+
* sub-second precision.
|
|
258
|
+
*/
|
|
259
|
+
DateEncoding[DateEncoding["DECIMAL_SECONDS_SINCE_EPOCH"] = 0] = "DECIMAL_SECONDS_SINCE_EPOCH";
|
|
260
|
+
/**
|
|
261
|
+
* Encode temporal values numerically using integer milliseconds.
|
|
262
|
+
*/
|
|
263
|
+
DateEncoding[DateEncoding["MILLISECONDS_SINCE_EPOCH"] = 1] = "MILLISECONDS_SINCE_EPOCH";
|
|
264
|
+
/**
|
|
265
|
+
* Encode temporal values values as an ISO-8601-formatted string (in
|
|
266
|
+
* RFC 3339 format). This is the default behavior.
|
|
267
|
+
*/
|
|
268
|
+
DateEncoding[DateEncoding["ISO8601"] = 2] = "ISO8601";
|
|
269
|
+
})(DateEncoding = JSONEncoder.DateEncoding || (JSONEncoder.DateEncoding = {}));
|
|
270
|
+
})(JSONEncoder || (JSONEncoder = {}));
|
|
271
|
+
//# sourceMappingURL=json-encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-encoder.js","sourceRoot":"","sources":["../../../src/media-type-codecs/json-encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AnyType } from '../any-type';
|
|
2
|
+
export interface MediaTypeDecoder {
|
|
3
|
+
decode<T>(response: Response, type: AnyType): Promise<T>;
|
|
4
|
+
}
|
|
5
|
+
export interface TextMediaTypeDecoder extends MediaTypeDecoder {
|
|
6
|
+
decodeText<T>(text: string, type: AnyType): T;
|
|
7
|
+
}
|
|
8
|
+
export interface StructuredMediaTypeDecoder extends MediaTypeDecoder {
|
|
9
|
+
decodeObject<T>(data: unknown, type: AnyType): T;
|
|
10
|
+
}
|
|
11
|
+
export declare function isStructuredMediaTypeDecoder(decoder: MediaTypeDecoder | StructuredMediaTypeDecoder | undefined): decoder is StructuredMediaTypeDecoder;
|
|
@@ -0,0 +1,18 @@
|
|
|
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 function isStructuredMediaTypeDecoder(decoder) {
|
|
15
|
+
const rec = decoder;
|
|
16
|
+
return !!rec.decodeObject ?? false;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=media-type-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-decoder.js","sourceRoot":"","sources":["../../../src/media-type-codecs/media-type-decoder.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;AAgBjC,MAAM,UAAU,4BAA4B,CAC1C,OAAkE;IAElE,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MediaType } from '../media-type';
|
|
2
|
+
import { MediaTypeDecoder } from './media-type-decoder';
|
|
3
|
+
export interface MediaTypeDecodersBuilder {
|
|
4
|
+
addDefaults(): MediaTypeDecodersBuilder;
|
|
5
|
+
add(mediaType: MediaType, decoder: MediaTypeDecoder): MediaTypeDecodersBuilder;
|
|
6
|
+
build(): MediaTypeDecoders;
|
|
7
|
+
}
|
|
8
|
+
export interface MediaTypeDecodersBuilderConstructor {
|
|
9
|
+
new (): MediaTypeDecodersBuilder;
|
|
10
|
+
}
|
|
11
|
+
export declare class MediaTypeDecoders {
|
|
12
|
+
private decoders;
|
|
13
|
+
static Builder: MediaTypeDecodersBuilderConstructor;
|
|
14
|
+
static DEFAULT: MediaTypeDecoders;
|
|
15
|
+
constructor(decoders: Map<MediaType, MediaTypeDecoder>);
|
|
16
|
+
supports(mediaType: MediaType): boolean;
|
|
17
|
+
find(mediaType: MediaType): MediaTypeDecoder;
|
|
18
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
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 { AnyTextDecoder } from './any-text-decoder';
|
|
15
|
+
import { BinaryDecoder } from './binary-decoder';
|
|
16
|
+
import { CBORDecoder } from './cbor-decoder';
|
|
17
|
+
import { JSONDecoder } from './json-decoder';
|
|
18
|
+
import { MediaType } from '../media-type';
|
|
19
|
+
export class MediaTypeDecoders {
|
|
20
|
+
constructor(decoders) {
|
|
21
|
+
this.decoders = decoders;
|
|
22
|
+
}
|
|
23
|
+
supports(mediaType) {
|
|
24
|
+
return Array.from(this.decoders.keys()).some((key) => key.compatible(mediaType));
|
|
25
|
+
}
|
|
26
|
+
find(mediaType) {
|
|
27
|
+
const found = Array.from(this.decoders.entries()).find(([type]) => type.compatible(mediaType));
|
|
28
|
+
if (!found) {
|
|
29
|
+
throw Error(`Unsupported media type - ${mediaType}`);
|
|
30
|
+
}
|
|
31
|
+
return found[1];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
MediaTypeDecoders.Builder = class Builder {
|
|
35
|
+
constructor() {
|
|
36
|
+
this.decoders = new Map();
|
|
37
|
+
}
|
|
38
|
+
add(mediaType, decoder) {
|
|
39
|
+
this.decoders.set(mediaType, decoder);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
addDefaults() {
|
|
43
|
+
return this.add(MediaType.OctetStream, BinaryDecoder.default)
|
|
44
|
+
.add(MediaType.JSON, JSONDecoder.default)
|
|
45
|
+
.add(MediaType.CBOR, CBORDecoder.default)
|
|
46
|
+
.add(MediaType.EventStream, BinaryDecoder.default)
|
|
47
|
+
.add(MediaType.AnyText, AnyTextDecoder.default)
|
|
48
|
+
.add(MediaType.X509CACert, BinaryDecoder.default)
|
|
49
|
+
.add(MediaType.X509UserCert, BinaryDecoder.default);
|
|
50
|
+
}
|
|
51
|
+
build() {
|
|
52
|
+
return new MediaTypeDecoders(this.decoders);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
MediaTypeDecoders.DEFAULT = new MediaTypeDecoders.Builder()
|
|
56
|
+
.addDefaults()
|
|
57
|
+
.build();
|
|
58
|
+
//# sourceMappingURL=media-type-decoders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-decoders.js","sourceRoot":"","sources":["../../../src/media-type-codecs/media-type-decoders.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,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB1C,MAAM,OAAO,iBAAiB;IAiC5B,YAAoB,QAA0C;QAA1C,aAAQ,GAAR,QAAQ,CAAkC;IAAG,CAAC;IAElE,QAAQ,CAAC,SAAoB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAoB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;;AAhDM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAGpD,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAuBpD,CAAC;IArBC,GAAG,CACD,SAAoB,EACpB,OAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;aAC1D,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACxC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACxC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;aACjD,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;aAC9C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC;aAChD,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEK,yBAAO,GAAsB,IAAI,iBAAiB,CAAC,OAAO,EAAE;KAChE,WAAW,EAAE;KACb,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AnyType } from '../any-type';
|
|
2
|
+
export interface MediaTypeEncoder {
|
|
3
|
+
encode<T = unknown>(value: T, type: AnyType | undefined): BodyInit;
|
|
4
|
+
}
|
|
5
|
+
export interface URLQueryParamsEncoder extends MediaTypeEncoder {
|
|
6
|
+
encodeQueryString(value: Record<string, unknown>): string;
|
|
7
|
+
}
|
|
8
|
+
export declare function isURLQueryParamsEncoder(encoder: MediaTypeEncoder | URLQueryParamsEncoder | undefined): encoder is URLQueryParamsEncoder;
|
|
9
|
+
export interface StructuredMediaTypeEncoder extends MediaTypeEncoder {
|
|
10
|
+
encodeObject<T = unknown>(value: T, type?: AnyType, includeNulls?: boolean): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare function isStructuredMediaTypeEncoder(encoder: MediaTypeEncoder | StructuredMediaTypeEncoder | undefined): encoder is StructuredMediaTypeEncoder;
|
|
@@ -0,0 +1,22 @@
|
|
|
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 function isURLQueryParamsEncoder(encoder) {
|
|
15
|
+
const rec = encoder;
|
|
16
|
+
return !!rec.encodeQueryString ?? false;
|
|
17
|
+
}
|
|
18
|
+
export function isStructuredMediaTypeEncoder(encoder) {
|
|
19
|
+
const rec = encoder;
|
|
20
|
+
return !!rec.encodeObject ?? false;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=media-type-encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-encoder.js","sourceRoot":"","sources":["../../../src/media-type-codecs/media-type-encoder.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;AAYjC,MAAM,UAAU,uBAAuB,CACrC,OAA6D;IAE7D,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC;AAC1C,CAAC;AAUD,MAAM,UAAU,4BAA4B,CAC1C,OAAkE;IAElE,MAAM,GAAG,GAAG,OAA6C,CAAC;IAC1D,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MediaType } from '../media-type';
|
|
2
|
+
import { MediaTypeEncoder } from './media-type-encoder';
|
|
3
|
+
export interface MediaTypeEncodersBuilder {
|
|
4
|
+
addDefaults(): MediaTypeEncodersBuilder;
|
|
5
|
+
add(mediaType: MediaType, encoder: MediaTypeEncoder): MediaTypeEncodersBuilder;
|
|
6
|
+
build(): MediaTypeEncoders;
|
|
7
|
+
}
|
|
8
|
+
export interface MediaTypeEncodersBuilderConstructor {
|
|
9
|
+
new (): MediaTypeEncodersBuilder;
|
|
10
|
+
}
|
|
11
|
+
export declare class MediaTypeEncoders {
|
|
12
|
+
private encoders;
|
|
13
|
+
static Builder: MediaTypeEncodersBuilderConstructor;
|
|
14
|
+
static DEFAULT: MediaTypeEncoders;
|
|
15
|
+
constructor(encoders: Map<MediaType, MediaTypeEncoder>);
|
|
16
|
+
supports(mediaType: MediaType): boolean;
|
|
17
|
+
find(mediaType: MediaType): MediaTypeEncoder;
|
|
18
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 { MediaType } from '../media-type';
|
|
15
|
+
import { AnyTextEncoder } from './any-text-encoder';
|
|
16
|
+
import { BinaryEncoder } from './binary-encoder';
|
|
17
|
+
import { CBOREncoder } from './cbor-encoder';
|
|
18
|
+
import { JSONEncoder } from './json-encoder';
|
|
19
|
+
import { WWWFormUrlEncoder } from './www-form-url-encoder';
|
|
20
|
+
export class MediaTypeEncoders {
|
|
21
|
+
constructor(encoders) {
|
|
22
|
+
this.encoders = encoders;
|
|
23
|
+
}
|
|
24
|
+
supports(mediaType) {
|
|
25
|
+
return Array.from(this.encoders.keys()).some((key) => key.compatible(mediaType));
|
|
26
|
+
}
|
|
27
|
+
find(mediaType) {
|
|
28
|
+
const found = Array.from(this.encoders.entries()).find(([type]) => type.compatible(mediaType));
|
|
29
|
+
if (!found) {
|
|
30
|
+
throw Error(`Unsupported media type - ${mediaType}`);
|
|
31
|
+
}
|
|
32
|
+
return found[1];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
MediaTypeEncoders.Builder = class Builder {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.encoders = new Map();
|
|
38
|
+
}
|
|
39
|
+
add(mediaType, encoder) {
|
|
40
|
+
this.encoders.set(mediaType, encoder);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
addDefaults() {
|
|
44
|
+
return this.add(MediaType.OctetStream, BinaryEncoder.default)
|
|
45
|
+
.add(MediaType.WWWFormUrlEncoded, WWWFormUrlEncoder.default)
|
|
46
|
+
.add(MediaType.JSON, JSONEncoder.default)
|
|
47
|
+
.add(MediaType.JSONStructured, JSONEncoder.default)
|
|
48
|
+
.add(MediaType.CBOR, CBOREncoder.default)
|
|
49
|
+
.add(MediaType.AnyText, AnyTextEncoder.default)
|
|
50
|
+
.add(MediaType.X509CACert, BinaryEncoder.default)
|
|
51
|
+
.add(MediaType.X509UserCert, BinaryEncoder.default);
|
|
52
|
+
}
|
|
53
|
+
build() {
|
|
54
|
+
return new MediaTypeEncoders(this.encoders);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
MediaTypeEncoders.DEFAULT = new MediaTypeEncoders.Builder()
|
|
58
|
+
.addDefaults()
|
|
59
|
+
.build();
|
|
60
|
+
//# sourceMappingURL=media-type-encoders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-type-encoders.js","sourceRoot":"","sources":["../../../src/media-type-codecs/media-type-encoders.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,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAgB3D,MAAM,OAAO,iBAAiB;IAkC5B,YAAoB,QAA0C;QAA1C,aAAQ,GAAR,QAAQ,CAAkC;IAAG,CAAC;IAElE,QAAQ,CAAC,SAAoB;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAoB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;SACtD;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;;AAjDM,yBAAO,GAAwC,MAAM,OAAO;IAAb;QAGpD,aAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAwBpD,CAAC;IAtBC,GAAG,CACD,SAAoB,EACpB,OAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;aAC1D,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC;aAC3D,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACxC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC;aAClD,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aACxC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;aAC9C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC;aAChD,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACH,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEK,yBAAO,GAAsB,IAAI,iBAAiB,CAAC,OAAO,EAAE;KAChE,WAAW,EAAE;KACb,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { JsonStringifier } from '@outfoxx/jackson-js';
|
|
2
|
+
import { URLQueryParamsEncoder } from './media-type-encoder';
|
|
3
|
+
export declare class WWWFormUrlEncoder implements URLQueryParamsEncoder {
|
|
4
|
+
private arrayEncoding;
|
|
5
|
+
private boolEncoding;
|
|
6
|
+
private dateEncoding;
|
|
7
|
+
private json;
|
|
8
|
+
private encoder;
|
|
9
|
+
static get default(): WWWFormUrlEncoder;
|
|
10
|
+
constructor(arrayEncoding: WWWFormUrlEncoder.ArrayEncoding, boolEncoding: WWWFormUrlEncoder.BoolEncoding, dateEncoding: WWWFormUrlEncoder.DateEncoding, json?: JsonStringifier<unknown>, encoder?: TextEncoder);
|
|
11
|
+
encode<T = unknown>(value: T): ArrayBuffer | SharedArrayBuffer;
|
|
12
|
+
encodeQueryString(parameters: Record<string, unknown>): string;
|
|
13
|
+
encodeQueryComponent(key: string, value: unknown): string[];
|
|
14
|
+
}
|
|
15
|
+
export declare namespace WWWFormUrlEncoder {
|
|
16
|
+
/**
|
|
17
|
+
* Configures how `Array` parameters are encoded.
|
|
18
|
+
*/
|
|
19
|
+
enum ArrayEncoding {
|
|
20
|
+
/**
|
|
21
|
+
* An empty set of square brackets is appended to the key for every value. This is the default behavior.
|
|
22
|
+
*/
|
|
23
|
+
BRACKETED = 0,
|
|
24
|
+
/**
|
|
25
|
+
* No brackets are appended. The key is encoded as is.
|
|
26
|
+
*/
|
|
27
|
+
UNBRACKETED = 1
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configures how `Bool` parameters are encoded.
|
|
31
|
+
*/
|
|
32
|
+
enum BoolEncoding {
|
|
33
|
+
/**
|
|
34
|
+
* Encode `true` as `1` and `false` as `0`. This is the default behavior.
|
|
35
|
+
*/
|
|
36
|
+
NUMERIC = 0,
|
|
37
|
+
/**
|
|
38
|
+
* Encode `true` and `false` as string literals.
|
|
39
|
+
*/
|
|
40
|
+
LITERAL = 1
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Configures how `Date` parameters are encoded.
|
|
44
|
+
*/
|
|
45
|
+
enum DateEncoding {
|
|
46
|
+
/**
|
|
47
|
+
* Encode the `Date` as a UNIX timestamp (decimal seconds since epoch).
|
|
48
|
+
*/
|
|
49
|
+
DECIMAL_SECONDS_SINCE_EPOCH = 0,
|
|
50
|
+
/**
|
|
51
|
+
* Encode the `Date` as UNIX millisecond timestamp (integer milliseconds since epoch).
|
|
52
|
+
*/
|
|
53
|
+
MILLISECONDS_SINCE_EPOCH = 1,
|
|
54
|
+
/**
|
|
55
|
+
* Encode the `Date` as an ISO-8601-formatted string (in RFC 3339 format). This is the default behavior.
|
|
56
|
+
*/
|
|
57
|
+
ISO8601 = 2
|
|
58
|
+
}
|
|
59
|
+
}
|