@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,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2020 Outfox, Inc.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.Hex = void 0;
|
|
17
|
+
var Hex;
|
|
18
|
+
(function (Hex) {
|
|
19
|
+
function decode(hex) {
|
|
20
|
+
hex = hex.replace(/^0x/, '').replace(/\s/g, '');
|
|
21
|
+
const values = hex.match(/[\da-f]{2}/gi);
|
|
22
|
+
if (!values || values.length != hex.length / 2) {
|
|
23
|
+
throw Error(`Invalid hex string`);
|
|
24
|
+
}
|
|
25
|
+
return new Uint8Array(values.map((b) => parseInt(b, 16))).buffer;
|
|
26
|
+
}
|
|
27
|
+
Hex.decode = decode;
|
|
28
|
+
function encode(buffer, separator = '') {
|
|
29
|
+
return Array.from(new Uint8Array(buffer))
|
|
30
|
+
.map((value) => value.toString(16).padStart(2, '0'))
|
|
31
|
+
.join(separator);
|
|
32
|
+
}
|
|
33
|
+
Hex.encode = encode;
|
|
34
|
+
})(Hex = exports.Hex || (exports.Hex = {}));
|
|
35
|
+
//# sourceMappingURL=hex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/util/hex.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,IAAiB,GAAG,CAenB;AAfD,WAAiB,GAAG;IAClB,SAAgB,MAAM,CAAC,GAAW;QAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC;IAPe,UAAM,SAOrB,CAAA;IAED,SAAgB,MAAM,CAAC,MAAmB,EAAE,SAAS,GAAG,EAAE;QACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACnD,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAJe,UAAM,SAIrB,CAAA;AACH,CAAC,EAfgB,GAAG,GAAH,WAAG,KAAH,WAAG,QAenB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { ClassType } from '../class-type';
|
|
3
|
+
import { Problem } from '../problem';
|
|
4
|
+
export declare function nullifyNotFound<T>(): (source: Observable<T>) => Observable<T | null>;
|
|
5
|
+
export declare function nullifyResponse<T>(statuses: number[], problemTypes: ClassType<Problem>[]): (source: Observable<T>) => Observable<T | null>;
|
|
6
|
+
export declare function nullifyPromiseResponse<T>(statuses: number[], problemTypes: ClassType<Problem>[]): (error: unknown) => Promise<T | null>;
|
|
7
|
+
export interface AbortError extends Error {
|
|
8
|
+
}
|
|
9
|
+
export declare type AbortErrorCtor = new () => AbortError;
|
|
10
|
+
/**
|
|
11
|
+
* An error thrown when an Observable converted to a promise is aborted with
|
|
12
|
+
* via a provided `AbortSignal`.
|
|
13
|
+
*
|
|
14
|
+
* @see {@link promiseFrom}
|
|
15
|
+
*
|
|
16
|
+
* @class AbortError
|
|
17
|
+
*/
|
|
18
|
+
export declare const AbortError: AbortErrorCtor;
|
|
19
|
+
/**
|
|
20
|
+
* Converts an Observable to a Promise, optionally aborting the Observable via
|
|
21
|
+
* a provided `AbortSignal`.
|
|
22
|
+
*
|
|
23
|
+
* @param obs Observable to convert to a Promise
|
|
24
|
+
* @param signal Optional AbortSignal to abort the Observable
|
|
25
|
+
* @returns Promise that resolves to the first value from the Observable
|
|
26
|
+
*/
|
|
27
|
+
export declare function promiseFrom<T>(obs: Observable<T>, signal?: AbortSignal): Promise<T>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2020 Outfox, Inc.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.promiseFrom = exports.AbortError = exports.nullifyPromiseResponse = exports.nullifyResponse = exports.nullifyNotFound = void 0;
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const createErrorClass_1 = require("rxjs/internal/util/createErrorClass");
|
|
19
|
+
const problem_1 = require("../problem");
|
|
20
|
+
function nullifyNotFound() {
|
|
21
|
+
return nullifyResponse([404], []);
|
|
22
|
+
}
|
|
23
|
+
exports.nullifyNotFound = nullifyNotFound;
|
|
24
|
+
function nullifyResponse(statuses, problemTypes) {
|
|
25
|
+
return function (source) {
|
|
26
|
+
return source.pipe((0, rxjs_1.catchError)((error) => {
|
|
27
|
+
const errorType = error.constructor;
|
|
28
|
+
if (error instanceof problem_1.Problem &&
|
|
29
|
+
(statuses.includes(error.status) || problemTypes.includes(errorType))) {
|
|
30
|
+
return (0, rxjs_1.from)([null]);
|
|
31
|
+
}
|
|
32
|
+
return (0, rxjs_1.throwError)(() => error);
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
exports.nullifyResponse = nullifyResponse;
|
|
37
|
+
function nullifyPromiseResponse(statuses, problemTypes) {
|
|
38
|
+
return function (error) {
|
|
39
|
+
const errorType = error
|
|
40
|
+
.constructor;
|
|
41
|
+
if (error instanceof problem_1.Problem &&
|
|
42
|
+
(statuses.includes(error.status) || problemTypes.includes(errorType))) {
|
|
43
|
+
return Promise.resolve(null);
|
|
44
|
+
}
|
|
45
|
+
return Promise.reject(error);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.nullifyPromiseResponse = nullifyPromiseResponse;
|
|
49
|
+
/**
|
|
50
|
+
* An error thrown when an Observable converted to a promise is aborted with
|
|
51
|
+
* via a provided `AbortSignal`.
|
|
52
|
+
*
|
|
53
|
+
* @see {@link promiseFrom}
|
|
54
|
+
*
|
|
55
|
+
* @class AbortError
|
|
56
|
+
*/
|
|
57
|
+
exports.AbortError = (0, createErrorClass_1.createErrorClass)((_super) => function AbortErrorImpl() {
|
|
58
|
+
_super(this);
|
|
59
|
+
this.name = 'AbortError';
|
|
60
|
+
this.message = 'sequence was aborted';
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Converts an Observable to a Promise, optionally aborting the Observable via
|
|
64
|
+
* a provided `AbortSignal`.
|
|
65
|
+
*
|
|
66
|
+
* @param obs Observable to convert to a Promise
|
|
67
|
+
* @param signal Optional AbortSignal to abort the Observable
|
|
68
|
+
* @returns Promise that resolves to the first value from the Observable
|
|
69
|
+
*/
|
|
70
|
+
function promiseFrom(obs, signal) {
|
|
71
|
+
if (!signal) {
|
|
72
|
+
return (0, rxjs_1.firstValueFrom)(obs);
|
|
73
|
+
}
|
|
74
|
+
// Reject immediately if the signal has already fired. Use `AbortError`
|
|
75
|
+
// because that's what `first` will fail with per the note below
|
|
76
|
+
if (signal.aborted) {
|
|
77
|
+
return Promise.reject(new exports.AbortError());
|
|
78
|
+
}
|
|
79
|
+
const stop = (0, rxjs_1.fromEvent)(signal, 'abort').pipe((0, rxjs_1.take)(1), (0, rxjs_1.switchMap)(() => (0, rxjs_1.throwError)(() => new exports.AbortError())));
|
|
80
|
+
// Note that `takeUntil` will cause the observable to complete when the
|
|
81
|
+
// Signal fires, but `firstValueFrom` will fail with EmptyError if there
|
|
82
|
+
// wasn't a value, which will reject out of the returned Promise.
|
|
83
|
+
return (0, rxjs_1.firstValueFrom)(obs.pipe((0, rxjs_1.takeUntil)(stop)));
|
|
84
|
+
}
|
|
85
|
+
exports.promiseFrom = promiseFrom;
|
|
86
|
+
//# sourceMappingURL=rxjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rxjs.js","sourceRoot":"","sources":["../../../src/util/rxjs.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,+BAUc;AACd,0EAAuE;AAEvE,wCAAqC;AAErC,SAAgB,eAAe;IAG7B,OAAO,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAJD,0CAIC;AAED,SAAgB,eAAe,CAC7B,QAAkB,EAClB,YAAkC;IAElC,OAAO,UAAa,MAAqB;QACvC,OAAO,MAAM,CAAC,IAAI,CAChB,IAAA,iBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAiC,CAAC;YAC1D,IACE,KAAK,YAAY,iBAAO;gBACxB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACrE;gBACA,OAAO,IAAA,WAAI,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACrB;YACD,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAlBD,0CAkBC;AAED,SAAgB,sBAAsB,CACpC,QAAkB,EAClB,YAAkC;IAElC,OAAO,UAAa,KAAc;QAChC,MAAM,SAAS,GAAI,KAAiC;aACjD,WAAiC,CAAC;QACrC,IACE,KAAK,YAAY,iBAAO;YACxB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACrE;YACA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC;AAfD,wDAeC;AAOD;;;;;;;GAOG;AACU,QAAA,UAAU,GAAmB,IAAA,mCAAgB,EACxD,CAAC,MAAiC,EAAE,EAAE,CACpC,SAAS,cAAc;IACrB,MAAM,CAAC,IAAI,CAAC,CAAC;IACb,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IACzB,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC;AACxC,CAAC,CACJ,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,WAAW,CACzB,GAAkB,EAClB,MAAoB;IAEpB,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAA,qBAAc,EAAC,GAAG,CAAC,CAAC;KAC5B;IACD,uEAAuE;IACvE,gEAAgE;IAChE,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,kBAAU,EAAE,CAAC,CAAC;KACzC;IAED,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1C,IAAA,WAAI,EAAC,CAAC,CAAC,EACP,IAAA,gBAAS,EAAC,GAAG,EAAE,CAAC,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,kBAAU,EAAE,CAAC,CAAC,CACpD,CAAC;IAEF,uEAAuE;IACvE,wEAAwE;IACxE,iEAAiE;IACjE,OAAO,IAAA,qBAAc,EAAC,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAtBD,kCAsBC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2020 Outfox, Inc.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.encodeSeconds = exports.secondsToNumber = void 0;
|
|
17
|
+
function secondsToNumber(seconds, nanos) {
|
|
18
|
+
if (nanos == 0) {
|
|
19
|
+
return seconds;
|
|
20
|
+
}
|
|
21
|
+
const nanoStr = nanos.toString();
|
|
22
|
+
return parseFloat(`${seconds}.${'0'.repeat(9 - nanoStr.length)}${nanos}`);
|
|
23
|
+
}
|
|
24
|
+
exports.secondsToNumber = secondsToNumber;
|
|
25
|
+
function encodeSeconds(seconds, fraction) {
|
|
26
|
+
const result = [];
|
|
27
|
+
if (seconds != 0 || fraction != 0) {
|
|
28
|
+
result.push(seconds);
|
|
29
|
+
if (fraction != 0) {
|
|
30
|
+
result.push(fraction);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.encodeSeconds = encodeSeconds;
|
|
36
|
+
//# sourceMappingURL=temporal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../../src/util/temporal.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,SAAgB,eAAe,CAAC,OAAe,EAAE,KAAa;IAC5D,IAAI,KAAK,IAAI,CAAC,EAAE;QACd,OAAO,OAAO,CAAC;KAChB;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC;AAND,0CAMC;AAED,SAAgB,aAAa,CAAC,OAAe,EAAE,QAAgB;IAC7D,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AATD,sCASC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outfoxx/sunday",
|
|
3
|
-
"version": "1.1.0-beta.
|
|
3
|
+
"version": "1.1.0-beta.21",
|
|
4
4
|
"description": "Sunday 🙏 The framework of REST for TypeScript/JavaScript",
|
|
5
|
-
"main": "
|
|
6
|
-
"
|
|
7
|
-
"
|
|
5
|
+
"main": "build/main/index.js",
|
|
6
|
+
"module": "build/esm/index.js",
|
|
7
|
+
"esnext": "build/esnext/index.js",
|
|
8
|
+
"types": "build/main/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"src",
|
|
11
|
+
"build",
|
|
12
|
+
"LICENSE.txt",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
8
15
|
"scripts": {
|
|
9
|
-
"test": "karma start karma.
|
|
10
|
-
"test:
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
16
|
+
"test:main": "karma start karma-main.config.js --singleRun",
|
|
17
|
+
"test:esm": "karma start karma-esm.config.js --singleRun",
|
|
18
|
+
"test:esnext": "karma start karma-esnext.config.js --singleRun",
|
|
19
|
+
"test:main:watch": "karma start karma-main.config.js",
|
|
20
|
+
"test:esm:watch": "karma start karma-esm.config.js",
|
|
21
|
+
"test:esnext:watch": "karma start karma-esnext.config.js",
|
|
22
|
+
"test:main:allbrowsers": "karma start karma-main.config.js --singleRun --browsers ChromeHeadless,SafariNative,Firefox",
|
|
23
|
+
"test:esm:allbrowsers": "karma start karma-esm.config.js --singleRun --browsers ChromeHeadless,SafariNative,Firefox",
|
|
24
|
+
"test:esnext:allbrowsers": "karma start karma-esnext.config.js --singleRun --browsers ChromeHeadless,SafariNative,Firefox",
|
|
25
|
+
"build": "tsc --build tsconfig-main.json tsconfig-esm.json tsconfig-esnext.json",
|
|
26
|
+
"build:watch": "tsc --build tsconfig-main.json tsconfig-esm.json tsconfig-esnext.json --watch",
|
|
27
|
+
"clean": "rimraf build docs reports",
|
|
15
28
|
"pretty": "prettier src test",
|
|
16
|
-
"
|
|
29
|
+
"lint": "eslint -f json -o reports/lint.json src test",
|
|
30
|
+
"lint:html": "eslint -f html -o reports/lint.html src test",
|
|
31
|
+
"docs": "typedoc --excludeInternal --excludePrivate src/index.ts",
|
|
32
|
+
"prepublishOnly": "npm run clean && npm run lint && npm run build"
|
|
17
33
|
},
|
|
18
34
|
"husky": {
|
|
19
35
|
"hooks": {
|
|
@@ -25,56 +41,54 @@
|
|
|
25
41
|
"eslint"
|
|
26
42
|
]
|
|
27
43
|
},
|
|
28
|
-
"keywords": [
|
|
44
|
+
"keywords": [
|
|
45
|
+
"HTTP",
|
|
46
|
+
"REST",
|
|
47
|
+
"fetch"
|
|
48
|
+
],
|
|
29
49
|
"author": "kdubb",
|
|
30
50
|
"license": "Apache-2.0",
|
|
31
51
|
"dependencies": {
|
|
32
52
|
"@js-joda/core": "5.2.x",
|
|
33
|
-
"@outfoxx/cbor-redux": "0.3.x",
|
|
34
53
|
"@outfoxx/jackson-js": "1.4.x",
|
|
35
|
-
"
|
|
54
|
+
"cbor-redux": "1.0.x",
|
|
36
55
|
"tslib": "2.4.x",
|
|
37
|
-
"uri-template
|
|
56
|
+
"uri-template": "^2.0.0"
|
|
38
57
|
},
|
|
39
58
|
"peerDependencies": {
|
|
40
59
|
"rxjs": "7.x"
|
|
41
60
|
},
|
|
42
61
|
"devDependencies": {
|
|
43
|
-
"@types/
|
|
44
|
-
"@types/jasmine": "4.0.x",
|
|
45
|
-
"@types/uri-template-lite": "19.12.x",
|
|
62
|
+
"@types/jasmine": "^4.3.1",
|
|
46
63
|
"@typescript-eslint/eslint-plugin": "^5.25.0",
|
|
47
64
|
"@typescript-eslint/parser": "^5.25.0",
|
|
65
|
+
"coverage-istanbul-loader": "^3.0.5",
|
|
48
66
|
"eslint": "^8.15.0",
|
|
49
67
|
"eslint-config-prettier": "^8.5.0",
|
|
50
68
|
"eslint-plugin-header": "^3.1.1",
|
|
51
69
|
"eslint-plugin-prettier": "^4.0.0",
|
|
52
70
|
"fetch-mock": "^9.11.0",
|
|
53
|
-
"
|
|
54
|
-
"husky": "^4.3.0",
|
|
71
|
+
"husky": "^8.0.3",
|
|
55
72
|
"install": "^0.13.0",
|
|
56
73
|
"karma": "^6.3.20",
|
|
57
74
|
"karma-chrome-launcher": "^3.1.1",
|
|
58
75
|
"karma-cli": "^2.0.0",
|
|
59
|
-
"karma-coverage": "^
|
|
60
|
-
"karma-
|
|
61
|
-
"karma-
|
|
76
|
+
"karma-coverage-istanbul-reporter": "^3.0.3",
|
|
77
|
+
"karma-firefox-launcher": "^2.1.2",
|
|
78
|
+
"karma-jasmine": "^5.1.0",
|
|
79
|
+
"karma-safarinative-launcher": "^1.1.0",
|
|
62
80
|
"karma-sonarqube-unit-reporter": "^0.0.23",
|
|
63
|
-
"karma-source-map-support": "^1.4.0",
|
|
64
81
|
"karma-sourcemap-loader": "^0.3.8",
|
|
65
|
-
"karma-
|
|
66
|
-
"karma-
|
|
67
|
-
"lint-staged": "^
|
|
82
|
+
"karma-spec-reporter": "^0.0.36",
|
|
83
|
+
"karma-webpack": "^5.0.0",
|
|
84
|
+
"lint-staged": "^13.2.1",
|
|
68
85
|
"prettier": "^2.1.2",
|
|
69
86
|
"pretty-quick": "^3.0.2",
|
|
70
87
|
"rimraf": "^3.0.2",
|
|
88
|
+
"ts-loader": "^9.4.2",
|
|
71
89
|
"typedoc": "^0.22.18",
|
|
72
90
|
"typescript": "~4.4",
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"dist",
|
|
77
|
-
"src",
|
|
78
|
-
"package.json"
|
|
79
|
-
]
|
|
91
|
+
"webpack": "^5.75.0",
|
|
92
|
+
"webpack-cli": "^5.0.1"
|
|
93
|
+
}
|
|
80
94
|
}
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
|
-
import { EMPTY, map, Observable, of, Subscription, switchMap
|
|
15
|
+
import { EMPTY, map, Observable, of, Subscription, switchMap } from 'rxjs';
|
|
16
|
+
import { fromReadableStreamLike } from 'rxjs/internal/observable/innerFrom';
|
|
16
17
|
import { EventInfo, EventParser } from './event-parser';
|
|
17
18
|
import { validate } from './fetch';
|
|
18
19
|
import { Logger } from './logger';
|
|
19
20
|
import { MediaType } from './media-type';
|
|
20
21
|
import { ExtEventSource } from './request-factory';
|
|
21
|
-
import { unknownSet } from './util/any';
|
|
22
|
-
import { fromStream } from './util/stream-rxjs';
|
|
22
|
+
import { unknownGet, unknownSet } from './util/any';
|
|
23
23
|
|
|
24
24
|
export interface FetchEventSource {
|
|
25
25
|
addEventListener<K extends keyof EventSourceEventMap>(
|
|
@@ -73,7 +73,6 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
73
73
|
private eventTimeoutCheckHandle?: number;
|
|
74
74
|
private lastEventReceivedTime = 0;
|
|
75
75
|
private eventParser = new EventParser();
|
|
76
|
-
private readonly externalAbortController?: AbortController;
|
|
77
76
|
|
|
78
77
|
constructor(
|
|
79
78
|
url: string,
|
|
@@ -81,7 +80,6 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
81
80
|
adapter?: (url: string, requestInit: RequestInit) => Observable<Request>;
|
|
82
81
|
eventTimeout?: number;
|
|
83
82
|
logger?: Logger;
|
|
84
|
-
abortController?: AbortController;
|
|
85
83
|
},
|
|
86
84
|
) {
|
|
87
85
|
super();
|
|
@@ -93,7 +91,6 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
93
91
|
eventSourceInit?.eventTimeout ??
|
|
94
92
|
FetchEventSource.EVENT_TIMEOUT_DEFAULT * 1000;
|
|
95
93
|
this.logger = eventSourceInit?.logger;
|
|
96
|
-
this.externalAbortController = eventSourceInit?.abortController;
|
|
97
94
|
}
|
|
98
95
|
|
|
99
96
|
//
|
|
@@ -102,7 +99,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
102
99
|
|
|
103
100
|
connect(): void {
|
|
104
101
|
if (this.readyState === this.CONNECTING || this.readyState === this.OPEN) {
|
|
105
|
-
|
|
102
|
+
this.logger?.trace?.('skipping connect', { state: this.readyState });
|
|
106
103
|
return;
|
|
107
104
|
}
|
|
108
105
|
|
|
@@ -121,44 +118,68 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
121
118
|
headers.append(FetchEventSource.LAST_EVENT_ID_HEADER, this.lastEventId);
|
|
122
119
|
}
|
|
123
120
|
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
this.connectionSubscription?.unsubscribe();
|
|
122
|
+
this.connectionSubscription = new Subscription();
|
|
123
|
+
|
|
124
|
+
// Abort when connection is unsubscribed
|
|
125
|
+
const unsubscribeAbortController = new AbortController();
|
|
126
|
+
this.connectionSubscription.add(() => unsubscribeAbortController.abort());
|
|
127
|
+
|
|
128
|
+
// Purely for testing purposes, allow an external signal to abort the fetch
|
|
129
|
+
const externalSignal = unknownGet(this, 'signal');
|
|
130
|
+
if (externalSignal instanceof AbortSignal) {
|
|
131
|
+
const externalSignalLink = () => unsubscribeAbortController.abort();
|
|
132
|
+
|
|
133
|
+
externalSignal.addEventListener('abort', externalSignalLink);
|
|
134
|
+
this.connectionSubscription.add(() =>
|
|
135
|
+
externalSignal?.removeEventListener('abort', externalSignalLink),
|
|
136
|
+
);
|
|
137
|
+
}
|
|
126
138
|
|
|
127
139
|
const requestInit: RequestInit = {
|
|
128
140
|
headers,
|
|
129
141
|
cache: 'no-store',
|
|
130
142
|
redirect: 'follow',
|
|
131
|
-
signal: abortController.signal,
|
|
132
143
|
};
|
|
133
144
|
|
|
134
145
|
this.connectionAttemptTime = Date.now();
|
|
135
146
|
|
|
136
|
-
this.connectionSubscription
|
|
137
|
-
.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
this.connectionSubscription.add(
|
|
148
|
+
this.adapter(this.url, requestInit)
|
|
149
|
+
.pipe(
|
|
150
|
+
switchMap(async (request) => {
|
|
151
|
+
// Fetch explicitly using the unsubscribe
|
|
152
|
+
// abort controller signal
|
|
153
|
+
const response = await fetch(request, {
|
|
154
|
+
signal: unsubscribeAbortController.signal,
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const validatedResponse = await validate(response, true);
|
|
158
|
+
|
|
159
|
+
this.receivedHeaders(validatedResponse);
|
|
160
|
+
|
|
161
|
+
return validatedResponse;
|
|
162
|
+
}),
|
|
163
|
+
switchMap((response) => {
|
|
164
|
+
// If response has no body, return empty to complete immediately
|
|
165
|
+
const body = response.body;
|
|
166
|
+
if (!body) {
|
|
167
|
+
return EMPTY;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return fromReadableStreamLike(body);
|
|
171
|
+
}),
|
|
172
|
+
map((value) => this.receivedData(value)),
|
|
173
|
+
)
|
|
174
|
+
.subscribe({
|
|
175
|
+
error: (error: unknown) => {
|
|
176
|
+
this.receivedError(error);
|
|
177
|
+
},
|
|
178
|
+
complete: () => {
|
|
179
|
+
this.receivedComplete();
|
|
180
|
+
},
|
|
148
181
|
}),
|
|
149
|
-
|
|
150
|
-
)
|
|
151
|
-
.subscribe({
|
|
152
|
-
error: (error: unknown) => {
|
|
153
|
-
this.receivedError(error);
|
|
154
|
-
},
|
|
155
|
-
complete: () => {
|
|
156
|
-
this.receivedComplete();
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
this.connectionSubscription.add(() => {
|
|
160
|
-
abortController.abort();
|
|
161
|
-
});
|
|
182
|
+
);
|
|
162
183
|
}
|
|
163
184
|
|
|
164
185
|
//
|
|
@@ -166,6 +187,10 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
166
187
|
//
|
|
167
188
|
|
|
168
189
|
close(): void {
|
|
190
|
+
if (this.readyState === this.CLOSED) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
|
|
169
194
|
this.logger?.debug?.('close requested');
|
|
170
195
|
|
|
171
196
|
this.readyState = this.CLOSED;
|
|
@@ -195,7 +220,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
195
220
|
|
|
196
221
|
this.lastEventReceivedTime = lastEventReceivedTime;
|
|
197
222
|
|
|
198
|
-
|
|
223
|
+
this.logger?.trace?.('starting event timeout checks');
|
|
199
224
|
|
|
200
225
|
this.eventTimeoutCheckHandle = window.setInterval(
|
|
201
226
|
() => this.checkEventTimeout(),
|
|
@@ -204,11 +229,12 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
204
229
|
}
|
|
205
230
|
|
|
206
231
|
private stopEventTimeoutCheck() {
|
|
207
|
-
// this.logger?.debug?.('stopping event timeout checks');
|
|
208
|
-
|
|
209
232
|
if (this.eventTimeoutCheckHandle) {
|
|
233
|
+
this.logger?.trace?.('stopping event timeout checks');
|
|
234
|
+
|
|
210
235
|
clearInterval(this.eventTimeoutCheckHandle);
|
|
211
236
|
}
|
|
237
|
+
|
|
212
238
|
this.eventTimeoutCheckHandle = undefined;
|
|
213
239
|
}
|
|
214
240
|
|
|
@@ -218,7 +244,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
218
244
|
return;
|
|
219
245
|
}
|
|
220
246
|
|
|
221
|
-
|
|
247
|
+
this.logger?.trace?.('checking event timeout');
|
|
222
248
|
|
|
223
249
|
// Check elapsed time since last received event
|
|
224
250
|
const elapsed = Date.now() - this.lastEventReceivedTime;
|
|
@@ -238,7 +264,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
238
264
|
|
|
239
265
|
private receivedHeaders(response: Response) {
|
|
240
266
|
if (this.readyState !== this.CONNECTING) {
|
|
241
|
-
this.logger?.error?.('
|
|
267
|
+
this.logger?.error?.('invalid readyState for receivedHeaders', {
|
|
242
268
|
readyState: this.readyState,
|
|
243
269
|
});
|
|
244
270
|
|
|
@@ -265,7 +291,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
265
291
|
|
|
266
292
|
private receivedData(buffer: ArrayBuffer) {
|
|
267
293
|
if (this.readyState !== this.OPEN) {
|
|
268
|
-
this.logger?.error?.('
|
|
294
|
+
this.logger?.error?.('invalid readyState for receiveData', {
|
|
269
295
|
readyState: this.readyState,
|
|
270
296
|
});
|
|
271
297
|
|
|
@@ -275,7 +301,7 @@ export class FetchEventSource extends EventTarget implements ExtEventSource {
|
|
|
275
301
|
return;
|
|
276
302
|
}
|
|
277
303
|
|
|
278
|
-
this.logger?.debug?.('received data', { length:
|
|
304
|
+
this.logger?.debug?.('received data', { length: buffer.byteLength });
|
|
279
305
|
|
|
280
306
|
this.eventParser.process(buffer, this.dispatchParsedEvent);
|
|
281
307
|
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
15
|
import { defer, map, Observable, of, switchMap } from 'rxjs';
|
|
16
|
+
import { fromFetch } from 'rxjs/internal/observable/dom/fetch';
|
|
16
17
|
import { AnyType } from './any-type';
|
|
17
18
|
import { ConstructableClassType } from './class-type';
|
|
18
19
|
import { validate } from './fetch';
|
|
@@ -145,10 +146,12 @@ export class FetchRequestFactory implements RequestFactory {
|
|
|
145
146
|
method: requestSpec.method,
|
|
146
147
|
});
|
|
147
148
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
return of(new Request(url.toString(), init));
|
|
150
|
+
}).pipe(
|
|
151
|
+
switchMap(
|
|
152
|
+
async (request) => this.adapter?.adapt(this, request) ?? request,
|
|
153
|
+
),
|
|
154
|
+
);
|
|
152
155
|
}
|
|
153
156
|
|
|
154
157
|
response(
|
|
@@ -158,7 +161,7 @@ export class FetchRequestFactory implements RequestFactory {
|
|
|
158
161
|
const request$ =
|
|
159
162
|
request instanceof Request ? of(request) : this.request(request);
|
|
160
163
|
return request$.pipe(
|
|
161
|
-
switchMap((req) =>
|
|
164
|
+
switchMap((req) => fromFetch(req)),
|
|
162
165
|
switchMap((response) =>
|
|
163
166
|
validate(response, dataExpected ?? false, this.problemTypes),
|
|
164
167
|
),
|
package/src/index.ts
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
ZoneId,
|
|
29
29
|
ZoneOffset,
|
|
30
30
|
} from '@js-joda/core';
|
|
31
|
-
import { CBOR } from '
|
|
31
|
+
import { CBOR, TaggedValue } from 'cbor-redux';
|
|
32
32
|
import { JsonParser } from '@outfoxx/jackson-js';
|
|
33
33
|
import { CustomMapper, Deserializer } from '@outfoxx/jackson-js/dist/@types';
|
|
34
34
|
import { AnyType } from '../any-type';
|
|
@@ -96,14 +96,23 @@ export class CBORDecoder implements MediaTypeDecoder {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
decodeData<T>(buffer: ArrayBuffer, type: AnyType): T {
|
|
99
|
-
return this.parser.transform(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
return this.parser.transform(
|
|
100
|
+
CBOR.decode(buffer, this.untag, { mode: 'loose' }),
|
|
101
|
+
{
|
|
102
|
+
deserializers: this.customDeserializers,
|
|
103
|
+
mainCreator: () => type,
|
|
104
|
+
},
|
|
105
|
+
);
|
|
103
106
|
}
|
|
104
107
|
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
private untag = (key: unknown, value: unknown) => {
|
|
109
|
+
if (!(value instanceof TaggedValue)) {
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const tag = value.tag;
|
|
114
|
+
value = value.value;
|
|
115
|
+
|
|
107
116
|
switch (tag) {
|
|
108
117
|
case isoDateTimeTag:
|
|
109
118
|
if (typeof value !== 'string') {
|
|
@@ -203,7 +212,7 @@ export class CBORDecoder implements MediaTypeDecoder {
|
|
|
203
212
|
);
|
|
204
213
|
return ZonedDateTime.ofInstant(instant, ZoneId.UTC);
|
|
205
214
|
} else {
|
|
206
|
-
|
|
215
|
+
throw Error('Unsupported date decoding format');
|
|
207
216
|
}
|
|
208
217
|
}
|
|
209
218
|
if (typeof value === 'string') {
|
|
@@ -252,7 +261,7 @@ export class CBORDecoder implements MediaTypeDecoder {
|
|
|
252
261
|
);
|
|
253
262
|
return OffsetDateTime.ofInstant(instant, ZoneId.UTC);
|
|
254
263
|
} else {
|
|
255
|
-
|
|
264
|
+
throw new Error('Unsupported date decoding format');
|
|
256
265
|
}
|
|
257
266
|
}
|
|
258
267
|
if (typeof value === 'string') {
|
|
@@ -465,7 +474,7 @@ export class CBORDecoder implements MediaTypeDecoder {
|
|
|
465
474
|
) {
|
|
466
475
|
return new Date(value * 1000);
|
|
467
476
|
} else {
|
|
468
|
-
|
|
477
|
+
throw new Error('Unsupported date decoding format');
|
|
469
478
|
}
|
|
470
479
|
}
|
|
471
480
|
if (typeof value === 'string') {
|