From 7b1f055d695e6d106531eb2220361d4d98df89c5 Mon Sep 17 00:00:00 2001 From: wpbenner Date: Fri, 16 Aug 2019 16:55:30 +0200 Subject: [PATCH] koekjes --- node_modules/.bin/cypress | 1 + node_modules/.bin/extract-zip | 1 + node_modules/.bin/is-ci | 1 + node_modules/.bin/mkdirp | 1 + node_modules/.bin/rimraf | 1 + node_modules/.bin/semver | 1 + node_modules/.bin/sshpk-conv | 1 + node_modules/.bin/sshpk-sign | 1 + node_modules/.bin/sshpk-verify | 1 + node_modules/.bin/uuid | 1 + node_modules/.bin/which | 1 + .../@cypress/listr-verbose-renderer/index.js | 66 + .../listr-verbose-renderer/lib/utils.js | 9 + .../@cypress/listr-verbose-renderer/license | 21 + .../node_modules/chalk/index.js | 116 + .../node_modules/chalk/license | 21 + .../node_modules/chalk/package.json | 114 + .../node_modules/chalk/readme.md | 213 + .../node_modules/supports-color/index.js | 50 + .../node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 89 + .../node_modules/supports-color/readme.md | 36 + .../listr-verbose-renderer/package.json | 86 + .../@cypress/listr-verbose-renderer/readme.md | 63 + node_modules/@cypress/xvfb/LICENSE | 20 + node_modules/@cypress/xvfb/README.md | 48 + node_modules/@cypress/xvfb/index.js | 221 + node_modules/@cypress/xvfb/package.json | 101 + node_modules/ajv/.tonic_example.js | 20 + node_modules/ajv/LICENSE | 22 + node_modules/ajv/README.md | 1359 ++ node_modules/ajv/dist/ajv.bundle.js | 7172 ++++++ node_modules/ajv/dist/ajv.min.js | 3 + node_modules/ajv/dist/ajv.min.js.map | 1 + node_modules/ajv/lib/ajv.d.ts | 390 + node_modules/ajv/lib/ajv.js | 497 + node_modules/ajv/lib/cache.js | 26 + node_modules/ajv/lib/compile/async.js | 90 + node_modules/ajv/lib/compile/equal.js | 5 + node_modules/ajv/lib/compile/error_classes.js | 34 + node_modules/ajv/lib/compile/formats.js | 149 + node_modules/ajv/lib/compile/index.js | 387 + node_modules/ajv/lib/compile/resolve.js | 270 + node_modules/ajv/lib/compile/rules.js | 66 + node_modules/ajv/lib/compile/schema_obj.js | 9 + node_modules/ajv/lib/compile/ucs2length.js | 20 + node_modules/ajv/lib/compile/util.js | 274 + node_modules/ajv/lib/data.js | 49 + node_modules/ajv/lib/definition_schema.js | 37 + node_modules/ajv/lib/dot/_limit.jst | 104 + node_modules/ajv/lib/dot/_limitItems.jst | 10 + node_modules/ajv/lib/dot/_limitLength.jst | 10 + node_modules/ajv/lib/dot/_limitProperties.jst | 10 + node_modules/ajv/lib/dot/allOf.jst | 34 + node_modules/ajv/lib/dot/anyOf.jst | 48 + node_modules/ajv/lib/dot/coerce.def | 61 + node_modules/ajv/lib/dot/comment.jst | 9 + node_modules/ajv/lib/dot/const.jst | 11 + node_modules/ajv/lib/dot/contains.jst | 57 + node_modules/ajv/lib/dot/custom.jst | 191 + node_modules/ajv/lib/dot/defaults.def | 47 + node_modules/ajv/lib/dot/definitions.def | 201 + node_modules/ajv/lib/dot/dependencies.jst | 80 + node_modules/ajv/lib/dot/enum.jst | 30 + node_modules/ajv/lib/dot/errors.def | 194 + node_modules/ajv/lib/dot/format.jst | 106 + node_modules/ajv/lib/dot/if.jst | 75 + node_modules/ajv/lib/dot/items.jst | 100 + node_modules/ajv/lib/dot/missing.def | 39 + node_modules/ajv/lib/dot/multipleOf.jst | 20 + node_modules/ajv/lib/dot/not.jst | 43 + node_modules/ajv/lib/dot/oneOf.jst | 54 + node_modules/ajv/lib/dot/pattern.jst | 14 + node_modules/ajv/lib/dot/properties.jst | 244 + node_modules/ajv/lib/dot/propertyNames.jst | 54 + node_modules/ajv/lib/dot/ref.jst | 85 + node_modules/ajv/lib/dot/required.jst | 108 + node_modules/ajv/lib/dot/uniqueItems.jst | 62 + node_modules/ajv/lib/dot/validate.jst | 282 + node_modules/ajv/lib/dotjs/README.md | 3 + node_modules/ajv/lib/dotjs/_limit.js | 157 + node_modules/ajv/lib/dotjs/_limitItems.js | 77 + node_modules/ajv/lib/dotjs/_limitLength.js | 82 + .../ajv/lib/dotjs/_limitProperties.js | 77 + node_modules/ajv/lib/dotjs/allOf.js | 43 + node_modules/ajv/lib/dotjs/anyOf.js | 74 + node_modules/ajv/lib/dotjs/comment.js | 14 + node_modules/ajv/lib/dotjs/const.js | 56 + node_modules/ajv/lib/dotjs/contains.js | 82 + node_modules/ajv/lib/dotjs/custom.js | 228 + node_modules/ajv/lib/dotjs/dependencies.js | 168 + node_modules/ajv/lib/dotjs/enum.js | 66 + node_modules/ajv/lib/dotjs/format.js | 150 + node_modules/ajv/lib/dotjs/if.js | 104 + node_modules/ajv/lib/dotjs/index.js | 33 + node_modules/ajv/lib/dotjs/items.js | 141 + node_modules/ajv/lib/dotjs/multipleOf.js | 77 + node_modules/ajv/lib/dotjs/not.js | 84 + node_modules/ajv/lib/dotjs/oneOf.js | 73 + node_modules/ajv/lib/dotjs/pattern.js | 75 + node_modules/ajv/lib/dotjs/properties.js | 330 + node_modules/ajv/lib/dotjs/propertyNames.js | 82 + node_modules/ajv/lib/dotjs/ref.js | 124 + node_modules/ajv/lib/dotjs/required.js | 270 + node_modules/ajv/lib/dotjs/uniqueItems.js | 86 + node_modules/ajv/lib/dotjs/validate.js | 494 + node_modules/ajv/lib/keyword.js | 146 + node_modules/ajv/lib/refs/data.json | 17 + .../ajv/lib/refs/json-schema-draft-04.json | 149 + .../ajv/lib/refs/json-schema-draft-06.json | 154 + .../ajv/lib/refs/json-schema-draft-07.json | 168 + .../ajv/lib/refs/json-schema-secure.json | 94 + node_modules/ajv/package.json | 125 + node_modules/ajv/scripts/.eslintrc.yml | 3 + node_modules/ajv/scripts/bundle.js | 61 + node_modules/ajv/scripts/compile-dots.js | 73 + node_modules/ajv/scripts/info | 10 + node_modules/ajv/scripts/prepare-tests | 12 + .../ajv/scripts/publish-built-version | 32 + node_modules/ajv/scripts/travis-gh-pages | 23 + node_modules/ansi-escapes/index.js | 106 + node_modules/ansi-escapes/license | 21 + node_modules/ansi-escapes/package.json | 82 + node_modules/ansi-escapes/readme.md | 176 + node_modules/ansi-regex/index.js | 4 + node_modules/ansi-regex/license | 21 + node_modules/ansi-regex/package.json | 109 + node_modules/ansi-regex/readme.md | 39 + node_modules/ansi-styles/index.js | 65 + node_modules/ansi-styles/license | 21 + node_modules/ansi-styles/package.json | 94 + node_modules/ansi-styles/readme.md | 86 + node_modules/arch/LICENSE | 20 + node_modules/arch/README.md | 71 + node_modules/arch/browser.js | 43 + node_modules/arch/index.js | 59 + node_modules/arch/package.json | 70 + node_modules/asn1/LICENSE | 19 + node_modules/asn1/README.md | 50 + node_modules/asn1/lib/ber/errors.js | 13 + node_modules/asn1/lib/ber/index.js | 27 + node_modules/asn1/lib/ber/reader.js | 262 + node_modules/asn1/lib/ber/types.js | 36 + node_modules/asn1/lib/ber/writer.js | 317 + node_modules/asn1/lib/index.js | 20 + node_modules/asn1/package.json | 75 + node_modules/assert-plus/AUTHORS | 6 + node_modules/assert-plus/CHANGES.md | 14 + node_modules/assert-plus/README.md | 162 + node_modules/assert-plus/assert.js | 211 + node_modules/assert-plus/package.json | 87 + node_modules/async/CHANGELOG.md | 269 + node_modules/async/LICENSE | 19 + node_modules/async/README.md | 56 + node_modules/async/all.js | 50 + node_modules/async/allLimit.js | 42 + node_modules/async/allSeries.js | 37 + node_modules/async/any.js | 52 + node_modules/async/anyLimit.js | 43 + node_modules/async/anySeries.js | 38 + node_modules/async/apply.js | 68 + node_modules/async/applyEach.js | 51 + node_modules/async/applyEachSeries.js | 37 + node_modules/async/asyncify.js | 110 + node_modules/async/auto.js | 289 + node_modules/async/autoInject.js | 170 + node_modules/async/bower.json | 17 + node_modules/async/cargo.js | 94 + node_modules/async/compose.js | 58 + node_modules/async/concat.js | 43 + node_modules/async/concatLimit.js | 65 + node_modules/async/concatSeries.js | 36 + node_modules/async/constant.js | 66 + node_modules/async/detect.js | 61 + node_modules/async/detectLimit.js | 48 + node_modules/async/detectSeries.js | 38 + node_modules/async/dir.js | 43 + node_modules/async/dist/async.js | 5609 +++++ node_modules/async/dist/async.min.js | 2 + node_modules/async/dist/async.min.map | 1 + node_modules/async/doDuring.js | 66 + node_modules/async/doUntil.js | 39 + node_modules/async/doWhilst.js | 59 + node_modules/async/during.js | 76 + node_modules/async/each.js | 82 + node_modules/async/eachLimit.js | 45 + node_modules/async/eachOf.js | 111 + node_modules/async/eachOfLimit.js | 41 + node_modules/async/eachOfSeries.js | 35 + node_modules/async/eachSeries.js | 37 + node_modules/async/ensureAsync.js | 73 + node_modules/async/every.js | 50 + node_modules/async/everyLimit.js | 42 + node_modules/async/everySeries.js | 37 + node_modules/async/filter.js | 45 + node_modules/async/filterLimit.js | 37 + node_modules/async/filterSeries.js | 35 + node_modules/async/find.js | 61 + node_modules/async/findLimit.js | 48 + node_modules/async/findSeries.js | 38 + node_modules/async/foldl.js | 78 + node_modules/async/foldr.js | 44 + node_modules/async/forEach.js | 82 + node_modules/async/forEachLimit.js | 45 + node_modules/async/forEachOf.js | 111 + node_modules/async/forEachOfLimit.js | 41 + node_modules/async/forEachOfSeries.js | 35 + node_modules/async/forEachSeries.js | 37 + node_modules/async/forever.js | 65 + node_modules/async/groupBy.js | 54 + node_modules/async/groupByLimit.js | 71 + node_modules/async/groupBySeries.js | 37 + node_modules/async/index.js | 582 + node_modules/async/inject.js | 78 + .../async/internal/DoublyLinkedList.js | 88 + node_modules/async/internal/applyEach.js | 38 + node_modules/async/internal/breakLoop.js | 9 + node_modules/async/internal/consoleFunc.js | 42 + node_modules/async/internal/createTester.js | 44 + node_modules/async/internal/doLimit.js | 12 + node_modules/async/internal/doParallel.js | 23 + .../async/internal/doParallelLimit.js | 23 + node_modules/async/internal/eachOfLimit.js | 74 + node_modules/async/internal/filter.js | 75 + node_modules/async/internal/findGetResult.js | 10 + node_modules/async/internal/getIterator.js | 13 + node_modules/async/internal/initialParams.js | 21 + node_modules/async/internal/iterator.js | 58 + node_modules/async/internal/map.js | 35 + node_modules/async/internal/notId.js | 10 + node_modules/async/internal/once.js | 15 + node_modules/async/internal/onlyOnce.js | 15 + node_modules/async/internal/parallel.js | 42 + node_modules/async/internal/queue.js | 204 + node_modules/async/internal/reject.js | 21 + node_modules/async/internal/setImmediate.js | 42 + node_modules/async/internal/slice.js | 16 + node_modules/async/internal/withoutIndex.js | 12 + node_modules/async/internal/wrapAsync.js | 25 + node_modules/async/log.js | 41 + node_modules/async/map.js | 54 + node_modules/async/mapLimit.js | 37 + node_modules/async/mapSeries.js | 36 + node_modules/async/mapValues.js | 63 + node_modules/async/mapValuesLimit.js | 61 + node_modules/async/mapValuesSeries.js | 37 + node_modules/async/memoize.js | 101 + node_modules/async/nextTick.js | 51 + node_modules/async/package.json | 107 + node_modules/async/parallel.js | 90 + node_modules/async/parallelLimit.js | 40 + node_modules/async/priorityQueue.js | 98 + node_modules/async/queue.js | 130 + node_modules/async/race.js | 70 + node_modules/async/reduce.js | 78 + node_modules/async/reduceRight.js | 44 + node_modules/async/reflect.js | 81 + node_modules/async/reflectAll.js | 105 + node_modules/async/reject.js | 45 + node_modules/async/rejectLimit.js | 37 + node_modules/async/rejectSeries.js | 35 + node_modules/async/retry.js | 156 + node_modules/async/retryable.js | 65 + node_modules/async/select.js | 45 + node_modules/async/selectLimit.js | 37 + node_modules/async/selectSeries.js | 35 + node_modules/async/seq.js | 91 + node_modules/async/series.js | 85 + node_modules/async/setImmediate.js | 45 + node_modules/async/some.js | 52 + node_modules/async/someLimit.js | 43 + node_modules/async/someSeries.js | 38 + node_modules/async/sortBy.js | 91 + node_modules/async/timeout.js | 89 + node_modules/async/times.js | 50 + node_modules/async/timesLimit.js | 42 + node_modules/async/timesSeries.js | 32 + node_modules/async/transform.js | 87 + node_modules/async/tryEach.js | 81 + node_modules/async/unmemoize.js | 25 + node_modules/async/until.js | 41 + node_modules/async/waterfall.js | 113 + node_modules/async/whilst.js | 72 + node_modules/async/wrapSync.js | 110 + node_modules/asynckit/LICENSE | 21 + node_modules/asynckit/README.md | 233 + node_modules/asynckit/bench.js | 76 + node_modules/asynckit/index.js | 6 + node_modules/asynckit/lib/abort.js | 29 + node_modules/asynckit/lib/async.js | 34 + node_modules/asynckit/lib/defer.js | 26 + node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + node_modules/asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + node_modules/asynckit/lib/state.js | 37 + node_modules/asynckit/lib/streamify.js | 141 + node_modules/asynckit/lib/terminator.js | 29 + node_modules/asynckit/package.json | 91 + node_modules/asynckit/parallel.js | 43 + node_modules/asynckit/serial.js | 17 + node_modules/asynckit/serialOrdered.js | 75 + node_modules/asynckit/stream.js | 21 + node_modules/aws-sign2/LICENSE | 55 + node_modules/aws-sign2/README.md | 4 + node_modules/aws-sign2/index.js | 212 + node_modules/aws-sign2/package.json | 50 + node_modules/aws4/.travis.yml | 5 + node_modules/aws4/LICENSE | 19 + node_modules/aws4/README.md | 523 + node_modules/aws4/aws4.js | 332 + node_modules/aws4/lru.js | 96 + node_modules/aws4/package.json | 104 + node_modules/balanced-match/.npmignore | 5 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 91 + node_modules/balanced-match/index.js | 59 + node_modules/balanced-match/package.json | 77 + node_modules/bcrypt-pbkdf/CONTRIBUTING.md | 13 + node_modules/bcrypt-pbkdf/LICENSE | 66 + node_modules/bcrypt-pbkdf/README.md | 45 + node_modules/bcrypt-pbkdf/index.js | 556 + node_modules/bcrypt-pbkdf/package.json | 44 + node_modules/bluebird/LICENSE | 21 + node_modules/bluebird/README.md | 51 + node_modules/bluebird/changelog.md | 1 + .../bluebird/js/browser/bluebird.core.js | 3777 +++ .../bluebird/js/browser/bluebird.core.min.js | 31 + node_modules/bluebird/js/browser/bluebird.js | 5619 +++++ .../bluebird/js/browser/bluebird.min.js | 31 + node_modules/bluebird/js/release/any.js | 21 + node_modules/bluebird/js/release/assert.js | 55 + node_modules/bluebird/js/release/async.js | 161 + node_modules/bluebird/js/release/bind.js | 67 + node_modules/bluebird/js/release/bluebird.js | 11 + node_modules/bluebird/js/release/call_get.js | 123 + node_modules/bluebird/js/release/cancel.js | 129 + .../bluebird/js/release/catch_filter.js | 42 + node_modules/bluebird/js/release/context.js | 69 + .../bluebird/js/release/debuggability.js | 916 + .../bluebird/js/release/direct_resolve.js | 46 + node_modules/bluebird/js/release/each.js | 30 + node_modules/bluebird/js/release/errors.js | 116 + node_modules/bluebird/js/release/es5.js | 80 + node_modules/bluebird/js/release/filter.js | 12 + node_modules/bluebird/js/release/finally.js | 146 + .../bluebird/js/release/generators.js | 223 + node_modules/bluebird/js/release/join.js | 168 + node_modules/bluebird/js/release/map.js | 168 + node_modules/bluebird/js/release/method.js | 55 + node_modules/bluebird/js/release/nodeback.js | 51 + node_modules/bluebird/js/release/nodeify.js | 58 + node_modules/bluebird/js/release/promise.js | 775 + .../bluebird/js/release/promise_array.js | 185 + node_modules/bluebird/js/release/promisify.js | 314 + node_modules/bluebird/js/release/props.js | 118 + node_modules/bluebird/js/release/queue.js | 73 + node_modules/bluebird/js/release/race.js | 49 + node_modules/bluebird/js/release/reduce.js | 172 + node_modules/bluebird/js/release/schedule.js | 61 + node_modules/bluebird/js/release/settle.js | 43 + node_modules/bluebird/js/release/some.js | 148 + .../js/release/synchronous_inspection.js | 103 + node_modules/bluebird/js/release/thenables.js | 86 + node_modules/bluebird/js/release/timers.js | 93 + node_modules/bluebird/js/release/using.js | 226 + node_modules/bluebird/js/release/util.js | 379 + node_modules/bluebird/package.json | 101 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 129 + node_modules/brace-expansion/index.js | 201 + node_modules/brace-expansion/package.json | 75 + node_modules/buffer-crc32/LICENSE | 19 + node_modules/buffer-crc32/README.md | 47 + node_modules/buffer-crc32/index.js | 111 + node_modules/buffer-crc32/package.json | 69 + node_modules/buffer-from/LICENSE | 21 + node_modules/buffer-from/index.js | 69 + node_modules/buffer-from/package.json | 52 + node_modules/buffer-from/readme.md | 69 + node_modules/cachedir/.travis.yml | 6 + node_modules/cachedir/LICENSE | 20 + node_modules/cachedir/README.md | 18 + node_modules/cachedir/index.js | 42 + node_modules/cachedir/package.json | 55 + node_modules/cachedir/test.js | 58 + node_modules/caseless/LICENSE | 28 + node_modules/caseless/README.md | 45 + node_modules/caseless/index.js | 67 + node_modules/caseless/package.json | 56 + node_modules/caseless/test.js | 67 + node_modules/chalk/index.js | 228 + node_modules/chalk/index.js.flow | 93 + node_modules/chalk/license | 9 + .../chalk/node_modules/ansi-styles/index.js | 165 + .../chalk/node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 88 + .../chalk/node_modules/ansi-styles/readme.md | 147 + node_modules/chalk/package.json | 106 + node_modules/chalk/readme.md | 314 + node_modules/chalk/templates.js | 128 + node_modules/chalk/types/index.d.ts | 97 + node_modules/check-more-types/LICENSE | 20 + node_modules/check-more-types/README.md | 952 + node_modules/check-more-types/bower.json | 29 + .../dist/check-more-types.d.ts | 20 + .../check-more-types/dist/check-more-types.js | 1132 + .../dist/check-more-types.min.js | 14 + node_modules/check-more-types/package.json | 154 + node_modules/ci-info/CHANGELOG.md | 62 + node_modules/ci-info/LICENSE | 21 + node_modules/ci-info/README.md | 107 + node_modules/ci-info/index.js | 66 + node_modules/ci-info/package.json | 65 + node_modules/ci-info/vendors.json | 152 + node_modules/cli-cursor/index.js | 26 + node_modules/cli-cursor/license | 21 + node_modules/cli-cursor/package.json | 78 + node_modules/cli-cursor/readme.md | 40 + node_modules/cli-spinners/index.js | 2 + node_modules/cli-spinners/license | 21 + node_modules/cli-spinners/package.json | 76 + node_modules/cli-spinners/readme.md | 48 + node_modules/cli-spinners/spinners.json | 671 + node_modules/cli-truncate/index.js | 43 + node_modules/cli-truncate/license | 21 + node_modules/cli-truncate/package.json | 75 + node_modules/cli-truncate/readme.md | 75 + node_modules/code-point-at/index.js | 32 + node_modules/code-point-at/license | 21 + node_modules/code-point-at/package.json | 70 + node_modules/code-point-at/readme.md | 32 + node_modules/color-convert/CHANGELOG.md | 54 + node_modules/color-convert/LICENSE | 21 + node_modules/color-convert/README.md | 68 + node_modules/color-convert/conversions.js | 868 + node_modules/color-convert/index.js | 78 + node_modules/color-convert/package.json | 81 + node_modules/color-convert/route.js | 97 + node_modules/color-name/.eslintrc.json | 43 + node_modules/color-name/.npmignore | 107 + node_modules/color-name/LICENSE | 8 + node_modules/color-name/README.md | 11 + node_modules/color-name/index.js | 152 + node_modules/color-name/package.json | 53 + node_modules/color-name/test.js | 7 + node_modules/combined-stream/License | 19 + node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 208 + node_modules/combined-stream/package.json | 58 + node_modules/combined-stream/yarn.lock | 17 + node_modules/commander/CHANGELOG.md | 356 + node_modules/commander/LICENSE | 22 + node_modules/commander/Readme.md | 408 + node_modules/commander/index.js | 1231 + node_modules/commander/package.json | 69 + node_modules/commander/typings/index.d.ts | 309 + .../common-tags/dist/common-tags.min.js | 1 + .../common-tags/es/TemplateTag/TemplateTag.js | 165 + .../common-tags/es/TemplateTag/index.js | 3 + .../common-tags/es/codeBlock/index.js | 3 + .../common-tags/es/commaLists/commaLists.js | 9 + .../common-tags/es/commaLists/index.js | 3 + .../es/commaListsAnd/commaListsAnd.js | 9 + .../common-tags/es/commaListsAnd/index.js | 3 + .../es/commaListsOr/commaListsOr.js | 9 + .../common-tags/es/commaListsOr/index.js | 3 + node_modules/common-tags/es/html/html.js | 11 + node_modules/common-tags/es/html/index.js | 3 + node_modules/common-tags/es/index.js | 58 + .../es/inlineArrayTransformer/index.js | 3 + .../inlineArrayTransformer.js | 45 + .../common-tags/es/inlineLists/index.js | 3 + .../common-tags/es/inlineLists/inlineLists.js | 9 + node_modules/common-tags/es/oneLine/index.js | 3 + .../common-tags/es/oneLine/oneLine.js | 8 + .../common-tags/es/oneLineCommaLists/index.js | 3 + .../es/oneLineCommaLists/oneLineCommaLists.js | 9 + .../es/oneLineCommaListsAnd/index.js | 3 + .../oneLineCommaListsAnd.js | 9 + .../es/oneLineCommaListsOr/index.js | 3 + .../oneLineCommaListsOr.js | 9 + .../es/oneLineInlineLists/index.js | 3 + .../oneLineInlineLists/oneLineInlineLists.js | 9 + .../common-tags/es/oneLineTrim/index.js | 3 + .../common-tags/es/oneLineTrim/oneLineTrim.js | 8 + .../index.js | 3 + .../removeNonPrintingValuesTransformer.js | 20 + .../es/replaceResultTransformer/index.js | 3 + .../replaceResultTransformer.js | 19 + .../es/replaceStringTransformer/index.js | 3 + .../replaceStringTransformer.js | 14 + .../replaceSubstitutionTransformer/index.js | 3 + .../replaceSubstitutionTransformer.js | 19 + node_modules/common-tags/es/safeHtml/index.js | 3 + .../common-tags/es/safeHtml/safeHtml.js | 11 + node_modules/common-tags/es/source/index.js | 3 + .../es/splitStringTransformer/index.js | 3 + .../splitStringTransformer.js | 17 + .../common-tags/es/stripIndent/index.js | 3 + .../common-tags/es/stripIndent/stripIndent.js | 8 + .../es/stripIndentTransformer/index.js | 3 + .../stripIndentTransformer.js | 34 + .../common-tags/es/stripIndents/index.js | 3 + .../es/stripIndents/stripIndents.js | 8 + .../es/trimResultTransformer/index.js | 3 + .../trimResultTransformer.js | 30 + node_modules/common-tags/es/utils/index.js | 3 + .../es/utils/readFromFixture/index.js | 3 + .../utils/readFromFixture/readFromFixture.js | 16 + .../lib/TemplateTag/TemplateTag.js | 172 + .../common-tags/lib/TemplateTag/index.js | 16 + .../common-tags/lib/codeBlock/index.js | 16 + .../common-tags/lib/commaLists/commaLists.js | 29 + .../common-tags/lib/commaLists/index.js | 16 + .../lib/commaListsAnd/commaListsAnd.js | 29 + .../common-tags/lib/commaListsAnd/index.js | 16 + .../lib/commaListsOr/commaListsOr.js | 29 + .../common-tags/lib/commaListsOr/index.js | 16 + node_modules/common-tags/lib/html/html.js | 37 + node_modules/common-tags/lib/html/index.js | 16 + node_modules/common-tags/lib/index.js | 142 + .../lib/inlineArrayTransformer/index.js | 16 + .../inlineArrayTransformer.js | 51 + .../common-tags/lib/inlineLists/index.js | 16 + .../lib/inlineLists/inlineLists.js | 29 + node_modules/common-tags/lib/oneLine/index.js | 16 + .../common-tags/lib/oneLine/oneLine.js | 25 + .../lib/oneLineCommaLists/index.js | 16 + .../oneLineCommaLists/oneLineCommaLists.js | 29 + .../lib/oneLineCommaListsAnd/index.js | 16 + .../oneLineCommaListsAnd.js | 29 + .../lib/oneLineCommaListsOr/index.js | 16 + .../oneLineCommaListsOr.js | 29 + .../lib/oneLineInlineLists/index.js | 16 + .../oneLineInlineLists/oneLineInlineLists.js | 29 + .../common-tags/lib/oneLineTrim/index.js | 16 + .../lib/oneLineTrim/oneLineTrim.js | 25 + .../index.js | 16 + .../removeNonPrintingValuesTransformer.js | 26 + .../lib/replaceResultTransformer/index.js | 16 + .../replaceResultTransformer.js | 25 + .../lib/replaceStringTransformer/index.js | 16 + .../replaceStringTransformer.js | 20 + .../replaceSubstitutionTransformer/index.js | 16 + .../replaceSubstitutionTransformer.js | 25 + .../common-tags/lib/safeHtml/index.js | 16 + .../common-tags/lib/safeHtml/safeHtml.js | 37 + node_modules/common-tags/lib/source/index.js | 16 + .../lib/splitStringTransformer/index.js | 16 + .../splitStringTransformer.js | 23 + .../common-tags/lib/stripIndent/index.js | 16 + .../lib/stripIndent/stripIndent.js | 25 + .../lib/stripIndentTransformer/index.js | 16 + .../stripIndentTransformer.js | 41 + .../common-tags/lib/stripIndents/index.js | 16 + .../lib/stripIndents/stripIndents.js | 25 + .../lib/trimResultTransformer/index.js | 16 + .../trimResultTransformer.js | 36 + node_modules/common-tags/lib/utils/index.js | 15 + .../lib/utils/readFromFixture/index.js | 16 + .../utils/readFromFixture/readFromFixture.js | 34 + node_modules/common-tags/license.md | 10 + node_modules/common-tags/package.json | 150 + node_modules/common-tags/readme.md | 687 + node_modules/concat-map/.travis.yml | 4 + node_modules/concat-map/LICENSE | 18 + node_modules/concat-map/README.markdown | 62 + node_modules/concat-map/example/map.js | 6 + node_modules/concat-map/index.js | 13 + node_modules/concat-map/package.json | 88 + node_modules/concat-map/test/map.js | 39 + node_modules/concat-stream/LICENSE | 24 + node_modules/concat-stream/index.js | 144 + node_modules/concat-stream/package.json | 84 + node_modules/concat-stream/readme.md | 102 + node_modules/core-util-is/LICENSE | 19 + node_modules/core-util-is/README.md | 3 + node_modules/core-util-is/float.patch | 604 + node_modules/core-util-is/lib/util.js | 107 + node_modules/core-util-is/package.json | 63 + node_modules/core-util-is/test.js | 68 + node_modules/cross-spawn/CHANGELOG.md | 100 + node_modules/cross-spawn/LICENSE | 21 + node_modules/cross-spawn/README.md | 94 + node_modules/cross-spawn/index.js | 39 + node_modules/cross-spawn/lib/enoent.js | 59 + node_modules/cross-spawn/lib/parse.js | 125 + node_modules/cross-spawn/lib/util/escape.js | 45 + .../cross-spawn/lib/util/readShebang.js | 32 + .../cross-spawn/lib/util/resolveCommand.js | 47 + node_modules/cross-spawn/package.json | 107 + node_modules/cypress/README.md | 23 + node_modules/cypress/bin/cypress | 3 + node_modules/cypress/index.js | 27 + node_modules/cypress/lib/cli.js | 232 + node_modules/cypress/lib/cypress.js | 45 + node_modules/cypress/lib/errors.js | 242 + node_modules/cypress/lib/exec/open.js | 55 + node_modules/cypress/lib/exec/run.js | 132 + node_modules/cypress/lib/exec/spawn.js | 237 + node_modules/cypress/lib/exec/versions.js | 44 + node_modules/cypress/lib/exec/xvfb.js | 85 + node_modules/cypress/lib/fs.js | 5 + node_modules/cypress/lib/logger.js | 69 + node_modules/cypress/lib/tasks/cache.js | 28 + node_modules/cypress/lib/tasks/download.js | 302 + node_modules/cypress/lib/tasks/install.js | 336 + node_modules/cypress/lib/tasks/state.js | 166 + node_modules/cypress/lib/tasks/unzip.js | 159 + node_modules/cypress/lib/tasks/verify.js | 309 + node_modules/cypress/lib/util.js | 380 + node_modules/cypress/package.json | 108 + node_modules/cypress/types/blob-util/LICENSE | 21 + .../cypress/types/blob-util/README.md | 16 + .../cypress/types/blob-util/index.d.ts | 97 + .../cypress/types/blob-util/package.json | 51 + node_modules/cypress/types/bluebird/LICENSE | 21 + node_modules/cypress/types/bluebird/README.md | 16 + .../cypress/types/bluebird/index.d.ts | 1315 + .../cypress/types/bluebird/package.json | 51 + .../cypress/types/chai-jquery/LICENSE | 21 + .../cypress/types/chai-jquery/README.md | 16 + .../cypress/types/chai-jquery/index.d.ts | 2587 ++ .../cypress/types/chai-jquery/package.json | 55 + node_modules/cypress/types/chai/LICENSE | 21 + node_modules/cypress/types/chai/README.md | 16 + node_modules/cypress/types/chai/index.d.ts | 1624 ++ node_modules/cypress/types/chai/package.json | 81 + node_modules/cypress/types/cy-blob-util.d.ts | 13 + node_modules/cypress/types/cy-bluebird.d.ts | 11 + node_modules/cypress/types/cy-chai.d.ts | 10 + node_modules/cypress/types/cy-minimatch.d.ts | 96 + node_modules/cypress/types/cy-moment.d.ts | 7 + .../cypress/types/cypress-npm-api.d.ts | 504 + node_modules/cypress/types/index.d.ts | 4420 ++++ node_modules/cypress/types/jquery/LICENSE | 21 + node_modules/cypress/types/jquery/README.md | 16 + node_modules/cypress/types/jquery/index.d.ts | 8560 +++++++ .../cypress/types/jquery/package.json | 132 + node_modules/cypress/types/lodash/LICENSE | 21 + node_modules/cypress/types/lodash/README.md | 16 + node_modules/cypress/types/lodash/add.d.ts | 2 + node_modules/cypress/types/lodash/after.d.ts | 2 + node_modules/cypress/types/lodash/ary.d.ts | 2 + node_modules/cypress/types/lodash/assign.d.ts | 2 + .../cypress/types/lodash/assignIn.d.ts | 2 + .../cypress/types/lodash/assignInWith.d.ts | 2 + .../cypress/types/lodash/assignWith.d.ts | 2 + node_modules/cypress/types/lodash/at.d.ts | 2 + .../cypress/types/lodash/attempt.d.ts | 2 + node_modules/cypress/types/lodash/before.d.ts | 2 + node_modules/cypress/types/lodash/bind.d.ts | 2 + .../cypress/types/lodash/bindAll.d.ts | 2 + .../cypress/types/lodash/bindKey.d.ts | 2 + .../cypress/types/lodash/camelCase.d.ts | 2 + .../cypress/types/lodash/capitalize.d.ts | 2 + .../cypress/types/lodash/castArray.d.ts | 2 + node_modules/cypress/types/lodash/ceil.d.ts | 2 + node_modules/cypress/types/lodash/chain.d.ts | 2 + node_modules/cypress/types/lodash/chunk.d.ts | 2 + node_modules/cypress/types/lodash/clamp.d.ts | 2 + node_modules/cypress/types/lodash/clone.d.ts | 2 + .../cypress/types/lodash/cloneDeep.d.ts | 2 + .../cypress/types/lodash/cloneDeepWith.d.ts | 2 + .../cypress/types/lodash/cloneWith.d.ts | 2 + .../cypress/types/lodash/common/array.d.ts | 3708 +++ .../types/lodash/common/collection.d.ts | 2575 ++ .../cypress/types/lodash/common/common.d.ts | 270 + .../cypress/types/lodash/common/date.d.ts | 27 + .../cypress/types/lodash/common/function.d.ts | 1489 ++ .../cypress/types/lodash/common/lang.d.ts | 1936 ++ .../cypress/types/lodash/common/math.d.ts | 532 + .../cypress/types/lodash/common/number.d.ts | 178 + .../cypress/types/lodash/common/object.d.ts | 3905 +++ .../cypress/types/lodash/common/seq.d.ts | 196 + .../cypress/types/lodash/common/string.d.ts | 1059 + .../cypress/types/lodash/common/util.d.ts | 1463 ++ .../cypress/types/lodash/compact.d.ts | 2 + node_modules/cypress/types/lodash/concat.d.ts | 2 + node_modules/cypress/types/lodash/cond.d.ts | 2 + .../cypress/types/lodash/conformsTo.d.ts | 2 + .../cypress/types/lodash/constant.d.ts | 2 + .../cypress/types/lodash/countBy.d.ts | 2 + node_modules/cypress/types/lodash/create.d.ts | 2 + node_modules/cypress/types/lodash/curry.d.ts | 2 + .../cypress/types/lodash/curryRight.d.ts | 2 + .../cypress/types/lodash/debounce.d.ts | 2 + node_modules/cypress/types/lodash/deburr.d.ts | 2 + .../cypress/types/lodash/defaultTo.d.ts | 2 + .../cypress/types/lodash/defaults.d.ts | 2 + .../cypress/types/lodash/defaultsDeep.d.ts | 2 + node_modules/cypress/types/lodash/defer.d.ts | 2 + node_modules/cypress/types/lodash/delay.d.ts | 2 + .../cypress/types/lodash/difference.d.ts | 2 + .../cypress/types/lodash/differenceBy.d.ts | 2 + .../cypress/types/lodash/differenceWith.d.ts | 2 + node_modules/cypress/types/lodash/divide.d.ts | 2 + node_modules/cypress/types/lodash/drop.d.ts | 2 + .../cypress/types/lodash/dropRight.d.ts | 2 + .../cypress/types/lodash/dropRightWhile.d.ts | 2 + .../cypress/types/lodash/dropWhile.d.ts | 2 + node_modules/cypress/types/lodash/each.d.ts | 2 + .../cypress/types/lodash/eachRight.d.ts | 2 + .../cypress/types/lodash/endsWith.d.ts | 2 + .../cypress/types/lodash/entries.d.ts | 2 + .../cypress/types/lodash/entriesIn.d.ts | 2 + node_modules/cypress/types/lodash/eq.d.ts | 2 + node_modules/cypress/types/lodash/escape.d.ts | 2 + .../cypress/types/lodash/escapeRegExp.d.ts | 2 + node_modules/cypress/types/lodash/every.d.ts | 2 + node_modules/cypress/types/lodash/extend.d.ts | 2 + .../cypress/types/lodash/extendWith.d.ts | 2 + node_modules/cypress/types/lodash/fill.d.ts | 2 + node_modules/cypress/types/lodash/filter.d.ts | 2 + node_modules/cypress/types/lodash/find.d.ts | 2 + .../cypress/types/lodash/findIndex.d.ts | 2 + .../cypress/types/lodash/findKey.d.ts | 2 + .../cypress/types/lodash/findLast.d.ts | 2 + .../cypress/types/lodash/findLastIndex.d.ts | 2 + .../cypress/types/lodash/findLastKey.d.ts | 2 + node_modules/cypress/types/lodash/first.d.ts | 2 + .../cypress/types/lodash/flatMap.d.ts | 2 + .../cypress/types/lodash/flatMapDeep.d.ts | 2 + .../cypress/types/lodash/flatMapDepth.d.ts | 2 + .../cypress/types/lodash/flatten.d.ts | 2 + .../cypress/types/lodash/flattenDeep.d.ts | 2 + .../cypress/types/lodash/flattenDepth.d.ts | 2 + node_modules/cypress/types/lodash/flip.d.ts | 2 + node_modules/cypress/types/lodash/floor.d.ts | 2 + node_modules/cypress/types/lodash/flow.d.ts | 2 + .../cypress/types/lodash/flowRight.d.ts | 2 + .../cypress/types/lodash/forEach.d.ts | 2 + .../cypress/types/lodash/forEachRight.d.ts | 2 + node_modules/cypress/types/lodash/forIn.d.ts | 2 + .../cypress/types/lodash/forInRight.d.ts | 2 + node_modules/cypress/types/lodash/forOwn.d.ts | 2 + .../cypress/types/lodash/forOwnRight.d.ts | 2 + node_modules/cypress/types/lodash/fp.d.ts | 4766 ++++ node_modules/cypress/types/lodash/fp/F.d.ts | 2 + node_modules/cypress/types/lodash/fp/T.d.ts | 2 + node_modules/cypress/types/lodash/fp/__.d.ts | 3 + node_modules/cypress/types/lodash/fp/add.d.ts | 2 + .../cypress/types/lodash/fp/after.d.ts | 2 + node_modules/cypress/types/lodash/fp/all.d.ts | 2 + .../cypress/types/lodash/fp/allPass.d.ts | 2 + .../cypress/types/lodash/fp/always.d.ts | 2 + node_modules/cypress/types/lodash/fp/any.d.ts | 2 + .../cypress/types/lodash/fp/anyPass.d.ts | 2 + .../cypress/types/lodash/fp/apply.d.ts | 2 + node_modules/cypress/types/lodash/fp/ary.d.ts | 2 + .../cypress/types/lodash/fp/assign.d.ts | 2 + .../cypress/types/lodash/fp/assignAll.d.ts | 2 + .../types/lodash/fp/assignAllWith.d.ts | 2 + .../cypress/types/lodash/fp/assignIn.d.ts | 2 + .../cypress/types/lodash/fp/assignInAll.d.ts | 2 + .../types/lodash/fp/assignInAllWith.d.ts | 2 + .../cypress/types/lodash/fp/assignInWith.d.ts | 2 + .../cypress/types/lodash/fp/assignWith.d.ts | 2 + .../cypress/types/lodash/fp/assoc.d.ts | 2 + .../cypress/types/lodash/fp/assocPath.d.ts | 2 + node_modules/cypress/types/lodash/fp/at.d.ts | 2 + .../cypress/types/lodash/fp/attempt.d.ts | 2 + .../cypress/types/lodash/fp/before.d.ts | 2 + .../cypress/types/lodash/fp/bind.d.ts | 2 + .../cypress/types/lodash/fp/bindAll.d.ts | 2 + .../cypress/types/lodash/fp/bindKey.d.ts | 2 + .../cypress/types/lodash/fp/camelCase.d.ts | 2 + .../cypress/types/lodash/fp/capitalize.d.ts | 2 + .../cypress/types/lodash/fp/castArray.d.ts | 2 + .../cypress/types/lodash/fp/ceil.d.ts | 2 + .../cypress/types/lodash/fp/chunk.d.ts | 2 + .../cypress/types/lodash/fp/clamp.d.ts | 2 + .../cypress/types/lodash/fp/clone.d.ts | 2 + .../cypress/types/lodash/fp/cloneDeep.d.ts | 2 + .../types/lodash/fp/cloneDeepWith.d.ts | 2 + .../cypress/types/lodash/fp/cloneWith.d.ts | 2 + .../cypress/types/lodash/fp/compact.d.ts | 2 + .../cypress/types/lodash/fp/complement.d.ts | 2 + .../cypress/types/lodash/fp/compose.d.ts | 2 + .../cypress/types/lodash/fp/concat.d.ts | 2 + .../cypress/types/lodash/fp/cond.d.ts | 2 + .../cypress/types/lodash/fp/conforms.d.ts | 2 + .../cypress/types/lodash/fp/conformsTo.d.ts | 2 + .../cypress/types/lodash/fp/constant.d.ts | 2 + .../cypress/types/lodash/fp/contains.d.ts | 2 + .../cypress/types/lodash/fp/convert.d.ts | 15 + .../cypress/types/lodash/fp/countBy.d.ts | 2 + .../cypress/types/lodash/fp/create.d.ts | 2 + .../cypress/types/lodash/fp/curry.d.ts | 2 + .../cypress/types/lodash/fp/curryN.d.ts | 2 + .../cypress/types/lodash/fp/curryRight.d.ts | 2 + .../cypress/types/lodash/fp/curryRightN.d.ts | 2 + .../cypress/types/lodash/fp/debounce.d.ts | 2 + .../cypress/types/lodash/fp/deburr.d.ts | 2 + .../cypress/types/lodash/fp/defaultTo.d.ts | 2 + .../cypress/types/lodash/fp/defaults.d.ts | 2 + .../cypress/types/lodash/fp/defaultsAll.d.ts | 2 + .../cypress/types/lodash/fp/defaultsDeep.d.ts | 2 + .../types/lodash/fp/defaultsDeepAll.d.ts | 2 + .../cypress/types/lodash/fp/defer.d.ts | 2 + .../cypress/types/lodash/fp/delay.d.ts | 2 + .../cypress/types/lodash/fp/difference.d.ts | 2 + .../cypress/types/lodash/fp/differenceBy.d.ts | 2 + .../types/lodash/fp/differenceWith.d.ts | 2 + .../cypress/types/lodash/fp/dissoc.d.ts | 2 + .../cypress/types/lodash/fp/dissocPath.d.ts | 2 + .../cypress/types/lodash/fp/divide.d.ts | 2 + .../cypress/types/lodash/fp/drop.d.ts | 2 + .../cypress/types/lodash/fp/dropLast.d.ts | 2 + .../types/lodash/fp/dropLastWhile.d.ts | 2 + .../cypress/types/lodash/fp/dropRight.d.ts | 2 + .../types/lodash/fp/dropRightWhile.d.ts | 2 + .../cypress/types/lodash/fp/dropWhile.d.ts | 2 + .../cypress/types/lodash/fp/each.d.ts | 2 + .../cypress/types/lodash/fp/eachRight.d.ts | 2 + .../cypress/types/lodash/fp/endsWith.d.ts | 2 + .../cypress/types/lodash/fp/entries.d.ts | 2 + .../cypress/types/lodash/fp/entriesIn.d.ts | 2 + node_modules/cypress/types/lodash/fp/eq.d.ts | 2 + .../cypress/types/lodash/fp/equals.d.ts | 2 + .../cypress/types/lodash/fp/escape.d.ts | 2 + .../cypress/types/lodash/fp/escapeRegExp.d.ts | 2 + .../cypress/types/lodash/fp/every.d.ts | 2 + .../cypress/types/lodash/fp/extend.d.ts | 2 + .../cypress/types/lodash/fp/extendAll.d.ts | 2 + .../types/lodash/fp/extendAllWith.d.ts | 2 + .../cypress/types/lodash/fp/extendWith.d.ts | 2 + .../cypress/types/lodash/fp/fill.d.ts | 2 + .../cypress/types/lodash/fp/filter.d.ts | 2 + .../cypress/types/lodash/fp/find.d.ts | 2 + .../cypress/types/lodash/fp/findFrom.d.ts | 2 + .../cypress/types/lodash/fp/findIndex.d.ts | 2 + .../types/lodash/fp/findIndexFrom.d.ts | 2 + .../cypress/types/lodash/fp/findKey.d.ts | 2 + .../cypress/types/lodash/fp/findLast.d.ts | 2 + .../cypress/types/lodash/fp/findLastFrom.d.ts | 2 + .../types/lodash/fp/findLastIndex.d.ts | 2 + .../types/lodash/fp/findLastIndexFrom.d.ts | 2 + .../cypress/types/lodash/fp/findLastKey.d.ts | 2 + .../cypress/types/lodash/fp/first.d.ts | 2 + .../cypress/types/lodash/fp/flatMap.d.ts | 2 + .../cypress/types/lodash/fp/flatMapDeep.d.ts | 2 + .../cypress/types/lodash/fp/flatMapDepth.d.ts | 2 + .../cypress/types/lodash/fp/flatten.d.ts | 2 + .../cypress/types/lodash/fp/flattenDeep.d.ts | 2 + .../cypress/types/lodash/fp/flattenDepth.d.ts | 2 + .../cypress/types/lodash/fp/flip.d.ts | 2 + .../cypress/types/lodash/fp/floor.d.ts | 2 + .../cypress/types/lodash/fp/flow.d.ts | 2 + .../cypress/types/lodash/fp/flowRight.d.ts | 2 + .../cypress/types/lodash/fp/forEach.d.ts | 2 + .../cypress/types/lodash/fp/forEachRight.d.ts | 2 + .../cypress/types/lodash/fp/forIn.d.ts | 2 + .../cypress/types/lodash/fp/forInRight.d.ts | 2 + .../cypress/types/lodash/fp/forOwn.d.ts | 2 + .../cypress/types/lodash/fp/forOwnRight.d.ts | 2 + .../cypress/types/lodash/fp/fromPairs.d.ts | 2 + .../cypress/types/lodash/fp/functions.d.ts | 2 + .../cypress/types/lodash/fp/functionsIn.d.ts | 2 + node_modules/cypress/types/lodash/fp/get.d.ts | 2 + .../cypress/types/lodash/fp/getOr.d.ts | 2 + .../cypress/types/lodash/fp/groupBy.d.ts | 2 + node_modules/cypress/types/lodash/fp/gt.d.ts | 2 + node_modules/cypress/types/lodash/fp/gte.d.ts | 2 + node_modules/cypress/types/lodash/fp/has.d.ts | 2 + .../cypress/types/lodash/fp/hasIn.d.ts | 2 + .../cypress/types/lodash/fp/head.d.ts | 2 + .../cypress/types/lodash/fp/identical.d.ts | 2 + .../cypress/types/lodash/fp/identity.d.ts | 2 + .../cypress/types/lodash/fp/inRange.d.ts | 2 + .../cypress/types/lodash/fp/includes.d.ts | 2 + .../cypress/types/lodash/fp/includesFrom.d.ts | 2 + .../cypress/types/lodash/fp/indexBy.d.ts | 2 + .../cypress/types/lodash/fp/indexOf.d.ts | 2 + .../cypress/types/lodash/fp/indexOfFrom.d.ts | 2 + .../cypress/types/lodash/fp/init.d.ts | 2 + .../cypress/types/lodash/fp/initial.d.ts | 2 + .../cypress/types/lodash/fp/intersection.d.ts | 2 + .../types/lodash/fp/intersectionBy.d.ts | 2 + .../types/lodash/fp/intersectionWith.d.ts | 2 + .../cypress/types/lodash/fp/invert.d.ts | 2 + .../cypress/types/lodash/fp/invertBy.d.ts | 2 + .../cypress/types/lodash/fp/invertObj.d.ts | 2 + .../cypress/types/lodash/fp/invoke.d.ts | 2 + .../cypress/types/lodash/fp/invokeArgs.d.ts | 2 + .../types/lodash/fp/invokeArgsMap.d.ts | 2 + .../cypress/types/lodash/fp/invokeMap.d.ts | 2 + .../cypress/types/lodash/fp/isArguments.d.ts | 2 + .../cypress/types/lodash/fp/isArray.d.ts | 2 + .../types/lodash/fp/isArrayBuffer.d.ts | 2 + .../cypress/types/lodash/fp/isArrayLike.d.ts | 2 + .../types/lodash/fp/isArrayLikeObject.d.ts | 2 + .../cypress/types/lodash/fp/isBoolean.d.ts | 2 + .../cypress/types/lodash/fp/isBuffer.d.ts | 2 + .../cypress/types/lodash/fp/isDate.d.ts | 2 + .../cypress/types/lodash/fp/isElement.d.ts | 2 + .../cypress/types/lodash/fp/isEmpty.d.ts | 2 + .../cypress/types/lodash/fp/isEqual.d.ts | 2 + .../cypress/types/lodash/fp/isEqualWith.d.ts | 2 + .../cypress/types/lodash/fp/isError.d.ts | 2 + .../cypress/types/lodash/fp/isFinite.d.ts | 2 + .../cypress/types/lodash/fp/isFunction.d.ts | 2 + .../cypress/types/lodash/fp/isInteger.d.ts | 2 + .../cypress/types/lodash/fp/isLength.d.ts | 2 + .../cypress/types/lodash/fp/isMap.d.ts | 2 + .../cypress/types/lodash/fp/isMatch.d.ts | 2 + .../cypress/types/lodash/fp/isMatchWith.d.ts | 2 + .../cypress/types/lodash/fp/isNaN.d.ts | 2 + .../cypress/types/lodash/fp/isNative.d.ts | 2 + .../cypress/types/lodash/fp/isNil.d.ts | 2 + .../cypress/types/lodash/fp/isNull.d.ts | 2 + .../cypress/types/lodash/fp/isNumber.d.ts | 2 + .../cypress/types/lodash/fp/isObject.d.ts | 2 + .../cypress/types/lodash/fp/isObjectLike.d.ts | 2 + .../types/lodash/fp/isPlainObject.d.ts | 2 + .../cypress/types/lodash/fp/isRegExp.d.ts | 2 + .../types/lodash/fp/isSafeInteger.d.ts | 2 + .../cypress/types/lodash/fp/isSet.d.ts | 2 + .../cypress/types/lodash/fp/isString.d.ts | 2 + .../cypress/types/lodash/fp/isSymbol.d.ts | 2 + .../cypress/types/lodash/fp/isTypedArray.d.ts | 2 + .../cypress/types/lodash/fp/isUndefined.d.ts | 2 + .../cypress/types/lodash/fp/isWeakMap.d.ts | 2 + .../cypress/types/lodash/fp/isWeakSet.d.ts | 2 + .../cypress/types/lodash/fp/iteratee.d.ts | 2 + .../cypress/types/lodash/fp/join.d.ts | 2 + .../cypress/types/lodash/fp/juxt.d.ts | 2 + .../cypress/types/lodash/fp/kebabCase.d.ts | 2 + .../cypress/types/lodash/fp/keyBy.d.ts | 2 + .../cypress/types/lodash/fp/keys.d.ts | 2 + .../cypress/types/lodash/fp/keysIn.d.ts | 2 + .../cypress/types/lodash/fp/last.d.ts | 2 + .../cypress/types/lodash/fp/lastIndexOf.d.ts | 2 + .../types/lodash/fp/lastIndexOfFrom.d.ts | 2 + .../cypress/types/lodash/fp/lowerCase.d.ts | 2 + .../cypress/types/lodash/fp/lowerFirst.d.ts | 2 + node_modules/cypress/types/lodash/fp/lt.d.ts | 2 + node_modules/cypress/types/lodash/fp/lte.d.ts | 2 + node_modules/cypress/types/lodash/fp/map.d.ts | 2 + .../cypress/types/lodash/fp/mapKeys.d.ts | 2 + .../cypress/types/lodash/fp/mapValues.d.ts | 2 + .../cypress/types/lodash/fp/matches.d.ts | 2 + .../types/lodash/fp/matchesProperty.d.ts | 2 + node_modules/cypress/types/lodash/fp/max.d.ts | 2 + .../cypress/types/lodash/fp/maxBy.d.ts | 2 + .../cypress/types/lodash/fp/mean.d.ts | 2 + .../cypress/types/lodash/fp/meanBy.d.ts | 2 + .../cypress/types/lodash/fp/memoize.d.ts | 2 + .../cypress/types/lodash/fp/merge.d.ts | 2 + .../cypress/types/lodash/fp/mergeAll.d.ts | 2 + .../cypress/types/lodash/fp/mergeAllWith.d.ts | 2 + .../cypress/types/lodash/fp/mergeWith.d.ts | 2 + .../cypress/types/lodash/fp/method.d.ts | 2 + .../cypress/types/lodash/fp/methodOf.d.ts | 2 + node_modules/cypress/types/lodash/fp/min.d.ts | 2 + .../cypress/types/lodash/fp/minBy.d.ts | 2 + .../cypress/types/lodash/fp/multiply.d.ts | 2 + .../cypress/types/lodash/fp/nAry.d.ts | 2 + .../cypress/types/lodash/fp/negate.d.ts | 2 + .../cypress/types/lodash/fp/noConflict.d.ts | 2 + .../cypress/types/lodash/fp/noop.d.ts | 2 + node_modules/cypress/types/lodash/fp/now.d.ts | 2 + node_modules/cypress/types/lodash/fp/nth.d.ts | 2 + .../cypress/types/lodash/fp/nthArg.d.ts | 2 + .../cypress/types/lodash/fp/omit.d.ts | 2 + .../cypress/types/lodash/fp/omitAll.d.ts | 2 + .../cypress/types/lodash/fp/omitBy.d.ts | 2 + .../cypress/types/lodash/fp/once.d.ts | 2 + .../cypress/types/lodash/fp/orderBy.d.ts | 2 + .../cypress/types/lodash/fp/over.d.ts | 2 + .../cypress/types/lodash/fp/overArgs.d.ts | 2 + .../cypress/types/lodash/fp/overEvery.d.ts | 2 + .../cypress/types/lodash/fp/overSome.d.ts | 2 + node_modules/cypress/types/lodash/fp/pad.d.ts | 2 + .../cypress/types/lodash/fp/padChars.d.ts | 2 + .../cypress/types/lodash/fp/padCharsEnd.d.ts | 2 + .../types/lodash/fp/padCharsStart.d.ts | 2 + .../cypress/types/lodash/fp/padEnd.d.ts | 2 + .../cypress/types/lodash/fp/padStart.d.ts | 2 + .../cypress/types/lodash/fp/parseInt.d.ts | 2 + .../cypress/types/lodash/fp/partial.d.ts | 2 + .../cypress/types/lodash/fp/partialRight.d.ts | 2 + .../cypress/types/lodash/fp/partition.d.ts | 2 + .../cypress/types/lodash/fp/path.d.ts | 2 + .../cypress/types/lodash/fp/pathEq.d.ts | 2 + .../cypress/types/lodash/fp/pathOr.d.ts | 2 + .../cypress/types/lodash/fp/paths.d.ts | 2 + .../cypress/types/lodash/fp/pick.d.ts | 2 + .../cypress/types/lodash/fp/pickAll.d.ts | 2 + .../cypress/types/lodash/fp/pickBy.d.ts | 2 + .../cypress/types/lodash/fp/pipe.d.ts | 2 + .../cypress/types/lodash/fp/placeholder.d.ts | 3 + .../cypress/types/lodash/fp/pluck.d.ts | 2 + .../cypress/types/lodash/fp/prop.d.ts | 2 + .../cypress/types/lodash/fp/propEq.d.ts | 2 + .../cypress/types/lodash/fp/propOr.d.ts | 2 + .../cypress/types/lodash/fp/property.d.ts | 2 + .../cypress/types/lodash/fp/propertyOf.d.ts | 2 + .../cypress/types/lodash/fp/props.d.ts | 2 + .../cypress/types/lodash/fp/pull.d.ts | 2 + .../cypress/types/lodash/fp/pullAll.d.ts | 2 + .../cypress/types/lodash/fp/pullAllBy.d.ts | 2 + .../cypress/types/lodash/fp/pullAllWith.d.ts | 2 + .../cypress/types/lodash/fp/pullAt.d.ts | 2 + .../cypress/types/lodash/fp/random.d.ts | 2 + .../cypress/types/lodash/fp/range.d.ts | 2 + .../cypress/types/lodash/fp/rangeRight.d.ts | 2 + .../cypress/types/lodash/fp/rangeStep.d.ts | 2 + .../types/lodash/fp/rangeStepRight.d.ts | 2 + .../cypress/types/lodash/fp/rearg.d.ts | 2 + .../cypress/types/lodash/fp/reduce.d.ts | 2 + .../cypress/types/lodash/fp/reduceRight.d.ts | 2 + .../cypress/types/lodash/fp/reject.d.ts | 2 + .../cypress/types/lodash/fp/remove.d.ts | 2 + .../cypress/types/lodash/fp/repeat.d.ts | 2 + .../cypress/types/lodash/fp/replace.d.ts | 2 + .../cypress/types/lodash/fp/rest.d.ts | 2 + .../cypress/types/lodash/fp/restFrom.d.ts | 2 + .../cypress/types/lodash/fp/result.d.ts | 2 + .../cypress/types/lodash/fp/reverse.d.ts | 2 + .../cypress/types/lodash/fp/round.d.ts | 2 + .../cypress/types/lodash/fp/runInContext.d.ts | 2 + .../cypress/types/lodash/fp/sample.d.ts | 2 + .../cypress/types/lodash/fp/sampleSize.d.ts | 2 + node_modules/cypress/types/lodash/fp/set.d.ts | 2 + .../cypress/types/lodash/fp/setWith.d.ts | 2 + .../cypress/types/lodash/fp/shuffle.d.ts | 2 + .../cypress/types/lodash/fp/size.d.ts | 2 + .../cypress/types/lodash/fp/slice.d.ts | 2 + .../cypress/types/lodash/fp/snakeCase.d.ts | 2 + .../cypress/types/lodash/fp/some.d.ts | 2 + .../cypress/types/lodash/fp/sortBy.d.ts | 2 + .../cypress/types/lodash/fp/sortedIndex.d.ts | 2 + .../types/lodash/fp/sortedIndexBy.d.ts | 2 + .../types/lodash/fp/sortedIndexOf.d.ts | 2 + .../types/lodash/fp/sortedLastIndex.d.ts | 2 + .../types/lodash/fp/sortedLastIndexBy.d.ts | 2 + .../types/lodash/fp/sortedLastIndexOf.d.ts | 2 + .../cypress/types/lodash/fp/sortedUniq.d.ts | 2 + .../cypress/types/lodash/fp/sortedUniqBy.d.ts | 2 + .../cypress/types/lodash/fp/split.d.ts | 2 + .../cypress/types/lodash/fp/spread.d.ts | 2 + .../cypress/types/lodash/fp/spreadFrom.d.ts | 2 + .../cypress/types/lodash/fp/startCase.d.ts | 2 + .../cypress/types/lodash/fp/startsWith.d.ts | 2 + .../cypress/types/lodash/fp/stubArray.d.ts | 2 + .../cypress/types/lodash/fp/stubFalse.d.ts | 2 + .../cypress/types/lodash/fp/stubObject.d.ts | 2 + .../cypress/types/lodash/fp/stubString.d.ts | 2 + .../cypress/types/lodash/fp/stubTrue.d.ts | 2 + .../cypress/types/lodash/fp/subtract.d.ts | 2 + node_modules/cypress/types/lodash/fp/sum.d.ts | 2 + .../cypress/types/lodash/fp/sumBy.d.ts | 2 + .../types/lodash/fp/symmetricDifference.d.ts | 2 + .../lodash/fp/symmetricDifferenceBy.d.ts | 2 + .../lodash/fp/symmetricDifferenceWith.d.ts | 2 + .../cypress/types/lodash/fp/tail.d.ts | 2 + .../cypress/types/lodash/fp/take.d.ts | 2 + .../cypress/types/lodash/fp/takeLast.d.ts | 2 + .../types/lodash/fp/takeLastWhile.d.ts | 2 + .../cypress/types/lodash/fp/takeRight.d.ts | 2 + .../types/lodash/fp/takeRightWhile.d.ts | 2 + .../cypress/types/lodash/fp/takeWhile.d.ts | 2 + node_modules/cypress/types/lodash/fp/tap.d.ts | 2 + .../cypress/types/lodash/fp/template.d.ts | 2 + .../cypress/types/lodash/fp/throttle.d.ts | 2 + .../cypress/types/lodash/fp/thru.d.ts | 2 + .../cypress/types/lodash/fp/times.d.ts | 2 + .../cypress/types/lodash/fp/toArray.d.ts | 2 + .../cypress/types/lodash/fp/toFinite.d.ts | 2 + .../cypress/types/lodash/fp/toInteger.d.ts | 2 + .../cypress/types/lodash/fp/toLength.d.ts | 2 + .../cypress/types/lodash/fp/toLower.d.ts | 2 + .../cypress/types/lodash/fp/toNumber.d.ts | 2 + .../cypress/types/lodash/fp/toPairs.d.ts | 2 + .../cypress/types/lodash/fp/toPairsIn.d.ts | 2 + .../cypress/types/lodash/fp/toPath.d.ts | 2 + .../types/lodash/fp/toPlainObject.d.ts | 2 + .../types/lodash/fp/toSafeInteger.d.ts | 2 + .../cypress/types/lodash/fp/toString.d.ts | 2 + .../cypress/types/lodash/fp/toUpper.d.ts | 2 + .../cypress/types/lodash/fp/transform.d.ts | 2 + .../cypress/types/lodash/fp/trim.d.ts | 2 + .../cypress/types/lodash/fp/trimChars.d.ts | 2 + .../cypress/types/lodash/fp/trimCharsEnd.d.ts | 2 + .../types/lodash/fp/trimCharsStart.d.ts | 2 + .../cypress/types/lodash/fp/trimEnd.d.ts | 2 + .../cypress/types/lodash/fp/trimStart.d.ts | 2 + .../cypress/types/lodash/fp/truncate.d.ts | 2 + .../cypress/types/lodash/fp/unapply.d.ts | 2 + .../cypress/types/lodash/fp/unary.d.ts | 2 + .../cypress/types/lodash/fp/unescape.d.ts | 2 + .../cypress/types/lodash/fp/union.d.ts | 2 + .../cypress/types/lodash/fp/unionBy.d.ts | 2 + .../cypress/types/lodash/fp/unionWith.d.ts | 2 + .../cypress/types/lodash/fp/uniq.d.ts | 2 + .../cypress/types/lodash/fp/uniqBy.d.ts | 2 + .../cypress/types/lodash/fp/uniqWith.d.ts | 2 + .../cypress/types/lodash/fp/uniqueId.d.ts | 2 + .../cypress/types/lodash/fp/unnest.d.ts | 2 + .../cypress/types/lodash/fp/unset.d.ts | 2 + .../cypress/types/lodash/fp/unzip.d.ts | 2 + .../cypress/types/lodash/fp/unzipWith.d.ts | 2 + .../cypress/types/lodash/fp/update.d.ts | 2 + .../cypress/types/lodash/fp/updateWith.d.ts | 2 + .../cypress/types/lodash/fp/upperCase.d.ts | 2 + .../cypress/types/lodash/fp/upperFirst.d.ts | 2 + .../cypress/types/lodash/fp/useWith.d.ts | 2 + .../cypress/types/lodash/fp/values.d.ts | 2 + .../cypress/types/lodash/fp/valuesIn.d.ts | 2 + .../cypress/types/lodash/fp/where.d.ts | 2 + .../cypress/types/lodash/fp/whereEq.d.ts | 2 + .../cypress/types/lodash/fp/without.d.ts | 2 + .../cypress/types/lodash/fp/words.d.ts | 2 + .../cypress/types/lodash/fp/wrap.d.ts | 2 + node_modules/cypress/types/lodash/fp/xor.d.ts | 2 + .../cypress/types/lodash/fp/xorBy.d.ts | 2 + .../cypress/types/lodash/fp/xorWith.d.ts | 2 + node_modules/cypress/types/lodash/fp/zip.d.ts | 2 + .../cypress/types/lodash/fp/zipAll.d.ts | 2 + .../cypress/types/lodash/fp/zipObj.d.ts | 2 + .../cypress/types/lodash/fp/zipObject.d.ts | 2 + .../types/lodash/fp/zipObjectDeep.d.ts | 2 + .../cypress/types/lodash/fp/zipWith.d.ts | 2 + .../cypress/types/lodash/fromPairs.d.ts | 2 + .../cypress/types/lodash/functions.d.ts | 2 + .../cypress/types/lodash/functionsIn.d.ts | 2 + node_modules/cypress/types/lodash/get.d.ts | 2 + .../cypress/types/lodash/groupBy.d.ts | 2 + node_modules/cypress/types/lodash/gt.d.ts | 2 + node_modules/cypress/types/lodash/gte.d.ts | 2 + node_modules/cypress/types/lodash/has.d.ts | 2 + node_modules/cypress/types/lodash/hasIn.d.ts | 2 + node_modules/cypress/types/lodash/head.d.ts | 2 + .../cypress/types/lodash/identity.d.ts | 2 + .../cypress/types/lodash/inRange.d.ts | 2 + .../cypress/types/lodash/includes.d.ts | 2 + node_modules/cypress/types/lodash/index.d.ts | 47 + .../cypress/types/lodash/indexOf.d.ts | 2 + .../cypress/types/lodash/initial.d.ts | 2 + .../cypress/types/lodash/intersection.d.ts | 2 + .../cypress/types/lodash/intersectionBy.d.ts | 2 + .../types/lodash/intersectionWith.d.ts | 2 + node_modules/cypress/types/lodash/invert.d.ts | 2 + .../cypress/types/lodash/invertBy.d.ts | 2 + node_modules/cypress/types/lodash/invoke.d.ts | 2 + .../cypress/types/lodash/invokeMap.d.ts | 2 + .../cypress/types/lodash/isArguments.d.ts | 2 + .../cypress/types/lodash/isArray.d.ts | 2 + .../cypress/types/lodash/isArrayBuffer.d.ts | 2 + .../cypress/types/lodash/isArrayLike.d.ts | 2 + .../types/lodash/isArrayLikeObject.d.ts | 2 + .../cypress/types/lodash/isBoolean.d.ts | 2 + .../cypress/types/lodash/isBuffer.d.ts | 2 + node_modules/cypress/types/lodash/isDate.d.ts | 2 + .../cypress/types/lodash/isElement.d.ts | 2 + .../cypress/types/lodash/isEmpty.d.ts | 2 + .../cypress/types/lodash/isEqual.d.ts | 2 + .../cypress/types/lodash/isEqualWith.d.ts | 2 + .../cypress/types/lodash/isError.d.ts | 2 + .../cypress/types/lodash/isFinite.d.ts | 2 + .../cypress/types/lodash/isFunction.d.ts | 2 + .../cypress/types/lodash/isInteger.d.ts | 2 + .../cypress/types/lodash/isLength.d.ts | 2 + node_modules/cypress/types/lodash/isMap.d.ts | 2 + .../cypress/types/lodash/isMatch.d.ts | 2 + .../cypress/types/lodash/isMatchWith.d.ts | 2 + node_modules/cypress/types/lodash/isNaN.d.ts | 2 + .../cypress/types/lodash/isNative.d.ts | 2 + node_modules/cypress/types/lodash/isNil.d.ts | 2 + node_modules/cypress/types/lodash/isNull.d.ts | 2 + .../cypress/types/lodash/isNumber.d.ts | 2 + .../cypress/types/lodash/isObject.d.ts | 2 + .../cypress/types/lodash/isObjectLike.d.ts | 2 + .../cypress/types/lodash/isPlainObject.d.ts | 2 + .../cypress/types/lodash/isRegExp.d.ts | 2 + .../cypress/types/lodash/isSafeInteger.d.ts | 2 + node_modules/cypress/types/lodash/isSet.d.ts | 2 + .../cypress/types/lodash/isString.d.ts | 2 + .../cypress/types/lodash/isSymbol.d.ts | 2 + .../cypress/types/lodash/isTypedArray.d.ts | 2 + .../cypress/types/lodash/isUndefined.d.ts | 2 + .../cypress/types/lodash/isWeakMap.d.ts | 2 + .../cypress/types/lodash/isWeakSet.d.ts | 2 + .../cypress/types/lodash/iteratee.d.ts | 2 + node_modules/cypress/types/lodash/join.d.ts | 2 + .../cypress/types/lodash/kebabCase.d.ts | 2 + node_modules/cypress/types/lodash/keyBy.d.ts | 2 + node_modules/cypress/types/lodash/keys.d.ts | 2 + node_modules/cypress/types/lodash/keysIn.d.ts | 2 + node_modules/cypress/types/lodash/last.d.ts | 2 + .../cypress/types/lodash/lastIndexOf.d.ts | 2 + .../cypress/types/lodash/lowerCase.d.ts | 2 + .../cypress/types/lodash/lowerFirst.d.ts | 2 + node_modules/cypress/types/lodash/lt.d.ts | 2 + node_modules/cypress/types/lodash/lte.d.ts | 2 + node_modules/cypress/types/lodash/map.d.ts | 2 + .../cypress/types/lodash/mapKeys.d.ts | 2 + .../cypress/types/lodash/mapValues.d.ts | 2 + .../cypress/types/lodash/matches.d.ts | 2 + .../cypress/types/lodash/matchesProperty.d.ts | 2 + node_modules/cypress/types/lodash/max.d.ts | 2 + node_modules/cypress/types/lodash/maxBy.d.ts | 2 + node_modules/cypress/types/lodash/mean.d.ts | 2 + node_modules/cypress/types/lodash/meanBy.d.ts | 2 + .../cypress/types/lodash/memoize.d.ts | 2 + node_modules/cypress/types/lodash/merge.d.ts | 2 + .../cypress/types/lodash/mergeWith.d.ts | 2 + node_modules/cypress/types/lodash/method.d.ts | 2 + .../cypress/types/lodash/methodOf.d.ts | 2 + node_modules/cypress/types/lodash/min.d.ts | 2 + node_modules/cypress/types/lodash/minBy.d.ts | 2 + node_modules/cypress/types/lodash/mixin.d.ts | 2 + node_modules/cypress/types/lodash/negate.d.ts | 2 + .../cypress/types/lodash/noConflict.d.ts | 2 + node_modules/cypress/types/lodash/noop.d.ts | 2 + node_modules/cypress/types/lodash/now.d.ts | 2 + node_modules/cypress/types/lodash/nth.d.ts | 2 + node_modules/cypress/types/lodash/nthArg.d.ts | 2 + node_modules/cypress/types/lodash/omit.d.ts | 2 + node_modules/cypress/types/lodash/omitBy.d.ts | 2 + node_modules/cypress/types/lodash/once.d.ts | 2 + .../cypress/types/lodash/orderBy.d.ts | 2 + node_modules/cypress/types/lodash/over.d.ts | 2 + .../cypress/types/lodash/overArgs.d.ts | 2 + .../cypress/types/lodash/overEvery.d.ts | 2 + .../cypress/types/lodash/overSome.d.ts | 2 + .../cypress/types/lodash/package.json | 85 + node_modules/cypress/types/lodash/pad.d.ts | 2 + node_modules/cypress/types/lodash/padEnd.d.ts | 2 + .../cypress/types/lodash/padStart.d.ts | 2 + .../cypress/types/lodash/parseInt.d.ts | 2 + .../cypress/types/lodash/partial.d.ts | 2 + .../cypress/types/lodash/partialRight.d.ts | 2 + .../cypress/types/lodash/partition.d.ts | 2 + node_modules/cypress/types/lodash/pick.d.ts | 2 + node_modules/cypress/types/lodash/pickBy.d.ts | 2 + .../cypress/types/lodash/property.d.ts | 2 + .../cypress/types/lodash/propertyOf.d.ts | 2 + node_modules/cypress/types/lodash/pull.d.ts | 2 + .../cypress/types/lodash/pullAll.d.ts | 2 + .../cypress/types/lodash/pullAllBy.d.ts | 2 + .../cypress/types/lodash/pullAllWith.d.ts | 2 + node_modules/cypress/types/lodash/pullAt.d.ts | 2 + node_modules/cypress/types/lodash/random.d.ts | 2 + node_modules/cypress/types/lodash/range.d.ts | 2 + .../cypress/types/lodash/rangeRight.d.ts | 2 + node_modules/cypress/types/lodash/rearg.d.ts | 2 + node_modules/cypress/types/lodash/reduce.d.ts | 2 + .../cypress/types/lodash/reduceRight.d.ts | 2 + node_modules/cypress/types/lodash/reject.d.ts | 2 + node_modules/cypress/types/lodash/remove.d.ts | 2 + node_modules/cypress/types/lodash/repeat.d.ts | 2 + .../cypress/types/lodash/replace.d.ts | 2 + node_modules/cypress/types/lodash/rest.d.ts | 2 + node_modules/cypress/types/lodash/result.d.ts | 2 + .../cypress/types/lodash/reverse.d.ts | 2 + node_modules/cypress/types/lodash/round.d.ts | 2 + .../cypress/types/lodash/runInContext.d.ts | 2 + node_modules/cypress/types/lodash/sample.d.ts | 2 + .../cypress/types/lodash/sampleSize.d.ts | 2 + node_modules/cypress/types/lodash/set.d.ts | 2 + .../cypress/types/lodash/setWith.d.ts | 2 + .../cypress/types/lodash/shuffle.d.ts | 2 + node_modules/cypress/types/lodash/size.d.ts | 2 + node_modules/cypress/types/lodash/slice.d.ts | 2 + .../cypress/types/lodash/snakeCase.d.ts | 2 + node_modules/cypress/types/lodash/some.d.ts | 2 + node_modules/cypress/types/lodash/sortBy.d.ts | 2 + .../cypress/types/lodash/sortedIndex.d.ts | 2 + .../cypress/types/lodash/sortedIndexBy.d.ts | 2 + .../cypress/types/lodash/sortedIndexOf.d.ts | 2 + .../cypress/types/lodash/sortedLastIndex.d.ts | 2 + .../types/lodash/sortedLastIndexBy.d.ts | 2 + .../types/lodash/sortedLastIndexOf.d.ts | 2 + .../cypress/types/lodash/sortedUniq.d.ts | 2 + .../cypress/types/lodash/sortedUniqBy.d.ts | 2 + node_modules/cypress/types/lodash/split.d.ts | 2 + node_modules/cypress/types/lodash/spread.d.ts | 2 + .../cypress/types/lodash/startCase.d.ts | 2 + .../cypress/types/lodash/startsWith.d.ts | 2 + .../cypress/types/lodash/subtract.d.ts | 2 + node_modules/cypress/types/lodash/sum.d.ts | 2 + node_modules/cypress/types/lodash/sumBy.d.ts | 2 + node_modules/cypress/types/lodash/tail.d.ts | 2 + node_modules/cypress/types/lodash/take.d.ts | 2 + .../cypress/types/lodash/takeRight.d.ts | 2 + .../cypress/types/lodash/takeRightWhile.d.ts | 2 + .../cypress/types/lodash/takeWhile.d.ts | 2 + node_modules/cypress/types/lodash/tap.d.ts | 2 + .../cypress/types/lodash/template.d.ts | 2 + .../cypress/types/lodash/throttle.d.ts | 2 + node_modules/cypress/types/lodash/thru.d.ts | 2 + node_modules/cypress/types/lodash/times.d.ts | 2 + .../cypress/types/lodash/toArray.d.ts | 2 + .../cypress/types/lodash/toFinite.d.ts | 2 + .../cypress/types/lodash/toInteger.d.ts | 2 + .../cypress/types/lodash/toLength.d.ts | 2 + .../cypress/types/lodash/toLower.d.ts | 2 + .../cypress/types/lodash/toNumber.d.ts | 2 + .../cypress/types/lodash/toPairs.d.ts | 2 + .../cypress/types/lodash/toPairsIn.d.ts | 2 + node_modules/cypress/types/lodash/toPath.d.ts | 2 + .../cypress/types/lodash/toPlainObject.d.ts | 2 + .../cypress/types/lodash/toSafeInteger.d.ts | 2 + .../cypress/types/lodash/toString.d.ts | 2 + .../cypress/types/lodash/toUpper.d.ts | 2 + .../cypress/types/lodash/transform.d.ts | 2 + node_modules/cypress/types/lodash/trim.d.ts | 2 + .../cypress/types/lodash/trimEnd.d.ts | 2 + .../cypress/types/lodash/trimStart.d.ts | 2 + .../cypress/types/lodash/truncate.d.ts | 2 + node_modules/cypress/types/lodash/unary.d.ts | 2 + .../cypress/types/lodash/unescape.d.ts | 2 + node_modules/cypress/types/lodash/union.d.ts | 2 + .../cypress/types/lodash/unionBy.d.ts | 2 + .../cypress/types/lodash/unionWith.d.ts | 2 + node_modules/cypress/types/lodash/uniq.d.ts | 2 + node_modules/cypress/types/lodash/uniqBy.d.ts | 2 + .../cypress/types/lodash/uniqWith.d.ts | 2 + .../cypress/types/lodash/uniqueId.d.ts | 2 + node_modules/cypress/types/lodash/unset.d.ts | 2 + node_modules/cypress/types/lodash/unzip.d.ts | 2 + .../cypress/types/lodash/unzipWith.d.ts | 2 + node_modules/cypress/types/lodash/update.d.ts | 2 + .../cypress/types/lodash/updateWith.d.ts | 2 + .../cypress/types/lodash/upperCase.d.ts | 2 + .../cypress/types/lodash/upperFirst.d.ts | 2 + node_modules/cypress/types/lodash/values.d.ts | 2 + .../cypress/types/lodash/valuesIn.d.ts | 2 + .../cypress/types/lodash/without.d.ts | 2 + node_modules/cypress/types/lodash/words.d.ts | 2 + node_modules/cypress/types/lodash/wrap.d.ts | 2 + node_modules/cypress/types/lodash/xor.d.ts | 2 + node_modules/cypress/types/lodash/xorBy.d.ts | 2 + .../cypress/types/lodash/xorWith.d.ts | 2 + node_modules/cypress/types/lodash/zip.d.ts | 2 + .../cypress/types/lodash/zipObject.d.ts | 2 + .../cypress/types/lodash/zipObjectDeep.d.ts | 2 + .../cypress/types/lodash/zipWith.d.ts | 2 + node_modules/cypress/types/minimatch/LICENSE | 21 + .../cypress/types/minimatch/README.md | 16 + .../cypress/types/minimatch/index.d.ts | 214 + .../cypress/types/minimatch/package.json | 56 + node_modules/cypress/types/mocha/LICENSE | 21 + node_modules/cypress/types/mocha/README.md | 16 + node_modules/cypress/types/mocha/index.d.ts | 2986 +++ node_modules/cypress/types/mocha/package.json | 73 + node_modules/cypress/types/sinon-chai/LICENSE | 21 + .../cypress/types/sinon-chai/README.md | 16 + .../cypress/types/sinon-chai/index.d.ts | 109 + .../cypress/types/sinon-chai/package.json | 63 + node_modules/cypress/types/sinon/LICENSE | 21 + node_modules/cypress/types/sinon/README.md | 16 + node_modules/cypress/types/sinon/index.d.ts | 1659 ++ node_modules/cypress/types/sinon/package.json | 88 + .../cypress/types/sinon/ts3.1/index.d.ts | 1747 ++ node_modules/dashdash/CHANGES.md | 364 + node_modules/dashdash/LICENSE.txt | 24 + node_modules/dashdash/README.md | 574 + .../dashdash/etc/dashdash.bash_completion.in | 389 + node_modules/dashdash/lib/dashdash.js | 1055 + node_modules/dashdash/package.json | 67 + node_modules/date-fns/CHANGELOG.md | 1113 + node_modules/date-fns/LICENSE.md | 4 + node_modules/date-fns/README.md | 45 + .../getTimezoneOffsetInMilliseconds/index.js | 21 + node_modules/date-fns/_lib/package.json | 3 + node_modules/date-fns/add_days/index.d.ts | 4 + node_modules/date-fns/add_days/index.js | 26 + node_modules/date-fns/add_days/index.js.flow | 6 + node_modules/date-fns/add_days/package.json | 3 + node_modules/date-fns/add_hours/index.d.ts | 4 + node_modules/date-fns/add_hours/index.js | 26 + node_modules/date-fns/add_hours/index.js.flow | 6 + node_modules/date-fns/add_hours/package.json | 3 + .../date-fns/add_iso_years/index.d.ts | 4 + node_modules/date-fns/add_iso_years/index.js | 27 + .../date-fns/add_iso_years/index.js.flow | 6 + .../date-fns/add_iso_years/package.json | 3 + .../date-fns/add_milliseconds/index.d.ts | 4 + .../date-fns/add_milliseconds/index.js | 25 + .../date-fns/add_milliseconds/index.js.flow | 6 + .../date-fns/add_milliseconds/package.json | 3 + node_modules/date-fns/add_minutes/index.d.ts | 4 + node_modules/date-fns/add_minutes/index.js | 26 + .../date-fns/add_minutes/index.js.flow | 6 + .../date-fns/add_minutes/package.json | 3 + node_modules/date-fns/add_months/index.d.ts | 4 + node_modules/date-fns/add_months/index.js | 34 + .../date-fns/add_months/index.js.flow | 6 + node_modules/date-fns/add_months/package.json | 3 + node_modules/date-fns/add_quarters/index.d.ts | 4 + node_modules/date-fns/add_quarters/index.js | 25 + .../date-fns/add_quarters/index.js.flow | 6 + .../date-fns/add_quarters/package.json | 3 + node_modules/date-fns/add_seconds/index.d.ts | 4 + node_modules/date-fns/add_seconds/index.js | 24 + .../date-fns/add_seconds/index.js.flow | 6 + .../date-fns/add_seconds/package.json | 3 + node_modules/date-fns/add_weeks/index.d.ts | 4 + node_modules/date-fns/add_weeks/index.js | 25 + node_modules/date-fns/add_weeks/index.js.flow | 6 + node_modules/date-fns/add_weeks/package.json | 3 + node_modules/date-fns/add_years/index.d.ts | 4 + node_modules/date-fns/add_years/index.js | 24 + node_modules/date-fns/add_years/index.js.flow | 6 + node_modules/date-fns/add_years/package.json | 3 + .../are_ranges_overlapping/index.d.ts | 4 + .../date-fns/are_ranges_overlapping/index.js | 44 + .../are_ranges_overlapping/index.js.flow | 8 + .../are_ranges_overlapping/package.json | 3 + .../date-fns/closest_index_to/index.d.ts | 4 + .../date-fns/closest_index_to/index.js | 49 + .../date-fns/closest_index_to/index.js.flow | 6 + .../date-fns/closest_index_to/package.json | 3 + node_modules/date-fns/closest_to/index.d.ts | 4 + node_modules/date-fns/closest_to/index.js | 47 + .../date-fns/closest_to/index.js.flow | 6 + node_modules/date-fns/closest_to/package.json | 3 + node_modules/date-fns/compare_asc/index.d.ts | 4 + node_modules/date-fns/compare_asc/index.js | 51 + .../date-fns/compare_asc/index.js.flow | 6 + .../date-fns/compare_asc/package.json | 3 + node_modules/date-fns/compare_desc/index.d.ts | 4 + node_modules/date-fns/compare_desc/index.js | 51 + .../date-fns/compare_desc/index.js.flow | 6 + .../date-fns/compare_desc/package.json | 3 + .../difference_in_calendar_days/index.d.ts | 4 + .../difference_in_calendar_days/index.js | 41 + .../difference_in_calendar_days/index.js.flow | 6 + .../difference_in_calendar_days/package.json | 3 + .../index.d.ts | 4 + .../difference_in_calendar_iso_weeks/index.js | 42 + .../index.js.flow | 6 + .../package.json | 3 + .../index.d.ts | 4 + .../difference_in_calendar_iso_years/index.js | 28 + .../index.js.flow | 6 + .../package.json | 3 + .../difference_in_calendar_months/index.d.ts | 4 + .../difference_in_calendar_months/index.js | 32 + .../index.js.flow | 6 + .../package.json | 3 + .../index.d.ts | 4 + .../difference_in_calendar_quarters/index.js | 33 + .../index.js.flow | 6 + .../package.json | 3 + .../difference_in_calendar_weeks/index.d.ts | 4 + .../difference_in_calendar_weeks/index.js | 52 + .../index.js.flow | 9 + .../difference_in_calendar_weeks/package.json | 3 + .../difference_in_calendar_years/index.d.ts | 4 + .../difference_in_calendar_years/index.js | 29 + .../index.js.flow | 6 + .../difference_in_calendar_years/package.json | 3 + .../date-fns/difference_in_days/index.d.ts | 4 + .../date-fns/difference_in_days/index.js | 39 + .../date-fns/difference_in_days/index.js.flow | 6 + .../date-fns/difference_in_days/package.json | 3 + .../date-fns/difference_in_hours/index.d.ts | 4 + .../date-fns/difference_in_hours/index.js | 29 + .../difference_in_hours/index.js.flow | 6 + .../date-fns/difference_in_hours/package.json | 3 + .../difference_in_iso_years/index.d.ts | 4 + .../date-fns/difference_in_iso_years/index.js | 42 + .../difference_in_iso_years/index.js.flow | 6 + .../difference_in_iso_years/package.json | 3 + .../difference_in_milliseconds/index.d.ts | 4 + .../difference_in_milliseconds/index.js | 29 + .../difference_in_milliseconds/index.js.flow | 6 + .../difference_in_milliseconds/package.json | 3 + .../date-fns/difference_in_minutes/index.d.ts | 4 + .../date-fns/difference_in_minutes/index.js | 29 + .../difference_in_minutes/index.js.flow | 6 + .../difference_in_minutes/package.json | 3 + .../date-fns/difference_in_months/index.d.ts | 4 + .../date-fns/difference_in_months/index.js | 38 + .../difference_in_months/index.js.flow | 6 + .../difference_in_months/package.json | 3 + .../difference_in_quarters/index.d.ts | 4 + .../date-fns/difference_in_quarters/index.js | 27 + .../difference_in_quarters/index.js.flow | 6 + .../difference_in_quarters/package.json | 3 + .../date-fns/difference_in_seconds/index.d.ts | 4 + .../date-fns/difference_in_seconds/index.js | 28 + .../difference_in_seconds/index.js.flow | 6 + .../difference_in_seconds/package.json | 3 + .../date-fns/difference_in_weeks/index.d.ts | 4 + .../date-fns/difference_in_weeks/index.js | 27 + .../difference_in_weeks/index.js.flow | 6 + .../date-fns/difference_in_weeks/package.json | 3 + .../date-fns/difference_in_years/index.d.ts | 4 + .../date-fns/difference_in_years/index.js | 38 + .../difference_in_years/index.js.flow | 6 + .../date-fns/difference_in_years/package.json | 3 + .../date-fns/distance_in_words/index.d.ts | 4 + .../date-fns/distance_in_words/index.js | 203 + .../date-fns/distance_in_words/index.js.flow | 11 + .../date-fns/distance_in_words/package.json | 3 + .../distance_in_words_strict/index.d.ts | 4 + .../distance_in_words_strict/index.js | 176 + .../distance_in_words_strict/index.js.flow | 12 + .../distance_in_words_strict/package.json | 3 + .../distance_in_words_to_now/index.d.ts | 4 + .../distance_in_words_to_now/index.js | 85 + .../distance_in_words_to_now/index.js.flow | 10 + .../distance_in_words_to_now/package.json | 3 + node_modules/date-fns/docs.json | 1 + node_modules/date-fns/each_day/index.d.ts | 4 + node_modules/date-fns/each_day/index.js | 54 + node_modules/date-fns/each_day/index.js.flow | 7 + node_modules/date-fns/each_day/package.json | 3 + node_modules/date-fns/end_of_day/index.d.ts | 4 + node_modules/date-fns/end_of_day/index.js | 25 + .../date-fns/end_of_day/index.js.flow | 5 + node_modules/date-fns/end_of_day/package.json | 3 + node_modules/date-fns/end_of_hour/index.d.ts | 4 + node_modules/date-fns/end_of_hour/index.js | 25 + .../date-fns/end_of_hour/index.js.flow | 5 + .../date-fns/end_of_hour/package.json | 3 + .../date-fns/end_of_iso_week/index.d.ts | 4 + .../date-fns/end_of_iso_week/index.js | 25 + .../date-fns/end_of_iso_week/index.js.flow | 5 + .../date-fns/end_of_iso_week/package.json | 3 + .../date-fns/end_of_iso_year/index.d.ts | 4 + .../date-fns/end_of_iso_year/index.js | 33 + .../date-fns/end_of_iso_year/index.js.flow | 5 + .../date-fns/end_of_iso_year/package.json | 3 + .../date-fns/end_of_minute/index.d.ts | 4 + node_modules/date-fns/end_of_minute/index.js | 25 + .../date-fns/end_of_minute/index.js.flow | 5 + .../date-fns/end_of_minute/package.json | 3 + node_modules/date-fns/end_of_month/index.d.ts | 4 + node_modules/date-fns/end_of_month/index.js | 27 + .../date-fns/end_of_month/index.js.flow | 5 + .../date-fns/end_of_month/package.json | 3 + .../date-fns/end_of_quarter/index.d.ts | 4 + node_modules/date-fns/end_of_quarter/index.js | 28 + .../date-fns/end_of_quarter/index.js.flow | 5 + .../date-fns/end_of_quarter/package.json | 3 + .../date-fns/end_of_second/index.d.ts | 4 + node_modules/date-fns/end_of_second/index.js | 25 + .../date-fns/end_of_second/index.js.flow | 5 + .../date-fns/end_of_second/package.json | 3 + node_modules/date-fns/end_of_today/index.d.ts | 4 + node_modules/date-fns/end_of_today/index.js | 21 + .../date-fns/end_of_today/index.js.flow | 3 + .../date-fns/end_of_today/package.json | 3 + .../date-fns/end_of_tomorrow/index.d.ts | 4 + .../date-fns/end_of_tomorrow/index.js | 27 + .../date-fns/end_of_tomorrow/index.js.flow | 3 + .../date-fns/end_of_tomorrow/package.json | 3 + node_modules/date-fns/end_of_week/index.d.ts | 4 + node_modules/date-fns/end_of_week/index.js | 38 + .../date-fns/end_of_week/index.js.flow | 8 + .../date-fns/end_of_week/package.json | 3 + node_modules/date-fns/end_of_year/index.d.ts | 4 + node_modules/date-fns/end_of_year/index.js | 27 + .../date-fns/end_of_year/index.js.flow | 5 + .../date-fns/end_of_year/package.json | 3 + .../date-fns/end_of_yesterday/index.d.ts | 4 + .../date-fns/end_of_yesterday/index.js | 27 + .../date-fns/end_of_yesterday/index.js.flow | 3 + .../date-fns/end_of_yesterday/package.json | 3 + node_modules/date-fns/format/index.d.ts | 4 + node_modules/date-fns/format/index.js | 328 + node_modules/date-fns/format/index.js.flow | 9 + node_modules/date-fns/format/package.json | 3 + node_modules/date-fns/get_date/index.d.ts | 4 + node_modules/date-fns/get_date/index.js | 24 + node_modules/date-fns/get_date/index.js.flow | 5 + node_modules/date-fns/get_date/package.json | 3 + node_modules/date-fns/get_day/index.d.ts | 4 + node_modules/date-fns/get_day/index.js | 24 + node_modules/date-fns/get_day/index.js.flow | 5 + node_modules/date-fns/get_day/package.json | 3 + .../date-fns/get_day_of_year/index.d.ts | 4 + .../date-fns/get_day_of_year/index.js | 27 + .../date-fns/get_day_of_year/index.js.flow | 5 + .../date-fns/get_day_of_year/package.json | 3 + .../date-fns/get_days_in_month/index.d.ts | 4 + .../date-fns/get_days_in_month/index.js | 28 + .../date-fns/get_days_in_month/index.js.flow | 5 + .../date-fns/get_days_in_month/package.json | 3 + .../date-fns/get_days_in_year/index.d.ts | 4 + .../date-fns/get_days_in_year/index.js | 22 + .../date-fns/get_days_in_year/index.js.flow | 5 + .../date-fns/get_days_in_year/package.json | 3 + node_modules/date-fns/get_hours/index.d.ts | 4 + node_modules/date-fns/get_hours/index.js | 24 + node_modules/date-fns/get_hours/index.js.flow | 5 + node_modules/date-fns/get_hours/package.json | 3 + node_modules/date-fns/get_iso_day/index.d.ts | 4 + node_modules/date-fns/get_iso_day/index.js | 32 + .../date-fns/get_iso_day/index.js.flow | 5 + .../date-fns/get_iso_day/package.json | 3 + node_modules/date-fns/get_iso_week/index.d.ts | 4 + node_modules/date-fns/get_iso_week/index.js | 34 + .../date-fns/get_iso_week/index.js.flow | 5 + .../date-fns/get_iso_week/package.json | 3 + .../date-fns/get_iso_weeks_in_year/index.d.ts | 4 + .../date-fns/get_iso_weeks_in_year/index.js | 33 + .../get_iso_weeks_in_year/index.js.flow | 5 + .../get_iso_weeks_in_year/package.json | 3 + node_modules/date-fns/get_iso_year/index.d.ts | 4 + node_modules/date-fns/get_iso_year/index.js | 45 + .../date-fns/get_iso_year/index.js.flow | 5 + .../date-fns/get_iso_year/package.json | 3 + .../date-fns/get_milliseconds/index.d.ts | 4 + .../date-fns/get_milliseconds/index.js | 24 + .../date-fns/get_milliseconds/index.js.flow | 5 + .../date-fns/get_milliseconds/package.json | 3 + node_modules/date-fns/get_minutes/index.d.ts | 4 + node_modules/date-fns/get_minutes/index.js | 24 + .../date-fns/get_minutes/index.js.flow | 5 + .../date-fns/get_minutes/package.json | 3 + node_modules/date-fns/get_month/index.d.ts | 4 + node_modules/date-fns/get_month/index.js | 24 + node_modules/date-fns/get_month/index.js.flow | 5 + node_modules/date-fns/get_month/package.json | 3 + .../get_overlapping_days_in_ranges/index.d.ts | 4 + .../get_overlapping_days_in_ranges/index.js | 62 + .../index.js.flow | 8 + .../package.json | 3 + node_modules/date-fns/get_quarter/index.d.ts | 4 + node_modules/date-fns/get_quarter/index.js | 24 + .../date-fns/get_quarter/index.js.flow | 5 + .../date-fns/get_quarter/package.json | 3 + node_modules/date-fns/get_seconds/index.d.ts | 4 + node_modules/date-fns/get_seconds/index.js | 24 + .../date-fns/get_seconds/index.js.flow | 5 + .../date-fns/get_seconds/package.json | 3 + node_modules/date-fns/get_time/index.d.ts | 4 + node_modules/date-fns/get_time/index.js | 24 + node_modules/date-fns/get_time/index.js.flow | 5 + node_modules/date-fns/get_time/package.json | 3 + node_modules/date-fns/get_year/index.d.ts | 4 + node_modules/date-fns/get_year/index.js | 24 + node_modules/date-fns/get_year/index.js.flow | 5 + node_modules/date-fns/get_year/package.json | 3 + node_modules/date-fns/index.js | 156 + node_modules/date-fns/is_after/index.d.ts | 4 + node_modules/date-fns/is_after/index.js | 25 + node_modules/date-fns/is_after/index.js.flow | 6 + node_modules/date-fns/is_after/package.json | 3 + node_modules/date-fns/is_before/index.d.ts | 4 + node_modules/date-fns/is_before/index.js | 25 + node_modules/date-fns/is_before/index.js.flow | 6 + node_modules/date-fns/is_before/package.json | 3 + node_modules/date-fns/is_date/index.d.ts | 4 + node_modules/date-fns/is_date/index.js | 20 + node_modules/date-fns/is_date/index.js.flow | 5 + node_modules/date-fns/is_date/package.json | 3 + node_modules/date-fns/is_equal/index.d.ts | 4 + node_modules/date-fns/is_equal/index.js | 28 + node_modules/date-fns/is_equal/index.js.flow | 6 + node_modules/date-fns/is_equal/package.json | 3 + .../date-fns/is_first_day_of_month/index.d.ts | 4 + .../date-fns/is_first_day_of_month/index.js | 22 + .../is_first_day_of_month/index.js.flow | 5 + .../is_first_day_of_month/package.json | 3 + node_modules/date-fns/is_friday/index.d.ts | 4 + node_modules/date-fns/is_friday/index.js | 22 + node_modules/date-fns/is_friday/index.js.flow | 5 + node_modules/date-fns/is_friday/package.json | 3 + node_modules/date-fns/is_future/index.d.ts | 4 + node_modules/date-fns/is_future/index.js | 22 + node_modules/date-fns/is_future/index.js.flow | 5 + node_modules/date-fns/is_future/package.json | 3 + .../date-fns/is_last_day_of_month/index.d.ts | 4 + .../date-fns/is_last_day_of_month/index.js | 25 + .../is_last_day_of_month/index.js.flow | 5 + .../is_last_day_of_month/package.json | 3 + node_modules/date-fns/is_leap_year/index.d.ts | 4 + node_modules/date-fns/is_leap_year/index.js | 24 + .../date-fns/is_leap_year/index.js.flow | 5 + .../date-fns/is_leap_year/package.json | 3 + node_modules/date-fns/is_monday/index.d.ts | 4 + node_modules/date-fns/is_monday/index.js | 22 + node_modules/date-fns/is_monday/index.js.flow | 5 + node_modules/date-fns/is_monday/package.json | 3 + node_modules/date-fns/is_past/index.d.ts | 4 + node_modules/date-fns/is_past/index.js | 22 + node_modules/date-fns/is_past/index.js.flow | 5 + node_modules/date-fns/is_past/package.json | 3 + node_modules/date-fns/is_same_day/index.d.ts | 4 + node_modules/date-fns/is_same_day/index.js | 29 + .../date-fns/is_same_day/index.js.flow | 6 + .../date-fns/is_same_day/package.json | 3 + node_modules/date-fns/is_same_hour/index.d.ts | 4 + node_modules/date-fns/is_same_hour/index.js | 29 + .../date-fns/is_same_hour/index.js.flow | 6 + .../date-fns/is_same_hour/package.json | 3 + .../date-fns/is_same_iso_week/index.d.ts | 4 + .../date-fns/is_same_iso_week/index.js | 28 + .../date-fns/is_same_iso_week/index.js.flow | 6 + .../date-fns/is_same_iso_week/package.json | 3 + .../date-fns/is_same_iso_year/index.d.ts | 4 + .../date-fns/is_same_iso_year/index.js | 31 + .../date-fns/is_same_iso_year/index.js.flow | 6 + .../date-fns/is_same_iso_year/package.json | 3 + .../date-fns/is_same_minute/index.d.ts | 4 + node_modules/date-fns/is_same_minute/index.js | 30 + .../date-fns/is_same_minute/index.js.flow | 6 + .../date-fns/is_same_minute/package.json | 3 + .../date-fns/is_same_month/index.d.ts | 4 + node_modules/date-fns/is_same_month/index.js | 29 + .../date-fns/is_same_month/index.js.flow | 6 + .../date-fns/is_same_month/package.json | 3 + .../date-fns/is_same_quarter/index.d.ts | 4 + .../date-fns/is_same_quarter/index.js | 29 + .../date-fns/is_same_quarter/index.js.flow | 6 + .../date-fns/is_same_quarter/package.json | 3 + .../date-fns/is_same_second/index.d.ts | 4 + node_modules/date-fns/is_same_second/index.js | 30 + .../date-fns/is_same_second/index.js.flow | 6 + .../date-fns/is_same_second/package.json | 3 + node_modules/date-fns/is_same_week/index.d.ts | 4 + node_modules/date-fns/is_same_week/index.js | 41 + .../date-fns/is_same_week/index.js.flow | 9 + .../date-fns/is_same_week/package.json | 3 + node_modules/date-fns/is_same_year/index.d.ts | 4 + node_modules/date-fns/is_same_year/index.js | 28 + .../date-fns/is_same_year/index.js.flow | 6 + .../date-fns/is_same_year/package.json | 3 + node_modules/date-fns/is_saturday/index.d.ts | 4 + node_modules/date-fns/is_saturday/index.js | 22 + .../date-fns/is_saturday/index.js.flow | 5 + .../date-fns/is_saturday/package.json | 3 + node_modules/date-fns/is_sunday/index.d.ts | 4 + node_modules/date-fns/is_sunday/index.js | 22 + node_modules/date-fns/is_sunday/index.js.flow | 5 + node_modules/date-fns/is_sunday/package.json | 3 + node_modules/date-fns/is_this_hour/index.d.ts | 4 + node_modules/date-fns/is_this_hour/index.js | 23 + .../date-fns/is_this_hour/index.js.flow | 5 + .../date-fns/is_this_hour/package.json | 3 + .../date-fns/is_this_iso_week/index.d.ts | 4 + .../date-fns/is_this_iso_week/index.js | 24 + .../date-fns/is_this_iso_week/index.js.flow | 5 + .../date-fns/is_this_iso_week/package.json | 3 + .../date-fns/is_this_iso_year/index.d.ts | 4 + .../date-fns/is_this_iso_year/index.js | 25 + .../date-fns/is_this_iso_year/index.js.flow | 5 + .../date-fns/is_this_iso_year/package.json | 3 + .../date-fns/is_this_minute/index.d.ts | 4 + node_modules/date-fns/is_this_minute/index.js | 23 + .../date-fns/is_this_minute/index.js.flow | 5 + .../date-fns/is_this_minute/package.json | 3 + .../date-fns/is_this_month/index.d.ts | 4 + node_modules/date-fns/is_this_month/index.js | 22 + .../date-fns/is_this_month/index.js.flow | 5 + .../date-fns/is_this_month/package.json | 3 + .../date-fns/is_this_quarter/index.d.ts | 4 + .../date-fns/is_this_quarter/index.js | 22 + .../date-fns/is_this_quarter/index.js.flow | 5 + .../date-fns/is_this_quarter/package.json | 3 + .../date-fns/is_this_second/index.d.ts | 4 + node_modules/date-fns/is_this_second/index.js | 23 + .../date-fns/is_this_second/index.js.flow | 5 + .../date-fns/is_this_second/package.json | 3 + node_modules/date-fns/is_this_week/index.d.ts | 4 + node_modules/date-fns/is_this_week/index.js | 30 + .../date-fns/is_this_week/index.js.flow | 8 + .../date-fns/is_this_week/package.json | 3 + node_modules/date-fns/is_this_year/index.d.ts | 4 + node_modules/date-fns/is_this_year/index.js | 22 + .../date-fns/is_this_year/index.js.flow | 5 + .../date-fns/is_this_year/package.json | 3 + node_modules/date-fns/is_thursday/index.d.ts | 4 + node_modules/date-fns/is_thursday/index.js | 22 + .../date-fns/is_thursday/index.js.flow | 5 + .../date-fns/is_thursday/package.json | 3 + node_modules/date-fns/is_today/index.d.ts | 4 + node_modules/date-fns/is_today/index.js | 22 + node_modules/date-fns/is_today/index.js.flow | 5 + node_modules/date-fns/is_today/package.json | 3 + node_modules/date-fns/is_tomorrow/index.d.ts | 4 + node_modules/date-fns/is_tomorrow/index.js | 24 + .../date-fns/is_tomorrow/index.js.flow | 5 + .../date-fns/is_tomorrow/package.json | 3 + node_modules/date-fns/is_tuesday/index.d.ts | 4 + node_modules/date-fns/is_tuesday/index.js | 22 + .../date-fns/is_tuesday/index.js.flow | 5 + node_modules/date-fns/is_tuesday/package.json | 3 + node_modules/date-fns/is_valid/index.d.ts | 4 + node_modules/date-fns/is_valid/index.js | 35 + node_modules/date-fns/is_valid/index.js.flow | 5 + node_modules/date-fns/is_valid/package.json | 3 + node_modules/date-fns/is_wednesday/index.d.ts | 4 + node_modules/date-fns/is_wednesday/index.js | 22 + .../date-fns/is_wednesday/index.js.flow | 5 + .../date-fns/is_wednesday/package.json | 3 + node_modules/date-fns/is_weekend/index.d.ts | 4 + node_modules/date-fns/is_weekend/index.js | 24 + .../date-fns/is_weekend/index.js.flow | 5 + node_modules/date-fns/is_weekend/package.json | 3 + .../date-fns/is_within_range/index.d.ts | 4 + .../date-fns/is_within_range/index.js | 42 + .../date-fns/is_within_range/index.js.flow | 7 + .../date-fns/is_within_range/package.json | 3 + node_modules/date-fns/is_yesterday/index.d.ts | 4 + node_modules/date-fns/is_yesterday/index.js | 24 + .../date-fns/is_yesterday/index.js.flow | 5 + .../date-fns/is_yesterday/package.json | 3 + .../date-fns/last_day_of_iso_week/index.d.ts | 4 + .../date-fns/last_day_of_iso_week/index.js | 25 + .../last_day_of_iso_week/index.js.flow | 5 + .../last_day_of_iso_week/package.json | 3 + .../date-fns/last_day_of_iso_year/index.d.ts | 4 + .../date-fns/last_day_of_iso_year/index.js | 33 + .../last_day_of_iso_year/index.js.flow | 5 + .../last_day_of_iso_year/package.json | 3 + .../date-fns/last_day_of_month/index.d.ts | 4 + .../date-fns/last_day_of_month/index.js | 27 + .../date-fns/last_day_of_month/index.js.flow | 5 + .../date-fns/last_day_of_month/package.json | 3 + .../date-fns/last_day_of_quarter/index.d.ts | 4 + .../date-fns/last_day_of_quarter/index.js | 28 + .../last_day_of_quarter/index.js.flow | 5 + .../date-fns/last_day_of_quarter/package.json | 3 + .../date-fns/last_day_of_week/index.d.ts | 4 + .../date-fns/last_day_of_week/index.js | 38 + .../date-fns/last_day_of_week/index.js.flow | 8 + .../date-fns/last_day_of_week/package.json | 3 + .../date-fns/last_day_of_year/index.d.ts | 4 + .../date-fns/last_day_of_year/index.js | 27 + .../date-fns/last_day_of_year/index.js.flow | 5 + .../date-fns/last_day_of_year/package.json | 3 + .../build_formatting_tokens_reg_exp/index.js | 28 + .../date-fns/locale/_lib/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/ar/build_format_locale/index.js | 73 + node_modules/date-fns/locale/ar/index.d.ts | 1 + node_modules/date-fns/locale/ar/index.js | 12 + node_modules/date-fns/locale/ar/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/be/build_format_locale/index.js | 73 + node_modules/date-fns/locale/be/index.d.ts | 1 + node_modules/date-fns/locale/be/index.js | 12 + node_modules/date-fns/locale/be/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/bg/build_format_locale/index.js | 87 + node_modules/date-fns/locale/bg/index.d.ts | 1 + node_modules/date-fns/locale/bg/index.js | 12 + node_modules/date-fns/locale/bg/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/ca/build_format_locale/index.js | 84 + node_modules/date-fns/locale/ca/index.d.ts | 1 + node_modules/date-fns/locale/ca/index.js | 12 + node_modules/date-fns/locale/ca/package.json | 3 + .../build_distance_in_words_locale/index.js | 202 + .../locale/cs/build_format_locale/index.js | 73 + node_modules/date-fns/locale/cs/index.d.ts | 1 + node_modules/date-fns/locale/cs/index.js | 12 + node_modules/date-fns/locale/cs/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/da/build_format_locale/index.js | 73 + node_modules/date-fns/locale/da/index.d.ts | 1 + node_modules/date-fns/locale/da/index.js | 13 + node_modules/date-fns/locale/da/package.json | 3 + .../build_distance_in_words_locale/index.js | 185 + .../locale/de/build_format_locale/index.js | 77 + node_modules/date-fns/locale/de/index.d.ts | 1 + node_modules/date-fns/locale/de/index.js | 13 + node_modules/date-fns/locale/de/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/el/build_format_locale/index.js | 87 + node_modules/date-fns/locale/el/index.d.ts | 1 + node_modules/date-fns/locale/el/index.js | 12 + node_modules/date-fns/locale/el/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/en/build_format_locale/index.js | 88 + node_modules/date-fns/locale/en/index.d.ts | 1 + node_modules/date-fns/locale/en/index.js | 11 + node_modules/date-fns/locale/en/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/eo/build_format_locale/index.js | 69 + node_modules/date-fns/locale/eo/index.d.ts | 1 + node_modules/date-fns/locale/eo/index.js | 11 + node_modules/date-fns/locale/eo/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/es/build_format_locale/index.js | 73 + node_modules/date-fns/locale/es/index.d.ts | 1 + node_modules/date-fns/locale/es/index.js | 14 + node_modules/date-fns/locale/es/package.json | 3 + .../build_distance_in_words_locale/index.js | 136 + .../locale/fi/build_format_locale/index.js | 66 + node_modules/date-fns/locale/fi/index.d.ts | 1 + node_modules/date-fns/locale/fi/index.js | 12 + node_modules/date-fns/locale/fi/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/fil/build_format_locale/index.js | 106 + node_modules/date-fns/locale/fil/index.d.ts | 1 + node_modules/date-fns/locale/fil/index.js | 12 + node_modules/date-fns/locale/fil/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/fr/build_format_locale/index.js | 122 + node_modules/date-fns/locale/fr/index.d.ts | 1 + node_modules/date-fns/locale/fr/index.js | 13 + node_modules/date-fns/locale/fr/package.json | 3 + .../build_distance_in_words_locale/index.js | 178 + .../locale/hr/build_format_locale/index.js | 83 + node_modules/date-fns/locale/hr/index.d.ts | 1 + node_modules/date-fns/locale/hr/index.js | 12 + node_modules/date-fns/locale/hr/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/hu/build_format_locale/index.js | 88 + node_modules/date-fns/locale/hu/index.d.ts | 1 + node_modules/date-fns/locale/hu/index.js | 11 + node_modules/date-fns/locale/hu/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/id/build_format_locale/index.js | 86 + node_modules/date-fns/locale/id/index.d.ts | 1 + node_modules/date-fns/locale/id/index.js | 13 + node_modules/date-fns/locale/id/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/is/build_format_locale/index.js | 73 + node_modules/date-fns/locale/is/index.d.ts | 1 + node_modules/date-fns/locale/is/index.js | 12 + node_modules/date-fns/locale/is/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/it/build_format_locale/index.js | 73 + node_modules/date-fns/locale/it/index.d.ts | 1 + node_modules/date-fns/locale/it/index.js | 12 + node_modules/date-fns/locale/it/package.json | 3 + .../build_distance_in_words_locale/index.js | 109 + .../locale/ja/build_format_locale/index.js | 73 + node_modules/date-fns/locale/ja/index.d.ts | 1 + node_modules/date-fns/locale/ja/index.js | 13 + node_modules/date-fns/locale/ja/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/ko/build_format_locale/index.js | 73 + node_modules/date-fns/locale/ko/index.d.ts | 1 + node_modules/date-fns/locale/ko/index.js | 12 + node_modules/date-fns/locale/ko/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/mk/build_format_locale/index.js | 83 + node_modules/date-fns/locale/mk/index.d.ts | 1 + node_modules/date-fns/locale/mk/index.js | 12 + node_modules/date-fns/locale/mk/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/nb/build_format_locale/index.js | 73 + node_modules/date-fns/locale/nb/index.d.ts | 1 + node_modules/date-fns/locale/nb/index.js | 12 + node_modules/date-fns/locale/nb/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/nl/build_format_locale/index.js | 73 + node_modules/date-fns/locale/nl/index.d.ts | 1 + node_modules/date-fns/locale/nl/index.js | 13 + node_modules/date-fns/locale/nl/package.json | 3 + node_modules/date-fns/locale/package.json | 3 + .../build_distance_in_words_locale/index.js | 165 + .../locale/pl/build_format_locale/index.js | 70 + node_modules/date-fns/locale/pl/index.d.ts | 1 + node_modules/date-fns/locale/pl/index.js | 13 + node_modules/date-fns/locale/pl/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/pt/build_format_locale/index.js | 73 + node_modules/date-fns/locale/pt/index.d.ts | 1 + node_modules/date-fns/locale/pt/index.js | 12 + node_modules/date-fns/locale/pt/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/ro/build_format_locale/index.js | 74 + node_modules/date-fns/locale/ro/index.d.ts | 1 + node_modules/date-fns/locale/ro/index.js | 12 + node_modules/date-fns/locale/ro/package.json | 3 + .../build_distance_in_words_locale/index.js | 234 + .../locale/ru/build_format_locale/index.js | 89 + node_modules/date-fns/locale/ru/index.d.ts | 1 + node_modules/date-fns/locale/ru/index.js | 11 + node_modules/date-fns/locale/ru/package.json | 3 + .../build_distance_in_words_locale/index.js | 202 + .../locale/sk/build_format_locale/index.js | 73 + node_modules/date-fns/locale/sk/index.d.ts | 1 + node_modules/date-fns/locale/sk/index.js | 12 + node_modules/date-fns/locale/sk/package.json | 3 + .../build_distance_in_words_locale/index.js | 133 + .../locale/sl/build_format_locale/index.js | 73 + node_modules/date-fns/locale/sl/index.d.ts | 1 + node_modules/date-fns/locale/sl/index.js | 12 + node_modules/date-fns/locale/sl/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/sr/build_format_locale/index.js | 73 + node_modules/date-fns/locale/sr/index.d.ts | 1 + node_modules/date-fns/locale/sr/index.js | 12 + node_modules/date-fns/locale/sr/package.json | 3 + .../build_distance_in_words_locale/index.js | 116 + .../locale/sv/build_format_locale/index.js | 72 + node_modules/date-fns/locale/sv/index.d.ts | 1 + node_modules/date-fns/locale/sv/index.js | 12 + node_modules/date-fns/locale/sv/package.json | 3 + .../build_distance_in_words_locale/index.js | 103 + .../locale/th/build_format_locale/index.js | 61 + node_modules/date-fns/locale/th/index.d.ts | 1 + node_modules/date-fns/locale/th/index.js | 12 + node_modules/date-fns/locale/th/package.json | 3 + .../build_distance_in_words_locale/index.js | 110 + .../locale/tr/build_format_locale/index.js | 106 + node_modules/date-fns/locale/tr/index.d.ts | 1 + node_modules/date-fns/locale/tr/index.js | 12 + node_modules/date-fns/locale/tr/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/zh_cn/build_format_locale/index.js | 61 + node_modules/date-fns/locale/zh_cn/index.d.ts | 1 + node_modules/date-fns/locale/zh_cn/index.js | 13 + .../date-fns/locale/zh_cn/package.json | 3 + .../build_distance_in_words_locale/index.js | 99 + .../locale/zh_tw/build_format_locale/index.js | 73 + node_modules/date-fns/locale/zh_tw/index.d.ts | 1 + node_modules/date-fns/locale/zh_tw/index.js | 12 + .../date-fns/locale/zh_tw/package.json | 3 + node_modules/date-fns/max/index.d.ts | 4 + node_modules/date-fns/max/index.js | 32 + node_modules/date-fns/max/index.js.flow | 5 + node_modules/date-fns/max/package.json | 3 + node_modules/date-fns/min/index.d.ts | 4 + node_modules/date-fns/min/index.js | 32 + node_modules/date-fns/min/index.js.flow | 5 + node_modules/date-fns/min/package.json | 3 + node_modules/date-fns/package.json | 125 + node_modules/date-fns/parse/index.d.ts | 4 + node_modules/date-fns/parse/index.js | 332 + node_modules/date-fns/parse/index.js.flow | 8 + node_modules/date-fns/parse/package.json | 3 + node_modules/date-fns/set_date/index.d.ts | 4 + node_modules/date-fns/set_date/index.js | 26 + node_modules/date-fns/set_date/index.js.flow | 6 + node_modules/date-fns/set_date/package.json | 3 + node_modules/date-fns/set_day/index.d.ts | 4 + node_modules/date-fns/set_day/index.js | 40 + node_modules/date-fns/set_day/index.js.flow | 9 + node_modules/date-fns/set_day/package.json | 3 + .../date-fns/set_day_of_year/index.d.ts | 4 + .../date-fns/set_day_of_year/index.js | 27 + .../date-fns/set_day_of_year/index.js.flow | 6 + .../date-fns/set_day_of_year/package.json | 3 + node_modules/date-fns/set_hours/index.d.ts | 4 + node_modules/date-fns/set_hours/index.js | 26 + node_modules/date-fns/set_hours/index.js.flow | 6 + node_modules/date-fns/set_hours/package.json | 3 + node_modules/date-fns/set_iso_day/index.d.ts | 4 + node_modules/date-fns/set_iso_day/index.js | 31 + .../date-fns/set_iso_day/index.js.flow | 6 + .../date-fns/set_iso_day/package.json | 3 + node_modules/date-fns/set_iso_week/index.d.ts | 4 + node_modules/date-fns/set_iso_week/index.js | 30 + .../date-fns/set_iso_week/index.js.flow | 6 + .../date-fns/set_iso_week/package.json | 3 + node_modules/date-fns/set_iso_year/index.d.ts | 4 + node_modules/date-fns/set_iso_year/index.js | 36 + .../date-fns/set_iso_year/index.js.flow | 6 + .../date-fns/set_iso_year/package.json | 3 + .../date-fns/set_milliseconds/index.d.ts | 4 + .../date-fns/set_milliseconds/index.js | 26 + .../date-fns/set_milliseconds/index.js.flow | 6 + .../date-fns/set_milliseconds/package.json | 3 + node_modules/date-fns/set_minutes/index.d.ts | 4 + node_modules/date-fns/set_minutes/index.js | 26 + .../date-fns/set_minutes/index.js.flow | 6 + .../date-fns/set_minutes/package.json | 3 + node_modules/date-fns/set_month/index.d.ts | 4 + node_modules/date-fns/set_month/index.js | 36 + node_modules/date-fns/set_month/index.js.flow | 6 + node_modules/date-fns/set_month/package.json | 3 + node_modules/date-fns/set_quarter/index.d.ts | 4 + node_modules/date-fns/set_quarter/index.js | 28 + .../date-fns/set_quarter/index.js.flow | 6 + .../date-fns/set_quarter/package.json | 3 + node_modules/date-fns/set_seconds/index.d.ts | 4 + node_modules/date-fns/set_seconds/index.js | 26 + .../date-fns/set_seconds/index.js.flow | 6 + .../date-fns/set_seconds/package.json | 3 + node_modules/date-fns/set_year/index.d.ts | 4 + node_modules/date-fns/set_year/index.js | 26 + node_modules/date-fns/set_year/index.js.flow | 6 + node_modules/date-fns/set_year/package.json | 3 + node_modules/date-fns/start_of_day/index.d.ts | 4 + node_modules/date-fns/start_of_day/index.js | 25 + .../date-fns/start_of_day/index.js.flow | 5 + .../date-fns/start_of_day/package.json | 3 + .../date-fns/start_of_hour/index.d.ts | 4 + node_modules/date-fns/start_of_hour/index.js | 25 + .../date-fns/start_of_hour/index.js.flow | 5 + .../date-fns/start_of_hour/package.json | 3 + .../date-fns/start_of_iso_week/index.d.ts | 4 + .../date-fns/start_of_iso_week/index.js | 25 + .../date-fns/start_of_iso_week/index.js.flow | 5 + .../date-fns/start_of_iso_week/package.json | 3 + .../date-fns/start_of_iso_year/index.d.ts | 4 + .../date-fns/start_of_iso_year/index.js | 32 + .../date-fns/start_of_iso_year/index.js.flow | 5 + .../date-fns/start_of_iso_year/package.json | 3 + .../date-fns/start_of_minute/index.d.ts | 4 + .../date-fns/start_of_minute/index.js | 25 + .../date-fns/start_of_minute/index.js.flow | 5 + .../date-fns/start_of_minute/package.json | 3 + .../date-fns/start_of_month/index.d.ts | 4 + node_modules/date-fns/start_of_month/index.js | 26 + .../date-fns/start_of_month/index.js.flow | 5 + .../date-fns/start_of_month/package.json | 3 + .../date-fns/start_of_quarter/index.d.ts | 4 + .../date-fns/start_of_quarter/index.js | 28 + .../date-fns/start_of_quarter/index.js.flow | 5 + .../date-fns/start_of_quarter/package.json | 3 + .../date-fns/start_of_second/index.d.ts | 4 + .../date-fns/start_of_second/index.js | 25 + .../date-fns/start_of_second/index.js.flow | 5 + .../date-fns/start_of_second/package.json | 3 + .../date-fns/start_of_today/index.d.ts | 4 + node_modules/date-fns/start_of_today/index.js | 21 + .../date-fns/start_of_today/index.js.flow | 3 + .../date-fns/start_of_today/package.json | 3 + .../date-fns/start_of_tomorrow/index.d.ts | 4 + .../date-fns/start_of_tomorrow/index.js | 27 + .../date-fns/start_of_tomorrow/index.js.flow | 3 + .../date-fns/start_of_tomorrow/package.json | 3 + .../date-fns/start_of_week/index.d.ts | 4 + node_modules/date-fns/start_of_week/index.js | 38 + .../date-fns/start_of_week/index.js.flow | 8 + .../date-fns/start_of_week/package.json | 3 + .../date-fns/start_of_year/index.d.ts | 4 + node_modules/date-fns/start_of_year/index.js | 27 + .../date-fns/start_of_year/index.js.flow | 5 + .../date-fns/start_of_year/package.json | 3 + .../date-fns/start_of_yesterday/index.d.ts | 4 + .../date-fns/start_of_yesterday/index.js | 27 + .../date-fns/start_of_yesterday/index.js.flow | 3 + .../date-fns/start_of_yesterday/package.json | 3 + node_modules/date-fns/sub_days/index.d.ts | 4 + node_modules/date-fns/sub_days/index.js | 24 + node_modules/date-fns/sub_days/index.js.flow | 6 + node_modules/date-fns/sub_days/package.json | 3 + node_modules/date-fns/sub_hours/index.d.ts | 4 + node_modules/date-fns/sub_hours/index.js | 24 + node_modules/date-fns/sub_hours/index.js.flow | 6 + node_modules/date-fns/sub_hours/package.json | 3 + .../date-fns/sub_iso_years/index.d.ts | 4 + node_modules/date-fns/sub_iso_years/index.js | 26 + .../date-fns/sub_iso_years/index.js.flow | 6 + .../date-fns/sub_iso_years/package.json | 3 + .../date-fns/sub_milliseconds/index.d.ts | 4 + .../date-fns/sub_milliseconds/index.js | 24 + .../date-fns/sub_milliseconds/index.js.flow | 6 + .../date-fns/sub_milliseconds/package.json | 3 + node_modules/date-fns/sub_minutes/index.d.ts | 4 + node_modules/date-fns/sub_minutes/index.js | 24 + .../date-fns/sub_minutes/index.js.flow | 6 + .../date-fns/sub_minutes/package.json | 3 + node_modules/date-fns/sub_months/index.d.ts | 4 + node_modules/date-fns/sub_months/index.js | 24 + .../date-fns/sub_months/index.js.flow | 6 + node_modules/date-fns/sub_months/package.json | 3 + node_modules/date-fns/sub_quarters/index.d.ts | 4 + node_modules/date-fns/sub_quarters/index.js | 24 + .../date-fns/sub_quarters/index.js.flow | 6 + .../date-fns/sub_quarters/package.json | 3 + node_modules/date-fns/sub_seconds/index.d.ts | 4 + node_modules/date-fns/sub_seconds/index.js | 24 + .../date-fns/sub_seconds/index.js.flow | 6 + .../date-fns/sub_seconds/package.json | 3 + node_modules/date-fns/sub_weeks/index.d.ts | 4 + node_modules/date-fns/sub_weeks/index.js | 24 + node_modules/date-fns/sub_weeks/index.js.flow | 6 + node_modules/date-fns/sub_weeks/package.json | 3 + node_modules/date-fns/sub_years/index.d.ts | 4 + node_modules/date-fns/sub_years/index.js | 24 + node_modules/date-fns/sub_years/index.js.flow | 6 + node_modules/date-fns/sub_years/package.json | 3 + node_modules/date-fns/typings.d.ts | 3301 +++ node_modules/debug/CHANGELOG.md | 395 + node_modules/debug/LICENSE | 19 + node_modules/debug/README.md | 437 + node_modules/debug/dist/debug.js | 886 + node_modules/debug/node.js | 1 + node_modules/debug/package.json | 91 + node_modules/debug/src/browser.js | 180 + node_modules/debug/src/common.js | 249 + node_modules/debug/src/index.js | 12 + node_modules/debug/src/node.js | 174 + node_modules/delayed-stream/.npmignore | 1 + node_modules/delayed-stream/License | 19 + node_modules/delayed-stream/Makefile | 7 + node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + node_modules/delayed-stream/package.json | 62 + node_modules/ecc-jsbn/LICENSE | 21 + node_modules/ecc-jsbn/README.md | 8 + node_modules/ecc-jsbn/index.js | 58 + node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 + node_modules/ecc-jsbn/lib/ec.js | 561 + node_modules/ecc-jsbn/lib/sec.js | 170 + node_modules/ecc-jsbn/package.json | 65 + node_modules/ecc-jsbn/test.js | 14 + node_modules/elegant-spinner/index.js | 15 + node_modules/elegant-spinner/license | 21 + node_modules/elegant-spinner/package.json | 75 + node_modules/elegant-spinner/readme.md | 35 + node_modules/escape-string-regexp/index.js | 11 + node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 87 + node_modules/escape-string-regexp/readme.md | 27 + node_modules/execa/index.js | 366 + node_modules/execa/lib/errname.js | 39 + node_modules/execa/lib/stdio.js | 41 + node_modules/execa/license | 9 + node_modules/execa/package.json | 108 + node_modules/execa/readme.md | 304 + node_modules/executable/index.js | 36 + node_modules/executable/license | 21 + node_modules/executable/package.json | 68 + node_modules/executable/readme.md | 64 + node_modules/exit-hook/index.js | 30 + node_modules/exit-hook/package.json | 71 + node_modules/exit-hook/readme.md | 40 + node_modules/extend/.editorconfig | 20 + node_modules/extend/.eslintrc | 17 + node_modules/extend/.jscs.json | 175 + node_modules/extend/.travis.yml | 230 + node_modules/extend/CHANGELOG.md | 83 + node_modules/extend/LICENSE | 23 + node_modules/extend/README.md | 81 + node_modules/extend/component.json | 32 + node_modules/extend/index.js | 117 + node_modules/extend/package.json | 75 + node_modules/extract-zip/.npmignore | 1 + node_modules/extract-zip/.travis.yml | 9 + node_modules/extract-zip/CONTRIBUTING.md | 1 + node_modules/extract-zip/LICENSE | 23 + node_modules/extract-zip/cli.js | 20 + node_modules/extract-zip/index.js | 205 + .../node_modules/debug/.coveralls.yml | 1 + .../extract-zip/node_modules/debug/.eslintrc | 11 + .../extract-zip/node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + .../extract-zip/node_modules/debug/LICENSE | 19 + .../extract-zip/node_modules/debug/Makefile | 50 + .../extract-zip/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + .../extract-zip/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 88 + .../node_modules/debug/src/browser.js | 185 + .../node_modules/debug/src/debug.js | 202 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../node_modules/debug/src/node.js | 248 + .../extract-zip/node_modules/ms/index.js | 152 + .../extract-zip/node_modules/ms/license.md | 21 + .../extract-zip/node_modules/ms/package.json | 69 + .../extract-zip/node_modules/ms/readme.md | 51 + .../extract-zip/node_modules/yauzl/.npmignore | 2 + .../node_modules/yauzl/.travis.yml | 8 + .../extract-zip/node_modules/yauzl/LICENSE | 21 + .../extract-zip/node_modules/yauzl/README.md | 467 + .../extract-zip/node_modules/yauzl/index.js | 626 + .../node_modules/yauzl/package.json | 64 + node_modules/extract-zip/package.json | 71 + node_modules/extract-zip/readme.md | 49 + node_modules/extsprintf/.gitmodules | 0 node_modules/extsprintf/.npmignore | 2 + node_modules/extsprintf/LICENSE | 19 + node_modules/extsprintf/Makefile | 24 + node_modules/extsprintf/Makefile.targ | 285 + node_modules/extsprintf/README.md | 46 + node_modules/extsprintf/jsl.node.conf | 137 + node_modules/extsprintf/lib/extsprintf.js | 183 + node_modules/extsprintf/package.json | 44 + node_modules/fast-deep-equal/LICENSE | 21 + node_modules/fast-deep-equal/README.md | 58 + node_modules/fast-deep-equal/index.d.ts | 4 + node_modules/fast-deep-equal/index.js | 55 + node_modules/fast-deep-equal/package.json | 86 + .../fast-json-stable-stringify/.eslintrc.yml | 26 + .../fast-json-stable-stringify/.npmignore | 4 + .../fast-json-stable-stringify/.travis.yml | 8 + .../fast-json-stable-stringify/LICENSE | 18 + .../fast-json-stable-stringify/README.md | 119 + .../benchmark/index.js | 31 + .../benchmark/test.json | 137 + .../example/key_cmp.js | 7 + .../example/nested.js | 3 + .../fast-json-stable-stringify/example/str.js | 3 + .../example/value_cmp.js | 7 + .../fast-json-stable-stringify/index.js | 59 + .../fast-json-stable-stringify/package.json | 78 + .../fast-json-stable-stringify/test/cmp.js | 13 + .../fast-json-stable-stringify/test/nested.js | 44 + .../fast-json-stable-stringify/test/str.js | 46 + .../test/to-json.js | 22 + node_modules/fd-slicer/.npmignore | 2 + node_modules/fd-slicer/.travis.yml | 7 + node_modules/fd-slicer/CHANGELOG.md | 49 + node_modules/fd-slicer/LICENSE | 21 + node_modules/fd-slicer/README.md | 189 + node_modules/fd-slicer/index.js | 277 + node_modules/fd-slicer/package.json | 65 + node_modules/fd-slicer/test/test.js | 350 + node_modules/figures/index.js | 147 + node_modules/figures/license | 21 + node_modules/figures/package.json | 80 + node_modules/figures/readme.md | 115 + node_modules/forever-agent/LICENSE | 55 + node_modules/forever-agent/README.md | 4 + node_modules/forever-agent/index.js | 138 + node_modules/forever-agent/package.json | 50 + node_modules/form-data/License | 19 + node_modules/form-data/README.md | 234 + node_modules/form-data/README.md.bak | 234 + node_modules/form-data/lib/browser.js | 2 + node_modules/form-data/lib/form_data.js | 457 + node_modules/form-data/lib/populate.js | 10 + node_modules/form-data/package.json | 98 + node_modules/form-data/yarn.lock | 2662 ++ node_modules/fs-extra/CHANGELOG.md | 812 + node_modules/fs-extra/LICENSE | 15 + node_modules/fs-extra/README.md | 242 + node_modules/fs-extra/docs/copy-sync.md | 37 + node_modules/fs-extra/docs/copy.md | 57 + node_modules/fs-extra/docs/emptyDir-sync.md | 16 + node_modules/fs-extra/docs/emptyDir.md | 30 + node_modules/fs-extra/docs/ensureDir-sync.md | 17 + node_modules/fs-extra/docs/ensureDir.md | 29 + node_modules/fs-extra/docs/ensureFile-sync.md | 17 + node_modules/fs-extra/docs/ensureFile.md | 29 + node_modules/fs-extra/docs/ensureLink-sync.md | 17 + node_modules/fs-extra/docs/ensureLink.md | 29 + .../fs-extra/docs/ensureSymlink-sync.md | 18 + node_modules/fs-extra/docs/ensureSymlink.md | 30 + node_modules/fs-extra/docs/fs-read-write.md | 39 + node_modules/fs-extra/docs/move-sync.md | 24 + node_modules/fs-extra/docs/move.md | 41 + node_modules/fs-extra/docs/outputFile-sync.md | 19 + node_modules/fs-extra/docs/outputFile.md | 34 + node_modules/fs-extra/docs/outputJson-sync.md | 25 + node_modules/fs-extra/docs/outputJson.md | 40 + node_modules/fs-extra/docs/pathExists-sync.md | 3 + node_modules/fs-extra/docs/pathExists.md | 22 + node_modules/fs-extra/docs/readJson-sync.md | 33 + node_modules/fs-extra/docs/readJson.md | 58 + node_modules/fs-extra/docs/remove-sync.md | 16 + node_modules/fs-extra/docs/remove.md | 34 + node_modules/fs-extra/docs/writeJson-sync.md | 24 + node_modules/fs-extra/docs/writeJson.md | 39 + .../fs-extra/lib/copy-sync/copy-sync.js | 209 + node_modules/fs-extra/lib/copy-sync/index.js | 3 + node_modules/fs-extra/lib/copy/copy.js | 264 + node_modules/fs-extra/lib/copy/index.js | 4 + node_modules/fs-extra/lib/empty/index.js | 48 + node_modules/fs-extra/lib/ensure/file.js | 49 + node_modules/fs-extra/lib/ensure/index.js | 23 + node_modules/fs-extra/lib/ensure/link.js | 61 + .../fs-extra/lib/ensure/symlink-paths.js | 99 + .../fs-extra/lib/ensure/symlink-type.js | 31 + node_modules/fs-extra/lib/ensure/symlink.js | 66 + node_modules/fs-extra/lib/fs/index.js | 107 + node_modules/fs-extra/lib/index.js | 22 + node_modules/fs-extra/lib/json/index.js | 16 + node_modules/fs-extra/lib/json/jsonfile.js | 12 + .../fs-extra/lib/json/output-json-sync.js | 18 + node_modules/fs-extra/lib/json/output-json.js | 27 + node_modules/fs-extra/lib/mkdirs/index.js | 14 + .../fs-extra/lib/mkdirs/mkdirs-sync.js | 59 + node_modules/fs-extra/lib/mkdirs/mkdirs.js | 63 + node_modules/fs-extra/lib/mkdirs/win32.js | 25 + node_modules/fs-extra/lib/move-sync/index.js | 118 + node_modules/fs-extra/lib/move/index.js | 170 + node_modules/fs-extra/lib/output/index.js | 40 + .../fs-extra/lib/path-exists/index.js | 12 + node_modules/fs-extra/lib/remove/index.js | 9 + node_modules/fs-extra/lib/remove/rimraf.js | 314 + node_modules/fs-extra/lib/util/assign.js | 16 + node_modules/fs-extra/lib/util/buffer.js | 11 + node_modules/fs-extra/lib/util/utimes.js | 79 + node_modules/fs-extra/package.json | 95 + node_modules/fs.realpath/LICENSE | 43 + node_modules/fs.realpath/README.md | 33 + node_modules/fs.realpath/index.js | 66 + node_modules/fs.realpath/old.js | 303 + node_modules/fs.realpath/package.json | 59 + node_modules/get-stream/buffer-stream.js | 51 + node_modules/get-stream/index.js | 51 + node_modules/get-stream/license | 21 + node_modules/get-stream/package.json | 80 + node_modules/get-stream/readme.md | 117 + node_modules/getos/.travis.yml | 8 + node_modules/getos/Dockerfile | 20 + node_modules/getos/LICENSE | 21 + node_modules/getos/README.md | 79 + node_modules/getos/imgs/logo.png | Bin 0 -> 5721 bytes node_modules/getos/imgs/logo.svg | 127 + node_modules/getos/index.js | 155 + node_modules/getos/logic/alpine.js | 7 + node_modules/getos/logic/amazon.js | 7 + node_modules/getos/logic/centos.js | 10 + node_modules/getos/logic/debian.js | 26 + node_modules/getos/logic/fedora.js | 10 + node_modules/getos/logic/manjaro.js | 10 + node_modules/getos/logic/raspbian.js | 10 + node_modules/getos/logic/red.js | 1 + node_modules/getos/logic/suse.js | 7 + node_modules/getos/logic/ubuntu.js | 10 + node_modules/getos/os.json | 54 + node_modules/getos/package.json | 70 + node_modules/getos/test.js | 4 + .../getos/tests/alpine/3.3/Dockerfile | 11 + .../getos/tests/debian/7.3/Dockerfile | 20 + .../getos/tests/debian/7.4/Dockerfile | 20 + .../getos/tests/debian/7.5/Dockerfile | 20 + .../getos/tests/debian/7.6/Dockerfile | 20 + node_modules/getos/tests/fedora/20/Dockerfile | 9 + node_modules/getos/tests/mockdata.json | 22 + node_modules/getos/tests/mocktests.js | 40 + node_modules/getos/tests/runTest.js | 79 + .../getos/tests/ubuntu/13.10/Dockerfile | 18 + .../getos/tests/ubuntu/14.04/Dockerfile | 18 + node_modules/getpass/.npmignore | 8 + node_modules/getpass/.travis.yml | 9 + node_modules/getpass/LICENSE | 18 + node_modules/getpass/README.md | 32 + node_modules/getpass/lib/index.js | 123 + node_modules/getpass/package.json | 50 + node_modules/glob/LICENSE | 21 + node_modules/glob/README.md | 373 + node_modules/glob/changelog.md | 67 + node_modules/glob/common.js | 240 + node_modules/glob/glob.js | 790 + node_modules/glob/package.json | 76 + node_modules/glob/sync.js | 486 + node_modules/global-dirs/index.js | 90 + node_modules/global-dirs/license | 9 + node_modules/global-dirs/package.json | 84 + node_modules/global-dirs/readme.md | 69 + node_modules/graceful-fs/LICENSE | 15 + node_modules/graceful-fs/README.md | 133 + node_modules/graceful-fs/clone.js | 19 + node_modules/graceful-fs/graceful-fs.js | 344 + node_modules/graceful-fs/legacy-streams.js | 118 + node_modules/graceful-fs/package.json | 80 + node_modules/graceful-fs/polyfills.js | 342 + node_modules/har-schema/LICENSE | 13 + node_modules/har-schema/README.md | 49 + node_modules/har-schema/lib/afterRequest.json | 30 + .../har-schema/lib/beforeRequest.json | 30 + node_modules/har-schema/lib/browser.json | 20 + node_modules/har-schema/lib/cache.json | 21 + node_modules/har-schema/lib/content.json | 29 + node_modules/har-schema/lib/cookie.json | 36 + node_modules/har-schema/lib/creator.json | 20 + node_modules/har-schema/lib/entry.json | 53 + node_modules/har-schema/lib/har.json | 13 + node_modules/har-schema/lib/header.json | 20 + node_modules/har-schema/lib/index.js | 22 + node_modules/har-schema/lib/log.json | 36 + node_modules/har-schema/lib/page.json | 32 + node_modules/har-schema/lib/pageTimings.json | 18 + node_modules/har-schema/lib/postData.json | 43 + node_modules/har-schema/lib/query.json | 20 + node_modules/har-schema/lib/request.json | 57 + node_modules/har-schema/lib/response.json | 54 + node_modules/har-schema/lib/timings.json | 42 + node_modules/har-schema/package.json | 86 + node_modules/har-validator/LICENSE | 9 + node_modules/har-validator/README.md | 37 + node_modules/har-validator/lib/async.js | 105 + node_modules/har-validator/lib/error.js | 17 + node_modules/har-validator/lib/promise.js | 102 + node_modules/har-validator/package.json | 76 + node_modules/has-ansi/index.js | 4 + node_modules/has-ansi/license | 21 + node_modules/has-ansi/package.json | 99 + node_modules/has-ansi/readme.md | 36 + node_modules/has-flag/index.js | 8 + node_modules/has-flag/license | 9 + node_modules/has-flag/package.json | 76 + node_modules/has-flag/readme.md | 70 + node_modules/http-signature/.dir-locals.el | 6 + node_modules/http-signature/.npmignore | 7 + node_modules/http-signature/CHANGES.md | 46 + node_modules/http-signature/LICENSE | 18 + node_modules/http-signature/README.md | 79 + node_modules/http-signature/http_signing.md | 363 + node_modules/http-signature/lib/index.js | 29 + node_modules/http-signature/lib/parser.js | 315 + node_modules/http-signature/lib/signer.js | 401 + node_modules/http-signature/lib/utils.js | 112 + node_modules/http-signature/lib/verify.js | 88 + node_modules/http-signature/package.json | 77 + node_modules/indent-string/index.js | 20 + node_modules/indent-string/license | 21 + node_modules/indent-string/package.json | 68 + node_modules/indent-string/readme.md | 58 + node_modules/inflight/LICENSE | 15 + node_modules/inflight/README.md | 37 + node_modules/inflight/inflight.js | 54 + node_modules/inflight/package.json | 58 + node_modules/inherits/LICENSE | 16 + node_modules/inherits/README.md | 42 + node_modules/inherits/inherits.js | 9 + node_modules/inherits/inherits_browser.js | 27 + node_modules/inherits/package.json | 63 + node_modules/ini/LICENSE | 15 + node_modules/ini/README.md | 102 + node_modules/ini/ini.js | 194 + node_modules/ini/package.json | 63 + node_modules/is-ci/LICENSE | 21 + node_modules/is-ci/README.md | 50 + node_modules/is-ci/bin.js | 4 + node_modules/is-ci/index.js | 3 + node_modules/is-ci/package.json | 69 + node_modules/is-finite/index.js | 6 + node_modules/is-finite/license | 21 + node_modules/is-finite/package.json | 68 + node_modules/is-finite/readme.md | 28 + node_modules/is-fullwidth-code-point/index.js | 46 + node_modules/is-fullwidth-code-point/license | 21 + .../is-fullwidth-code-point/package.json | 77 + .../is-fullwidth-code-point/readme.md | 39 + node_modules/is-installed-globally/index.js | 5 + node_modules/is-installed-globally/license | 9 + .../is-installed-globally/package.json | 80 + node_modules/is-installed-globally/readme.md | 39 + node_modules/is-path-inside/index.js | 14 + node_modules/is-path-inside/license | 21 + node_modules/is-path-inside/package.json | 69 + node_modules/is-path-inside/readme.md | 34 + node_modules/is-promise/.npmignore | 6 + node_modules/is-promise/.travis.yml | 3 + node_modules/is-promise/LICENSE | 19 + node_modules/is-promise/index.js | 5 + node_modules/is-promise/package.json | 50 + node_modules/is-promise/readme.md | 29 + node_modules/is-stream/index.js | 21 + node_modules/is-stream/license | 21 + node_modules/is-stream/package.json | 71 + node_modules/is-stream/readme.md | 42 + node_modules/is-typedarray/LICENSE.md | 18 + node_modules/is-typedarray/README.md | 16 + node_modules/is-typedarray/index.js | 41 + node_modules/is-typedarray/package.json | 59 + node_modules/is-typedarray/test.js | 34 + node_modules/isarray/.npmignore | 1 + node_modules/isarray/.travis.yml | 4 + node_modules/isarray/Makefile | 6 + node_modules/isarray/README.md | 60 + node_modules/isarray/component.json | 19 + node_modules/isarray/index.js | 5 + node_modules/isarray/package.json | 73 + node_modules/isarray/test.js | 20 + node_modules/isexe/.npmignore | 2 + node_modules/isexe/LICENSE | 15 + node_modules/isexe/README.md | 51 + node_modules/isexe/index.js | 57 + node_modules/isexe/mode.js | 41 + node_modules/isexe/package.json | 60 + node_modules/isexe/test/basic.js | 221 + node_modules/isexe/windows.js | 42 + node_modules/isstream/.jshintrc | 59 + node_modules/isstream/.npmignore | 1 + node_modules/isstream/.travis.yml | 12 + node_modules/isstream/LICENSE.md | 11 + node_modules/isstream/README.md | 66 + node_modules/isstream/isstream.js | 27 + node_modules/isstream/package.json | 61 + node_modules/isstream/test.js | 168 + node_modules/jsbn/.npmignore | 2 + node_modules/jsbn/LICENSE | 40 + node_modules/jsbn/README.md | 175 + node_modules/jsbn/example.html | 12 + node_modules/jsbn/example.js | 3 + node_modules/jsbn/index.js | 1357 ++ node_modules/jsbn/package.json | 53 + .../json-schema-traverse/.eslintrc.yml | 27 + node_modules/json-schema-traverse/.travis.yml | 8 + node_modules/json-schema-traverse/LICENSE | 21 + node_modules/json-schema-traverse/README.md | 83 + node_modules/json-schema-traverse/index.js | 89 + .../json-schema-traverse/package.json | 70 + .../json-schema-traverse/spec/.eslintrc.yml | 6 + .../spec/fixtures/schema.js | 125 + .../json-schema-traverse/spec/index.spec.js | 171 + node_modules/json-schema/README.md | 5 + .../json-schema/draft-00/hyper-schema | 68 + node_modules/json-schema/draft-00/json-ref | 26 + node_modules/json-schema/draft-00/links | 33 + node_modules/json-schema/draft-00/schema | 155 + .../json-schema/draft-01/hyper-schema | 68 + node_modules/json-schema/draft-01/json-ref | 26 + node_modules/json-schema/draft-01/links | 33 + node_modules/json-schema/draft-01/schema | 155 + .../json-schema/draft-02/hyper-schema | 68 + node_modules/json-schema/draft-02/json-ref | 26 + node_modules/json-schema/draft-02/links | 35 + node_modules/json-schema/draft-02/schema | 166 + .../json-schema/draft-03/examples/address | 20 + .../json-schema/draft-03/examples/calendar | 53 + .../json-schema/draft-03/examples/card | 105 + .../json-schema/draft-03/examples/geo | 8 + .../json-schema/draft-03/examples/interfaces | 23 + .../json-schema/draft-03/hyper-schema | 60 + node_modules/json-schema/draft-03/json-ref | 26 + node_modules/json-schema/draft-03/links | 35 + node_modules/json-schema/draft-03/schema | 174 + .../json-schema/draft-04/hyper-schema | 60 + node_modules/json-schema/draft-04/links | 41 + node_modules/json-schema/draft-04/schema | 189 + .../json-schema/draft-zyp-json-schema-03.xml | 1120 + .../json-schema/draft-zyp-json-schema-04.xml | 1072 + node_modules/json-schema/lib/links.js | 66 + node_modules/json-schema/lib/validate.js | 273 + node_modules/json-schema/package.json | 71 + node_modules/json-schema/test/tests.js | 95 + node_modules/json-stringify-safe/.npmignore | 1 + node_modules/json-stringify-safe/CHANGELOG.md | 14 + node_modules/json-stringify-safe/LICENSE | 15 + node_modules/json-stringify-safe/Makefile | 35 + node_modules/json-stringify-safe/README.md | 52 + node_modules/json-stringify-safe/package.json | 66 + node_modules/json-stringify-safe/stringify.js | 27 + .../json-stringify-safe/test/mocha.opts | 2 + .../test/stringify_test.js | 246 + node_modules/jsonfile/CHANGELOG.md | 145 + node_modules/jsonfile/LICENSE | 15 + node_modules/jsonfile/README.md | 168 + node_modules/jsonfile/index.js | 134 + node_modules/jsonfile/package.json | 71 + node_modules/jsprim/CHANGES.md | 49 + node_modules/jsprim/CONTRIBUTING.md | 19 + node_modules/jsprim/LICENSE | 19 + node_modules/jsprim/README.md | 287 + node_modules/jsprim/lib/jsprim.js | 735 + node_modules/jsprim/package.json | 49 + node_modules/lazy-ass/LICENSE | 22 + node_modules/lazy-ass/README.md | 269 + node_modules/lazy-ass/bower.json | 30 + node_modules/lazy-ass/index.d.ts | 2 + node_modules/lazy-ass/index.html | 52 + node_modules/lazy-ass/index.js | 169 + node_modules/lazy-ass/package.json | 141 + node_modules/lazy-ass/test/demo.js | 5 + node_modules/listr-silent-renderer/index.js | 10 + node_modules/listr-silent-renderer/license | 21 + .../listr-silent-renderer/package.json | 68 + node_modules/listr-silent-renderer/readme.md | 41 + node_modules/listr-update-renderer/index.js | 83 + .../listr-update-renderer/lib/utils.js | 34 + node_modules/listr-update-renderer/license | 21 + .../node_modules/chalk/index.js | 116 + .../node_modules/chalk/license | 21 + .../node_modules/chalk/package.json | 115 + .../node_modules/chalk/readme.md | 213 + .../node_modules/indent-string/index.js | 27 + .../node_modules/indent-string/license | 9 + .../node_modules/indent-string/package.json | 68 + .../node_modules/indent-string/readme.md | 72 + .../node_modules/log-symbols/index.js | 18 + .../node_modules/log-symbols/license | 21 + .../node_modules/log-symbols/package.json | 78 + .../node_modules/log-symbols/readme.md | 39 + .../node_modules/supports-color/index.js | 50 + .../node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 89 + .../node_modules/supports-color/readme.md | 36 + .../listr-update-renderer/package.json | 86 + node_modules/listr-update-renderer/readme.md | 65 + node_modules/listr-verbose-renderer/index.js | 65 + .../listr-verbose-renderer/lib/utils.js | 14 + node_modules/listr-verbose-renderer/license | 21 + .../node_modules/chalk/index.js | 116 + .../node_modules/chalk/license | 21 + .../node_modules/chalk/package.json | 114 + .../node_modules/chalk/readme.md | 213 + .../node_modules/supports-color/index.js | 50 + .../node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 89 + .../node_modules/supports-color/readme.md | 36 + .../listr-verbose-renderer/package.json | 80 + node_modules/listr-verbose-renderer/readme.md | 57 + node_modules/listr/index.js | 120 + node_modules/listr/lib/listr-error.js | 9 + node_modules/listr/lib/renderer.js | 30 + node_modules/listr/lib/state.js | 24 + node_modules/listr/lib/task-wrapper.js | 61 + node_modules/listr/lib/task.js | 208 + node_modules/listr/lib/utils.js | 5 + node_modules/listr/license | 21 + .../listr/node_modules/chalk/index.js | 116 + node_modules/listr/node_modules/chalk/license | 21 + .../listr/node_modules/chalk/package.json | 115 + .../listr/node_modules/chalk/readme.md | 213 + .../listr/node_modules/log-symbols/index.js | 18 + .../listr/node_modules/log-symbols/license | 21 + .../node_modules/log-symbols/package.json | 78 + .../listr/node_modules/log-symbols/readme.md | 39 + .../node_modules/supports-color/index.js | 50 + .../listr/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 89 + .../node_modules/supports-color/readme.md | 36 + node_modules/listr/package.json | 115 + node_modules/listr/readme.md | 444 + node_modules/lodash.once/LICENSE | 47 + node_modules/lodash.once/README.md | 18 + node_modules/lodash.once/index.js | 294 + node_modules/lodash.once/package.json | 69 + node_modules/lodash/LICENSE | 47 + node_modules/lodash/README.md | 39 + node_modules/lodash/_DataView.js | 7 + node_modules/lodash/_Hash.js | 32 + node_modules/lodash/_LazyWrapper.js | 28 + node_modules/lodash/_ListCache.js | 32 + node_modules/lodash/_LodashWrapper.js | 22 + node_modules/lodash/_Map.js | 7 + node_modules/lodash/_MapCache.js | 32 + node_modules/lodash/_Promise.js | 7 + node_modules/lodash/_Set.js | 7 + node_modules/lodash/_SetCache.js | 27 + node_modules/lodash/_Stack.js | 27 + node_modules/lodash/_Symbol.js | 6 + node_modules/lodash/_Uint8Array.js | 6 + node_modules/lodash/_WeakMap.js | 7 + node_modules/lodash/_apply.js | 21 + node_modules/lodash/_arrayAggregator.js | 22 + node_modules/lodash/_arrayEach.js | 22 + node_modules/lodash/_arrayEachRight.js | 21 + node_modules/lodash/_arrayEvery.js | 23 + node_modules/lodash/_arrayFilter.js | 25 + node_modules/lodash/_arrayIncludes.js | 17 + node_modules/lodash/_arrayIncludesWith.js | 22 + node_modules/lodash/_arrayLikeKeys.js | 49 + node_modules/lodash/_arrayMap.js | 21 + node_modules/lodash/_arrayPush.js | 20 + node_modules/lodash/_arrayReduce.js | 26 + node_modules/lodash/_arrayReduceRight.js | 24 + node_modules/lodash/_arraySample.js | 15 + node_modules/lodash/_arraySampleSize.js | 17 + node_modules/lodash/_arrayShuffle.js | 15 + node_modules/lodash/_arraySome.js | 23 + node_modules/lodash/_asciiSize.js | 12 + node_modules/lodash/_asciiToArray.js | 12 + node_modules/lodash/_asciiWords.js | 15 + node_modules/lodash/_assignMergeValue.js | 20 + node_modules/lodash/_assignValue.js | 28 + node_modules/lodash/_assocIndexOf.js | 21 + node_modules/lodash/_baseAggregator.js | 21 + node_modules/lodash/_baseAssign.js | 17 + node_modules/lodash/_baseAssignIn.js | 17 + node_modules/lodash/_baseAssignValue.js | 25 + node_modules/lodash/_baseAt.js | 23 + node_modules/lodash/_baseClamp.js | 22 + node_modules/lodash/_baseClone.js | 165 + node_modules/lodash/_baseConforms.js | 18 + node_modules/lodash/_baseConformsTo.js | 27 + node_modules/lodash/_baseCreate.js | 30 + node_modules/lodash/_baseDelay.js | 21 + node_modules/lodash/_baseDifference.js | 67 + node_modules/lodash/_baseEach.js | 14 + node_modules/lodash/_baseEachRight.js | 14 + node_modules/lodash/_baseEvery.js | 21 + node_modules/lodash/_baseExtremum.js | 32 + node_modules/lodash/_baseFill.js | 32 + node_modules/lodash/_baseFilter.js | 21 + node_modules/lodash/_baseFindIndex.js | 24 + node_modules/lodash/_baseFindKey.js | 23 + node_modules/lodash/_baseFlatten.js | 38 + node_modules/lodash/_baseFor.js | 16 + node_modules/lodash/_baseForOwn.js | 16 + node_modules/lodash/_baseForOwnRight.js | 16 + node_modules/lodash/_baseForRight.js | 15 + node_modules/lodash/_baseFunctions.js | 19 + node_modules/lodash/_baseGet.js | 24 + node_modules/lodash/_baseGetAllKeys.js | 20 + node_modules/lodash/_baseGetTag.js | 28 + node_modules/lodash/_baseGt.js | 14 + node_modules/lodash/_baseHas.js | 19 + node_modules/lodash/_baseHasIn.js | 13 + node_modules/lodash/_baseInRange.js | 18 + node_modules/lodash/_baseIndexOf.js | 20 + node_modules/lodash/_baseIndexOfWith.js | 23 + node_modules/lodash/_baseIntersection.js | 74 + node_modules/lodash/_baseInverter.js | 21 + node_modules/lodash/_baseInvoke.js | 24 + node_modules/lodash/_baseIsArguments.js | 18 + node_modules/lodash/_baseIsArrayBuffer.js | 17 + node_modules/lodash/_baseIsDate.js | 18 + node_modules/lodash/_baseIsEqual.js | 28 + node_modules/lodash/_baseIsEqualDeep.js | 83 + node_modules/lodash/_baseIsMap.js | 18 + node_modules/lodash/_baseIsMatch.js | 62 + node_modules/lodash/_baseIsNaN.js | 12 + node_modules/lodash/_baseIsNative.js | 47 + node_modules/lodash/_baseIsRegExp.js | 18 + node_modules/lodash/_baseIsSet.js | 18 + node_modules/lodash/_baseIsTypedArray.js | 60 + node_modules/lodash/_baseIteratee.js | 31 + node_modules/lodash/_baseKeys.js | 30 + node_modules/lodash/_baseKeysIn.js | 33 + node_modules/lodash/_baseLodash.js | 10 + node_modules/lodash/_baseLt.js | 14 + node_modules/lodash/_baseMap.js | 22 + node_modules/lodash/_baseMatches.js | 22 + node_modules/lodash/_baseMatchesProperty.js | 33 + node_modules/lodash/_baseMean.js | 20 + node_modules/lodash/_baseMerge.js | 42 + node_modules/lodash/_baseMergeDeep.js | 94 + node_modules/lodash/_baseNth.js | 20 + node_modules/lodash/_baseOrderBy.js | 34 + node_modules/lodash/_basePick.js | 19 + node_modules/lodash/_basePickBy.js | 30 + node_modules/lodash/_baseProperty.js | 14 + node_modules/lodash/_basePropertyDeep.js | 16 + node_modules/lodash/_basePropertyOf.js | 14 + node_modules/lodash/_basePullAll.js | 51 + node_modules/lodash/_basePullAt.js | 37 + node_modules/lodash/_baseRandom.js | 18 + node_modules/lodash/_baseRange.js | 28 + node_modules/lodash/_baseReduce.js | 23 + node_modules/lodash/_baseRepeat.js | 35 + node_modules/lodash/_baseRest.js | 17 + node_modules/lodash/_baseSample.js | 15 + node_modules/lodash/_baseSampleSize.js | 18 + node_modules/lodash/_baseSet.js | 47 + node_modules/lodash/_baseSetData.js | 17 + node_modules/lodash/_baseSetToString.js | 22 + node_modules/lodash/_baseShuffle.js | 15 + node_modules/lodash/_baseSlice.js | 31 + node_modules/lodash/_baseSome.js | 22 + node_modules/lodash/_baseSortBy.js | 21 + node_modules/lodash/_baseSortedIndex.js | 42 + node_modules/lodash/_baseSortedIndexBy.js | 64 + node_modules/lodash/_baseSortedUniq.js | 30 + node_modules/lodash/_baseSum.js | 24 + node_modules/lodash/_baseTimes.js | 20 + node_modules/lodash/_baseToNumber.js | 24 + node_modules/lodash/_baseToPairs.js | 18 + node_modules/lodash/_baseToString.js | 37 + node_modules/lodash/_baseUnary.js | 14 + node_modules/lodash/_baseUniq.js | 72 + node_modules/lodash/_baseUnset.js | 20 + node_modules/lodash/_baseUpdate.js | 18 + node_modules/lodash/_baseValues.js | 19 + node_modules/lodash/_baseWhile.js | 26 + node_modules/lodash/_baseWrapperValue.js | 25 + node_modules/lodash/_baseXor.js | 36 + node_modules/lodash/_baseZipObject.js | 23 + node_modules/lodash/_cacheHas.js | 13 + node_modules/lodash/_castArrayLikeObject.js | 14 + node_modules/lodash/_castFunction.js | 14 + node_modules/lodash/_castPath.js | 21 + node_modules/lodash/_castRest.js | 14 + node_modules/lodash/_castSlice.js | 18 + node_modules/lodash/_charsEndIndex.js | 19 + node_modules/lodash/_charsStartIndex.js | 20 + node_modules/lodash/_cloneArrayBuffer.js | 16 + node_modules/lodash/_cloneBuffer.js | 35 + node_modules/lodash/_cloneDataView.js | 16 + node_modules/lodash/_cloneRegExp.js | 17 + node_modules/lodash/_cloneSymbol.js | 18 + node_modules/lodash/_cloneTypedArray.js | 16 + node_modules/lodash/_compareAscending.js | 41 + node_modules/lodash/_compareMultiple.js | 44 + node_modules/lodash/_composeArgs.js | 39 + node_modules/lodash/_composeArgsRight.js | 41 + node_modules/lodash/_copyArray.js | 20 + node_modules/lodash/_copyObject.js | 40 + node_modules/lodash/_copySymbols.js | 16 + node_modules/lodash/_copySymbolsIn.js | 16 + node_modules/lodash/_coreJsData.js | 6 + node_modules/lodash/_countHolders.js | 21 + node_modules/lodash/_createAggregator.js | 23 + node_modules/lodash/_createAssigner.js | 37 + node_modules/lodash/_createBaseEach.js | 32 + node_modules/lodash/_createBaseFor.js | 25 + node_modules/lodash/_createBind.js | 28 + node_modules/lodash/_createCaseFirst.js | 33 + node_modules/lodash/_createCompounder.js | 24 + node_modules/lodash/_createCtor.js | 37 + node_modules/lodash/_createCurry.js | 46 + node_modules/lodash/_createFind.js | 25 + node_modules/lodash/_createFlow.js | 78 + node_modules/lodash/_createHybrid.js | 92 + node_modules/lodash/_createInverter.js | 17 + node_modules/lodash/_createMathOperation.js | 38 + node_modules/lodash/_createOver.js | 27 + node_modules/lodash/_createPadding.js | 33 + node_modules/lodash/_createPartial.js | 43 + node_modules/lodash/_createRange.js | 30 + node_modules/lodash/_createRecurry.js | 56 + .../lodash/_createRelationalOperation.js | 20 + node_modules/lodash/_createRound.js | 35 + node_modules/lodash/_createSet.js | 19 + node_modules/lodash/_createToPairs.js | 30 + node_modules/lodash/_createWrap.js | 106 + .../lodash/_customDefaultsAssignIn.js | 29 + node_modules/lodash/_customDefaultsMerge.js | 28 + node_modules/lodash/_customOmitClone.js | 16 + node_modules/lodash/_deburrLetter.js | 71 + node_modules/lodash/_defineProperty.js | 11 + node_modules/lodash/_equalArrays.js | 83 + node_modules/lodash/_equalByTag.js | 112 + node_modules/lodash/_equalObjects.js | 89 + node_modules/lodash/_escapeHtmlChar.js | 21 + node_modules/lodash/_escapeStringChar.js | 22 + node_modules/lodash/_flatRest.js | 16 + node_modules/lodash/_freeGlobal.js | 4 + node_modules/lodash/_getAllKeys.js | 16 + node_modules/lodash/_getAllKeysIn.js | 17 + node_modules/lodash/_getData.js | 15 + node_modules/lodash/_getFuncName.js | 31 + node_modules/lodash/_getHolder.js | 13 + node_modules/lodash/_getMapData.js | 18 + node_modules/lodash/_getMatchData.js | 24 + node_modules/lodash/_getNative.js | 17 + node_modules/lodash/_getPrototype.js | 6 + node_modules/lodash/_getRawTag.js | 46 + node_modules/lodash/_getSymbols.js | 30 + node_modules/lodash/_getSymbolsIn.js | 25 + node_modules/lodash/_getTag.js | 58 + node_modules/lodash/_getValue.js | 13 + node_modules/lodash/_getView.js | 33 + node_modules/lodash/_getWrapDetails.js | 17 + node_modules/lodash/_hasPath.js | 39 + node_modules/lodash/_hasUnicode.js | 26 + node_modules/lodash/_hasUnicodeWord.js | 15 + node_modules/lodash/_hashClear.js | 15 + node_modules/lodash/_hashDelete.js | 17 + node_modules/lodash/_hashGet.js | 30 + node_modules/lodash/_hashHas.js | 23 + node_modules/lodash/_hashSet.js | 23 + node_modules/lodash/_initCloneArray.js | 26 + node_modules/lodash/_initCloneByTag.js | 77 + node_modules/lodash/_initCloneObject.js | 18 + node_modules/lodash/_insertWrapDetails.js | 23 + node_modules/lodash/_isFlattenable.js | 20 + node_modules/lodash/_isIndex.js | 25 + node_modules/lodash/_isIterateeCall.js | 30 + node_modules/lodash/_isKey.js | 29 + node_modules/lodash/_isKeyable.js | 15 + node_modules/lodash/_isLaziable.js | 28 + node_modules/lodash/_isMaskable.js | 14 + node_modules/lodash/_isMasked.js | 20 + node_modules/lodash/_isPrototype.js | 18 + node_modules/lodash/_isStrictComparable.js | 15 + node_modules/lodash/_iteratorToArray.js | 18 + node_modules/lodash/_lazyClone.js | 23 + node_modules/lodash/_lazyReverse.js | 23 + node_modules/lodash/_lazyValue.js | 69 + node_modules/lodash/_listCacheClear.js | 13 + node_modules/lodash/_listCacheDelete.js | 35 + node_modules/lodash/_listCacheGet.js | 19 + node_modules/lodash/_listCacheHas.js | 16 + node_modules/lodash/_listCacheSet.js | 26 + node_modules/lodash/_mapCacheClear.js | 21 + node_modules/lodash/_mapCacheDelete.js | 18 + node_modules/lodash/_mapCacheGet.js | 16 + node_modules/lodash/_mapCacheHas.js | 16 + node_modules/lodash/_mapCacheSet.js | 22 + node_modules/lodash/_mapToArray.js | 18 + .../lodash/_matchesStrictComparable.js | 20 + node_modules/lodash/_memoizeCapped.js | 26 + node_modules/lodash/_mergeData.js | 90 + node_modules/lodash/_metaMap.js | 6 + node_modules/lodash/_nativeCreate.js | 6 + node_modules/lodash/_nativeKeys.js | 6 + node_modules/lodash/_nativeKeysIn.js | 20 + node_modules/lodash/_nodeUtil.js | 30 + node_modules/lodash/_objectToString.js | 22 + node_modules/lodash/_overArg.js | 15 + node_modules/lodash/_overRest.js | 36 + node_modules/lodash/_parent.js | 16 + node_modules/lodash/_reEscape.js | 4 + node_modules/lodash/_reEvaluate.js | 4 + node_modules/lodash/_reInterpolate.js | 4 + node_modules/lodash/_realNames.js | 4 + node_modules/lodash/_reorder.js | 29 + node_modules/lodash/_replaceHolders.js | 29 + node_modules/lodash/_root.js | 9 + node_modules/lodash/_safeGet.js | 21 + node_modules/lodash/_setCacheAdd.js | 19 + node_modules/lodash/_setCacheHas.js | 14 + node_modules/lodash/_setData.js | 20 + node_modules/lodash/_setToArray.js | 18 + node_modules/lodash/_setToPairs.js | 18 + node_modules/lodash/_setToString.js | 14 + node_modules/lodash/_setWrapToString.js | 21 + node_modules/lodash/_shortOut.js | 37 + node_modules/lodash/_shuffleSelf.js | 28 + node_modules/lodash/_stackClear.js | 15 + node_modules/lodash/_stackDelete.js | 18 + node_modules/lodash/_stackGet.js | 14 + node_modules/lodash/_stackHas.js | 14 + node_modules/lodash/_stackSet.js | 34 + node_modules/lodash/_strictIndexOf.js | 23 + node_modules/lodash/_strictLastIndexOf.js | 21 + node_modules/lodash/_stringSize.js | 18 + node_modules/lodash/_stringToArray.js | 18 + node_modules/lodash/_stringToPath.js | 27 + node_modules/lodash/_toKey.js | 21 + node_modules/lodash/_toSource.js | 26 + node_modules/lodash/_unescapeHtmlChar.js | 21 + node_modules/lodash/_unicodeSize.js | 44 + node_modules/lodash/_unicodeToArray.js | 40 + node_modules/lodash/_unicodeWords.js | 69 + node_modules/lodash/_updateWrapDetails.js | 46 + node_modules/lodash/_wrapperClone.js | 23 + node_modules/lodash/add.js | 22 + node_modules/lodash/after.js | 42 + node_modules/lodash/array.js | 67 + node_modules/lodash/ary.js | 29 + node_modules/lodash/assign.js | 58 + node_modules/lodash/assignIn.js | 40 + node_modules/lodash/assignInWith.js | 38 + node_modules/lodash/assignWith.js | 37 + node_modules/lodash/at.js | 23 + node_modules/lodash/attempt.js | 35 + node_modules/lodash/before.js | 40 + node_modules/lodash/bind.js | 57 + node_modules/lodash/bindAll.js | 41 + node_modules/lodash/bindKey.js | 68 + node_modules/lodash/camelCase.js | 29 + node_modules/lodash/capitalize.js | 23 + node_modules/lodash/castArray.js | 44 + node_modules/lodash/ceil.js | 26 + node_modules/lodash/chain.js | 38 + node_modules/lodash/chunk.js | 50 + node_modules/lodash/clamp.js | 39 + node_modules/lodash/clone.js | 36 + node_modules/lodash/cloneDeep.js | 29 + node_modules/lodash/cloneDeepWith.js | 40 + node_modules/lodash/cloneWith.js | 42 + node_modules/lodash/collection.js | 30 + node_modules/lodash/commit.js | 33 + node_modules/lodash/compact.js | 31 + node_modules/lodash/concat.js | 43 + node_modules/lodash/cond.js | 60 + node_modules/lodash/conforms.js | 35 + node_modules/lodash/conformsTo.js | 32 + node_modules/lodash/constant.js | 26 + node_modules/lodash/core.js | 3854 +++ node_modules/lodash/core.min.js | 29 + node_modules/lodash/countBy.js | 40 + node_modules/lodash/create.js | 43 + node_modules/lodash/curry.js | 57 + node_modules/lodash/curryRight.js | 54 + node_modules/lodash/date.js | 3 + node_modules/lodash/debounce.js | 191 + node_modules/lodash/deburr.js | 45 + node_modules/lodash/defaultTo.js | 25 + node_modules/lodash/defaults.js | 64 + node_modules/lodash/defaultsDeep.js | 30 + node_modules/lodash/defer.js | 26 + node_modules/lodash/delay.js | 28 + node_modules/lodash/difference.js | 33 + node_modules/lodash/differenceBy.js | 44 + node_modules/lodash/differenceWith.js | 40 + node_modules/lodash/divide.js | 22 + node_modules/lodash/drop.js | 38 + node_modules/lodash/dropRight.js | 39 + node_modules/lodash/dropRightWhile.js | 45 + node_modules/lodash/dropWhile.js | 45 + node_modules/lodash/each.js | 1 + node_modules/lodash/eachRight.js | 1 + node_modules/lodash/endsWith.js | 43 + node_modules/lodash/entries.js | 1 + node_modules/lodash/entriesIn.js | 1 + node_modules/lodash/eq.js | 37 + node_modules/lodash/escape.js | 43 + node_modules/lodash/escapeRegExp.js | 32 + node_modules/lodash/every.js | 56 + node_modules/lodash/extend.js | 1 + node_modules/lodash/extendWith.js | 1 + node_modules/lodash/fill.js | 45 + node_modules/lodash/filter.js | 48 + node_modules/lodash/find.js | 42 + node_modules/lodash/findIndex.js | 55 + node_modules/lodash/findKey.js | 44 + node_modules/lodash/findLast.js | 25 + node_modules/lodash/findLastIndex.js | 59 + node_modules/lodash/findLastKey.js | 44 + node_modules/lodash/first.js | 1 + node_modules/lodash/flatMap.js | 29 + node_modules/lodash/flatMapDeep.js | 31 + node_modules/lodash/flatMapDepth.js | 31 + node_modules/lodash/flatten.js | 22 + node_modules/lodash/flattenDeep.js | 25 + node_modules/lodash/flattenDepth.js | 33 + node_modules/lodash/flip.js | 28 + node_modules/lodash/floor.js | 26 + node_modules/lodash/flow.js | 27 + node_modules/lodash/flowRight.js | 26 + node_modules/lodash/forEach.js | 41 + node_modules/lodash/forEachRight.js | 31 + node_modules/lodash/forIn.js | 39 + node_modules/lodash/forInRight.js | 37 + node_modules/lodash/forOwn.js | 36 + node_modules/lodash/forOwnRight.js | 34 + node_modules/lodash/fp.js | 2 + node_modules/lodash/fp/F.js | 1 + node_modules/lodash/fp/T.js | 1 + node_modules/lodash/fp/__.js | 1 + node_modules/lodash/fp/_baseConvert.js | 569 + node_modules/lodash/fp/_convertBrowser.js | 18 + node_modules/lodash/fp/_falseOptions.js | 7 + node_modules/lodash/fp/_mapping.js | 358 + node_modules/lodash/fp/_util.js | 16 + node_modules/lodash/fp/add.js | 5 + node_modules/lodash/fp/after.js | 5 + node_modules/lodash/fp/all.js | 1 + node_modules/lodash/fp/allPass.js | 1 + node_modules/lodash/fp/always.js | 1 + node_modules/lodash/fp/any.js | 1 + node_modules/lodash/fp/anyPass.js | 1 + node_modules/lodash/fp/apply.js | 1 + node_modules/lodash/fp/array.js | 2 + node_modules/lodash/fp/ary.js | 5 + node_modules/lodash/fp/assign.js | 5 + node_modules/lodash/fp/assignAll.js | 5 + node_modules/lodash/fp/assignAllWith.js | 5 + node_modules/lodash/fp/assignIn.js | 5 + node_modules/lodash/fp/assignInAll.js | 5 + node_modules/lodash/fp/assignInAllWith.js | 5 + node_modules/lodash/fp/assignInWith.js | 5 + node_modules/lodash/fp/assignWith.js | 5 + node_modules/lodash/fp/assoc.js | 1 + node_modules/lodash/fp/assocPath.js | 1 + node_modules/lodash/fp/at.js | 5 + node_modules/lodash/fp/attempt.js | 5 + node_modules/lodash/fp/before.js | 5 + node_modules/lodash/fp/bind.js | 5 + node_modules/lodash/fp/bindAll.js | 5 + node_modules/lodash/fp/bindKey.js | 5 + node_modules/lodash/fp/camelCase.js | 5 + node_modules/lodash/fp/capitalize.js | 5 + node_modules/lodash/fp/castArray.js | 5 + node_modules/lodash/fp/ceil.js | 5 + node_modules/lodash/fp/chain.js | 5 + node_modules/lodash/fp/chunk.js | 5 + node_modules/lodash/fp/clamp.js | 5 + node_modules/lodash/fp/clone.js | 5 + node_modules/lodash/fp/cloneDeep.js | 5 + node_modules/lodash/fp/cloneDeepWith.js | 5 + node_modules/lodash/fp/cloneWith.js | 5 + node_modules/lodash/fp/collection.js | 2 + node_modules/lodash/fp/commit.js | 5 + node_modules/lodash/fp/compact.js | 5 + node_modules/lodash/fp/complement.js | 1 + node_modules/lodash/fp/compose.js | 1 + node_modules/lodash/fp/concat.js | 5 + node_modules/lodash/fp/cond.js | 5 + node_modules/lodash/fp/conforms.js | 1 + node_modules/lodash/fp/conformsTo.js | 5 + node_modules/lodash/fp/constant.js | 5 + node_modules/lodash/fp/contains.js | 1 + node_modules/lodash/fp/convert.js | 18 + node_modules/lodash/fp/countBy.js | 5 + node_modules/lodash/fp/create.js | 5 + node_modules/lodash/fp/curry.js | 5 + node_modules/lodash/fp/curryN.js | 5 + node_modules/lodash/fp/curryRight.js | 5 + node_modules/lodash/fp/curryRightN.js | 5 + node_modules/lodash/fp/date.js | 2 + node_modules/lodash/fp/debounce.js | 5 + node_modules/lodash/fp/deburr.js | 5 + node_modules/lodash/fp/defaultTo.js | 5 + node_modules/lodash/fp/defaults.js | 5 + node_modules/lodash/fp/defaultsAll.js | 5 + node_modules/lodash/fp/defaultsDeep.js | 5 + node_modules/lodash/fp/defaultsDeepAll.js | 5 + node_modules/lodash/fp/defer.js | 5 + node_modules/lodash/fp/delay.js | 5 + node_modules/lodash/fp/difference.js | 5 + node_modules/lodash/fp/differenceBy.js | 5 + node_modules/lodash/fp/differenceWith.js | 5 + node_modules/lodash/fp/dissoc.js | 1 + node_modules/lodash/fp/dissocPath.js | 1 + node_modules/lodash/fp/divide.js | 5 + node_modules/lodash/fp/drop.js | 5 + node_modules/lodash/fp/dropLast.js | 1 + node_modules/lodash/fp/dropLastWhile.js | 1 + node_modules/lodash/fp/dropRight.js | 5 + node_modules/lodash/fp/dropRightWhile.js | 5 + node_modules/lodash/fp/dropWhile.js | 5 + node_modules/lodash/fp/each.js | 1 + node_modules/lodash/fp/eachRight.js | 1 + node_modules/lodash/fp/endsWith.js | 5 + node_modules/lodash/fp/entries.js | 1 + node_modules/lodash/fp/entriesIn.js | 1 + node_modules/lodash/fp/eq.js | 5 + node_modules/lodash/fp/equals.js | 1 + node_modules/lodash/fp/escape.js | 5 + node_modules/lodash/fp/escapeRegExp.js | 5 + node_modules/lodash/fp/every.js | 5 + node_modules/lodash/fp/extend.js | 1 + node_modules/lodash/fp/extendAll.js | 1 + node_modules/lodash/fp/extendAllWith.js | 1 + node_modules/lodash/fp/extendWith.js | 1 + node_modules/lodash/fp/fill.js | 5 + node_modules/lodash/fp/filter.js | 5 + node_modules/lodash/fp/find.js | 5 + node_modules/lodash/fp/findFrom.js | 5 + node_modules/lodash/fp/findIndex.js | 5 + node_modules/lodash/fp/findIndexFrom.js | 5 + node_modules/lodash/fp/findKey.js | 5 + node_modules/lodash/fp/findLast.js | 5 + node_modules/lodash/fp/findLastFrom.js | 5 + node_modules/lodash/fp/findLastIndex.js | 5 + node_modules/lodash/fp/findLastIndexFrom.js | 5 + node_modules/lodash/fp/findLastKey.js | 5 + node_modules/lodash/fp/first.js | 1 + node_modules/lodash/fp/flatMap.js | 5 + node_modules/lodash/fp/flatMapDeep.js | 5 + node_modules/lodash/fp/flatMapDepth.js | 5 + node_modules/lodash/fp/flatten.js | 5 + node_modules/lodash/fp/flattenDeep.js | 5 + node_modules/lodash/fp/flattenDepth.js | 5 + node_modules/lodash/fp/flip.js | 5 + node_modules/lodash/fp/floor.js | 5 + node_modules/lodash/fp/flow.js | 5 + node_modules/lodash/fp/flowRight.js | 5 + node_modules/lodash/fp/forEach.js | 5 + node_modules/lodash/fp/forEachRight.js | 5 + node_modules/lodash/fp/forIn.js | 5 + node_modules/lodash/fp/forInRight.js | 5 + node_modules/lodash/fp/forOwn.js | 5 + node_modules/lodash/fp/forOwnRight.js | 5 + node_modules/lodash/fp/fromPairs.js | 5 + node_modules/lodash/fp/function.js | 2 + node_modules/lodash/fp/functions.js | 5 + node_modules/lodash/fp/functionsIn.js | 5 + node_modules/lodash/fp/get.js | 5 + node_modules/lodash/fp/getOr.js | 5 + node_modules/lodash/fp/groupBy.js | 5 + node_modules/lodash/fp/gt.js | 5 + node_modules/lodash/fp/gte.js | 5 + node_modules/lodash/fp/has.js | 5 + node_modules/lodash/fp/hasIn.js | 5 + node_modules/lodash/fp/head.js | 5 + node_modules/lodash/fp/identical.js | 1 + node_modules/lodash/fp/identity.js | 5 + node_modules/lodash/fp/inRange.js | 5 + node_modules/lodash/fp/includes.js | 5 + node_modules/lodash/fp/includesFrom.js | 5 + node_modules/lodash/fp/indexBy.js | 1 + node_modules/lodash/fp/indexOf.js | 5 + node_modules/lodash/fp/indexOfFrom.js | 5 + node_modules/lodash/fp/init.js | 1 + node_modules/lodash/fp/initial.js | 5 + node_modules/lodash/fp/intersection.js | 5 + node_modules/lodash/fp/intersectionBy.js | 5 + node_modules/lodash/fp/intersectionWith.js | 5 + node_modules/lodash/fp/invert.js | 5 + node_modules/lodash/fp/invertBy.js | 5 + node_modules/lodash/fp/invertObj.js | 1 + node_modules/lodash/fp/invoke.js | 5 + node_modules/lodash/fp/invokeArgs.js | 5 + node_modules/lodash/fp/invokeArgsMap.js | 5 + node_modules/lodash/fp/invokeMap.js | 5 + node_modules/lodash/fp/isArguments.js | 5 + node_modules/lodash/fp/isArray.js | 5 + node_modules/lodash/fp/isArrayBuffer.js | 5 + node_modules/lodash/fp/isArrayLike.js | 5 + node_modules/lodash/fp/isArrayLikeObject.js | 5 + node_modules/lodash/fp/isBoolean.js | 5 + node_modules/lodash/fp/isBuffer.js | 5 + node_modules/lodash/fp/isDate.js | 5 + node_modules/lodash/fp/isElement.js | 5 + node_modules/lodash/fp/isEmpty.js | 5 + node_modules/lodash/fp/isEqual.js | 5 + node_modules/lodash/fp/isEqualWith.js | 5 + node_modules/lodash/fp/isError.js | 5 + node_modules/lodash/fp/isFinite.js | 5 + node_modules/lodash/fp/isFunction.js | 5 + node_modules/lodash/fp/isInteger.js | 5 + node_modules/lodash/fp/isLength.js | 5 + node_modules/lodash/fp/isMap.js | 5 + node_modules/lodash/fp/isMatch.js | 5 + node_modules/lodash/fp/isMatchWith.js | 5 + node_modules/lodash/fp/isNaN.js | 5 + node_modules/lodash/fp/isNative.js | 5 + node_modules/lodash/fp/isNil.js | 5 + node_modules/lodash/fp/isNull.js | 5 + node_modules/lodash/fp/isNumber.js | 5 + node_modules/lodash/fp/isObject.js | 5 + node_modules/lodash/fp/isObjectLike.js | 5 + node_modules/lodash/fp/isPlainObject.js | 5 + node_modules/lodash/fp/isRegExp.js | 5 + node_modules/lodash/fp/isSafeInteger.js | 5 + node_modules/lodash/fp/isSet.js | 5 + node_modules/lodash/fp/isString.js | 5 + node_modules/lodash/fp/isSymbol.js | 5 + node_modules/lodash/fp/isTypedArray.js | 5 + node_modules/lodash/fp/isUndefined.js | 5 + node_modules/lodash/fp/isWeakMap.js | 5 + node_modules/lodash/fp/isWeakSet.js | 5 + node_modules/lodash/fp/iteratee.js | 5 + node_modules/lodash/fp/join.js | 5 + node_modules/lodash/fp/juxt.js | 1 + node_modules/lodash/fp/kebabCase.js | 5 + node_modules/lodash/fp/keyBy.js | 5 + node_modules/lodash/fp/keys.js | 5 + node_modules/lodash/fp/keysIn.js | 5 + node_modules/lodash/fp/lang.js | 2 + node_modules/lodash/fp/last.js | 5 + node_modules/lodash/fp/lastIndexOf.js | 5 + node_modules/lodash/fp/lastIndexOfFrom.js | 5 + node_modules/lodash/fp/lowerCase.js | 5 + node_modules/lodash/fp/lowerFirst.js | 5 + node_modules/lodash/fp/lt.js | 5 + node_modules/lodash/fp/lte.js | 5 + node_modules/lodash/fp/map.js | 5 + node_modules/lodash/fp/mapKeys.js | 5 + node_modules/lodash/fp/mapValues.js | 5 + node_modules/lodash/fp/matches.js | 1 + node_modules/lodash/fp/matchesProperty.js | 5 + node_modules/lodash/fp/math.js | 2 + node_modules/lodash/fp/max.js | 5 + node_modules/lodash/fp/maxBy.js | 5 + node_modules/lodash/fp/mean.js | 5 + node_modules/lodash/fp/meanBy.js | 5 + node_modules/lodash/fp/memoize.js | 5 + node_modules/lodash/fp/merge.js | 5 + node_modules/lodash/fp/mergeAll.js | 5 + node_modules/lodash/fp/mergeAllWith.js | 5 + node_modules/lodash/fp/mergeWith.js | 5 + node_modules/lodash/fp/method.js | 5 + node_modules/lodash/fp/methodOf.js | 5 + node_modules/lodash/fp/min.js | 5 + node_modules/lodash/fp/minBy.js | 5 + node_modules/lodash/fp/mixin.js | 5 + node_modules/lodash/fp/multiply.js | 5 + node_modules/lodash/fp/nAry.js | 1 + node_modules/lodash/fp/negate.js | 5 + node_modules/lodash/fp/next.js | 5 + node_modules/lodash/fp/noop.js | 5 + node_modules/lodash/fp/now.js | 5 + node_modules/lodash/fp/nth.js | 5 + node_modules/lodash/fp/nthArg.js | 5 + node_modules/lodash/fp/number.js | 2 + node_modules/lodash/fp/object.js | 2 + node_modules/lodash/fp/omit.js | 5 + node_modules/lodash/fp/omitAll.js | 1 + node_modules/lodash/fp/omitBy.js | 5 + node_modules/lodash/fp/once.js | 5 + node_modules/lodash/fp/orderBy.js | 5 + node_modules/lodash/fp/over.js | 5 + node_modules/lodash/fp/overArgs.js | 5 + node_modules/lodash/fp/overEvery.js | 5 + node_modules/lodash/fp/overSome.js | 5 + node_modules/lodash/fp/pad.js | 5 + node_modules/lodash/fp/padChars.js | 5 + node_modules/lodash/fp/padCharsEnd.js | 5 + node_modules/lodash/fp/padCharsStart.js | 5 + node_modules/lodash/fp/padEnd.js | 5 + node_modules/lodash/fp/padStart.js | 5 + node_modules/lodash/fp/parseInt.js | 5 + node_modules/lodash/fp/partial.js | 5 + node_modules/lodash/fp/partialRight.js | 5 + node_modules/lodash/fp/partition.js | 5 + node_modules/lodash/fp/path.js | 1 + node_modules/lodash/fp/pathEq.js | 1 + node_modules/lodash/fp/pathOr.js | 1 + node_modules/lodash/fp/paths.js | 1 + node_modules/lodash/fp/pick.js | 5 + node_modules/lodash/fp/pickAll.js | 1 + node_modules/lodash/fp/pickBy.js | 5 + node_modules/lodash/fp/pipe.js | 1 + node_modules/lodash/fp/placeholder.js | 6 + node_modules/lodash/fp/plant.js | 5 + node_modules/lodash/fp/pluck.js | 1 + node_modules/lodash/fp/prop.js | 1 + node_modules/lodash/fp/propEq.js | 1 + node_modules/lodash/fp/propOr.js | 1 + node_modules/lodash/fp/property.js | 1 + node_modules/lodash/fp/propertyOf.js | 5 + node_modules/lodash/fp/props.js | 1 + node_modules/lodash/fp/pull.js | 5 + node_modules/lodash/fp/pullAll.js | 5 + node_modules/lodash/fp/pullAllBy.js | 5 + node_modules/lodash/fp/pullAllWith.js | 5 + node_modules/lodash/fp/pullAt.js | 5 + node_modules/lodash/fp/random.js | 5 + node_modules/lodash/fp/range.js | 5 + node_modules/lodash/fp/rangeRight.js | 5 + node_modules/lodash/fp/rangeStep.js | 5 + node_modules/lodash/fp/rangeStepRight.js | 5 + node_modules/lodash/fp/rearg.js | 5 + node_modules/lodash/fp/reduce.js | 5 + node_modules/lodash/fp/reduceRight.js | 5 + node_modules/lodash/fp/reject.js | 5 + node_modules/lodash/fp/remove.js | 5 + node_modules/lodash/fp/repeat.js | 5 + node_modules/lodash/fp/replace.js | 5 + node_modules/lodash/fp/rest.js | 5 + node_modules/lodash/fp/restFrom.js | 5 + node_modules/lodash/fp/result.js | 5 + node_modules/lodash/fp/reverse.js | 5 + node_modules/lodash/fp/round.js | 5 + node_modules/lodash/fp/sample.js | 5 + node_modules/lodash/fp/sampleSize.js | 5 + node_modules/lodash/fp/seq.js | 2 + node_modules/lodash/fp/set.js | 5 + node_modules/lodash/fp/setWith.js | 5 + node_modules/lodash/fp/shuffle.js | 5 + node_modules/lodash/fp/size.js | 5 + node_modules/lodash/fp/slice.js | 5 + node_modules/lodash/fp/snakeCase.js | 5 + node_modules/lodash/fp/some.js | 5 + node_modules/lodash/fp/sortBy.js | 5 + node_modules/lodash/fp/sortedIndex.js | 5 + node_modules/lodash/fp/sortedIndexBy.js | 5 + node_modules/lodash/fp/sortedIndexOf.js | 5 + node_modules/lodash/fp/sortedLastIndex.js | 5 + node_modules/lodash/fp/sortedLastIndexBy.js | 5 + node_modules/lodash/fp/sortedLastIndexOf.js | 5 + node_modules/lodash/fp/sortedUniq.js | 5 + node_modules/lodash/fp/sortedUniqBy.js | 5 + node_modules/lodash/fp/split.js | 5 + node_modules/lodash/fp/spread.js | 5 + node_modules/lodash/fp/spreadFrom.js | 5 + node_modules/lodash/fp/startCase.js | 5 + node_modules/lodash/fp/startsWith.js | 5 + node_modules/lodash/fp/string.js | 2 + node_modules/lodash/fp/stubArray.js | 5 + node_modules/lodash/fp/stubFalse.js | 5 + node_modules/lodash/fp/stubObject.js | 5 + node_modules/lodash/fp/stubString.js | 5 + node_modules/lodash/fp/stubTrue.js | 5 + node_modules/lodash/fp/subtract.js | 5 + node_modules/lodash/fp/sum.js | 5 + node_modules/lodash/fp/sumBy.js | 5 + node_modules/lodash/fp/symmetricDifference.js | 1 + .../lodash/fp/symmetricDifferenceBy.js | 1 + .../lodash/fp/symmetricDifferenceWith.js | 1 + node_modules/lodash/fp/tail.js | 5 + node_modules/lodash/fp/take.js | 5 + node_modules/lodash/fp/takeLast.js | 1 + node_modules/lodash/fp/takeLastWhile.js | 1 + node_modules/lodash/fp/takeRight.js | 5 + node_modules/lodash/fp/takeRightWhile.js | 5 + node_modules/lodash/fp/takeWhile.js | 5 + node_modules/lodash/fp/tap.js | 5 + node_modules/lodash/fp/template.js | 5 + node_modules/lodash/fp/templateSettings.js | 5 + node_modules/lodash/fp/throttle.js | 5 + node_modules/lodash/fp/thru.js | 5 + node_modules/lodash/fp/times.js | 5 + node_modules/lodash/fp/toArray.js | 5 + node_modules/lodash/fp/toFinite.js | 5 + node_modules/lodash/fp/toInteger.js | 5 + node_modules/lodash/fp/toIterator.js | 5 + node_modules/lodash/fp/toJSON.js | 5 + node_modules/lodash/fp/toLength.js | 5 + node_modules/lodash/fp/toLower.js | 5 + node_modules/lodash/fp/toNumber.js | 5 + node_modules/lodash/fp/toPairs.js | 5 + node_modules/lodash/fp/toPairsIn.js | 5 + node_modules/lodash/fp/toPath.js | 5 + node_modules/lodash/fp/toPlainObject.js | 5 + node_modules/lodash/fp/toSafeInteger.js | 5 + node_modules/lodash/fp/toString.js | 5 + node_modules/lodash/fp/toUpper.js | 5 + node_modules/lodash/fp/transform.js | 5 + node_modules/lodash/fp/trim.js | 5 + node_modules/lodash/fp/trimChars.js | 5 + node_modules/lodash/fp/trimCharsEnd.js | 5 + node_modules/lodash/fp/trimCharsStart.js | 5 + node_modules/lodash/fp/trimEnd.js | 5 + node_modules/lodash/fp/trimStart.js | 5 + node_modules/lodash/fp/truncate.js | 5 + node_modules/lodash/fp/unapply.js | 1 + node_modules/lodash/fp/unary.js | 5 + node_modules/lodash/fp/unescape.js | 5 + node_modules/lodash/fp/union.js | 5 + node_modules/lodash/fp/unionBy.js | 5 + node_modules/lodash/fp/unionWith.js | 5 + node_modules/lodash/fp/uniq.js | 5 + node_modules/lodash/fp/uniqBy.js | 5 + node_modules/lodash/fp/uniqWith.js | 5 + node_modules/lodash/fp/uniqueId.js | 5 + node_modules/lodash/fp/unnest.js | 1 + node_modules/lodash/fp/unset.js | 5 + node_modules/lodash/fp/unzip.js | 5 + node_modules/lodash/fp/unzipWith.js | 5 + node_modules/lodash/fp/update.js | 5 + node_modules/lodash/fp/updateWith.js | 5 + node_modules/lodash/fp/upperCase.js | 5 + node_modules/lodash/fp/upperFirst.js | 5 + node_modules/lodash/fp/useWith.js | 1 + node_modules/lodash/fp/util.js | 2 + node_modules/lodash/fp/value.js | 5 + node_modules/lodash/fp/valueOf.js | 5 + node_modules/lodash/fp/values.js | 5 + node_modules/lodash/fp/valuesIn.js | 5 + node_modules/lodash/fp/where.js | 1 + node_modules/lodash/fp/whereEq.js | 1 + node_modules/lodash/fp/without.js | 5 + node_modules/lodash/fp/words.js | 5 + node_modules/lodash/fp/wrap.js | 5 + node_modules/lodash/fp/wrapperAt.js | 5 + node_modules/lodash/fp/wrapperChain.js | 5 + node_modules/lodash/fp/wrapperLodash.js | 5 + node_modules/lodash/fp/wrapperReverse.js | 5 + node_modules/lodash/fp/wrapperValue.js | 5 + node_modules/lodash/fp/xor.js | 5 + node_modules/lodash/fp/xorBy.js | 5 + node_modules/lodash/fp/xorWith.js | 5 + node_modules/lodash/fp/zip.js | 5 + node_modules/lodash/fp/zipAll.js | 5 + node_modules/lodash/fp/zipObj.js | 1 + node_modules/lodash/fp/zipObject.js | 5 + node_modules/lodash/fp/zipObjectDeep.js | 5 + node_modules/lodash/fp/zipWith.js | 5 + node_modules/lodash/fromPairs.js | 28 + node_modules/lodash/function.js | 25 + node_modules/lodash/functions.js | 31 + node_modules/lodash/functionsIn.js | 31 + node_modules/lodash/get.js | 33 + node_modules/lodash/groupBy.js | 41 + node_modules/lodash/gt.js | 29 + node_modules/lodash/gte.js | 30 + node_modules/lodash/has.js | 35 + node_modules/lodash/hasIn.js | 34 + node_modules/lodash/head.js | 23 + node_modules/lodash/identity.js | 21 + node_modules/lodash/inRange.js | 55 + node_modules/lodash/includes.js | 53 + node_modules/lodash/index.js | 1 + node_modules/lodash/indexOf.js | 42 + node_modules/lodash/initial.js | 22 + node_modules/lodash/intersection.js | 30 + node_modules/lodash/intersectionBy.js | 45 + node_modules/lodash/intersectionWith.js | 41 + node_modules/lodash/invert.js | 42 + node_modules/lodash/invertBy.js | 56 + node_modules/lodash/invoke.js | 24 + node_modules/lodash/invokeMap.js | 41 + node_modules/lodash/isArguments.js | 36 + node_modules/lodash/isArray.js | 26 + node_modules/lodash/isArrayBuffer.js | 27 + node_modules/lodash/isArrayLike.js | 33 + node_modules/lodash/isArrayLikeObject.js | 33 + node_modules/lodash/isBoolean.js | 29 + node_modules/lodash/isBuffer.js | 38 + node_modules/lodash/isDate.js | 27 + node_modules/lodash/isElement.js | 25 + node_modules/lodash/isEmpty.js | 77 + node_modules/lodash/isEqual.js | 35 + node_modules/lodash/isEqualWith.js | 41 + node_modules/lodash/isError.js | 36 + node_modules/lodash/isFinite.js | 36 + node_modules/lodash/isFunction.js | 37 + node_modules/lodash/isInteger.js | 33 + node_modules/lodash/isLength.js | 35 + node_modules/lodash/isMap.js | 27 + node_modules/lodash/isMatch.js | 36 + node_modules/lodash/isMatchWith.js | 41 + node_modules/lodash/isNaN.js | 38 + node_modules/lodash/isNative.js | 40 + node_modules/lodash/isNil.js | 25 + node_modules/lodash/isNull.js | 22 + node_modules/lodash/isNumber.js | 38 + node_modules/lodash/isObject.js | 31 + node_modules/lodash/isObjectLike.js | 29 + node_modules/lodash/isPlainObject.js | 62 + node_modules/lodash/isRegExp.js | 27 + node_modules/lodash/isSafeInteger.js | 37 + node_modules/lodash/isSet.js | 27 + node_modules/lodash/isString.js | 30 + node_modules/lodash/isSymbol.js | 29 + node_modules/lodash/isTypedArray.js | 27 + node_modules/lodash/isUndefined.js | 22 + node_modules/lodash/isWeakMap.js | 28 + node_modules/lodash/isWeakSet.js | 28 + node_modules/lodash/iteratee.js | 53 + node_modules/lodash/join.js | 26 + node_modules/lodash/kebabCase.js | 28 + node_modules/lodash/keyBy.js | 36 + node_modules/lodash/keys.js | 37 + node_modules/lodash/keysIn.js | 32 + node_modules/lodash/lang.js | 58 + node_modules/lodash/last.js | 20 + node_modules/lodash/lastIndexOf.js | 46 + node_modules/lodash/lodash.js | 17112 +++++++++++++ node_modules/lodash/lodash.min.js | 137 + node_modules/lodash/lowerCase.js | 27 + node_modules/lodash/lowerFirst.js | 22 + node_modules/lodash/lt.js | 29 + node_modules/lodash/lte.js | 30 + node_modules/lodash/map.js | 53 + node_modules/lodash/mapKeys.js | 36 + node_modules/lodash/mapValues.js | 43 + node_modules/lodash/matches.js | 39 + node_modules/lodash/matchesProperty.js | 37 + node_modules/lodash/math.js | 17 + node_modules/lodash/max.js | 29 + node_modules/lodash/maxBy.js | 34 + node_modules/lodash/mean.js | 22 + node_modules/lodash/meanBy.js | 31 + node_modules/lodash/memoize.js | 73 + node_modules/lodash/merge.js | 39 + node_modules/lodash/mergeWith.js | 39 + node_modules/lodash/method.js | 34 + node_modules/lodash/methodOf.js | 33 + node_modules/lodash/min.js | 29 + node_modules/lodash/minBy.js | 34 + node_modules/lodash/mixin.js | 74 + node_modules/lodash/multiply.js | 22 + node_modules/lodash/negate.js | 40 + node_modules/lodash/next.js | 35 + node_modules/lodash/noop.js | 17 + node_modules/lodash/now.js | 23 + node_modules/lodash/nth.js | 29 + node_modules/lodash/nthArg.js | 32 + node_modules/lodash/number.js | 5 + node_modules/lodash/object.js | 49 + node_modules/lodash/omit.js | 57 + node_modules/lodash/omitBy.js | 29 + node_modules/lodash/once.js | 25 + node_modules/lodash/orderBy.js | 47 + node_modules/lodash/over.js | 24 + node_modules/lodash/overArgs.js | 61 + node_modules/lodash/overEvery.js | 30 + node_modules/lodash/overSome.js | 30 + node_modules/lodash/package.json | 64 + node_modules/lodash/pad.js | 49 + node_modules/lodash/padEnd.js | 39 + node_modules/lodash/padStart.js | 39 + node_modules/lodash/parseInt.js | 43 + node_modules/lodash/partial.js | 50 + node_modules/lodash/partialRight.js | 49 + node_modules/lodash/partition.js | 43 + node_modules/lodash/pick.js | 25 + node_modules/lodash/pickBy.js | 37 + node_modules/lodash/plant.js | 48 + node_modules/lodash/property.js | 32 + node_modules/lodash/propertyOf.js | 30 + node_modules/lodash/pull.js | 29 + node_modules/lodash/pullAll.js | 29 + node_modules/lodash/pullAllBy.js | 33 + node_modules/lodash/pullAllWith.js | 32 + node_modules/lodash/pullAt.js | 43 + node_modules/lodash/random.js | 82 + node_modules/lodash/range.js | 46 + node_modules/lodash/rangeRight.js | 41 + node_modules/lodash/rearg.js | 33 + node_modules/lodash/reduce.js | 51 + node_modules/lodash/reduceRight.js | 36 + node_modules/lodash/reject.js | 46 + node_modules/lodash/remove.js | 53 + node_modules/lodash/repeat.js | 37 + node_modules/lodash/replace.js | 29 + node_modules/lodash/rest.js | 40 + node_modules/lodash/result.js | 56 + node_modules/lodash/reverse.js | 34 + node_modules/lodash/round.js | 26 + node_modules/lodash/sample.js | 24 + node_modules/lodash/sampleSize.js | 37 + node_modules/lodash/seq.js | 16 + node_modules/lodash/set.js | 35 + node_modules/lodash/setWith.js | 32 + node_modules/lodash/shuffle.js | 25 + node_modules/lodash/size.js | 46 + node_modules/lodash/slice.js | 37 + node_modules/lodash/snakeCase.js | 28 + node_modules/lodash/some.js | 51 + node_modules/lodash/sortBy.js | 48 + node_modules/lodash/sortedIndex.js | 24 + node_modules/lodash/sortedIndexBy.js | 33 + node_modules/lodash/sortedIndexOf.js | 31 + node_modules/lodash/sortedLastIndex.js | 25 + node_modules/lodash/sortedLastIndexBy.js | 33 + node_modules/lodash/sortedLastIndexOf.js | 31 + node_modules/lodash/sortedUniq.js | 24 + node_modules/lodash/sortedUniqBy.js | 26 + node_modules/lodash/split.js | 52 + node_modules/lodash/spread.js | 63 + node_modules/lodash/startCase.js | 29 + node_modules/lodash/startsWith.js | 39 + node_modules/lodash/string.js | 33 + node_modules/lodash/stubArray.js | 23 + node_modules/lodash/stubFalse.js | 18 + node_modules/lodash/stubObject.js | 23 + node_modules/lodash/stubString.js | 18 + node_modules/lodash/stubTrue.js | 18 + node_modules/lodash/subtract.js | 22 + node_modules/lodash/sum.js | 24 + node_modules/lodash/sumBy.js | 33 + node_modules/lodash/tail.js | 22 + node_modules/lodash/take.js | 37 + node_modules/lodash/takeRight.js | 39 + node_modules/lodash/takeRightWhile.js | 45 + node_modules/lodash/takeWhile.js | 45 + node_modules/lodash/tap.js | 29 + node_modules/lodash/template.js | 253 + node_modules/lodash/templateSettings.js | 67 + node_modules/lodash/throttle.js | 69 + node_modules/lodash/thru.js | 28 + node_modules/lodash/times.js | 51 + node_modules/lodash/toArray.js | 58 + node_modules/lodash/toFinite.js | 42 + node_modules/lodash/toInteger.js | 36 + node_modules/lodash/toIterator.js | 23 + node_modules/lodash/toJSON.js | 1 + node_modules/lodash/toLength.js | 38 + node_modules/lodash/toLower.js | 28 + node_modules/lodash/toNumber.js | 66 + node_modules/lodash/toPairs.js | 30 + node_modules/lodash/toPairsIn.js | 30 + node_modules/lodash/toPath.js | 33 + node_modules/lodash/toPlainObject.js | 32 + node_modules/lodash/toSafeInteger.js | 37 + node_modules/lodash/toString.js | 28 + node_modules/lodash/toUpper.js | 28 + node_modules/lodash/transform.js | 65 + node_modules/lodash/trim.js | 49 + node_modules/lodash/trimEnd.js | 43 + node_modules/lodash/trimStart.js | 43 + node_modules/lodash/truncate.js | 111 + node_modules/lodash/unary.js | 22 + node_modules/lodash/unescape.js | 34 + node_modules/lodash/union.js | 26 + node_modules/lodash/unionBy.js | 39 + node_modules/lodash/unionWith.js | 34 + node_modules/lodash/uniq.js | 25 + node_modules/lodash/uniqBy.js | 31 + node_modules/lodash/uniqWith.js | 28 + node_modules/lodash/uniqueId.js | 28 + node_modules/lodash/unset.js | 34 + node_modules/lodash/unzip.js | 45 + node_modules/lodash/unzipWith.js | 39 + node_modules/lodash/update.js | 35 + node_modules/lodash/updateWith.js | 33 + node_modules/lodash/upperCase.js | 27 + node_modules/lodash/upperFirst.js | 22 + node_modules/lodash/util.js | 34 + node_modules/lodash/value.js | 1 + node_modules/lodash/valueOf.js | 1 + node_modules/lodash/values.js | 34 + node_modules/lodash/valuesIn.js | 32 + node_modules/lodash/without.js | 31 + node_modules/lodash/words.js | 35 + node_modules/lodash/wrap.js | 30 + node_modules/lodash/wrapperAt.js | 48 + node_modules/lodash/wrapperChain.js | 34 + node_modules/lodash/wrapperLodash.js | 147 + node_modules/lodash/wrapperReverse.js | 44 + node_modules/lodash/wrapperValue.js | 21 + node_modules/lodash/xor.js | 28 + node_modules/lodash/xorBy.js | 39 + node_modules/lodash/xorWith.js | 34 + node_modules/lodash/zip.js | 22 + node_modules/lodash/zipObject.js | 24 + node_modules/lodash/zipObjectDeep.js | 23 + node_modules/lodash/zipWith.js | 32 + node_modules/log-symbols/browser.js | 7 + node_modules/log-symbols/index.js | 20 + node_modules/log-symbols/license | 9 + node_modules/log-symbols/package.json | 82 + node_modules/log-symbols/readme.md | 45 + node_modules/log-update/index.js | 30 + node_modules/log-update/license | 21 + node_modules/log-update/package.json | 80 + node_modules/log-update/readme.md | 65 + node_modules/mime-db/HISTORY.md | 417 + node_modules/mime-db/LICENSE | 22 + node_modules/mime-db/README.md | 94 + node_modules/mime-db/db.json | 7834 ++++++ node_modules/mime-db/index.js | 11 + node_modules/mime-db/package.json | 101 + node_modules/mime-types/HISTORY.md | 308 + node_modules/mime-types/LICENSE | 23 + node_modules/mime-types/README.md | 113 + node_modules/mime-types/index.js | 188 + node_modules/mime-types/package.json | 87 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 209 + node_modules/minimatch/minimatch.js | 923 + node_modules/minimatch/package.json | 63 + node_modules/minimist/.travis.yml | 8 + node_modules/minimist/LICENSE | 18 + node_modules/minimist/example/parse.js | 2 + node_modules/minimist/index.js | 236 + node_modules/minimist/package.json | 73 + node_modules/minimist/readme.markdown | 91 + node_modules/minimist/test/all_bool.js | 32 + node_modules/minimist/test/bool.js | 166 + node_modules/minimist/test/dash.js | 31 + node_modules/minimist/test/default_bool.js | 35 + node_modules/minimist/test/dotted.js | 22 + node_modules/minimist/test/kv_short.js | 16 + node_modules/minimist/test/long.js | 31 + node_modules/minimist/test/num.js | 36 + node_modules/minimist/test/parse.js | 197 + node_modules/minimist/test/parse_modified.js | 9 + node_modules/minimist/test/short.js | 67 + node_modules/minimist/test/stop_early.js | 15 + node_modules/minimist/test/unknown.js | 102 + node_modules/minimist/test/whitespace.js | 8 + node_modules/mkdirp/.travis.yml | 8 + node_modules/mkdirp/LICENSE | 21 + node_modules/mkdirp/bin/cmd.js | 33 + node_modules/mkdirp/bin/usage.txt | 12 + node_modules/mkdirp/examples/pow.js | 6 + node_modules/mkdirp/index.js | 98 + .../mkdirp/node_modules/minimist/.travis.yml | 4 + .../mkdirp/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../mkdirp/node_modules/minimist/index.js | 187 + .../mkdirp/node_modules/minimist/package.json | 71 + .../node_modules/minimist/readme.markdown | 73 + .../mkdirp/node_modules/minimist/test/dash.js | 24 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/dotted.js | 16 + .../mkdirp/node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 318 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + node_modules/mkdirp/package.json | 62 + node_modules/mkdirp/readme.markdown | 100 + node_modules/mkdirp/test/chmod.js | 41 + node_modules/mkdirp/test/clobber.js | 38 + node_modules/mkdirp/test/mkdirp.js | 28 + node_modules/mkdirp/test/opts_fs.js | 29 + node_modules/mkdirp/test/opts_fs_sync.js | 27 + node_modules/mkdirp/test/perm.js | 32 + node_modules/mkdirp/test/perm_sync.js | 36 + node_modules/mkdirp/test/race.js | 37 + node_modules/mkdirp/test/rel.js | 32 + node_modules/mkdirp/test/return.js | 25 + node_modules/mkdirp/test/return_sync.js | 24 + node_modules/mkdirp/test/root.js | 19 + node_modules/mkdirp/test/sync.js | 32 + node_modules/mkdirp/test/umask.js | 28 + node_modules/mkdirp/test/umask_sync.js | 32 + node_modules/moment/CHANGELOG.md | 895 + node_modules/moment/LICENSE | 22 + node_modules/moment/README.md | 65 + node_modules/moment/ender.js | 1 + node_modules/moment/locale/af.js | 72 + node_modules/moment/locale/ar-dz.js | 58 + node_modules/moment/locale/ar-kw.js | 58 + node_modules/moment/locale/ar-ly.js | 121 + node_modules/moment/locale/ar-ma.js | 58 + node_modules/moment/locale/ar-sa.js | 103 + node_modules/moment/locale/ar-tn.js | 58 + node_modules/moment/locale/ar.js | 134 + node_modules/moment/locale/az.js | 104 + node_modules/moment/locale/be.js | 131 + node_modules/moment/locale/bg.js | 89 + node_modules/moment/locale/bm.js | 57 + node_modules/moment/locale/bn.js | 118 + node_modules/moment/locale/bo.js | 118 + node_modules/moment/locale/br.js | 107 + node_modules/moment/locale/bs.js | 150 + node_modules/moment/locale/ca.js | 87 + node_modules/moment/locale/cs.js | 171 + node_modules/moment/locale/cv.js | 62 + node_modules/moment/locale/cy.js | 79 + node_modules/moment/locale/da.js | 59 + node_modules/moment/locale/de-at.js | 75 + node_modules/moment/locale/de-ch.js | 75 + node_modules/moment/locale/de.js | 75 + node_modules/moment/locale/dv.js | 98 + node_modules/moment/locale/el.js | 99 + node_modules/moment/locale/en-SG.js | 66 + node_modules/moment/locale/en-au.js | 66 + node_modules/moment/locale/en-ca.js | 62 + node_modules/moment/locale/en-gb.js | 66 + node_modules/moment/locale/en-ie.js | 66 + node_modules/moment/locale/en-il.js | 61 + node_modules/moment/locale/en-nz.js | 66 + node_modules/moment/locale/eo.js | 70 + node_modules/moment/locale/es-do.js | 91 + node_modules/moment/locale/es-us.js | 91 + node_modules/moment/locale/es.js | 91 + node_modules/moment/locale/et.js | 79 + node_modules/moment/locale/eu.js | 65 + node_modules/moment/locale/fa.js | 105 + node_modules/moment/locale/fi.js | 108 + node_modules/moment/locale/fo.js | 59 + node_modules/moment/locale/fr-ca.js | 73 + node_modules/moment/locale/fr-ch.js | 77 + node_modules/moment/locale/fr.js | 82 + node_modules/moment/locale/fy.js | 74 + node_modules/moment/locale/ga.js | 76 + node_modules/moment/locale/gd.js | 75 + node_modules/moment/locale/gl.js | 76 + node_modules/moment/locale/gom-latn.js | 122 + node_modules/moment/locale/gu.js | 123 + node_modules/moment/locale/he.js | 96 + node_modules/moment/locale/hi.js | 123 + node_modules/moment/locale/hr.js | 153 + node_modules/moment/locale/hu.js | 109 + node_modules/moment/locale/hy-am.js | 94 + node_modules/moment/locale/id.js | 81 + node_modules/moment/locale/is.js | 131 + node_modules/moment/locale/it-ch.js | 68 + node_modules/moment/locale/it.js | 68 + node_modules/moment/locale/ja.js | 91 + node_modules/moment/locale/jv.js | 81 + node_modules/moment/locale/ka.js | 88 + node_modules/moment/locale/kk.js | 86 + node_modules/moment/locale/km.js | 109 + node_modules/moment/locale/kn.js | 125 + node_modules/moment/locale/ko.js | 80 + node_modules/moment/locale/ku.js | 118 + node_modules/moment/locale/ky.js | 86 + node_modules/moment/locale/lb.js | 135 + node_modules/moment/locale/lo.js | 69 + node_modules/moment/locale/lt.js | 117 + node_modules/moment/locale/lv.js | 96 + node_modules/moment/locale/me.js | 111 + node_modules/moment/locale/mi.js | 63 + node_modules/moment/locale/mk.js | 89 + node_modules/moment/locale/ml.js | 80 + node_modules/moment/locale/mn.js | 103 + node_modules/moment/locale/mr.js | 159 + node_modules/moment/locale/ms-my.js | 81 + node_modules/moment/locale/ms.js | 81 + node_modules/moment/locale/mt.js | 59 + node_modules/moment/locale/my.js | 92 + node_modules/moment/locale/nb.js | 61 + node_modules/moment/locale/ne.js | 122 + node_modules/moment/locale/nl-be.js | 86 + node_modules/moment/locale/nl.js | 86 + node_modules/moment/locale/nn.js | 59 + node_modules/moment/locale/pa-in.js | 123 + node_modules/moment/locale/pl.js | 125 + node_modules/moment/locale/pt-br.js | 60 + node_modules/moment/locale/pt.js | 64 + node_modules/moment/locale/ro.js | 74 + node_modules/moment/locale/ru.js | 181 + node_modules/moment/locale/sd.js | 97 + node_modules/moment/locale/se.js | 59 + node_modules/moment/locale/si.js | 70 + node_modules/moment/locale/sk.js | 155 + node_modules/moment/locale/sl.js | 172 + node_modules/moment/locale/sq.js | 67 + node_modules/moment/locale/sr-cyrl.js | 110 + node_modules/moment/locale/sr.js | 110 + node_modules/moment/locale/ss.js | 87 + node_modules/moment/locale/sv.js | 68 + node_modules/moment/locale/sw.js | 58 + node_modules/moment/locale/ta.js | 128 + node_modules/moment/locale/te.js | 88 + node_modules/moment/locale/tet.js | 66 + node_modules/moment/locale/tg.js | 115 + node_modules/moment/locale/th.js | 66 + node_modules/moment/locale/tl-ph.js | 61 + node_modules/moment/locale/tlh.js | 121 + node_modules/moment/locale/tr.js | 93 + node_modules/moment/locale/tzl.js | 90 + node_modules/moment/locale/tzm-latn.js | 57 + node_modules/moment/locale/tzm.js | 57 + node_modules/moment/locale/ug-cn.js | 118 + node_modules/moment/locale/uk.js | 153 + node_modules/moment/locale/ur.js | 97 + node_modules/moment/locale/uz-latn.js | 57 + node_modules/moment/locale/uz.js | 57 + node_modules/moment/locale/vi.js | 78 + node_modules/moment/locale/x-pseudo.js | 67 + node_modules/moment/locale/yo.js | 59 + node_modules/moment/locale/zh-cn.js | 109 + node_modules/moment/locale/zh-hk.js | 102 + node_modules/moment/locale/zh-tw.js | 102 + node_modules/moment/min/locales.js | 10178 ++++++++ node_modules/moment/min/locales.min.js | 1 + .../moment/min/moment-with-locales.js | 14765 +++++++++++ .../moment/min/moment-with-locales.min.js | 1 + node_modules/moment/min/moment.min.js | 1 + node_modules/moment/moment.d.ts | 736 + node_modules/moment/moment.js | 4602 ++++ node_modules/moment/package.js | 11 + node_modules/moment/package.json | 147 + .../moment/src/lib/create/check-overflow.js | 34 + .../moment/src/lib/create/date-from-array.js | 35 + .../moment/src/lib/create/from-anything.js | 110 + .../moment/src/lib/create/from-array.js | 147 + .../moment/src/lib/create/from-object.js | 16 + .../src/lib/create/from-string-and-array.js | 50 + .../src/lib/create/from-string-and-format.js | 113 + .../moment/src/lib/create/from-string.js | 230 + node_modules/moment/src/lib/create/local.js | 5 + .../moment/src/lib/create/parsing-flags.js | 26 + node_modules/moment/src/lib/create/utc.js | 5 + node_modules/moment/src/lib/create/valid.js | 50 + node_modules/moment/src/lib/duration/abs.js | 18 + .../moment/src/lib/duration/add-subtract.js | 21 + node_modules/moment/src/lib/duration/as.js | 66 + .../moment/src/lib/duration/bubble.js | 61 + node_modules/moment/src/lib/duration/clone.js | 6 + .../moment/src/lib/duration/constructor.js | 44 + .../moment/src/lib/duration/create.js | 122 + .../moment/src/lib/duration/duration.js | 16 + node_modules/moment/src/lib/duration/get.js | 25 + .../moment/src/lib/duration/humanize.js | 85 + .../moment/src/lib/duration/iso-string.js | 64 + .../moment/src/lib/duration/prototype.js | 53 + node_modules/moment/src/lib/duration/valid.js | 36 + node_modules/moment/src/lib/format/format.js | 92 + .../moment/src/lib/locale/base-config.js | 44 + .../moment/src/lib/locale/calendar.js | 15 + .../moment/src/lib/locale/constructor.js | 5 + node_modules/moment/src/lib/locale/en.js | 15 + node_modules/moment/src/lib/locale/formats.js | 23 + node_modules/moment/src/lib/locale/invalid.js | 5 + node_modules/moment/src/lib/locale/lists.js | 93 + node_modules/moment/src/lib/locale/locale.js | 39 + node_modules/moment/src/lib/locale/locales.js | 197 + node_modules/moment/src/lib/locale/ordinal.js | 7 + .../moment/src/lib/locale/pre-post-format.js | 3 + .../moment/src/lib/locale/prototype.js | 69 + .../moment/src/lib/locale/relative.js | 30 + node_modules/moment/src/lib/locale/set.js | 49 + .../moment/src/lib/moment/add-subtract.js | 55 + .../moment/src/lib/moment/calendar.js | 26 + node_modules/moment/src/lib/moment/clone.js | 5 + node_modules/moment/src/lib/moment/compare.js | 63 + .../moment/src/lib/moment/constructor.js | 77 + .../moment/src/lib/moment/creation-data.js | 9 + node_modules/moment/src/lib/moment/diff.js | 58 + node_modules/moment/src/lib/moment/format.js | 62 + node_modules/moment/src/lib/moment/from.js | 17 + node_modules/moment/src/lib/moment/get-set.js | 61 + node_modules/moment/src/lib/moment/locale.js | 34 + node_modules/moment/src/lib/moment/min-max.js | 63 + node_modules/moment/src/lib/moment/moment.js | 28 + node_modules/moment/src/lib/moment/now.js | 3 + .../moment/src/lib/moment/prototype.js | 150 + .../moment/src/lib/moment/start-end-of.js | 128 + node_modules/moment/src/lib/moment/to-type.js | 34 + node_modules/moment/src/lib/moment/to.js | 17 + node_modules/moment/src/lib/moment/valid.js | 15 + node_modules/moment/src/lib/parse/regex.js | 54 + node_modules/moment/src/lib/parse/token.js | 33 + node_modules/moment/src/lib/units/aliases.js | 30 + .../moment/src/lib/units/constants.js | 9 + .../moment/src/lib/units/day-of-month.js | 39 + .../moment/src/lib/units/day-of-week.js | 367 + .../moment/src/lib/units/day-of-year.js | 36 + node_modules/moment/src/lib/units/hour.js | 144 + .../moment/src/lib/units/millisecond.js | 69 + node_modules/moment/src/lib/units/minute.js | 29 + node_modules/moment/src/lib/units/month.js | 290 + node_modules/moment/src/lib/units/offset.js | 235 + .../moment/src/lib/units/priorities.js | 16 + node_modules/moment/src/lib/units/quarter.js | 32 + node_modules/moment/src/lib/units/second.js | 29 + .../moment/src/lib/units/timestamp.js | 20 + node_modules/moment/src/lib/units/timezone.js | 16 + node_modules/moment/src/lib/units/units.js | 20 + .../src/lib/units/week-calendar-utils.js | 65 + .../moment/src/lib/units/week-year.js | 107 + node_modules/moment/src/lib/units/week.js | 67 + node_modules/moment/src/lib/units/year.js | 75 + node_modules/moment/src/lib/utils/abs-ceil.js | 7 + .../moment/src/lib/utils/abs-floor.js | 8 + .../moment/src/lib/utils/abs-round.js | 7 + .../moment/src/lib/utils/compare-arrays.js | 16 + node_modules/moment/src/lib/utils/defaults.js | 10 + .../moment/src/lib/utils/deprecate.js | 55 + node_modules/moment/src/lib/utils/extend.js | 19 + .../moment/src/lib/utils/has-own-prop.js | 3 + node_modules/moment/src/lib/utils/hooks.js | 13 + node_modules/moment/src/lib/utils/index-of.js | 18 + node_modules/moment/src/lib/utils/is-array.js | 3 + node_modules/moment/src/lib/utils/is-date.js | 3 + .../moment/src/lib/utils/is-function.js | 3 + .../moment/src/lib/utils/is-number.js | 3 + .../moment/src/lib/utils/is-object-empty.js | 13 + .../moment/src/lib/utils/is-object.js | 5 + .../moment/src/lib/utils/is-undefined.js | 3 + node_modules/moment/src/lib/utils/keys.js | 19 + node_modules/moment/src/lib/utils/map.js | 7 + node_modules/moment/src/lib/utils/mod.js | 3 + node_modules/moment/src/lib/utils/some.js | 19 + node_modules/moment/src/lib/utils/to-int.js | 12 + .../moment/src/lib/utils/zero-fill.js | 7 + node_modules/moment/src/locale/af.js | 64 + node_modules/moment/src/locale/ar-dz.js | 51 + node_modules/moment/src/locale/ar-kw.js | 50 + node_modules/moment/src/locale/ar-ly.js | 113 + node_modules/moment/src/locale/ar-ma.js | 52 + node_modules/moment/src/locale/ar-sa.js | 96 + node_modules/moment/src/locale/ar-tn.js | 51 + node_modules/moment/src/locale/ar.js | 128 + node_modules/moment/src/locale/az.js | 97 + node_modules/moment/src/locale/be.js | 126 + node_modules/moment/src/locale/bg.js | 82 + node_modules/moment/src/locale/bm.js | 50 + node_modules/moment/src/locale/bn.js | 110 + node_modules/moment/src/locale/bo.js | 111 + node_modules/moment/src/locale/br.js | 100 + node_modules/moment/src/locale/bs.js | 143 + node_modules/moment/src/locale/ca.js | 80 + node_modules/moment/src/locale/cs.js | 164 + node_modules/moment/src/locale/cv.js | 54 + node_modules/moment/src/locale/cy.js | 73 + node_modules/moment/src/locale/da.js | 51 + node_modules/moment/src/locale/de-at.js | 70 + node_modules/moment/src/locale/de-ch.js | 69 + node_modules/moment/src/locale/de.js | 69 + node_modules/moment/src/locale/dv.js | 90 + node_modules/moment/src/locale/el.js | 89 + node_modules/moment/src/locale/en-SG.js | 59 + node_modules/moment/src/locale/en-au.js | 58 + node_modules/moment/src/locale/en-ca.js | 54 + node_modules/moment/src/locale/en-gb.js | 59 + node_modules/moment/src/locale/en-ie.js | 59 + node_modules/moment/src/locale/en-il.js | 54 + node_modules/moment/src/locale/en-nz.js | 58 + node_modules/moment/src/locale/eo.js | 65 + node_modules/moment/src/locale/es-do.js | 83 + node_modules/moment/src/locale/es-us.js | 84 + node_modules/moment/src/locale/es.js | 83 + node_modules/moment/src/locale/et.js | 73 + node_modules/moment/src/locale/eu.js | 58 + node_modules/moment/src/locale/fa.js | 98 + node_modules/moment/src/locale/fi.js | 101 + node_modules/moment/src/locale/fo.js | 53 + node_modules/moment/src/locale/fr-ca.js | 66 + node_modules/moment/src/locale/fr-ch.js | 70 + node_modules/moment/src/locale/fr.js | 75 + node_modules/moment/src/locale/fy.js | 67 + node_modules/moment/src/locale/ga.js | 68 + node_modules/moment/src/locale/gd.js | 68 + node_modules/moment/src/locale/gl.js | 69 + node_modules/moment/src/locale/gom-latn.js | 114 + node_modules/moment/src/locale/gu.js | 115 + node_modules/moment/src/locale/he.js | 91 + node_modules/moment/src/locale/hi.js | 116 + node_modules/moment/src/locale/hr.js | 145 + node_modules/moment/src/locale/hu.js | 103 + node_modules/moment/src/locale/hy-am.js | 87 + node_modules/moment/src/locale/id.js | 74 + node_modules/moment/src/locale/is.js | 124 + node_modules/moment/src/locale/it-ch.js | 61 + node_modules/moment/src/locale/it.js | 62 + node_modules/moment/src/locale/ja.js | 84 + node_modules/moment/src/locale/jv.js | 74 + node_modules/moment/src/locale/ka.js | 81 + node_modules/moment/src/locale/kk.js | 78 + node_modules/moment/src/locale/km.js | 101 + node_modules/moment/src/locale/kn.js | 117 + node_modules/moment/src/locale/ko.js | 74 + node_modules/moment/src/locale/ku.js | 110 + node_modules/moment/src/locale/ky.js | 79 + node_modules/moment/src/locale/lb.js | 129 + node_modules/moment/src/locale/lo.js | 62 + node_modules/moment/src/locale/lt.js | 110 + node_modules/moment/src/locale/lv.js | 90 + node_modules/moment/src/locale/me.js | 103 + node_modules/moment/src/locale/mi.js | 55 + node_modules/moment/src/locale/mk.js | 82 + node_modules/moment/src/locale/ml.js | 73 + node_modules/moment/src/locale/mn.js | 96 + node_modules/moment/src/locale/mr.js | 153 + node_modules/moment/src/locale/ms-my.js | 75 + node_modules/moment/src/locale/ms.js | 74 + node_modules/moment/src/locale/mt.js | 51 + node_modules/moment/src/locale/my.js | 87 + node_modules/moment/src/locale/nb.js | 55 + node_modules/moment/src/locale/ne.js | 115 + node_modules/moment/src/locale/nl-be.js | 80 + node_modules/moment/src/locale/nl.js | 80 + node_modules/moment/src/locale/nn.js | 52 + node_modules/moment/src/locale/pa-in.js | 116 + node_modules/moment/src/locale/pl.js | 117 + node_modules/moment/src/locale/pt-br.js | 53 + node_modules/moment/src/locale/pt.js | 57 + node_modules/moment/src/locale/ro.js | 68 + node_modules/moment/src/locale/ru.js | 175 + node_modules/moment/src/locale/sd.js | 89 + node_modules/moment/src/locale/se.js | 52 + node_modules/moment/src/locale/si.js | 62 + node_modules/moment/src/locale/sk.js | 149 + node_modules/moment/src/locale/sl.js | 164 + node_modules/moment/src/locale/sq.js | 62 + node_modules/moment/src/locale/sr-cyrl.js | 102 + node_modules/moment/src/locale/sr.js | 102 + node_modules/moment/src/locale/ss.js | 81 + node_modules/moment/src/locale/sv.js | 61 + node_modules/moment/src/locale/sw.js | 51 + node_modules/moment/src/locale/ta.js | 121 + node_modules/moment/src/locale/te.js | 80 + node_modules/moment/src/locale/tet.js | 60 + node_modules/moment/src/locale/tg.js | 107 + node_modules/moment/src/locale/th.js | 58 + node_modules/moment/src/locale/tl-ph.js | 54 + node_modules/moment/src/locale/tlh.js | 113 + node_modules/moment/src/locale/tr.js | 90 + node_modules/moment/src/locale/tzl.js | 84 + node_modules/moment/src/locale/tzm-latn.js | 50 + node_modules/moment/src/locale/tzm.js | 50 + node_modules/moment/src/locale/ug-cn.js | 110 + node_modules/moment/src/locale/uk.js | 146 + node_modules/moment/src/locale/ur.js | 90 + node_modules/moment/src/locale/uz-latn.js | 50 + node_modules/moment/src/locale/uz.js | 50 + node_modules/moment/src/locale/vi.js | 71 + node_modules/moment/src/locale/x-pseudo.js | 59 + node_modules/moment/src/locale/yo.js | 51 + node_modules/moment/src/locale/zh-cn.js | 102 + node_modules/moment/src/locale/zh-hk.js | 96 + node_modules/moment/src/locale/zh-tw.js | 95 + node_modules/moment/src/moment.js | 95 + node_modules/ms/index.js | 162 + node_modules/ms/license.md | 21 + node_modules/ms/package.json | 69 + node_modules/ms/readme.md | 60 + node_modules/nice-try/CHANGELOG.md | 21 + node_modules/nice-try/LICENSE | 21 + node_modules/nice-try/README.md | 32 + node_modules/nice-try/package.json | 61 + node_modules/nice-try/src/index.js | 12 + node_modules/npm-run-path/index.js | 39 + node_modules/npm-run-path/license | 21 + node_modules/npm-run-path/package.json | 77 + node_modules/npm-run-path/readme.md | 81 + node_modules/number-is-nan/index.js | 4 + node_modules/number-is-nan/license | 21 + node_modules/number-is-nan/package.json | 68 + node_modules/number-is-nan/readme.md | 28 + node_modules/oauth-sign/LICENSE | 55 + node_modules/oauth-sign/README.md | 11 + node_modules/oauth-sign/index.js | 146 + node_modules/oauth-sign/package.json | 56 + node_modules/object-assign/index.js | 90 + node_modules/object-assign/license | 21 + node_modules/object-assign/package.json | 75 + node_modules/object-assign/readme.md | 61 + node_modules/once/LICENSE | 15 + node_modules/once/README.md | 79 + node_modules/once/once.js | 42 + node_modules/once/package.json | 67 + node_modules/onetime/index.js | 31 + node_modules/onetime/license | 21 + node_modules/onetime/package.json | 65 + node_modules/onetime/readme.md | 52 + node_modules/ora/index.js | 97 + node_modules/ora/license | 21 + node_modules/ora/node_modules/chalk/index.js | 116 + node_modules/ora/node_modules/chalk/license | 21 + .../ora/node_modules/chalk/package.json | 114 + node_modules/ora/node_modules/chalk/readme.md | 213 + .../ora/node_modules/supports-color/index.js | 50 + .../ora/node_modules/supports-color/license | 21 + .../node_modules/supports-color/package.json | 89 + .../ora/node_modules/supports-color/readme.md | 36 + node_modules/ora/package.json | 85 + node_modules/ora/readme.md | 134 + node_modules/os-homedir/index.js | 24 + node_modules/os-homedir/license | 21 + node_modules/os-homedir/package.json | 73 + node_modules/os-homedir/readme.md | 31 + node_modules/p-finally/index.js | 15 + node_modules/p-finally/license | 21 + node_modules/p-finally/package.json | 74 + node_modules/p-finally/readme.md | 47 + node_modules/p-map/index.js | 67 + node_modules/p-map/license | 9 + node_modules/p-map/package.json | 79 + node_modules/p-map/readme.md | 81 + node_modules/path-is-absolute/index.js | 20 + node_modules/path-is-absolute/license | 21 + node_modules/path-is-absolute/package.json | 75 + node_modules/path-is-absolute/readme.md | 59 + node_modules/path-is-inside/LICENSE.txt | 47 + .../path-is-inside/lib/path-is-inside.js | 28 + node_modules/path-is-inside/package.json | 63 + node_modules/path-key/index.js | 13 + node_modules/path-key/license | 21 + node_modules/path-key/package.json | 72 + node_modules/path-key/readme.md | 51 + node_modules/pend/LICENSE | 23 + node_modules/pend/README.md | 41 + node_modules/pend/index.js | 55 + node_modules/pend/package.json | 48 + node_modules/pend/test.js | 137 + node_modules/performance-now/.npmignore | 1 + node_modules/performance-now/.tm_properties | 7 + node_modules/performance-now/.travis.yml | 6 + node_modules/performance-now/README.md | 30 + .../performance-now/lib/performance-now.js | 36 + .../lib/performance-now.js.map | 10 + node_modules/performance-now/license.txt | 7 + node_modules/performance-now/package.json | 65 + node_modules/performance-now/src/index.d.ts | 8 + .../src/performance-now.coffee | 17 + node_modules/performance-now/test/mocha.opts | 3 + .../test/performance-now.coffee | 43 + .../performance-now/test/scripts.coffee | 27 + .../test/scripts/delayed-call.coffee | 11 + .../test/scripts/delayed-require.coffee | 12 + .../test/scripts/difference.coffee | 6 + .../test/scripts/initial-value.coffee | 10 + node_modules/pify/index.js | 68 + node_modules/pify/license | 21 + node_modules/pify/package.json | 80 + node_modules/pify/readme.md | 119 + node_modules/process-nextick-args/index.js | 45 + node_modules/process-nextick-args/license.md | 19 + .../process-nextick-args/package.json | 50 + node_modules/process-nextick-args/readme.md | 18 + node_modules/psl/LICENSE | 9 + node_modules/psl/README.md | 215 + node_modules/psl/browserstack-logo.svg | 90 + node_modules/psl/data/rules.json | 8795 +++++++ node_modules/psl/dist/psl.js | 9606 ++++++++ node_modules/psl/dist/psl.min.js | 1 + node_modules/psl/index.js | 269 + node_modules/psl/package.json | 77 + node_modules/punycode/LICENSE-MIT.txt | 20 + node_modules/punycode/README.md | 122 + node_modules/punycode/package.json | 85 + node_modules/punycode/punycode.es6.js | 441 + node_modules/punycode/punycode.js | 440 + node_modules/qs/.editorconfig | 30 + node_modules/qs/.eslintignore | 1 + node_modules/qs/.eslintrc | 19 + node_modules/qs/CHANGELOG.md | 226 + node_modules/qs/LICENSE | 28 + node_modules/qs/README.md | 475 + node_modules/qs/dist/qs.js | 638 + node_modules/qs/lib/formats.js | 18 + node_modules/qs/lib/index.js | 11 + node_modules/qs/lib/parse.js | 174 + node_modules/qs/lib/stringify.js | 210 + node_modules/qs/lib/utils.js | 213 + node_modules/qs/package.json | 80 + node_modules/qs/test/.eslintrc | 15 + node_modules/qs/test/index.js | 7 + node_modules/qs/test/parse.js | 574 + node_modules/qs/test/stringify.js | 597 + node_modules/qs/test/utils.js | 34 + node_modules/querystring/.History.md.un~ | Bin 0 -> 7960 bytes node_modules/querystring/.Readme.md.un~ | Bin 0 -> 3225 bytes node_modules/querystring/.package.json.un~ | Bin 0 -> 5710 bytes node_modules/querystring/.travis.yml | 4 + node_modules/querystring/History.md | 20 + node_modules/querystring/License.md | 19 + node_modules/querystring/Readme.md | 15 + node_modules/querystring/decode.js | 80 + node_modules/querystring/encode.js | 64 + node_modules/querystring/index.js | 4 + node_modules/querystring/package.json | 100 + node_modules/querystring/test/.index.js.un~ | Bin 0 -> 975 bytes node_modules/querystring/test/common-index.js | 3 + node_modules/querystring/test/index.js | 210 + node_modules/querystring/test/tap-index.js | 3 + node_modules/ramda/CHANGELOG.md | 6 + node_modules/ramda/LICENSE.txt | 21 + node_modules/ramda/README.md | 193 + node_modules/ramda/dist/ramda.js | 9398 +++++++ node_modules/ramda/dist/ramda.min.js | 7 + node_modules/ramda/index.js | 248 + node_modules/ramda/package.json | 112 + node_modules/ramda/src/F.js | 19 + node_modules/ramda/src/T.js | 19 + node_modules/ramda/src/__.js | 27 + node_modules/ramda/src/add.js | 23 + node_modules/ramda/src/addIndex.js | 43 + node_modules/ramda/src/adjust.js | 39 + node_modules/ramda/src/all.js | 39 + node_modules/ramda/src/allPass.js | 45 + node_modules/ramda/src/always.js | 27 + node_modules/ramda/src/and.js | 25 + node_modules/ramda/src/any.js | 40 + node_modules/ramda/src/anyPass.js | 46 + node_modules/ramda/src/ap.js | 39 + node_modules/ramda/src/aperture.js | 28 + node_modules/ramda/src/append.js | 27 + node_modules/ramda/src/apply.js | 26 + node_modules/ramda/src/applySpec.js | 44 + node_modules/ramda/src/ascend.js | 30 + node_modules/ramda/src/assoc.js | 31 + node_modules/ramda/src/assocPath.js | 49 + node_modules/ramda/src/binary.js | 35 + node_modules/ramda/src/bind.js | 31 + node_modules/ramda/src/both.js | 41 + node_modules/ramda/src/call.js | 38 + node_modules/ramda/src/chain.js | 35 + node_modules/ramda/src/clamp.js | 30 + node_modules/ramda/src/clone.js | 30 + node_modules/ramda/src/comparator.js | 28 + node_modules/ramda/src/complement.js | 27 + node_modules/ramda/src/compose.js | 34 + node_modules/ramda/src/composeK.js | 43 + node_modules/ramda/src/composeP.js | 44 + node_modules/ramda/src/concat.js | 54 + node_modules/ramda/src/cond.js | 47 + node_modules/ramda/src/construct.js | 39 + node_modules/ramda/src/constructN.js | 62 + node_modules/ramda/src/contains.js | 25 + node_modules/ramda/src/converge.js | 44 + node_modules/ramda/src/countBy.js | 28 + node_modules/ramda/src/curry.js | 48 + node_modules/ramda/src/curryN.js | 54 + node_modules/ramda/src/dec.js | 19 + node_modules/ramda/src/defaultTo.js | 28 + node_modules/ramda/src/descend.js | 30 + node_modules/ramda/src/difference.js | 36 + node_modules/ramda/src/differenceWith.js | 39 + node_modules/ramda/src/dissoc.js | 27 + node_modules/ramda/src/dissocPath.js | 45 + node_modules/ramda/src/divide.js | 26 + node_modules/ramda/src/drop.js | 33 + node_modules/ramda/src/dropLast.js | 28 + node_modules/ramda/src/dropLastWhile.js | 29 + node_modules/ramda/src/dropRepeats.js | 26 + node_modules/ramda/src/dropRepeatsWith.js | 43 + node_modules/ramda/src/dropWhile.js | 38 + node_modules/ramda/src/either.js | 40 + node_modules/ramda/src/empty.js | 51 + node_modules/ramda/src/endsWith.js | 26 + node_modules/ramda/src/eqBy.js | 24 + node_modules/ramda/src/eqProps.js | 28 + node_modules/ramda/src/equals.js | 32 + node_modules/ramda/src/evolve.js | 42 + node_modules/ramda/src/filter.js | 49 + node_modules/ramda/src/find.js | 39 + node_modules/ramda/src/findIndex.js | 38 + node_modules/ramda/src/findLast.js | 36 + node_modules/ramda/src/findLastIndex.js | 37 + node_modules/ramda/src/flatten.js | 22 + node_modules/ramda/src/flip.js | 32 + node_modules/ramda/src/forEach.js | 47 + node_modules/ramda/src/forEachObjIndexed.js | 36 + node_modules/ramda/src/fromPairs.js | 28 + node_modules/ramda/src/groupBy.js | 51 + node_modules/ramda/src/groupWith.js | 46 + node_modules/ramda/src/gt.js | 25 + node_modules/ramda/src/gte.js | 25 + node_modules/ramda/src/has.js | 29 + node_modules/ramda/src/hasIn.js | 32 + node_modules/ramda/src/head.js | 25 + node_modules/ramda/src/identical.js | 36 + node_modules/ramda/src/identity.js | 24 + node_modules/ramda/src/ifElse.js | 36 + node_modules/ramda/src/inc.js | 19 + node_modules/ramda/src/indexBy.js | 26 + node_modules/ramda/src/indexOf.js | 29 + node_modules/ramda/src/init.js | 28 + node_modules/ramda/src/innerJoin.js | 43 + node_modules/ramda/src/insert.js | 28 + node_modules/ramda/src/insertAll.js | 27 + node_modules/ramda/src/internal/_Set.js | 171 + node_modules/ramda/src/internal/_aperture.js | 10 + node_modules/ramda/src/internal/_arity.js | 17 + .../ramda/src/internal/_arrayFromIterator.js | 8 + node_modules/ramda/src/internal/_assign.js | 4 + .../ramda/src/internal/_checkForMethod.js | 25 + node_modules/ramda/src/internal/_clone.js | 40 + .../ramda/src/internal/_cloneRegExp.js | 7 + .../ramda/src/internal/_complement.js | 5 + node_modules/ramda/src/internal/_concat.js | 31 + node_modules/ramda/src/internal/_contains.js | 6 + .../ramda/src/internal/_containsWith.js | 12 + .../src/internal/_createPartialApplicator.js | 11 + node_modules/ramda/src/internal/_curry1.js | 20 + node_modules/ramda/src/internal/_curry2.js | 28 + node_modules/ramda/src/internal/_curry3.js | 38 + node_modules/ramda/src/internal/_curryN.js | 40 + .../ramda/src/internal/_dispatchable.js | 41 + node_modules/ramda/src/internal/_dropLast.js | 5 + .../ramda/src/internal/_dropLastWhile.js | 7 + node_modules/ramda/src/internal/_equals.js | 114 + node_modules/ramda/src/internal/_filter.js | 13 + node_modules/ramda/src/internal/_flatCat.js | 32 + .../ramda/src/internal/_forceReduced.js | 6 + .../ramda/src/internal/_functionName.js | 5 + .../ramda/src/internal/_functionsWith.js | 13 + node_modules/ramda/src/internal/_has.js | 3 + node_modules/ramda/src/internal/_identity.js | 1 + node_modules/ramda/src/internal/_indexOf.js | 57 + .../ramda/src/internal/_isArguments.js | 9 + node_modules/ramda/src/internal/_isArray.js | 17 + .../ramda/src/internal/_isArrayLike.js | 34 + .../ramda/src/internal/_isFunction.js | 3 + node_modules/ramda/src/internal/_isInteger.js | 11 + node_modules/ramda/src/internal/_isNumber.js | 3 + node_modules/ramda/src/internal/_isObject.js | 3 + .../ramda/src/internal/_isPlaceholder.js | 5 + node_modules/ramda/src/internal/_isRegExp.js | 3 + node_modules/ramda/src/internal/_isString.js | 3 + .../ramda/src/internal/_isTransformer.js | 3 + node_modules/ramda/src/internal/_makeFlat.js | 33 + node_modules/ramda/src/internal/_map.js | 10 + .../ramda/src/internal/_objectAssign.js | 24 + node_modules/ramda/src/internal/_of.js | 1 + node_modules/ramda/src/internal/_pipe.js | 5 + node_modules/ramda/src/internal/_pipeP.js | 8 + node_modules/ramda/src/internal/_quote.js | 13 + node_modules/ramda/src/internal/_reduce.js | 61 + node_modules/ramda/src/internal/_reduced.js | 7 + node_modules/ramda/src/internal/_stepCat.js | 48 + .../ramda/src/internal/_toISOString.js | 22 + node_modules/ramda/src/internal/_toString.js | 46 + node_modules/ramda/src/internal/_xall.js | 28 + node_modules/ramda/src/internal/_xany.js | 28 + node_modules/ramda/src/internal/_xaperture.js | 36 + node_modules/ramda/src/internal/_xchain.js | 8 + node_modules/ramda/src/internal/_xdrop.js | 21 + node_modules/ramda/src/internal/_xdropLast.js | 34 + .../ramda/src/internal/_xdropLastWhile.js | 35 + .../ramda/src/internal/_xdropRepeatsWith.js | 27 + .../ramda/src/internal/_xdropWhile.js | 23 + node_modules/ramda/src/internal/_xfBase.js | 8 + node_modules/ramda/src/internal/_xfilter.js | 17 + node_modules/ramda/src/internal/_xfind.js | 28 + .../ramda/src/internal/_xfindIndex.js | 30 + node_modules/ramda/src/internal/_xfindLast.js | 22 + .../ramda/src/internal/_xfindLastIndex.js | 25 + node_modules/ramda/src/internal/_xmap.js | 17 + node_modules/ramda/src/internal/_xreduceBy.js | 40 + node_modules/ramda/src/internal/_xtake.js | 20 + .../ramda/src/internal/_xtakeWhile.js | 18 + node_modules/ramda/src/internal/_xwrap.js | 14 + node_modules/ramda/src/intersection.js | 35 + node_modules/ramda/src/intersectionWith.js | 60 + node_modules/ramda/src/intersperse.js | 35 + node_modules/ramda/src/into.js | 50 + node_modules/ramda/src/invert.js | 42 + node_modules/ramda/src/invertObj.js | 44 + node_modules/ramda/src/invoker.js | 42 + node_modules/ramda/src/is.js | 29 + node_modules/ramda/src/isEmpty.js | 29 + node_modules/ramda/src/isNil.js | 21 + node_modules/ramda/src/join.js | 23 + node_modules/ramda/src/juxt.js | 24 + node_modules/ramda/src/keys.js | 74 + node_modules/ramda/src/keysIn.js | 32 + node_modules/ramda/src/last.js | 24 + node_modules/ramda/src/lastIndexOf.js | 38 + node_modules/ramda/src/length.js | 22 + node_modules/ramda/src/lens.js | 39 + node_modules/ramda/src/lensIndex.js | 29 + node_modules/ramda/src/lensPath.js | 33 + node_modules/ramda/src/lensProp.js | 29 + node_modules/ramda/src/lift.js | 29 + node_modules/ramda/src/liftN.js | 30 + node_modules/ramda/src/lt.js | 25 + node_modules/ramda/src/lte.js | 25 + node_modules/ramda/src/map.js | 59 + node_modules/ramda/src/mapAccum.js | 49 + node_modules/ramda/src/mapAccumRight.js | 51 + node_modules/ramda/src/mapObjIndexed.js | 32 + node_modules/ramda/src/match.js | 27 + node_modules/ramda/src/mathMod.js | 42 + node_modules/ramda/src/max.js | 21 + node_modules/ramda/src/maxBy.js | 30 + node_modules/ramda/src/mean.js | 23 + node_modules/ramda/src/median.js | 32 + node_modules/ramda/src/memoize.js | 34 + node_modules/ramda/src/memoizeWith.js | 44 + node_modules/ramda/src/merge.js | 30 + node_modules/ramda/src/mergeAll.js | 24 + node_modules/ramda/src/mergeDeepLeft.js | 30 + node_modules/ramda/src/mergeDeepRight.js | 30 + node_modules/ramda/src/mergeDeepWith.js | 36 + node_modules/ramda/src/mergeDeepWithKey.js | 42 + node_modules/ramda/src/mergeWith.js | 32 + node_modules/ramda/src/mergeWithKey.js | 47 + node_modules/ramda/src/min.js | 21 + node_modules/ramda/src/minBy.js | 30 + node_modules/ramda/src/modulo.js | 29 + node_modules/ramda/src/multiply.js | 24 + node_modules/ramda/src/nAry.js | 49 + node_modules/ramda/src/negate.js | 18 + node_modules/ramda/src/none.js | 30 + node_modules/ramda/src/not.js | 25 + node_modules/ramda/src/nth.js | 34 + node_modules/ramda/src/nthArg.js | 29 + node_modules/ramda/src/o.js | 31 + node_modules/ramda/src/objOf.js | 28 + node_modules/ramda/src/of.js | 23 + node_modules/ramda/src/omit.js | 29 + node_modules/ramda/src/once.js | 35 + node_modules/ramda/src/or.js | 26 + node_modules/ramda/src/over.js | 39 + node_modules/ramda/src/pair.js | 20 + node_modules/ramda/src/partial.js | 33 + node_modules/ramda/src/partialRight.js | 30 + node_modules/ramda/src/partition.js | 30 + node_modules/ramda/src/path.js | 33 + node_modules/ramda/src/pathEq.js | 32 + node_modules/ramda/src/pathOr.js | 27 + node_modules/ramda/src/pathSatisfies.js | 26 + node_modules/ramda/src/pick.js | 32 + node_modules/ramda/src/pickAll.js | 32 + node_modules/ramda/src/pickBy.js | 32 + node_modules/ramda/src/pipe.js | 36 + node_modules/ramda/src/pipeK.js | 43 + node_modules/ramda/src/pipeP.js | 31 + node_modules/ramda/src/pluck.js | 33 + node_modules/ramda/src/prepend.js | 24 + node_modules/ramda/src/product.js | 20 + node_modules/ramda/src/project.js | 26 + node_modules/ramda/src/prop.js | 22 + node_modules/ramda/src/propEq.js | 31 + node_modules/ramda/src/propIs.js | 27 + node_modules/ramda/src/propOr.js | 33 + node_modules/ramda/src/propSatisfies.js | 24 + node_modules/ramda/src/props.js | 35 + node_modules/ramda/src/range.js | 32 + node_modules/ramda/src/reduce.js | 51 + node_modules/ramda/src/reduceBy.js | 59 + node_modules/ramda/src/reduceRight.js | 53 + node_modules/ramda/src/reduceWhile.js | 39 + node_modules/ramda/src/reduced.js | 29 + node_modules/ramda/src/reject.js | 32 + node_modules/ramda/src/remove.js | 27 + node_modules/ramda/src/repeat.js | 31 + node_modules/ramda/src/replace.js | 26 + node_modules/ramda/src/reverse.js | 32 + node_modules/ramda/src/scan.js | 35 + node_modules/ramda/src/sequence.js | 38 + node_modules/ramda/src/set.js | 30 + node_modules/ramda/src/slice.js | 31 + node_modules/ramda/src/sort.js | 26 + node_modules/ramda/src/sortBy.js | 42 + node_modules/ramda/src/sortWith.js | 46 + node_modules/ramda/src/split.js | 24 + node_modules/ramda/src/splitAt.js | 26 + node_modules/ramda/src/splitEvery.js | 32 + node_modules/ramda/src/splitWhen.js | 34 + node_modules/ramda/src/startsWith.js | 26 + node_modules/ramda/src/subtract.js | 29 + node_modules/ramda/src/sum.js | 20 + node_modules/ramda/src/symmetricDifference.js | 26 + .../ramda/src/symmetricDifferenceWith.js | 30 + node_modules/ramda/src/tail.js | 33 + node_modules/ramda/src/take.js | 52 + node_modules/ramda/src/takeLast.js | 29 + node_modules/ramda/src/takeLastWhile.js | 32 + node_modules/ramda/src/takeWhile.js | 39 + node_modules/ramda/src/tap.js | 25 + node_modules/ramda/src/test.js | 29 + node_modules/ramda/src/times.js | 41 + node_modules/ramda/src/toLower.js | 19 + node_modules/ramda/src/toPairs.js | 31 + node_modules/ramda/src/toPairsIn.js | 31 + node_modules/ramda/src/toString.js | 41 + node_modules/ramda/src/toUpper.js | 19 + node_modules/ramda/src/transduce.js | 55 + node_modules/ramda/src/transpose.js | 44 + node_modules/ramda/src/traverse.js | 36 + node_modules/ramda/src/trim.js | 36 + node_modules/ramda/src/tryCatch.js | 35 + node_modules/ramda/src/type.js | 32 + node_modules/ramda/src/unapply.js | 32 + node_modules/ramda/src/unary.js | 35 + node_modules/ramda/src/uncurryN.js | 38 + node_modules/ramda/src/unfold.js | 37 + node_modules/ramda/src/union.js | 24 + node_modules/ramda/src/unionWith.js | 30 + node_modules/ramda/src/uniq.js | 22 + node_modules/ramda/src/uniqBy.js | 38 + node_modules/ramda/src/uniqWith.js | 40 + node_modules/ramda/src/unless.js | 30 + node_modules/ramda/src/unnest.js | 22 + node_modules/ramda/src/until.js | 29 + node_modules/ramda/src/update.js | 30 + node_modules/ramda/src/useWith.js | 44 + node_modules/ramda/src/values.js | 32 + node_modules/ramda/src/valuesIn.js | 32 + node_modules/ramda/src/view.js | 36 + node_modules/ramda/src/when.js | 34 + node_modules/ramda/src/where.js | 46 + node_modules/ramda/src/whereEq.js | 37 + node_modules/ramda/src/without.js | 28 + node_modules/ramda/src/xprod.js | 37 + node_modules/ramda/src/zip.js | 32 + node_modules/ramda/src/zipObj.js | 30 + node_modules/ramda/src/zipWith.js | 37 + node_modules/readable-stream/.travis.yml | 55 + node_modules/readable-stream/CONTRIBUTING.md | 38 + node_modules/readable-stream/GOVERNANCE.md | 136 + node_modules/readable-stream/LICENSE | 47 + node_modules/readable-stream/README.md | 58 + .../doc/wg-meetings/2015-01-30.md | 60 + .../readable-stream/duplex-browser.js | 1 + node_modules/readable-stream/duplex.js | 1 + .../readable-stream/lib/_stream_duplex.js | 131 + .../lib/_stream_passthrough.js | 47 + .../readable-stream/lib/_stream_readable.js | 1019 + .../readable-stream/lib/_stream_transform.js | 214 + .../readable-stream/lib/_stream_writable.js | 687 + .../lib/internal/streams/BufferList.js | 79 + .../lib/internal/streams/destroy.js | 74 + .../lib/internal/streams/stream-browser.js | 1 + .../lib/internal/streams/stream.js | 1 + node_modules/readable-stream/package.json | 81 + node_modules/readable-stream/passthrough.js | 1 + .../readable-stream/readable-browser.js | 7 + node_modules/readable-stream/readable.js | 19 + node_modules/readable-stream/transform.js | 1 + .../readable-stream/writable-browser.js | 1 + node_modules/readable-stream/writable.js | 8 + node_modules/repeating/index.js | 24 + node_modules/repeating/license | 21 + node_modules/repeating/package.json | 69 + node_modules/repeating/readme.md | 30 + node_modules/request-progress/.editorconfig | 15 + node_modules/request-progress/.jshintrc | 63 + node_modules/request-progress/.npmignore | 4 + node_modules/request-progress/.travis.yml | 5 + node_modules/request-progress/LICENSE | 19 + node_modules/request-progress/README.md | 78 + node_modules/request-progress/index.js | 128 + node_modules/request-progress/package.json | 71 + node_modules/request-progress/test/test.js | 385 + node_modules/request/CHANGELOG.md | 709 + node_modules/request/LICENSE | 55 + node_modules/request/README.md | 1097 + node_modules/request/index.js | 155 + node_modules/request/lib/auth.js | 167 + node_modules/request/lib/cookies.js | 38 + node_modules/request/lib/getProxyFromURI.js | 79 + node_modules/request/lib/har.js | 205 + node_modules/request/lib/hawk.js | 89 + node_modules/request/lib/helpers.js | 66 + node_modules/request/lib/multipart.js | 112 + node_modules/request/lib/oauth.js | 148 + node_modules/request/lib/querystring.js | 50 + node_modules/request/lib/redirect.js | 154 + node_modules/request/lib/tunnel.js | 175 + node_modules/request/package.json | 115 + node_modules/request/request.js | 1551 ++ node_modules/restore-cursor/index.js | 9 + node_modules/restore-cursor/license | 21 + node_modules/restore-cursor/package.json | 76 + node_modules/restore-cursor/readme.md | 25 + node_modules/rimraf/LICENSE | 15 + node_modules/rimraf/README.md | 101 + node_modules/rimraf/bin.js | 50 + node_modules/rimraf/package.json | 67 + node_modules/rimraf/rimraf.js | 372 + node_modules/rxjs/AsyncSubject.d.ts | 15 + node_modules/rxjs/AsyncSubject.js | 53 + node_modules/rxjs/AsyncSubject.js.map | 1 + node_modules/rxjs/BehaviorSubject.d.ts | 14 + node_modules/rxjs/BehaviorSubject.js | 49 + node_modules/rxjs/BehaviorSubject.js.map | 1 + node_modules/rxjs/InnerSubscriber.d.ts | 17 + node_modules/rxjs/InnerSubscriber.js | 36 + node_modules/rxjs/InnerSubscriber.js.map | 1 + node_modules/rxjs/LICENSE.txt | 202 + node_modules/rxjs/Notification.d.ts | 77 + node_modules/rxjs/Notification.js | 127 + node_modules/rxjs/Notification.js.map | 1 + node_modules/rxjs/Observable.d.ts | 76 + node_modules/rxjs/Observable.js | 305 + node_modules/rxjs/Observable.js.map | 1 + node_modules/rxjs/Observer.d.ts | 26 + node_modules/rxjs/Observer.js | 8 + node_modules/rxjs/Observer.js.map | 1 + node_modules/rxjs/Operator.d.ts | 5 + node_modules/rxjs/Operator.js | 2 + node_modules/rxjs/Operator.js.map | 1 + node_modules/rxjs/OuterSubscriber.d.ts | 12 + node_modules/rxjs/OuterSubscriber.js | 30 + node_modules/rxjs/OuterSubscriber.js.map | 1 + node_modules/rxjs/README.md | 206 + node_modules/rxjs/ReplaySubject.d.ts | 18 + node_modules/rxjs/ReplaySubject.js | 102 + node_modules/rxjs/ReplaySubject.js.map | 1 + node_modules/rxjs/Rx.d.ts | 195 + node_modules/rxjs/Rx.js | 233 + node_modules/rxjs/Rx.js.map | 1 + node_modules/rxjs/Scheduler.d.ts | 54 + node_modules/rxjs/Scheduler.js | 49 + node_modules/rxjs/Scheduler.js.map | 1 + node_modules/rxjs/Subject.d.ts | 43 + node_modules/rxjs/Subject.js | 168 + node_modules/rxjs/Subject.js.map | 1 + node_modules/rxjs/SubjectSubscription.d.ts | 15 + node_modules/rxjs/SubjectSubscription.js | 40 + node_modules/rxjs/SubjectSubscription.js.map | 1 + node_modules/rxjs/Subscriber.d.ts | 68 + node_modules/rxjs/Subscriber.js | 271 + node_modules/rxjs/Subscriber.js.map | 1 + node_modules/rxjs/Subscription.d.ts | 70 + node_modules/rxjs/Subscription.js | 193 + node_modules/rxjs/Subscription.js.map | 1 + node_modules/rxjs/_esm2015/AsyncSubject.js | 44 + .../rxjs/_esm2015/AsyncSubject.js.map | 1 + node_modules/rxjs/_esm2015/BehaviorSubject.js | 36 + .../rxjs/_esm2015/BehaviorSubject.js.map | 1 + node_modules/rxjs/_esm2015/InnerSubscriber.js | 27 + .../rxjs/_esm2015/InnerSubscriber.js.map | 1 + node_modules/rxjs/_esm2015/LICENSE.txt | 202 + node_modules/rxjs/_esm2015/Notification.js | 124 + .../rxjs/_esm2015/Notification.js.map | 1 + node_modules/rxjs/_esm2015/Observable.js | 296 + node_modules/rxjs/_esm2015/Observable.js.map | 1 + node_modules/rxjs/_esm2015/Observer.js | 7 + node_modules/rxjs/_esm2015/Observer.js.map | 1 + node_modules/rxjs/_esm2015/Operator.js | 1 + node_modules/rxjs/_esm2015/Operator.js.map | 1 + node_modules/rxjs/_esm2015/OuterSubscriber.js | 18 + .../rxjs/_esm2015/OuterSubscriber.js.map | 1 + node_modules/rxjs/_esm2015/README.md | 206 + node_modules/rxjs/_esm2015/ReplaySubject.js | 90 + .../rxjs/_esm2015/ReplaySubject.js.map | 1 + node_modules/rxjs/_esm2015/Rx.js | 204 + node_modules/rxjs/_esm2015/Rx.js.map | 1 + node_modules/rxjs/_esm2015/Scheduler.js | 44 + node_modules/rxjs/_esm2015/Scheduler.js.map | 1 + node_modules/rxjs/_esm2015/Subject.js | 153 + node_modules/rxjs/_esm2015/Subject.js.map | 1 + .../rxjs/_esm2015/SubjectSubscription.js | 31 + .../rxjs/_esm2015/SubjectSubscription.js.map | 1 + node_modules/rxjs/_esm2015/Subscriber.js | 259 + node_modules/rxjs/_esm2015/Subscriber.js.map | 1 + node_modules/rxjs/_esm2015/Subscription.js | 190 + .../rxjs/_esm2015/Subscription.js.map | 1 + .../_esm2015/add/observable/bindCallback.js | 4 + .../add/observable/bindCallback.js.map | 1 + .../add/observable/bindNodeCallback.js | 4 + .../add/observable/bindNodeCallback.js.map | 1 + .../_esm2015/add/observable/combineLatest.js | 4 + .../add/observable/combineLatest.js.map | 1 + .../rxjs/_esm2015/add/observable/concat.js | 4 + .../_esm2015/add/observable/concat.js.map | 1 + .../rxjs/_esm2015/add/observable/defer.js | 4 + .../rxjs/_esm2015/add/observable/defer.js.map | 1 + .../rxjs/_esm2015/add/observable/dom/ajax.js | 4 + .../_esm2015/add/observable/dom/ajax.js.map | 1 + .../_esm2015/add/observable/dom/webSocket.js | 4 + .../add/observable/dom/webSocket.js.map | 1 + .../rxjs/_esm2015/add/observable/empty.js | 4 + .../rxjs/_esm2015/add/observable/empty.js.map | 1 + .../rxjs/_esm2015/add/observable/forkJoin.js | 4 + .../_esm2015/add/observable/forkJoin.js.map | 1 + .../rxjs/_esm2015/add/observable/from.js | 4 + .../rxjs/_esm2015/add/observable/from.js.map | 1 + .../rxjs/_esm2015/add/observable/fromEvent.js | 4 + .../_esm2015/add/observable/fromEvent.js.map | 1 + .../add/observable/fromEventPattern.js | 4 + .../add/observable/fromEventPattern.js.map | 1 + .../_esm2015/add/observable/fromPromise.js | 4 + .../add/observable/fromPromise.js.map | 1 + .../rxjs/_esm2015/add/observable/generate.js | 4 + .../_esm2015/add/observable/generate.js.map | 1 + .../rxjs/_esm2015/add/observable/if.js | 4 + .../rxjs/_esm2015/add/observable/if.js.map | 1 + .../rxjs/_esm2015/add/observable/interval.js | 4 + .../_esm2015/add/observable/interval.js.map | 1 + .../rxjs/_esm2015/add/observable/merge.js | 4 + .../rxjs/_esm2015/add/observable/merge.js.map | 1 + .../rxjs/_esm2015/add/observable/never.js | 4 + .../rxjs/_esm2015/add/observable/never.js.map | 1 + .../rxjs/_esm2015/add/observable/of.js | 4 + .../rxjs/_esm2015/add/observable/of.js.map | 1 + .../add/observable/onErrorResumeNext.js | 4 + .../add/observable/onErrorResumeNext.js.map | 1 + .../rxjs/_esm2015/add/observable/pairs.js | 4 + .../rxjs/_esm2015/add/observable/pairs.js.map | 1 + .../rxjs/_esm2015/add/observable/race.js | 4 + .../rxjs/_esm2015/add/observable/race.js.map | 1 + .../rxjs/_esm2015/add/observable/range.js | 4 + .../rxjs/_esm2015/add/observable/range.js.map | 1 + .../rxjs/_esm2015/add/observable/throw.js | 4 + .../rxjs/_esm2015/add/observable/throw.js.map | 1 + .../rxjs/_esm2015/add/observable/timer.js | 4 + .../rxjs/_esm2015/add/observable/timer.js.map | 1 + .../rxjs/_esm2015/add/observable/using.js | 4 + .../rxjs/_esm2015/add/observable/using.js.map | 1 + .../rxjs/_esm2015/add/observable/zip.js | 4 + .../rxjs/_esm2015/add/observable/zip.js.map | 1 + .../rxjs/_esm2015/add/operator/audit.js | 4 + .../rxjs/_esm2015/add/operator/audit.js.map | 1 + .../rxjs/_esm2015/add/operator/auditTime.js | 4 + .../_esm2015/add/operator/auditTime.js.map | 1 + .../rxjs/_esm2015/add/operator/buffer.js | 4 + .../rxjs/_esm2015/add/operator/buffer.js.map | 1 + .../rxjs/_esm2015/add/operator/bufferCount.js | 4 + .../_esm2015/add/operator/bufferCount.js.map | 1 + .../rxjs/_esm2015/add/operator/bufferTime.js | 4 + .../_esm2015/add/operator/bufferTime.js.map | 1 + .../_esm2015/add/operator/bufferToggle.js | 4 + .../_esm2015/add/operator/bufferToggle.js.map | 1 + .../rxjs/_esm2015/add/operator/bufferWhen.js | 4 + .../_esm2015/add/operator/bufferWhen.js.map | 1 + .../rxjs/_esm2015/add/operator/catch.js | 5 + .../rxjs/_esm2015/add/operator/catch.js.map | 1 + .../rxjs/_esm2015/add/operator/combineAll.js | 4 + .../_esm2015/add/operator/combineAll.js.map | 1 + .../_esm2015/add/operator/combineLatest.js | 4 + .../add/operator/combineLatest.js.map | 1 + .../rxjs/_esm2015/add/operator/concat.js | 4 + .../rxjs/_esm2015/add/operator/concat.js.map | 1 + .../rxjs/_esm2015/add/operator/concatAll.js | 4 + .../_esm2015/add/operator/concatAll.js.map | 1 + .../rxjs/_esm2015/add/operator/concatMap.js | 4 + .../_esm2015/add/operator/concatMap.js.map | 1 + .../rxjs/_esm2015/add/operator/concatMapTo.js | 4 + .../_esm2015/add/operator/concatMapTo.js.map | 1 + .../rxjs/_esm2015/add/operator/count.js | 4 + .../rxjs/_esm2015/add/operator/count.js.map | 1 + .../rxjs/_esm2015/add/operator/debounce.js | 4 + .../_esm2015/add/operator/debounce.js.map | 1 + .../_esm2015/add/operator/debounceTime.js | 4 + .../_esm2015/add/operator/debounceTime.js.map | 1 + .../_esm2015/add/operator/defaultIfEmpty.js | 4 + .../add/operator/defaultIfEmpty.js.map | 1 + .../rxjs/_esm2015/add/operator/delay.js | 4 + .../rxjs/_esm2015/add/operator/delay.js.map | 1 + .../rxjs/_esm2015/add/operator/delayWhen.js | 4 + .../_esm2015/add/operator/delayWhen.js.map | 1 + .../_esm2015/add/operator/dematerialize.js | 4 + .../add/operator/dematerialize.js.map | 1 + .../rxjs/_esm2015/add/operator/distinct.js | 4 + .../_esm2015/add/operator/distinct.js.map | 1 + .../add/operator/distinctUntilChanged.js | 4 + .../add/operator/distinctUntilChanged.js.map | 1 + .../add/operator/distinctUntilKeyChanged.js | 4 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/_esm2015/add/operator/do.js | 5 + .../rxjs/_esm2015/add/operator/do.js.map | 1 + .../rxjs/_esm2015/add/operator/elementAt.js | 4 + .../_esm2015/add/operator/elementAt.js.map | 1 + .../rxjs/_esm2015/add/operator/every.js | 4 + .../rxjs/_esm2015/add/operator/every.js.map | 1 + .../rxjs/_esm2015/add/operator/exhaust.js | 4 + .../rxjs/_esm2015/add/operator/exhaust.js.map | 1 + .../rxjs/_esm2015/add/operator/exhaustMap.js | 4 + .../_esm2015/add/operator/exhaustMap.js.map | 1 + .../rxjs/_esm2015/add/operator/expand.js | 4 + .../rxjs/_esm2015/add/operator/expand.js.map | 1 + .../rxjs/_esm2015/add/operator/filter.js | 4 + .../rxjs/_esm2015/add/operator/filter.js.map | 1 + .../rxjs/_esm2015/add/operator/finally.js | 5 + .../rxjs/_esm2015/add/operator/finally.js.map | 1 + .../rxjs/_esm2015/add/operator/find.js | 4 + .../rxjs/_esm2015/add/operator/find.js.map | 1 + .../rxjs/_esm2015/add/operator/findIndex.js | 4 + .../_esm2015/add/operator/findIndex.js.map | 1 + .../rxjs/_esm2015/add/operator/first.js | 4 + .../rxjs/_esm2015/add/operator/first.js.map | 1 + .../rxjs/_esm2015/add/operator/groupBy.js | 4 + .../rxjs/_esm2015/add/operator/groupBy.js.map | 1 + .../_esm2015/add/operator/ignoreElements.js | 4 + .../add/operator/ignoreElements.js.map | 1 + .../rxjs/_esm2015/add/operator/isEmpty.js | 4 + .../rxjs/_esm2015/add/operator/isEmpty.js.map | 1 + .../rxjs/_esm2015/add/operator/last.js | 4 + .../rxjs/_esm2015/add/operator/last.js.map | 1 + .../rxjs/_esm2015/add/operator/let.js | 5 + .../rxjs/_esm2015/add/operator/let.js.map | 1 + .../rxjs/_esm2015/add/operator/map.js | 4 + .../rxjs/_esm2015/add/operator/map.js.map | 1 + .../rxjs/_esm2015/add/operator/mapTo.js | 4 + .../rxjs/_esm2015/add/operator/mapTo.js.map | 1 + .../rxjs/_esm2015/add/operator/materialize.js | 4 + .../_esm2015/add/operator/materialize.js.map | 1 + .../rxjs/_esm2015/add/operator/max.js | 4 + .../rxjs/_esm2015/add/operator/max.js.map | 1 + .../rxjs/_esm2015/add/operator/merge.js | 4 + .../rxjs/_esm2015/add/operator/merge.js.map | 1 + .../rxjs/_esm2015/add/operator/mergeAll.js | 4 + .../_esm2015/add/operator/mergeAll.js.map | 1 + .../rxjs/_esm2015/add/operator/mergeMap.js | 5 + .../_esm2015/add/operator/mergeMap.js.map | 1 + .../rxjs/_esm2015/add/operator/mergeMapTo.js | 5 + .../_esm2015/add/operator/mergeMapTo.js.map | 1 + .../rxjs/_esm2015/add/operator/mergeScan.js | 4 + .../_esm2015/add/operator/mergeScan.js.map | 1 + .../rxjs/_esm2015/add/operator/min.js | 4 + .../rxjs/_esm2015/add/operator/min.js.map | 1 + .../rxjs/_esm2015/add/operator/multicast.js | 4 + .../_esm2015/add/operator/multicast.js.map | 1 + .../rxjs/_esm2015/add/operator/observeOn.js | 4 + .../_esm2015/add/operator/observeOn.js.map | 1 + .../add/operator/onErrorResumeNext.js | 4 + .../add/operator/onErrorResumeNext.js.map | 1 + .../rxjs/_esm2015/add/operator/pairwise.js | 4 + .../_esm2015/add/operator/pairwise.js.map | 1 + .../rxjs/_esm2015/add/operator/partition.js | 4 + .../_esm2015/add/operator/partition.js.map | 1 + .../rxjs/_esm2015/add/operator/pluck.js | 4 + .../rxjs/_esm2015/add/operator/pluck.js.map | 1 + .../rxjs/_esm2015/add/operator/publish.js | 4 + .../rxjs/_esm2015/add/operator/publish.js.map | 1 + .../_esm2015/add/operator/publishBehavior.js | 4 + .../add/operator/publishBehavior.js.map | 1 + .../rxjs/_esm2015/add/operator/publishLast.js | 4 + .../_esm2015/add/operator/publishLast.js.map | 1 + .../_esm2015/add/operator/publishReplay.js | 4 + .../add/operator/publishReplay.js.map | 1 + .../rxjs/_esm2015/add/operator/race.js | 4 + .../rxjs/_esm2015/add/operator/race.js.map | 1 + .../rxjs/_esm2015/add/operator/reduce.js | 4 + .../rxjs/_esm2015/add/operator/reduce.js.map | 1 + .../rxjs/_esm2015/add/operator/repeat.js | 4 + .../rxjs/_esm2015/add/operator/repeat.js.map | 1 + .../rxjs/_esm2015/add/operator/repeatWhen.js | 4 + .../_esm2015/add/operator/repeatWhen.js.map | 1 + .../rxjs/_esm2015/add/operator/retry.js | 4 + .../rxjs/_esm2015/add/operator/retry.js.map | 1 + .../rxjs/_esm2015/add/operator/retryWhen.js | 4 + .../_esm2015/add/operator/retryWhen.js.map | 1 + .../rxjs/_esm2015/add/operator/sample.js | 4 + .../rxjs/_esm2015/add/operator/sample.js.map | 1 + .../rxjs/_esm2015/add/operator/sampleTime.js | 4 + .../_esm2015/add/operator/sampleTime.js.map | 1 + .../rxjs/_esm2015/add/operator/scan.js | 4 + .../rxjs/_esm2015/add/operator/scan.js.map | 1 + .../_esm2015/add/operator/sequenceEqual.js | 4 + .../add/operator/sequenceEqual.js.map | 1 + .../rxjs/_esm2015/add/operator/share.js | 4 + .../rxjs/_esm2015/add/operator/share.js.map | 1 + .../rxjs/_esm2015/add/operator/shareReplay.js | 4 + .../_esm2015/add/operator/shareReplay.js.map | 1 + .../rxjs/_esm2015/add/operator/single.js | 4 + .../rxjs/_esm2015/add/operator/single.js.map | 1 + .../rxjs/_esm2015/add/operator/skip.js | 4 + .../rxjs/_esm2015/add/operator/skip.js.map | 1 + .../rxjs/_esm2015/add/operator/skipLast.js | 4 + .../_esm2015/add/operator/skipLast.js.map | 1 + .../rxjs/_esm2015/add/operator/skipUntil.js | 4 + .../_esm2015/add/operator/skipUntil.js.map | 1 + .../rxjs/_esm2015/add/operator/skipWhile.js | 4 + .../_esm2015/add/operator/skipWhile.js.map | 1 + .../rxjs/_esm2015/add/operator/startWith.js | 4 + .../_esm2015/add/operator/startWith.js.map | 1 + .../rxjs/_esm2015/add/operator/subscribeOn.js | 4 + .../_esm2015/add/operator/subscribeOn.js.map | 1 + .../rxjs/_esm2015/add/operator/switch.js | 5 + .../rxjs/_esm2015/add/operator/switch.js.map | 1 + .../rxjs/_esm2015/add/operator/switchMap.js | 4 + .../_esm2015/add/operator/switchMap.js.map | 1 + .../rxjs/_esm2015/add/operator/switchMapTo.js | 4 + .../_esm2015/add/operator/switchMapTo.js.map | 1 + .../rxjs/_esm2015/add/operator/take.js | 4 + .../rxjs/_esm2015/add/operator/take.js.map | 1 + .../rxjs/_esm2015/add/operator/takeLast.js | 4 + .../_esm2015/add/operator/takeLast.js.map | 1 + .../rxjs/_esm2015/add/operator/takeUntil.js | 4 + .../_esm2015/add/operator/takeUntil.js.map | 1 + .../rxjs/_esm2015/add/operator/takeWhile.js | 4 + .../_esm2015/add/operator/takeWhile.js.map | 1 + .../rxjs/_esm2015/add/operator/throttle.js | 4 + .../_esm2015/add/operator/throttle.js.map | 1 + .../_esm2015/add/operator/throttleTime.js | 4 + .../_esm2015/add/operator/throttleTime.js.map | 1 + .../_esm2015/add/operator/timeInterval.js | 4 + .../_esm2015/add/operator/timeInterval.js.map | 1 + .../rxjs/_esm2015/add/operator/timeout.js | 4 + .../rxjs/_esm2015/add/operator/timeout.js.map | 1 + .../rxjs/_esm2015/add/operator/timeoutWith.js | 4 + .../_esm2015/add/operator/timeoutWith.js.map | 1 + .../rxjs/_esm2015/add/operator/timestamp.js | 4 + .../_esm2015/add/operator/timestamp.js.map | 1 + .../rxjs/_esm2015/add/operator/toArray.js | 4 + .../rxjs/_esm2015/add/operator/toArray.js.map | 1 + .../rxjs/_esm2015/add/operator/toPromise.js | 3 + .../_esm2015/add/operator/toPromise.js.map | 1 + .../rxjs/_esm2015/add/operator/window.js | 4 + .../rxjs/_esm2015/add/operator/window.js.map | 1 + .../rxjs/_esm2015/add/operator/windowCount.js | 4 + .../_esm2015/add/operator/windowCount.js.map | 1 + .../rxjs/_esm2015/add/operator/windowTime.js | 4 + .../_esm2015/add/operator/windowTime.js.map | 1 + .../_esm2015/add/operator/windowToggle.js | 4 + .../_esm2015/add/operator/windowToggle.js.map | 1 + .../rxjs/_esm2015/add/operator/windowWhen.js | 4 + .../_esm2015/add/operator/windowWhen.js.map | 1 + .../_esm2015/add/operator/withLatestFrom.js | 4 + .../add/operator/withLatestFrom.js.map | 1 + .../rxjs/_esm2015/add/operator/zip.js | 4 + .../rxjs/_esm2015/add/operator/zip.js.map | 1 + .../rxjs/_esm2015/add/operator/zipAll.js | 4 + .../rxjs/_esm2015/add/operator/zipAll.js.map | 1 + node_modules/rxjs/_esm2015/interfaces.js | 1 + node_modules/rxjs/_esm2015/interfaces.js.map | 1 + .../observable/ArrayLikeObservable.js | 61 + .../observable/ArrayLikeObservable.js.map | 1 + .../_esm2015/observable/ArrayObservable.js | 109 + .../observable/ArrayObservable.js.map | 1 + .../observable/BoundCallbackObservable.js | 242 + .../observable/BoundCallbackObservable.js.map | 1 + .../observable/BoundNodeCallbackObservable.js | 241 + .../BoundNodeCallbackObservable.js.map | 1 + .../observable/ConnectableObservable.js | 157 + .../observable/ConnectableObservable.js.map | 1 + .../_esm2015/observable/DeferObservable.js | 88 + .../observable/DeferObservable.js.map | 1 + .../_esm2015/observable/EmptyObservable.js | 72 + .../observable/EmptyObservable.js.map | 1 + .../_esm2015/observable/ErrorObservable.js | 74 + .../observable/ErrorObservable.js.map | 1 + .../_esm2015/observable/ForkJoinObservable.js | 187 + .../observable/ForkJoinObservable.js.map | 1 + .../observable/FromEventObservable.js | 203 + .../observable/FromEventObservable.js.map | 1 + .../observable/FromEventPatternObservable.js | 99 + .../FromEventPatternObservable.js.map | 1 + .../_esm2015/observable/FromObservable.js | 113 + .../_esm2015/observable/FromObservable.js.map | 1 + .../_esm2015/observable/GenerateObservable.js | 126 + .../observable/GenerateObservable.js.map | 1 + .../rxjs/_esm2015/observable/IfObservable.js | 50 + .../_esm2015/observable/IfObservable.js.map | 1 + .../_esm2015/observable/IntervalObservable.js | 75 + .../observable/IntervalObservable.js.map | 1 + .../_esm2015/observable/IteratorObservable.js | 148 + .../observable/IteratorObservable.js.map | 1 + .../_esm2015/observable/NeverObservable.js | 50 + .../observable/NeverObservable.js.map | 1 + .../_esm2015/observable/PairsObservable.js | 76 + .../observable/PairsObservable.js.map | 1 + .../_esm2015/observable/PromiseObservable.js | 111 + .../observable/PromiseObservable.js.map | 1 + .../_esm2015/observable/RangeObservable.js | 85 + .../observable/RangeObservable.js.map | 1 + .../_esm2015/observable/ScalarObservable.js | 49 + .../observable/ScalarObservable.js.map | 1 + .../observable/SubscribeOnObservable.js | 38 + .../observable/SubscribeOnObservable.js.map | 1 + .../_esm2015/observable/TimerObservable.js | 96 + .../observable/TimerObservable.js.map | 1 + .../_esm2015/observable/UsingObservable.js | 50 + .../observable/UsingObservable.js.map | 1 + .../rxjs/_esm2015/observable/bindCallback.js | 3 + .../_esm2015/observable/bindCallback.js.map | 1 + .../_esm2015/observable/bindNodeCallback.js | 3 + .../observable/bindNodeCallback.js.map | 1 + .../rxjs/_esm2015/observable/combineLatest.js | 130 + .../_esm2015/observable/combineLatest.js.map | 1 + .../rxjs/_esm2015/observable/concat.js | 105 + .../rxjs/_esm2015/observable/concat.js.map | 1 + .../rxjs/_esm2015/observable/defer.js | 3 + .../rxjs/_esm2015/observable/defer.js.map | 1 + .../_esm2015/observable/dom/AjaxObservable.js | 399 + .../observable/dom/AjaxObservable.js.map | 1 + .../observable/dom/WebSocketSubject.js | 239 + .../observable/dom/WebSocketSubject.js.map | 1 + .../rxjs/_esm2015/observable/dom/ajax.js | 3 + .../rxjs/_esm2015/observable/dom/ajax.js.map | 1 + .../rxjs/_esm2015/observable/dom/webSocket.js | 3 + .../_esm2015/observable/dom/webSocket.js.map | 1 + .../rxjs/_esm2015/observable/empty.js | 3 + .../rxjs/_esm2015/observable/empty.js.map | 1 + .../rxjs/_esm2015/observable/forkJoin.js | 3 + .../rxjs/_esm2015/observable/forkJoin.js.map | 1 + node_modules/rxjs/_esm2015/observable/from.js | 3 + .../rxjs/_esm2015/observable/from.js.map | 1 + .../rxjs/_esm2015/observable/fromEvent.js | 3 + .../rxjs/_esm2015/observable/fromEvent.js.map | 1 + .../_esm2015/observable/fromEventPattern.js | 3 + .../observable/fromEventPattern.js.map | 1 + .../rxjs/_esm2015/observable/fromPromise.js | 3 + .../_esm2015/observable/fromPromise.js.map | 1 + .../rxjs/_esm2015/observable/generate.js | 3 + .../rxjs/_esm2015/observable/generate.js.map | 1 + node_modules/rxjs/_esm2015/observable/if.js | 3 + .../rxjs/_esm2015/observable/if.js.map | 1 + .../rxjs/_esm2015/observable/interval.js | 3 + .../rxjs/_esm2015/observable/interval.js.map | 1 + .../rxjs/_esm2015/observable/merge.js | 84 + .../rxjs/_esm2015/observable/merge.js.map | 1 + .../rxjs/_esm2015/observable/never.js | 3 + .../rxjs/_esm2015/observable/never.js.map | 1 + node_modules/rxjs/_esm2015/observable/of.js | 3 + .../rxjs/_esm2015/observable/of.js.map | 1 + .../_esm2015/observable/onErrorResumeNext.js | 3 + .../observable/onErrorResumeNext.js.map | 1 + .../rxjs/_esm2015/observable/pairs.js | 3 + .../rxjs/_esm2015/observable/pairs.js.map | 1 + node_modules/rxjs/_esm2015/observable/race.js | 71 + .../rxjs/_esm2015/observable/race.js.map | 1 + .../rxjs/_esm2015/observable/range.js | 3 + .../rxjs/_esm2015/observable/range.js.map | 1 + .../rxjs/_esm2015/observable/throw.js | 3 + .../rxjs/_esm2015/observable/throw.js.map | 1 + .../rxjs/_esm2015/observable/timer.js | 3 + .../rxjs/_esm2015/observable/timer.js.map | 1 + .../rxjs/_esm2015/observable/using.js | 3 + .../rxjs/_esm2015/observable/using.js.map | 1 + node_modules/rxjs/_esm2015/observable/zip.js | 3 + .../rxjs/_esm2015/observable/zip.js.map | 1 + node_modules/rxjs/_esm2015/operator/audit.js | 45 + .../rxjs/_esm2015/operator/audit.js.map | 1 + .../rxjs/_esm2015/operator/auditTime.js | 48 + .../rxjs/_esm2015/operator/auditTime.js.map | 1 + node_modules/rxjs/_esm2015/operator/buffer.js | 37 + .../rxjs/_esm2015/operator/buffer.js.map | 1 + .../rxjs/_esm2015/operator/bufferCount.js | 46 + .../rxjs/_esm2015/operator/bufferCount.js.map | 1 + .../rxjs/_esm2015/operator/bufferTime.js | 65 + .../rxjs/_esm2015/operator/bufferTime.js.map | 1 + .../rxjs/_esm2015/operator/bufferToggle.js | 43 + .../_esm2015/operator/bufferToggle.js.map | 1 + .../rxjs/_esm2015/operator/bufferWhen.js | 38 + .../rxjs/_esm2015/operator/bufferWhen.js.map | 1 + node_modules/rxjs/_esm2015/operator/catch.js | 64 + .../rxjs/_esm2015/operator/catch.js.map | 1 + .../rxjs/_esm2015/operator/combineAll.js | 45 + .../rxjs/_esm2015/operator/combineAll.js.map | 1 + .../rxjs/_esm2015/operator/combineLatest.js | 49 + .../_esm2015/operator/combineLatest.js.map | 1 + node_modules/rxjs/_esm2015/operator/concat.js | 56 + .../rxjs/_esm2015/operator/concat.js.map | 1 + .../rxjs/_esm2015/operator/concatAll.js | 54 + .../rxjs/_esm2015/operator/concatAll.js.map | 1 + .../rxjs/_esm2015/operator/concatMap.js | 65 + .../rxjs/_esm2015/operator/concatMap.js.map | 1 + .../rxjs/_esm2015/operator/concatMapTo.js | 62 + .../rxjs/_esm2015/operator/concatMapTo.js.map | 1 + node_modules/rxjs/_esm2015/operator/count.js | 53 + .../rxjs/_esm2015/operator/count.js.map | 1 + .../rxjs/_esm2015/operator/debounce.js | 47 + .../rxjs/_esm2015/operator/debounce.js.map | 1 + .../rxjs/_esm2015/operator/debounceTime.js | 52 + .../_esm2015/operator/debounceTime.js.map | 1 + .../rxjs/_esm2015/operator/defaultIfEmpty.js | 36 + .../_esm2015/operator/defaultIfEmpty.js.map | 1 + node_modules/rxjs/_esm2015/operator/delay.js | 45 + .../rxjs/_esm2015/operator/delay.js.map | 1 + .../rxjs/_esm2015/operator/delayWhen.js | 50 + .../rxjs/_esm2015/operator/delayWhen.js.map | 1 + .../rxjs/_esm2015/operator/dematerialize.js | 45 + .../_esm2015/operator/dematerialize.js.map | 1 + .../rxjs/_esm2015/operator/distinct.js | 50 + .../rxjs/_esm2015/operator/distinct.js.map | 1 + .../_esm2015/operator/distinctUntilChanged.js | 45 + .../operator/distinctUntilChanged.js.map | 1 + .../operator/distinctUntilKeyChanged.js | 63 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/_esm2015/operator/do.js | 49 + node_modules/rxjs/_esm2015/operator/do.js.map | 1 + .../rxjs/_esm2015/operator/elementAt.js | 47 + .../rxjs/_esm2015/operator/elementAt.js.map | 1 + node_modules/rxjs/_esm2015/operator/every.js | 19 + .../rxjs/_esm2015/operator/every.js.map | 1 + .../rxjs/_esm2015/operator/exhaust.js | 40 + .../rxjs/_esm2015/operator/exhaust.js.map | 1 + .../rxjs/_esm2015/operator/exhaustMap.js | 51 + .../rxjs/_esm2015/operator/exhaustMap.js.map | 1 + node_modules/rxjs/_esm2015/operator/expand.js | 52 + .../rxjs/_esm2015/operator/expand.js.map | 1 + node_modules/rxjs/_esm2015/operator/filter.js | 45 + .../rxjs/_esm2015/operator/filter.js.map | 1 + .../rxjs/_esm2015/operator/finally.js | 13 + .../rxjs/_esm2015/operator/finally.js.map | 1 + node_modules/rxjs/_esm2015/operator/find.js | 39 + .../rxjs/_esm2015/operator/find.js.map | 1 + .../rxjs/_esm2015/operator/findIndex.js | 39 + .../rxjs/_esm2015/operator/findIndex.js.map | 1 + node_modules/rxjs/_esm2015/operator/first.js | 54 + .../rxjs/_esm2015/operator/first.js.map | 1 + .../rxjs/_esm2015/operator/groupBy.js | 74 + .../rxjs/_esm2015/operator/groupBy.js.map | 1 + .../rxjs/_esm2015/operator/ignoreElements.js | 16 + .../_esm2015/operator/ignoreElements.js.map | 1 + .../rxjs/_esm2015/operator/isEmpty.js | 14 + .../rxjs/_esm2015/operator/isEmpty.js.map | 1 + node_modules/rxjs/_esm2015/operator/last.js | 23 + .../rxjs/_esm2015/operator/last.js.map | 1 + node_modules/rxjs/_esm2015/operator/let.js | 10 + .../rxjs/_esm2015/operator/let.js.map | 1 + node_modules/rxjs/_esm2015/operator/map.js | 38 + .../rxjs/_esm2015/operator/map.js.map | 1 + node_modules/rxjs/_esm2015/operator/mapTo.js | 31 + .../rxjs/_esm2015/operator/mapTo.js.map | 1 + .../rxjs/_esm2015/operator/materialize.js | 49 + .../rxjs/_esm2015/operator/materialize.js.map | 1 + node_modules/rxjs/_esm2015/operator/max.js | 36 + .../rxjs/_esm2015/operator/max.js.map | 1 + node_modules/rxjs/_esm2015/operator/merge.js | 53 + .../rxjs/_esm2015/operator/merge.js.map | 1 + .../rxjs/_esm2015/operator/mergeAll.js | 49 + .../rxjs/_esm2015/operator/mergeAll.js.map | 1 + .../rxjs/_esm2015/operator/mergeMap.js | 64 + .../rxjs/_esm2015/operator/mergeMap.js.map | 1 + .../rxjs/_esm2015/operator/mergeMapTo.js | 49 + .../rxjs/_esm2015/operator/mergeMapTo.js.map | 1 + .../rxjs/_esm2015/operator/mergeScan.js | 36 + .../rxjs/_esm2015/operator/mergeScan.js.map | 1 + node_modules/rxjs/_esm2015/operator/min.js | 36 + .../rxjs/_esm2015/operator/min.js.map | 1 + .../rxjs/_esm2015/operator/multicast.js | 100 + .../rxjs/_esm2015/operator/multicast.js.map | 1 + .../rxjs/_esm2015/operator/observeOn.js | 51 + .../rxjs/_esm2015/operator/observeOn.js.map | 1 + .../_esm2015/operator/onErrorResumeNext.js | 67 + .../operator/onErrorResumeNext.js.map | 1 + .../rxjs/_esm2015/operator/pairwise.js | 40 + .../rxjs/_esm2015/operator/pairwise.js.map | 1 + .../rxjs/_esm2015/operator/partition.js | 46 + .../rxjs/_esm2015/operator/partition.js.map | 1 + node_modules/rxjs/_esm2015/operator/pluck.js | 31 + .../rxjs/_esm2015/operator/pluck.js.map | 1 + .../rxjs/_esm2015/operator/publish.js | 19 + .../rxjs/_esm2015/operator/publish.js.map | 1 + .../rxjs/_esm2015/operator/publishBehavior.js | 11 + .../_esm2015/operator/publishBehavior.js.map | 1 + .../rxjs/_esm2015/operator/publishLast.js | 11 + .../rxjs/_esm2015/operator/publishLast.js.map | 1 + .../rxjs/_esm2015/operator/publishReplay.js | 15 + .../_esm2015/operator/publishReplay.js.map | 1 + node_modules/rxjs/_esm2015/operator/race.js | 16 + .../rxjs/_esm2015/operator/race.js.map | 1 + node_modules/rxjs/_esm2015/operator/reduce.js | 58 + .../rxjs/_esm2015/operator/reduce.js.map | 1 + node_modules/rxjs/_esm2015/operator/repeat.js | 17 + .../rxjs/_esm2015/operator/repeat.js.map | 1 + .../rxjs/_esm2015/operator/repeatWhen.js | 19 + .../rxjs/_esm2015/operator/repeatWhen.js.map | 1 + node_modules/rxjs/_esm2015/operator/retry.js | 21 + .../rxjs/_esm2015/operator/retry.js.map | 1 + .../rxjs/_esm2015/operator/retryWhen.js | 19 + .../rxjs/_esm2015/operator/retryWhen.js.map | 1 + node_modules/rxjs/_esm2015/operator/sample.js | 39 + .../rxjs/_esm2015/operator/sample.js.map | 1 + .../rxjs/_esm2015/operator/sampleTime.js | 42 + .../rxjs/_esm2015/operator/sampleTime.js.map | 1 + node_modules/rxjs/_esm2015/operator/scan.js | 46 + .../rxjs/_esm2015/operator/scan.js.map | 1 + .../rxjs/_esm2015/operator/sequenceEqual.js | 57 + .../_esm2015/operator/sequenceEqual.js.map | 1 + node_modules/rxjs/_esm2015/operator/share.js | 22 + .../rxjs/_esm2015/operator/share.js.map | 1 + .../rxjs/_esm2015/operator/shareReplay.js | 10 + .../rxjs/_esm2015/operator/shareReplay.js.map | 1 + node_modules/rxjs/_esm2015/operator/single.js | 21 + .../rxjs/_esm2015/operator/single.js.map | 1 + node_modules/rxjs/_esm2015/operator/skip.js | 16 + .../rxjs/_esm2015/operator/skip.js.map | 1 + .../rxjs/_esm2015/operator/skipLast.js | 37 + .../rxjs/_esm2015/operator/skipLast.js.map | 1 + .../rxjs/_esm2015/operator/skipUntil.js | 17 + .../rxjs/_esm2015/operator/skipUntil.js.map | 1 + .../rxjs/_esm2015/operator/skipWhile.js | 17 + .../rxjs/_esm2015/operator/skipWhile.js.map | 1 + .../rxjs/_esm2015/operator/startWith.js | 20 + .../rxjs/_esm2015/operator/startWith.js.map | 1 + .../rxjs/_esm2015/operator/subscribeOn.js | 16 + .../rxjs/_esm2015/operator/subscribeOn.js.map | 1 + node_modules/rxjs/_esm2015/operator/switch.js | 47 + .../rxjs/_esm2015/operator/switch.js.map | 1 + .../rxjs/_esm2015/operator/switchMap.js | 53 + .../rxjs/_esm2015/operator/switchMap.js.map | 1 + .../rxjs/_esm2015/operator/switchMapTo.js | 48 + .../rxjs/_esm2015/operator/switchMapTo.js.map | 1 + node_modules/rxjs/_esm2015/operator/take.js | 38 + .../rxjs/_esm2015/operator/take.js.map | 1 + .../rxjs/_esm2015/operator/takeLast.js | 41 + .../rxjs/_esm2015/operator/takeLast.js.map | 1 + .../rxjs/_esm2015/operator/takeUntil.js | 38 + .../rxjs/_esm2015/operator/takeUntil.js.map | 1 + .../rxjs/_esm2015/operator/takeWhile.js | 41 + .../rxjs/_esm2015/operator/takeWhile.js.map | 1 + .../rxjs/_esm2015/operator/throttle.js | 45 + .../rxjs/_esm2015/operator/throttle.js.map | 1 + .../rxjs/_esm2015/operator/throttleTime.js | 46 + .../_esm2015/operator/throttleTime.js.map | 1 + .../rxjs/_esm2015/operator/timeInterval.js | 13 + .../_esm2015/operator/timeInterval.js.map | 1 + .../rxjs/_esm2015/operator/timeout.js | 71 + .../rxjs/_esm2015/operator/timeout.js.map | 1 + .../rxjs/_esm2015/operator/timeoutWith.js | 54 + .../rxjs/_esm2015/operator/timeoutWith.js.map | 1 + .../rxjs/_esm2015/operator/timestamp.js | 12 + .../rxjs/_esm2015/operator/timestamp.js.map | 1 + .../rxjs/_esm2015/operator/toArray.js | 28 + .../rxjs/_esm2015/operator/toArray.js.map | 1 + .../rxjs/_esm2015/operator/toPromise.js | 5 + .../rxjs/_esm2015/operator/toPromise.js.map | 1 + node_modules/rxjs/_esm2015/operator/window.js | 41 + .../rxjs/_esm2015/operator/window.js.map | 1 + .../rxjs/_esm2015/operator/windowCount.js | 53 + .../rxjs/_esm2015/operator/windowCount.js.map | 1 + .../rxjs/_esm2015/operator/windowTime.js | 26 + .../rxjs/_esm2015/operator/windowTime.js.map | 1 + .../rxjs/_esm2015/operator/windowToggle.js | 46 + .../_esm2015/operator/windowToggle.js.map | 1 + .../rxjs/_esm2015/operator/windowWhen.js | 43 + .../rxjs/_esm2015/operator/windowWhen.js.map | 1 + .../rxjs/_esm2015/operator/withLatestFrom.js | 44 + .../_esm2015/operator/withLatestFrom.js.map | 1 + node_modules/rxjs/_esm2015/operator/zip.js | 12 + .../rxjs/_esm2015/operator/zip.js.map | 1 + node_modules/rxjs/_esm2015/operator/zipAll.js | 11 + .../rxjs/_esm2015/operator/zipAll.js.map | 1 + node_modules/rxjs/_esm2015/operators.js | 109 + node_modules/rxjs/_esm2015/operators.js.map | 1 + node_modules/rxjs/_esm2015/operators/audit.js | 108 + .../rxjs/_esm2015/operators/audit.js.map | 1 + .../rxjs/_esm2015/operators/auditTime.js | 49 + .../rxjs/_esm2015/operators/auditTime.js.map | 1 + .../rxjs/_esm2015/operators/buffer.js | 68 + .../rxjs/_esm2015/operators/buffer.js.map | 1 + .../rxjs/_esm2015/operators/bufferCount.js | 129 + .../_esm2015/operators/bufferCount.js.map | 1 + .../rxjs/_esm2015/operators/bufferTime.js | 190 + .../rxjs/_esm2015/operators/bufferTime.js.map | 1 + .../rxjs/_esm2015/operators/bufferToggle.js | 144 + .../_esm2015/operators/bufferToggle.js.map | 1 + .../rxjs/_esm2015/operators/bufferWhen.js | 114 + .../rxjs/_esm2015/operators/bufferWhen.js.map | 1 + .../rxjs/_esm2015/operators/catchError.js | 106 + .../rxjs/_esm2015/operators/catchError.js.map | 1 + .../rxjs/_esm2015/operators/combineAll.js | 5 + .../rxjs/_esm2015/operators/combineAll.js.map | 1 + .../rxjs/_esm2015/operators/combineLatest.js | 135 + .../_esm2015/operators/combineLatest.js.map | 1 + .../rxjs/_esm2015/operators/concat.js | 56 + .../rxjs/_esm2015/operators/concat.js.map | 1 + .../rxjs/_esm2015/operators/concatAll.js | 53 + .../rxjs/_esm2015/operators/concatAll.js.map | 1 + .../rxjs/_esm2015/operators/concatMap.js | 65 + .../rxjs/_esm2015/operators/concatMap.js.map | 1 + .../rxjs/_esm2015/operators/concatMapTo.js | 62 + .../_esm2015/operators/concatMapTo.js.map | 1 + node_modules/rxjs/_esm2015/operators/count.js | 101 + .../rxjs/_esm2015/operators/count.js.map | 1 + .../rxjs/_esm2015/operators/debounce.js | 117 + .../rxjs/_esm2015/operators/debounce.js.map | 1 + .../rxjs/_esm2015/operators/debounceTime.js | 105 + .../_esm2015/operators/debounceTime.js.map | 1 + .../rxjs/_esm2015/operators/defaultIfEmpty.js | 66 + .../_esm2015/operators/defaultIfEmpty.js.map | 1 + node_modules/rxjs/_esm2015/operators/delay.js | 124 + .../rxjs/_esm2015/operators/delay.js.map | 1 + .../rxjs/_esm2015/operators/delayWhen.js | 178 + .../rxjs/_esm2015/operators/delayWhen.js.map | 1 + .../rxjs/_esm2015/operators/dematerialize.js | 65 + .../_esm2015/operators/dematerialize.js.map | 1 + .../rxjs/_esm2015/operators/distinct.js | 109 + .../rxjs/_esm2015/operators/distinct.js.map | 1 + .../operators/distinctUntilChanged.js | 98 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.js | 63 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../rxjs/_esm2015/operators/elementAt.js | 90 + .../rxjs/_esm2015/operators/elementAt.js.map | 1 + node_modules/rxjs/_esm2015/operators/every.js | 64 + .../rxjs/_esm2015/operators/every.js.map | 1 + .../rxjs/_esm2015/operators/exhaust.js | 77 + .../rxjs/_esm2015/operators/exhaust.js.map | 1 + .../rxjs/_esm2015/operators/exhaustMap.js | 128 + .../rxjs/_esm2015/operators/exhaustMap.js.map | 1 + .../rxjs/_esm2015/operators/expand.js | 137 + .../rxjs/_esm2015/operators/expand.js.map | 1 + .../rxjs/_esm2015/operators/filter.js | 84 + .../rxjs/_esm2015/operators/filter.js.map | 1 + .../rxjs/_esm2015/operators/finalize.js | 33 + .../rxjs/_esm2015/operators/finalize.js.map | 1 + node_modules/rxjs/_esm2015/operators/find.js | 88 + .../rxjs/_esm2015/operators/find.js.map | 1 + .../rxjs/_esm2015/operators/findIndex.js | 39 + .../rxjs/_esm2015/operators/findIndex.js.map | 1 + node_modules/rxjs/_esm2015/operators/first.js | 142 + .../rxjs/_esm2015/operators/first.js.map | 1 + .../rxjs/_esm2015/operators/groupBy.js | 257 + .../rxjs/_esm2015/operators/groupBy.js.map | 1 + .../rxjs/_esm2015/operators/ignoreElements.js | 33 + .../_esm2015/operators/ignoreElements.js.map | 1 + .../rxjs/_esm2015/operators/isEmpty.js | 31 + .../rxjs/_esm2015/operators/isEmpty.js.map | 1 + node_modules/rxjs/_esm2015/operators/last.js | 109 + .../rxjs/_esm2015/operators/last.js.map | 1 + node_modules/rxjs/_esm2015/operators/map.js | 78 + .../rxjs/_esm2015/operators/map.js.map | 1 + node_modules/rxjs/_esm2015/operators/mapTo.js | 53 + .../rxjs/_esm2015/operators/mapTo.js.map | 1 + .../rxjs/_esm2015/operators/materialize.js | 80 + .../_esm2015/operators/materialize.js.map | 1 + node_modules/rxjs/_esm2015/operators/max.js | 39 + .../rxjs/_esm2015/operators/max.js.map | 1 + node_modules/rxjs/_esm2015/operators/merge.js | 53 + .../rxjs/_esm2015/operators/merge.js.map | 1 + .../rxjs/_esm2015/operators/mergeAll.js | 50 + .../rxjs/_esm2015/operators/mergeAll.js.map | 1 + .../rxjs/_esm2015/operators/mergeMap.js | 158 + .../rxjs/_esm2015/operators/mergeMap.js.map | 1 + .../rxjs/_esm2015/operators/mergeMapTo.js | 140 + .../rxjs/_esm2015/operators/mergeMapTo.js.map | 1 + .../rxjs/_esm2015/operators/mergeScan.js | 116 + .../rxjs/_esm2015/operators/mergeScan.js.map | 1 + node_modules/rxjs/_esm2015/operators/min.js | 39 + .../rxjs/_esm2015/operators/min.js.map | 1 + .../rxjs/_esm2015/operators/multicast.js | 55 + .../rxjs/_esm2015/operators/multicast.js.map | 1 + .../rxjs/_esm2015/operators/observeOn.js | 98 + .../rxjs/_esm2015/operators/observeOn.js.map | 1 + .../_esm2015/operators/onErrorResumeNext.js | 118 + .../operators/onErrorResumeNext.js.map | 1 + .../rxjs/_esm2015/operators/pairwise.js | 65 + .../rxjs/_esm2015/operators/pairwise.js.map | 1 + .../rxjs/_esm2015/operators/partition.js | 50 + .../rxjs/_esm2015/operators/partition.js.map | 1 + node_modules/rxjs/_esm2015/operators/pluck.js | 51 + .../rxjs/_esm2015/operators/pluck.js.map | 1 + .../rxjs/_esm2015/operators/publish.js | 22 + .../rxjs/_esm2015/operators/publish.js.map | 1 + .../_esm2015/operators/publishBehavior.js | 12 + .../_esm2015/operators/publishBehavior.js.map | 1 + .../rxjs/_esm2015/operators/publishLast.js | 6 + .../_esm2015/operators/publishLast.js.map | 1 + .../rxjs/_esm2015/operators/publishReplay.js | 12 + .../_esm2015/operators/publishReplay.js.map | 1 + node_modules/rxjs/_esm2015/operators/race.js | 22 + .../rxjs/_esm2015/operators/race.js.map | 1 + .../rxjs/_esm2015/operators/reduce.js | 67 + .../rxjs/_esm2015/operators/reduce.js.map | 1 + .../rxjs/_esm2015/operators/refCount.js | 75 + .../rxjs/_esm2015/operators/refCount.js.map | 1 + .../rxjs/_esm2015/operators/repeat.js | 61 + .../rxjs/_esm2015/operators/repeat.js.map | 1 + .../rxjs/_esm2015/operators/repeatWhen.js | 98 + .../rxjs/_esm2015/operators/repeatWhen.js.map | 1 + node_modules/rxjs/_esm2015/operators/retry.js | 54 + .../rxjs/_esm2015/operators/retry.js.map | 1 + .../rxjs/_esm2015/operators/retryWhen.js | 91 + .../rxjs/_esm2015/operators/retryWhen.js.map | 1 + .../rxjs/_esm2015/operators/sample.js | 78 + .../rxjs/_esm2015/operators/sample.js.map | 1 + .../rxjs/_esm2015/operators/sampleTime.js | 80 + .../rxjs/_esm2015/operators/sampleTime.js.map | 1 + node_modules/rxjs/_esm2015/operators/scan.js | 106 + .../rxjs/_esm2015/operators/scan.js.map | 1 + .../rxjs/_esm2015/operators/sequenceEqual.js | 150 + .../_esm2015/operators/sequenceEqual.js.map | 1 + node_modules/rxjs/_esm2015/operators/share.js | 23 + .../rxjs/_esm2015/operators/share.js.map | 1 + .../rxjs/_esm2015/operators/shareReplay.js | 43 + .../_esm2015/operators/shareReplay.js.map | 1 + .../rxjs/_esm2015/operators/single.js | 83 + .../rxjs/_esm2015/operators/single.js.map | 1 + node_modules/rxjs/_esm2015/operators/skip.js | 41 + .../rxjs/_esm2015/operators/skip.js.map | 1 + .../rxjs/_esm2015/operators/skipLast.js | 83 + .../rxjs/_esm2015/operators/skipLast.js.map | 1 + .../rxjs/_esm2015/operators/skipUntil.js | 61 + .../rxjs/_esm2015/operators/skipUntil.js.map | 1 + .../rxjs/_esm2015/operators/skipWhile.js | 56 + .../rxjs/_esm2015/operators/skipWhile.js.map | 1 + .../rxjs/_esm2015/operators/startWith.js | 42 + .../rxjs/_esm2015/operators/startWith.js.map | 1 + .../rxjs/_esm2015/operators/subscribeOn.js | 27 + .../_esm2015/operators/subscribeOn.js.map | 1 + .../rxjs/_esm2015/operators/switchAll.js | 6 + .../rxjs/_esm2015/operators/switchAll.js.map | 1 + .../rxjs/_esm2015/operators/switchMap.js | 132 + .../rxjs/_esm2015/operators/switchMap.js.map | 1 + .../rxjs/_esm2015/operators/switchMapTo.js | 115 + .../_esm2015/operators/switchMapTo.js.map | 1 + node_modules/rxjs/_esm2015/operators/take.js | 81 + .../rxjs/_esm2015/operators/take.js.map | 1 + .../rxjs/_esm2015/operators/takeLast.js | 99 + .../rxjs/_esm2015/operators/takeLast.js.map | 1 + .../rxjs/_esm2015/operators/takeUntil.js | 65 + .../rxjs/_esm2015/operators/takeUntil.js.map | 1 + .../rxjs/_esm2015/operators/takeWhile.js | 82 + .../rxjs/_esm2015/operators/takeWhile.js.map | 1 + node_modules/rxjs/_esm2015/operators/tap.js | 103 + .../rxjs/_esm2015/operators/tap.js.map | 1 + .../rxjs/_esm2015/operators/throttle.js | 131 + .../rxjs/_esm2015/operators/throttle.js.map | 1 + .../rxjs/_esm2015/operators/throttleTime.js | 104 + .../_esm2015/operators/throttleTime.js.map | 1 + .../rxjs/_esm2015/operators/timeInterval.js | 40 + .../_esm2015/operators/timeInterval.js.map | 1 + .../rxjs/_esm2015/operators/timeout.js | 130 + .../rxjs/_esm2015/operators/timeout.js.map | 1 + .../rxjs/_esm2015/operators/timeoutWith.js | 117 + .../_esm2015/operators/timeoutWith.js.map | 1 + .../rxjs/_esm2015/operators/timestamp.js | 20 + .../rxjs/_esm2015/operators/timestamp.js.map | 1 + .../rxjs/_esm2015/operators/toArray.js | 12 + .../rxjs/_esm2015/operators/toArray.js.map | 1 + .../rxjs/_esm2015/operators/window.js | 102 + .../rxjs/_esm2015/operators/window.js.map | 1 + .../rxjs/_esm2015/operators/windowCount.js | 122 + .../_esm2015/operators/windowCount.js.map | 1 + .../rxjs/_esm2015/operators/windowTime.js | 147 + .../rxjs/_esm2015/operators/windowTime.js.map | 1 + .../rxjs/_esm2015/operators/windowToggle.js | 170 + .../_esm2015/operators/windowToggle.js.map | 1 + .../rxjs/_esm2015/operators/windowWhen.js | 118 + .../rxjs/_esm2015/operators/windowWhen.js.map | 1 + .../rxjs/_esm2015/operators/withLatestFrom.js | 118 + .../_esm2015/operators/withLatestFrom.js.map | 1 + node_modules/rxjs/_esm2015/operators/zip.js | 255 + .../rxjs/_esm2015/operators/zip.js.map | 1 + .../rxjs/_esm2015/operators/zipAll.js | 5 + .../rxjs/_esm2015/operators/zipAll.js.map | 1 + node_modules/rxjs/_esm2015/path-mapping.js | 465 + .../rxjs/_esm2015/scheduler/Action.js | 34 + .../rxjs/_esm2015/scheduler/Action.js.map | 1 + .../scheduler/AnimationFrameAction.js | 44 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.js | 25 + .../scheduler/AnimationFrameScheduler.js.map | 1 + .../rxjs/_esm2015/scheduler/AsapAction.js | 44 + .../rxjs/_esm2015/scheduler/AsapAction.js.map | 1 + .../rxjs/_esm2015/scheduler/AsapScheduler.js | 25 + .../_esm2015/scheduler/AsapScheduler.js.map | 1 + .../rxjs/_esm2015/scheduler/AsyncAction.js | 130 + .../_esm2015/scheduler/AsyncAction.js.map | 1 + .../rxjs/_esm2015/scheduler/AsyncScheduler.js | 42 + .../_esm2015/scheduler/AsyncScheduler.js.map | 1 + .../rxjs/_esm2015/scheduler/QueueAction.js | 38 + .../_esm2015/scheduler/QueueAction.js.map | 1 + .../rxjs/_esm2015/scheduler/QueueScheduler.js | 4 + .../_esm2015/scheduler/QueueScheduler.js.map | 1 + .../scheduler/VirtualTimeScheduler.js | 94 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../rxjs/_esm2015/scheduler/animationFrame.js | 34 + .../_esm2015/scheduler/animationFrame.js.map | 1 + node_modules/rxjs/_esm2015/scheduler/asap.js | 38 + .../rxjs/_esm2015/scheduler/asap.js.map | 1 + node_modules/rxjs/_esm2015/scheduler/async.js | 46 + .../rxjs/_esm2015/scheduler/async.js.map | 1 + node_modules/rxjs/_esm2015/scheduler/queue.js | 65 + .../rxjs/_esm2015/scheduler/queue.js.map | 1 + node_modules/rxjs/_esm2015/symbol/iterator.js | 36 + .../rxjs/_esm2015/symbol/iterator.js.map | 1 + .../rxjs/_esm2015/symbol/observable.js | 24 + .../rxjs/_esm2015/symbol/observable.js.map | 1 + .../rxjs/_esm2015/symbol/rxSubscriber.js | 9 + .../rxjs/_esm2015/symbol/rxSubscriber.js.map | 1 + .../rxjs/_esm2015/testing/ColdObservable.js | 34 + .../_esm2015/testing/ColdObservable.js.map | 1 + .../rxjs/_esm2015/testing/HotObservable.js | 39 + .../_esm2015/testing/HotObservable.js.map | 1 + .../rxjs/_esm2015/testing/SubscriptionLog.js | 7 + .../_esm2015/testing/SubscriptionLog.js.map | 1 + .../_esm2015/testing/SubscriptionLoggable.js | 16 + .../testing/SubscriptionLoggable.js.map | 1 + .../rxjs/_esm2015/testing/TestMessage.js | 1 + .../rxjs/_esm2015/testing/TestMessage.js.map | 1 + .../rxjs/_esm2015/testing/TestScheduler.js | 208 + .../_esm2015/testing/TestScheduler.js.map | 1 + .../rxjs/_esm2015/util/AnimationFrame.js | 31 + .../rxjs/_esm2015/util/AnimationFrame.js.map | 1 + .../_esm2015/util/ArgumentOutOfRangeError.js | 19 + .../util/ArgumentOutOfRangeError.js.map | 1 + node_modules/rxjs/_esm2015/util/EmptyError.js | 19 + .../rxjs/_esm2015/util/EmptyError.js.map | 1 + node_modules/rxjs/_esm2015/util/FastMap.js | 28 + .../rxjs/_esm2015/util/FastMap.js.map | 1 + node_modules/rxjs/_esm2015/util/Immediate.js | 201 + .../rxjs/_esm2015/util/Immediate.js.map | 1 + node_modules/rxjs/_esm2015/util/Map.js | 4 + node_modules/rxjs/_esm2015/util/Map.js.map | 1 + .../rxjs/_esm2015/util/MapPolyfill.js | 44 + .../rxjs/_esm2015/util/MapPolyfill.js.map | 1 + .../_esm2015/util/ObjectUnsubscribedError.js | 18 + .../util/ObjectUnsubscribedError.js.map | 1 + node_modules/rxjs/_esm2015/util/Set.js | 27 + node_modules/rxjs/_esm2015/util/Set.js.map | 1 + .../rxjs/_esm2015/util/TimeoutError.js | 16 + .../rxjs/_esm2015/util/TimeoutError.js.map | 1 + .../rxjs/_esm2015/util/UnsubscriptionError.js | 17 + .../_esm2015/util/UnsubscriptionError.js.map | 1 + .../rxjs/_esm2015/util/applyMixins.js | 11 + .../rxjs/_esm2015/util/applyMixins.js.map | 1 + node_modules/rxjs/_esm2015/util/assign.js | 19 + node_modules/rxjs/_esm2015/util/assign.js.map | 1 + .../rxjs/_esm2015/util/errorObject.js | 3 + .../rxjs/_esm2015/util/errorObject.js.map | 1 + node_modules/rxjs/_esm2015/util/identity.js | 4 + .../rxjs/_esm2015/util/identity.js.map | 1 + node_modules/rxjs/_esm2015/util/isArray.js | 2 + .../rxjs/_esm2015/util/isArray.js.map | 1 + .../rxjs/_esm2015/util/isArrayLike.js | 2 + .../rxjs/_esm2015/util/isArrayLike.js.map | 1 + node_modules/rxjs/_esm2015/util/isDate.js | 4 + node_modules/rxjs/_esm2015/util/isDate.js.map | 1 + node_modules/rxjs/_esm2015/util/isFunction.js | 4 + .../rxjs/_esm2015/util/isFunction.js.map | 1 + node_modules/rxjs/_esm2015/util/isNumeric.js | 10 + .../rxjs/_esm2015/util/isNumeric.js.map | 1 + node_modules/rxjs/_esm2015/util/isObject.js | 4 + .../rxjs/_esm2015/util/isObject.js.map | 1 + node_modules/rxjs/_esm2015/util/isPromise.js | 4 + .../rxjs/_esm2015/util/isPromise.js.map | 1 + .../rxjs/_esm2015/util/isScheduler.js | 4 + .../rxjs/_esm2015/util/isScheduler.js.map | 1 + node_modules/rxjs/_esm2015/util/noop.js | 3 + node_modules/rxjs/_esm2015/util/noop.js.map | 1 + node_modules/rxjs/_esm2015/util/not.js | 9 + node_modules/rxjs/_esm2015/util/not.js.map | 1 + node_modules/rxjs/_esm2015/util/pipe.js | 18 + node_modules/rxjs/_esm2015/util/pipe.js.map | 1 + node_modules/rxjs/_esm2015/util/root.js | 18 + node_modules/rxjs/_esm2015/util/root.js.map | 1 + .../rxjs/_esm2015/util/subscribeToResult.js | 77 + .../_esm2015/util/subscribeToResult.js.map | 1 + .../rxjs/_esm2015/util/toSubscriber.js | 18 + .../rxjs/_esm2015/util/toSubscriber.js.map | 1 + node_modules/rxjs/_esm2015/util/tryCatch.js | 17 + .../rxjs/_esm2015/util/tryCatch.js.map | 1 + node_modules/rxjs/_esm5/AsyncSubject.js | 54 + node_modules/rxjs/_esm5/AsyncSubject.js.map | 1 + node_modules/rxjs/_esm5/BehaviorSubject.js | 50 + .../rxjs/_esm5/BehaviorSubject.js.map | 1 + node_modules/rxjs/_esm5/InnerSubscriber.js | 37 + .../rxjs/_esm5/InnerSubscriber.js.map | 1 + node_modules/rxjs/_esm5/LICENSE.txt | 202 + node_modules/rxjs/_esm5/Notification.js | 126 + node_modules/rxjs/_esm5/Notification.js.map | 1 + node_modules/rxjs/_esm5/Observable.js | 304 + node_modules/rxjs/_esm5/Observable.js.map | 1 + node_modules/rxjs/_esm5/Observer.js | 8 + node_modules/rxjs/_esm5/Observer.js.map | 1 + node_modules/rxjs/_esm5/Operator.js | 1 + node_modules/rxjs/_esm5/Operator.js.map | 1 + node_modules/rxjs/_esm5/OuterSubscriber.js | 31 + .../rxjs/_esm5/OuterSubscriber.js.map | 1 + node_modules/rxjs/_esm5/README.md | 206 + node_modules/rxjs/_esm5/ReplaySubject.js | 107 + node_modules/rxjs/_esm5/ReplaySubject.js.map | 1 + node_modules/rxjs/_esm5/Rx.js | 205 + node_modules/rxjs/_esm5/Rx.js.map | 1 + node_modules/rxjs/_esm5/Scheduler.js | 51 + node_modules/rxjs/_esm5/Scheduler.js.map | 1 + node_modules/rxjs/_esm5/Subject.js | 167 + node_modules/rxjs/_esm5/Subject.js.map | 1 + .../rxjs/_esm5/SubjectSubscription.js | 41 + .../rxjs/_esm5/SubjectSubscription.js.map | 1 + node_modules/rxjs/_esm5/Subscriber.js | 272 + node_modules/rxjs/_esm5/Subscriber.js.map | 1 + node_modules/rxjs/_esm5/Subscription.js | 192 + node_modules/rxjs/_esm5/Subscription.js.map | 1 + .../rxjs/_esm5/add/observable/bindCallback.js | 5 + .../_esm5/add/observable/bindCallback.js.map | 1 + .../_esm5/add/observable/bindNodeCallback.js | 5 + .../add/observable/bindNodeCallback.js.map | 1 + .../_esm5/add/observable/combineLatest.js | 5 + .../_esm5/add/observable/combineLatest.js.map | 1 + .../rxjs/_esm5/add/observable/concat.js | 5 + .../rxjs/_esm5/add/observable/concat.js.map | 1 + .../rxjs/_esm5/add/observable/defer.js | 5 + .../rxjs/_esm5/add/observable/defer.js.map | 1 + .../rxjs/_esm5/add/observable/dom/ajax.js | 5 + .../rxjs/_esm5/add/observable/dom/ajax.js.map | 1 + .../_esm5/add/observable/dom/webSocket.js | 5 + .../_esm5/add/observable/dom/webSocket.js.map | 1 + .../rxjs/_esm5/add/observable/empty.js | 5 + .../rxjs/_esm5/add/observable/empty.js.map | 1 + .../rxjs/_esm5/add/observable/forkJoin.js | 5 + .../rxjs/_esm5/add/observable/forkJoin.js.map | 1 + .../rxjs/_esm5/add/observable/from.js | 5 + .../rxjs/_esm5/add/observable/from.js.map | 1 + .../rxjs/_esm5/add/observable/fromEvent.js | 5 + .../_esm5/add/observable/fromEvent.js.map | 1 + .../_esm5/add/observable/fromEventPattern.js | 5 + .../add/observable/fromEventPattern.js.map | 1 + .../rxjs/_esm5/add/observable/fromPromise.js | 5 + .../_esm5/add/observable/fromPromise.js.map | 1 + .../rxjs/_esm5/add/observable/generate.js | 5 + .../rxjs/_esm5/add/observable/generate.js.map | 1 + node_modules/rxjs/_esm5/add/observable/if.js | 5 + .../rxjs/_esm5/add/observable/if.js.map | 1 + .../rxjs/_esm5/add/observable/interval.js | 5 + .../rxjs/_esm5/add/observable/interval.js.map | 1 + .../rxjs/_esm5/add/observable/merge.js | 5 + .../rxjs/_esm5/add/observable/merge.js.map | 1 + .../rxjs/_esm5/add/observable/never.js | 5 + .../rxjs/_esm5/add/observable/never.js.map | 1 + node_modules/rxjs/_esm5/add/observable/of.js | 5 + .../rxjs/_esm5/add/observable/of.js.map | 1 + .../_esm5/add/observable/onErrorResumeNext.js | 5 + .../add/observable/onErrorResumeNext.js.map | 1 + .../rxjs/_esm5/add/observable/pairs.js | 5 + .../rxjs/_esm5/add/observable/pairs.js.map | 1 + .../rxjs/_esm5/add/observable/race.js | 5 + .../rxjs/_esm5/add/observable/race.js.map | 1 + .../rxjs/_esm5/add/observable/range.js | 5 + .../rxjs/_esm5/add/observable/range.js.map | 1 + .../rxjs/_esm5/add/observable/throw.js | 5 + .../rxjs/_esm5/add/observable/throw.js.map | 1 + .../rxjs/_esm5/add/observable/timer.js | 5 + .../rxjs/_esm5/add/observable/timer.js.map | 1 + .../rxjs/_esm5/add/observable/using.js | 5 + .../rxjs/_esm5/add/observable/using.js.map | 1 + node_modules/rxjs/_esm5/add/observable/zip.js | 5 + .../rxjs/_esm5/add/observable/zip.js.map | 1 + node_modules/rxjs/_esm5/add/operator/audit.js | 5 + .../rxjs/_esm5/add/operator/audit.js.map | 1 + .../rxjs/_esm5/add/operator/auditTime.js | 5 + .../rxjs/_esm5/add/operator/auditTime.js.map | 1 + .../rxjs/_esm5/add/operator/buffer.js | 5 + .../rxjs/_esm5/add/operator/buffer.js.map | 1 + .../rxjs/_esm5/add/operator/bufferCount.js | 5 + .../_esm5/add/operator/bufferCount.js.map | 1 + .../rxjs/_esm5/add/operator/bufferTime.js | 5 + .../rxjs/_esm5/add/operator/bufferTime.js.map | 1 + .../rxjs/_esm5/add/operator/bufferToggle.js | 5 + .../_esm5/add/operator/bufferToggle.js.map | 1 + .../rxjs/_esm5/add/operator/bufferWhen.js | 5 + .../rxjs/_esm5/add/operator/bufferWhen.js.map | 1 + node_modules/rxjs/_esm5/add/operator/catch.js | 6 + .../rxjs/_esm5/add/operator/catch.js.map | 1 + .../rxjs/_esm5/add/operator/combineAll.js | 5 + .../rxjs/_esm5/add/operator/combineAll.js.map | 1 + .../rxjs/_esm5/add/operator/combineLatest.js | 5 + .../_esm5/add/operator/combineLatest.js.map | 1 + .../rxjs/_esm5/add/operator/concat.js | 5 + .../rxjs/_esm5/add/operator/concat.js.map | 1 + .../rxjs/_esm5/add/operator/concatAll.js | 5 + .../rxjs/_esm5/add/operator/concatAll.js.map | 1 + .../rxjs/_esm5/add/operator/concatMap.js | 5 + .../rxjs/_esm5/add/operator/concatMap.js.map | 1 + .../rxjs/_esm5/add/operator/concatMapTo.js | 5 + .../_esm5/add/operator/concatMapTo.js.map | 1 + node_modules/rxjs/_esm5/add/operator/count.js | 5 + .../rxjs/_esm5/add/operator/count.js.map | 1 + .../rxjs/_esm5/add/operator/debounce.js | 5 + .../rxjs/_esm5/add/operator/debounce.js.map | 1 + .../rxjs/_esm5/add/operator/debounceTime.js | 5 + .../_esm5/add/operator/debounceTime.js.map | 1 + .../rxjs/_esm5/add/operator/defaultIfEmpty.js | 5 + .../_esm5/add/operator/defaultIfEmpty.js.map | 1 + node_modules/rxjs/_esm5/add/operator/delay.js | 5 + .../rxjs/_esm5/add/operator/delay.js.map | 1 + .../rxjs/_esm5/add/operator/delayWhen.js | 5 + .../rxjs/_esm5/add/operator/delayWhen.js.map | 1 + .../rxjs/_esm5/add/operator/dematerialize.js | 5 + .../_esm5/add/operator/dematerialize.js.map | 1 + .../rxjs/_esm5/add/operator/distinct.js | 5 + .../rxjs/_esm5/add/operator/distinct.js.map | 1 + .../add/operator/distinctUntilChanged.js | 5 + .../add/operator/distinctUntilChanged.js.map | 1 + .../add/operator/distinctUntilKeyChanged.js | 5 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/_esm5/add/operator/do.js | 6 + .../rxjs/_esm5/add/operator/do.js.map | 1 + .../rxjs/_esm5/add/operator/elementAt.js | 5 + .../rxjs/_esm5/add/operator/elementAt.js.map | 1 + node_modules/rxjs/_esm5/add/operator/every.js | 5 + .../rxjs/_esm5/add/operator/every.js.map | 1 + .../rxjs/_esm5/add/operator/exhaust.js | 5 + .../rxjs/_esm5/add/operator/exhaust.js.map | 1 + .../rxjs/_esm5/add/operator/exhaustMap.js | 5 + .../rxjs/_esm5/add/operator/exhaustMap.js.map | 1 + .../rxjs/_esm5/add/operator/expand.js | 5 + .../rxjs/_esm5/add/operator/expand.js.map | 1 + .../rxjs/_esm5/add/operator/filter.js | 5 + .../rxjs/_esm5/add/operator/filter.js.map | 1 + .../rxjs/_esm5/add/operator/finally.js | 6 + .../rxjs/_esm5/add/operator/finally.js.map | 1 + node_modules/rxjs/_esm5/add/operator/find.js | 5 + .../rxjs/_esm5/add/operator/find.js.map | 1 + .../rxjs/_esm5/add/operator/findIndex.js | 5 + .../rxjs/_esm5/add/operator/findIndex.js.map | 1 + node_modules/rxjs/_esm5/add/operator/first.js | 5 + .../rxjs/_esm5/add/operator/first.js.map | 1 + .../rxjs/_esm5/add/operator/groupBy.js | 5 + .../rxjs/_esm5/add/operator/groupBy.js.map | 1 + .../rxjs/_esm5/add/operator/ignoreElements.js | 5 + .../_esm5/add/operator/ignoreElements.js.map | 1 + .../rxjs/_esm5/add/operator/isEmpty.js | 5 + .../rxjs/_esm5/add/operator/isEmpty.js.map | 1 + node_modules/rxjs/_esm5/add/operator/last.js | 5 + .../rxjs/_esm5/add/operator/last.js.map | 1 + node_modules/rxjs/_esm5/add/operator/let.js | 6 + .../rxjs/_esm5/add/operator/let.js.map | 1 + node_modules/rxjs/_esm5/add/operator/map.js | 5 + .../rxjs/_esm5/add/operator/map.js.map | 1 + node_modules/rxjs/_esm5/add/operator/mapTo.js | 5 + .../rxjs/_esm5/add/operator/mapTo.js.map | 1 + .../rxjs/_esm5/add/operator/materialize.js | 5 + .../_esm5/add/operator/materialize.js.map | 1 + node_modules/rxjs/_esm5/add/operator/max.js | 5 + .../rxjs/_esm5/add/operator/max.js.map | 1 + node_modules/rxjs/_esm5/add/operator/merge.js | 5 + .../rxjs/_esm5/add/operator/merge.js.map | 1 + .../rxjs/_esm5/add/operator/mergeAll.js | 5 + .../rxjs/_esm5/add/operator/mergeAll.js.map | 1 + .../rxjs/_esm5/add/operator/mergeMap.js | 6 + .../rxjs/_esm5/add/operator/mergeMap.js.map | 1 + .../rxjs/_esm5/add/operator/mergeMapTo.js | 6 + .../rxjs/_esm5/add/operator/mergeMapTo.js.map | 1 + .../rxjs/_esm5/add/operator/mergeScan.js | 5 + .../rxjs/_esm5/add/operator/mergeScan.js.map | 1 + node_modules/rxjs/_esm5/add/operator/min.js | 5 + .../rxjs/_esm5/add/operator/min.js.map | 1 + .../rxjs/_esm5/add/operator/multicast.js | 5 + .../rxjs/_esm5/add/operator/multicast.js.map | 1 + .../rxjs/_esm5/add/operator/observeOn.js | 5 + .../rxjs/_esm5/add/operator/observeOn.js.map | 1 + .../_esm5/add/operator/onErrorResumeNext.js | 5 + .../add/operator/onErrorResumeNext.js.map | 1 + .../rxjs/_esm5/add/operator/pairwise.js | 5 + .../rxjs/_esm5/add/operator/pairwise.js.map | 1 + .../rxjs/_esm5/add/operator/partition.js | 5 + .../rxjs/_esm5/add/operator/partition.js.map | 1 + node_modules/rxjs/_esm5/add/operator/pluck.js | 5 + .../rxjs/_esm5/add/operator/pluck.js.map | 1 + .../rxjs/_esm5/add/operator/publish.js | 5 + .../rxjs/_esm5/add/operator/publish.js.map | 1 + .../_esm5/add/operator/publishBehavior.js | 5 + .../_esm5/add/operator/publishBehavior.js.map | 1 + .../rxjs/_esm5/add/operator/publishLast.js | 5 + .../_esm5/add/operator/publishLast.js.map | 1 + .../rxjs/_esm5/add/operator/publishReplay.js | 5 + .../_esm5/add/operator/publishReplay.js.map | 1 + node_modules/rxjs/_esm5/add/operator/race.js | 5 + .../rxjs/_esm5/add/operator/race.js.map | 1 + .../rxjs/_esm5/add/operator/reduce.js | 5 + .../rxjs/_esm5/add/operator/reduce.js.map | 1 + .../rxjs/_esm5/add/operator/repeat.js | 5 + .../rxjs/_esm5/add/operator/repeat.js.map | 1 + .../rxjs/_esm5/add/operator/repeatWhen.js | 5 + .../rxjs/_esm5/add/operator/repeatWhen.js.map | 1 + node_modules/rxjs/_esm5/add/operator/retry.js | 5 + .../rxjs/_esm5/add/operator/retry.js.map | 1 + .../rxjs/_esm5/add/operator/retryWhen.js | 5 + .../rxjs/_esm5/add/operator/retryWhen.js.map | 1 + .../rxjs/_esm5/add/operator/sample.js | 5 + .../rxjs/_esm5/add/operator/sample.js.map | 1 + .../rxjs/_esm5/add/operator/sampleTime.js | 5 + .../rxjs/_esm5/add/operator/sampleTime.js.map | 1 + node_modules/rxjs/_esm5/add/operator/scan.js | 5 + .../rxjs/_esm5/add/operator/scan.js.map | 1 + .../rxjs/_esm5/add/operator/sequenceEqual.js | 5 + .../_esm5/add/operator/sequenceEqual.js.map | 1 + node_modules/rxjs/_esm5/add/operator/share.js | 5 + .../rxjs/_esm5/add/operator/share.js.map | 1 + .../rxjs/_esm5/add/operator/shareReplay.js | 5 + .../_esm5/add/operator/shareReplay.js.map | 1 + .../rxjs/_esm5/add/operator/single.js | 5 + .../rxjs/_esm5/add/operator/single.js.map | 1 + node_modules/rxjs/_esm5/add/operator/skip.js | 5 + .../rxjs/_esm5/add/operator/skip.js.map | 1 + .../rxjs/_esm5/add/operator/skipLast.js | 5 + .../rxjs/_esm5/add/operator/skipLast.js.map | 1 + .../rxjs/_esm5/add/operator/skipUntil.js | 5 + .../rxjs/_esm5/add/operator/skipUntil.js.map | 1 + .../rxjs/_esm5/add/operator/skipWhile.js | 5 + .../rxjs/_esm5/add/operator/skipWhile.js.map | 1 + .../rxjs/_esm5/add/operator/startWith.js | 5 + .../rxjs/_esm5/add/operator/startWith.js.map | 1 + .../rxjs/_esm5/add/operator/subscribeOn.js | 5 + .../_esm5/add/operator/subscribeOn.js.map | 1 + .../rxjs/_esm5/add/operator/switch.js | 6 + .../rxjs/_esm5/add/operator/switch.js.map | 1 + .../rxjs/_esm5/add/operator/switchMap.js | 5 + .../rxjs/_esm5/add/operator/switchMap.js.map | 1 + .../rxjs/_esm5/add/operator/switchMapTo.js | 5 + .../_esm5/add/operator/switchMapTo.js.map | 1 + node_modules/rxjs/_esm5/add/operator/take.js | 5 + .../rxjs/_esm5/add/operator/take.js.map | 1 + .../rxjs/_esm5/add/operator/takeLast.js | 5 + .../rxjs/_esm5/add/operator/takeLast.js.map | 1 + .../rxjs/_esm5/add/operator/takeUntil.js | 5 + .../rxjs/_esm5/add/operator/takeUntil.js.map | 1 + .../rxjs/_esm5/add/operator/takeWhile.js | 5 + .../rxjs/_esm5/add/operator/takeWhile.js.map | 1 + .../rxjs/_esm5/add/operator/throttle.js | 5 + .../rxjs/_esm5/add/operator/throttle.js.map | 1 + .../rxjs/_esm5/add/operator/throttleTime.js | 5 + .../_esm5/add/operator/throttleTime.js.map | 1 + .../rxjs/_esm5/add/operator/timeInterval.js | 5 + .../_esm5/add/operator/timeInterval.js.map | 1 + .../rxjs/_esm5/add/operator/timeout.js | 5 + .../rxjs/_esm5/add/operator/timeout.js.map | 1 + .../rxjs/_esm5/add/operator/timeoutWith.js | 5 + .../_esm5/add/operator/timeoutWith.js.map | 1 + .../rxjs/_esm5/add/operator/timestamp.js | 5 + .../rxjs/_esm5/add/operator/timestamp.js.map | 1 + .../rxjs/_esm5/add/operator/toArray.js | 5 + .../rxjs/_esm5/add/operator/toArray.js.map | 1 + .../rxjs/_esm5/add/operator/toPromise.js | 3 + .../rxjs/_esm5/add/operator/toPromise.js.map | 1 + .../rxjs/_esm5/add/operator/window.js | 5 + .../rxjs/_esm5/add/operator/window.js.map | 1 + .../rxjs/_esm5/add/operator/windowCount.js | 5 + .../_esm5/add/operator/windowCount.js.map | 1 + .../rxjs/_esm5/add/operator/windowTime.js | 5 + .../rxjs/_esm5/add/operator/windowTime.js.map | 1 + .../rxjs/_esm5/add/operator/windowToggle.js | 5 + .../_esm5/add/operator/windowToggle.js.map | 1 + .../rxjs/_esm5/add/operator/windowWhen.js | 5 + .../rxjs/_esm5/add/operator/windowWhen.js.map | 1 + .../rxjs/_esm5/add/operator/withLatestFrom.js | 5 + .../_esm5/add/operator/withLatestFrom.js.map | 1 + node_modules/rxjs/_esm5/add/operator/zip.js | 5 + .../rxjs/_esm5/add/operator/zip.js.map | 1 + .../rxjs/_esm5/add/operator/zipAll.js | 5 + .../rxjs/_esm5/add/operator/zipAll.js.map | 1 + node_modules/rxjs/_esm5/interfaces.js | 1 + node_modules/rxjs/_esm5/interfaces.js.map | 1 + .../_esm5/observable/ArrayLikeObservable.js | 71 + .../observable/ArrayLikeObservable.js.map | 1 + .../rxjs/_esm5/observable/ArrayObservable.js | 123 + .../_esm5/observable/ArrayObservable.js.map | 1 + .../observable/BoundCallbackObservable.js | 267 + .../observable/BoundCallbackObservable.js.map | 1 + .../observable/BoundNodeCallbackObservable.js | 266 + .../BoundNodeCallbackObservable.js.map | 1 + .../_esm5/observable/ConnectableObservable.js | 172 + .../observable/ConnectableObservable.js.map | 1 + .../rxjs/_esm5/observable/DeferObservable.js | 100 + .../_esm5/observable/DeferObservable.js.map | 1 + .../rxjs/_esm5/observable/EmptyObservable.js | 82 + .../_esm5/observable/EmptyObservable.js.map | 1 + .../rxjs/_esm5/observable/ErrorObservable.js | 84 + .../_esm5/observable/ErrorObservable.js.map | 1 + .../_esm5/observable/ForkJoinObservable.js | 203 + .../observable/ForkJoinObservable.js.map | 1 + .../_esm5/observable/FromEventObservable.js | 217 + .../observable/FromEventObservable.js.map | 1 + .../observable/FromEventPatternObservable.js | 114 + .../FromEventPatternObservable.js.map | 1 + .../rxjs/_esm5/observable/FromObservable.js | 123 + .../_esm5/observable/FromObservable.js.map | 1 + .../_esm5/observable/GenerateObservable.js | 137 + .../observable/GenerateObservable.js.map | 1 + .../rxjs/_esm5/observable/IfObservable.js | 62 + .../rxjs/_esm5/observable/IfObservable.js.map | 1 + .../_esm5/observable/IntervalObservable.js | 97 + .../observable/IntervalObservable.js.map | 1 + .../_esm5/observable/IteratorObservable.js | 172 + .../observable/IteratorObservable.js.map | 1 + .../rxjs/_esm5/observable/NeverObservable.js | 60 + .../_esm5/observable/NeverObservable.js.map | 1 + .../rxjs/_esm5/observable/PairsObservable.js | 86 + .../_esm5/observable/PairsObservable.js.map | 1 + .../_esm5/observable/PromiseObservable.js | 122 + .../_esm5/observable/PromiseObservable.js.map | 1 + .../rxjs/_esm5/observable/RangeObservable.js | 101 + .../_esm5/observable/RangeObservable.js.map | 1 + .../rxjs/_esm5/observable/ScalarObservable.js | 59 + .../_esm5/observable/ScalarObservable.js.map | 1 + .../_esm5/observable/SubscribeOnObservable.js | 60 + .../observable/SubscribeOnObservable.js.map | 1 + .../rxjs/_esm5/observable/TimerObservable.js | 112 + .../_esm5/observable/TimerObservable.js.map | 1 + .../rxjs/_esm5/observable/UsingObservable.js | 62 + .../_esm5/observable/UsingObservable.js.map | 1 + .../rxjs/_esm5/observable/bindCallback.js | 4 + .../rxjs/_esm5/observable/bindCallback.js.map | 1 + .../rxjs/_esm5/observable/bindNodeCallback.js | 4 + .../_esm5/observable/bindNodeCallback.js.map | 1 + .../rxjs/_esm5/observable/combineLatest.js | 135 + .../_esm5/observable/combineLatest.js.map | 1 + node_modules/rxjs/_esm5/observable/concat.js | 110 + .../rxjs/_esm5/observable/concat.js.map | 1 + node_modules/rxjs/_esm5/observable/defer.js | 4 + .../rxjs/_esm5/observable/defer.js.map | 1 + .../_esm5/observable/dom/AjaxObservable.js | 419 + .../observable/dom/AjaxObservable.js.map | 1 + .../_esm5/observable/dom/WebSocketSubject.js | 251 + .../observable/dom/WebSocketSubject.js.map | 1 + .../rxjs/_esm5/observable/dom/ajax.js | 4 + .../rxjs/_esm5/observable/dom/ajax.js.map | 1 + .../rxjs/_esm5/observable/dom/webSocket.js | 4 + .../_esm5/observable/dom/webSocket.js.map | 1 + node_modules/rxjs/_esm5/observable/empty.js | 4 + .../rxjs/_esm5/observable/empty.js.map | 1 + .../rxjs/_esm5/observable/forkJoin.js | 4 + .../rxjs/_esm5/observable/forkJoin.js.map | 1 + node_modules/rxjs/_esm5/observable/from.js | 4 + .../rxjs/_esm5/observable/from.js.map | 1 + .../rxjs/_esm5/observable/fromEvent.js | 4 + .../rxjs/_esm5/observable/fromEvent.js.map | 1 + .../rxjs/_esm5/observable/fromEventPattern.js | 4 + .../_esm5/observable/fromEventPattern.js.map | 1 + .../rxjs/_esm5/observable/fromPromise.js | 4 + .../rxjs/_esm5/observable/fromPromise.js.map | 1 + .../rxjs/_esm5/observable/generate.js | 4 + .../rxjs/_esm5/observable/generate.js.map | 1 + node_modules/rxjs/_esm5/observable/if.js | 4 + node_modules/rxjs/_esm5/observable/if.js.map | 1 + .../rxjs/_esm5/observable/interval.js | 4 + .../rxjs/_esm5/observable/interval.js.map | 1 + node_modules/rxjs/_esm5/observable/merge.js | 89 + .../rxjs/_esm5/observable/merge.js.map | 1 + node_modules/rxjs/_esm5/observable/never.js | 4 + .../rxjs/_esm5/observable/never.js.map | 1 + node_modules/rxjs/_esm5/observable/of.js | 4 + node_modules/rxjs/_esm5/observable/of.js.map | 1 + .../_esm5/observable/onErrorResumeNext.js | 4 + .../_esm5/observable/onErrorResumeNext.js.map | 1 + node_modules/rxjs/_esm5/observable/pairs.js | 4 + .../rxjs/_esm5/observable/pairs.js.map | 1 + node_modules/rxjs/_esm5/observable/race.js | 88 + .../rxjs/_esm5/observable/race.js.map | 1 + node_modules/rxjs/_esm5/observable/range.js | 4 + .../rxjs/_esm5/observable/range.js.map | 1 + node_modules/rxjs/_esm5/observable/throw.js | 4 + .../rxjs/_esm5/observable/throw.js.map | 1 + node_modules/rxjs/_esm5/observable/timer.js | 4 + .../rxjs/_esm5/observable/timer.js.map | 1 + node_modules/rxjs/_esm5/observable/using.js | 4 + .../rxjs/_esm5/observable/using.js.map | 1 + node_modules/rxjs/_esm5/observable/zip.js | 4 + node_modules/rxjs/_esm5/observable/zip.js.map | 1 + node_modules/rxjs/_esm5/operator/audit.js | 46 + node_modules/rxjs/_esm5/operator/audit.js.map | 1 + node_modules/rxjs/_esm5/operator/auditTime.js | 52 + .../rxjs/_esm5/operator/auditTime.js.map | 1 + node_modules/rxjs/_esm5/operator/buffer.js | 38 + .../rxjs/_esm5/operator/buffer.js.map | 1 + .../rxjs/_esm5/operator/bufferCount.js | 50 + .../rxjs/_esm5/operator/bufferCount.js.map | 1 + .../rxjs/_esm5/operator/bufferTime.js | 66 + .../rxjs/_esm5/operator/bufferTime.js.map | 1 + .../rxjs/_esm5/operator/bufferToggle.js | 44 + .../rxjs/_esm5/operator/bufferToggle.js.map | 1 + .../rxjs/_esm5/operator/bufferWhen.js | 39 + .../rxjs/_esm5/operator/bufferWhen.js.map | 1 + node_modules/rxjs/_esm5/operator/catch.js | 65 + node_modules/rxjs/_esm5/operator/catch.js.map | 1 + .../rxjs/_esm5/operator/combineAll.js | 46 + .../rxjs/_esm5/operator/combineAll.js.map | 1 + .../rxjs/_esm5/operator/combineLatest.js | 54 + .../rxjs/_esm5/operator/combineLatest.js.map | 1 + node_modules/rxjs/_esm5/operator/concat.js | 61 + .../rxjs/_esm5/operator/concat.js.map | 1 + node_modules/rxjs/_esm5/operator/concatAll.js | 55 + .../rxjs/_esm5/operator/concatAll.js.map | 1 + node_modules/rxjs/_esm5/operator/concatMap.js | 66 + .../rxjs/_esm5/operator/concatMap.js.map | 1 + .../rxjs/_esm5/operator/concatMapTo.js | 63 + .../rxjs/_esm5/operator/concatMapTo.js.map | 1 + node_modules/rxjs/_esm5/operator/count.js | 54 + node_modules/rxjs/_esm5/operator/count.js.map | 1 + node_modules/rxjs/_esm5/operator/debounce.js | 48 + .../rxjs/_esm5/operator/debounce.js.map | 1 + .../rxjs/_esm5/operator/debounceTime.js | 56 + .../rxjs/_esm5/operator/debounceTime.js.map | 1 + .../rxjs/_esm5/operator/defaultIfEmpty.js | 40 + .../rxjs/_esm5/operator/defaultIfEmpty.js.map | 1 + node_modules/rxjs/_esm5/operator/delay.js | 49 + node_modules/rxjs/_esm5/operator/delay.js.map | 1 + node_modules/rxjs/_esm5/operator/delayWhen.js | 51 + .../rxjs/_esm5/operator/delayWhen.js.map | 1 + .../rxjs/_esm5/operator/dematerialize.js | 46 + .../rxjs/_esm5/operator/dematerialize.js.map | 1 + node_modules/rxjs/_esm5/operator/distinct.js | 51 + .../rxjs/_esm5/operator/distinct.js.map | 1 + .../_esm5/operator/distinctUntilChanged.js | 46 + .../operator/distinctUntilChanged.js.map | 1 + .../_esm5/operator/distinctUntilKeyChanged.js | 64 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/_esm5/operator/do.js | 50 + node_modules/rxjs/_esm5/operator/do.js.map | 1 + node_modules/rxjs/_esm5/operator/elementAt.js | 48 + .../rxjs/_esm5/operator/elementAt.js.map | 1 + node_modules/rxjs/_esm5/operator/every.js | 20 + node_modules/rxjs/_esm5/operator/every.js.map | 1 + node_modules/rxjs/_esm5/operator/exhaust.js | 41 + .../rxjs/_esm5/operator/exhaust.js.map | 1 + .../rxjs/_esm5/operator/exhaustMap.js | 52 + .../rxjs/_esm5/operator/exhaustMap.js.map | 1 + node_modules/rxjs/_esm5/operator/expand.js | 59 + .../rxjs/_esm5/operator/expand.js.map | 1 + node_modules/rxjs/_esm5/operator/filter.js | 46 + .../rxjs/_esm5/operator/filter.js.map | 1 + node_modules/rxjs/_esm5/operator/finally.js | 14 + .../rxjs/_esm5/operator/finally.js.map | 1 + node_modules/rxjs/_esm5/operator/find.js | 40 + node_modules/rxjs/_esm5/operator/find.js.map | 1 + node_modules/rxjs/_esm5/operator/findIndex.js | 40 + .../rxjs/_esm5/operator/findIndex.js.map | 1 + node_modules/rxjs/_esm5/operator/first.js | 55 + node_modules/rxjs/_esm5/operator/first.js.map | 1 + node_modules/rxjs/_esm5/operator/groupBy.js | 75 + .../rxjs/_esm5/operator/groupBy.js.map | 1 + .../rxjs/_esm5/operator/ignoreElements.js | 17 + .../rxjs/_esm5/operator/ignoreElements.js.map | 1 + node_modules/rxjs/_esm5/operator/isEmpty.js | 15 + .../rxjs/_esm5/operator/isEmpty.js.map | 1 + node_modules/rxjs/_esm5/operator/last.js | 24 + node_modules/rxjs/_esm5/operator/last.js.map | 1 + node_modules/rxjs/_esm5/operator/let.js | 11 + node_modules/rxjs/_esm5/operator/let.js.map | 1 + node_modules/rxjs/_esm5/operator/map.js | 39 + node_modules/rxjs/_esm5/operator/map.js.map | 1 + node_modules/rxjs/_esm5/operator/mapTo.js | 32 + node_modules/rxjs/_esm5/operator/mapTo.js.map | 1 + .../rxjs/_esm5/operator/materialize.js | 50 + .../rxjs/_esm5/operator/materialize.js.map | 1 + node_modules/rxjs/_esm5/operator/max.js | 37 + node_modules/rxjs/_esm5/operator/max.js.map | 1 + node_modules/rxjs/_esm5/operator/merge.js | 58 + node_modules/rxjs/_esm5/operator/merge.js.map | 1 + node_modules/rxjs/_esm5/operator/mergeAll.js | 53 + .../rxjs/_esm5/operator/mergeAll.js.map | 1 + node_modules/rxjs/_esm5/operator/mergeMap.js | 68 + .../rxjs/_esm5/operator/mergeMap.js.map | 1 + .../rxjs/_esm5/operator/mergeMapTo.js | 53 + .../rxjs/_esm5/operator/mergeMapTo.js.map | 1 + node_modules/rxjs/_esm5/operator/mergeScan.js | 40 + .../rxjs/_esm5/operator/mergeScan.js.map | 1 + node_modules/rxjs/_esm5/operator/min.js | 37 + node_modules/rxjs/_esm5/operator/min.js.map | 1 + node_modules/rxjs/_esm5/operator/multicast.js | 101 + .../rxjs/_esm5/operator/multicast.js.map | 1 + node_modules/rxjs/_esm5/operator/observeOn.js | 55 + .../rxjs/_esm5/operator/observeOn.js.map | 1 + .../rxjs/_esm5/operator/onErrorResumeNext.js | 72 + .../_esm5/operator/onErrorResumeNext.js.map | 1 + node_modules/rxjs/_esm5/operator/pairwise.js | 41 + .../rxjs/_esm5/operator/pairwise.js.map | 1 + node_modules/rxjs/_esm5/operator/partition.js | 47 + .../rxjs/_esm5/operator/partition.js.map | 1 + node_modules/rxjs/_esm5/operator/pluck.js | 36 + node_modules/rxjs/_esm5/operator/pluck.js.map | 1 + node_modules/rxjs/_esm5/operator/publish.js | 20 + .../rxjs/_esm5/operator/publish.js.map | 1 + .../rxjs/_esm5/operator/publishBehavior.js | 12 + .../_esm5/operator/publishBehavior.js.map | 1 + .../rxjs/_esm5/operator/publishLast.js | 12 + .../rxjs/_esm5/operator/publishLast.js.map | 1 + .../rxjs/_esm5/operator/publishReplay.js | 16 + .../rxjs/_esm5/operator/publishReplay.js.map | 1 + node_modules/rxjs/_esm5/operator/race.js | 21 + node_modules/rxjs/_esm5/operator/race.js.map | 1 + node_modules/rxjs/_esm5/operator/reduce.js | 59 + .../rxjs/_esm5/operator/reduce.js.map | 1 + node_modules/rxjs/_esm5/operator/repeat.js | 21 + .../rxjs/_esm5/operator/repeat.js.map | 1 + .../rxjs/_esm5/operator/repeatWhen.js | 20 + .../rxjs/_esm5/operator/repeatWhen.js.map | 1 + node_modules/rxjs/_esm5/operator/retry.js | 25 + node_modules/rxjs/_esm5/operator/retry.js.map | 1 + node_modules/rxjs/_esm5/operator/retryWhen.js | 20 + .../rxjs/_esm5/operator/retryWhen.js.map | 1 + node_modules/rxjs/_esm5/operator/sample.js | 40 + .../rxjs/_esm5/operator/sample.js.map | 1 + .../rxjs/_esm5/operator/sampleTime.js | 46 + .../rxjs/_esm5/operator/sampleTime.js.map | 1 + node_modules/rxjs/_esm5/operator/scan.js | 47 + node_modules/rxjs/_esm5/operator/scan.js.map | 1 + .../rxjs/_esm5/operator/sequenceEqual.js | 58 + .../rxjs/_esm5/operator/sequenceEqual.js.map | 1 + node_modules/rxjs/_esm5/operator/share.js | 23 + node_modules/rxjs/_esm5/operator/share.js.map | 1 + .../rxjs/_esm5/operator/shareReplay.js | 11 + .../rxjs/_esm5/operator/shareReplay.js.map | 1 + node_modules/rxjs/_esm5/operator/single.js | 22 + .../rxjs/_esm5/operator/single.js.map | 1 + node_modules/rxjs/_esm5/operator/skip.js | 17 + node_modules/rxjs/_esm5/operator/skip.js.map | 1 + node_modules/rxjs/_esm5/operator/skipLast.js | 38 + .../rxjs/_esm5/operator/skipLast.js.map | 1 + node_modules/rxjs/_esm5/operator/skipUntil.js | 18 + .../rxjs/_esm5/operator/skipUntil.js.map | 1 + node_modules/rxjs/_esm5/operator/skipWhile.js | 18 + .../rxjs/_esm5/operator/skipWhile.js.map | 1 + node_modules/rxjs/_esm5/operator/startWith.js | 25 + .../rxjs/_esm5/operator/startWith.js.map | 1 + .../rxjs/_esm5/operator/subscribeOn.js | 20 + .../rxjs/_esm5/operator/subscribeOn.js.map | 1 + node_modules/rxjs/_esm5/operator/switch.js | 48 + .../rxjs/_esm5/operator/switch.js.map | 1 + node_modules/rxjs/_esm5/operator/switchMap.js | 54 + .../rxjs/_esm5/operator/switchMap.js.map | 1 + .../rxjs/_esm5/operator/switchMapTo.js | 49 + .../rxjs/_esm5/operator/switchMapTo.js.map | 1 + node_modules/rxjs/_esm5/operator/take.js | 39 + node_modules/rxjs/_esm5/operator/take.js.map | 1 + node_modules/rxjs/_esm5/operator/takeLast.js | 42 + .../rxjs/_esm5/operator/takeLast.js.map | 1 + node_modules/rxjs/_esm5/operator/takeUntil.js | 39 + .../rxjs/_esm5/operator/takeUntil.js.map | 1 + node_modules/rxjs/_esm5/operator/takeWhile.js | 42 + .../rxjs/_esm5/operator/takeWhile.js.map | 1 + node_modules/rxjs/_esm5/operator/throttle.js | 49 + .../rxjs/_esm5/operator/throttle.js.map | 1 + .../rxjs/_esm5/operator/throttleTime.js | 53 + .../rxjs/_esm5/operator/throttleTime.js.map | 1 + .../rxjs/_esm5/operator/timeInterval.js | 17 + .../rxjs/_esm5/operator/timeInterval.js.map | 1 + node_modules/rxjs/_esm5/operator/timeout.js | 75 + .../rxjs/_esm5/operator/timeout.js.map | 1 + .../rxjs/_esm5/operator/timeoutWith.js | 58 + .../rxjs/_esm5/operator/timeoutWith.js.map | 1 + node_modules/rxjs/_esm5/operator/timestamp.js | 16 + .../rxjs/_esm5/operator/timestamp.js.map | 1 + node_modules/rxjs/_esm5/operator/toArray.js | 29 + .../rxjs/_esm5/operator/toArray.js.map | 1 + node_modules/rxjs/_esm5/operator/toPromise.js | 6 + .../rxjs/_esm5/operator/toPromise.js.map | 1 + node_modules/rxjs/_esm5/operator/window.js | 42 + .../rxjs/_esm5/operator/window.js.map | 1 + .../rxjs/_esm5/operator/windowCount.js | 57 + .../rxjs/_esm5/operator/windowCount.js.map | 1 + .../rxjs/_esm5/operator/windowTime.js | 27 + .../rxjs/_esm5/operator/windowTime.js.map | 1 + .../rxjs/_esm5/operator/windowToggle.js | 47 + .../rxjs/_esm5/operator/windowToggle.js.map | 1 + .../rxjs/_esm5/operator/windowWhen.js | 44 + .../rxjs/_esm5/operator/windowWhen.js.map | 1 + .../rxjs/_esm5/operator/withLatestFrom.js | 49 + .../rxjs/_esm5/operator/withLatestFrom.js.map | 1 + node_modules/rxjs/_esm5/operator/zip.js | 17 + node_modules/rxjs/_esm5/operator/zip.js.map | 1 + node_modules/rxjs/_esm5/operator/zipAll.js | 12 + .../rxjs/_esm5/operator/zipAll.js.map | 1 + node_modules/rxjs/_esm5/operators.js | 110 + node_modules/rxjs/_esm5/operators.js.map | 1 + node_modules/rxjs/_esm5/operators/audit.js | 119 + .../rxjs/_esm5/operators/audit.js.map | 1 + .../rxjs/_esm5/operators/auditTime.js | 53 + .../rxjs/_esm5/operators/auditTime.js.map | 1 + node_modules/rxjs/_esm5/operators/buffer.js | 79 + .../rxjs/_esm5/operators/buffer.js.map | 1 + .../rxjs/_esm5/operators/bufferCount.js | 145 + .../rxjs/_esm5/operators/bufferCount.js.map | 1 + .../rxjs/_esm5/operators/bufferTime.js | 202 + .../rxjs/_esm5/operators/bufferTime.js.map | 1 + .../rxjs/_esm5/operators/bufferToggle.js | 155 + .../rxjs/_esm5/operators/bufferToggle.js.map | 1 + .../rxjs/_esm5/operators/bufferWhen.js | 125 + .../rxjs/_esm5/operators/bufferWhen.js.map | 1 + .../rxjs/_esm5/operators/catchError.js | 117 + .../rxjs/_esm5/operators/catchError.js.map | 1 + .../rxjs/_esm5/operators/combineAll.js | 6 + .../rxjs/_esm5/operators/combineAll.js.map | 1 + .../rxjs/_esm5/operators/combineLatest.js | 150 + .../rxjs/_esm5/operators/combineLatest.js.map | 1 + node_modules/rxjs/_esm5/operators/concat.js | 61 + .../rxjs/_esm5/operators/concat.js.map | 1 + .../rxjs/_esm5/operators/concatAll.js | 54 + .../rxjs/_esm5/operators/concatAll.js.map | 1 + .../rxjs/_esm5/operators/concatMap.js | 66 + .../rxjs/_esm5/operators/concatMap.js.map | 1 + .../rxjs/_esm5/operators/concatMapTo.js | 63 + .../rxjs/_esm5/operators/concatMapTo.js.map | 1 + node_modules/rxjs/_esm5/operators/count.js | 112 + .../rxjs/_esm5/operators/count.js.map | 1 + node_modules/rxjs/_esm5/operators/debounce.js | 128 + .../rxjs/_esm5/operators/debounce.js.map | 1 + .../rxjs/_esm5/operators/debounceTime.js | 119 + .../rxjs/_esm5/operators/debounceTime.js.map | 1 + .../rxjs/_esm5/operators/defaultIfEmpty.js | 80 + .../_esm5/operators/defaultIfEmpty.js.map | 1 + node_modules/rxjs/_esm5/operators/delay.js | 139 + .../rxjs/_esm5/operators/delay.js.map | 1 + .../rxjs/_esm5/operators/delayWhen.js | 195 + .../rxjs/_esm5/operators/delayWhen.js.map | 1 + .../rxjs/_esm5/operators/dematerialize.js | 78 + .../rxjs/_esm5/operators/dematerialize.js.map | 1 + node_modules/rxjs/_esm5/operators/distinct.js | 120 + .../rxjs/_esm5/operators/distinct.js.map | 1 + .../_esm5/operators/distinctUntilChanged.js | 109 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.js | 64 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../rxjs/_esm5/operators/elementAt.js | 101 + .../rxjs/_esm5/operators/elementAt.js.map | 1 + node_modules/rxjs/_esm5/operators/every.js | 75 + .../rxjs/_esm5/operators/every.js.map | 1 + node_modules/rxjs/_esm5/operators/exhaust.js | 90 + .../rxjs/_esm5/operators/exhaust.js.map | 1 + .../rxjs/_esm5/operators/exhaustMap.js | 139 + .../rxjs/_esm5/operators/exhaustMap.js.map | 1 + node_modules/rxjs/_esm5/operators/expand.js | 154 + .../rxjs/_esm5/operators/expand.js.map | 1 + node_modules/rxjs/_esm5/operators/filter.js | 95 + .../rxjs/_esm5/operators/filter.js.map | 1 + node_modules/rxjs/_esm5/operators/finalize.js | 44 + .../rxjs/_esm5/operators/finalize.js.map | 1 + node_modules/rxjs/_esm5/operators/find.js | 99 + node_modules/rxjs/_esm5/operators/find.js.map | 1 + .../rxjs/_esm5/operators/findIndex.js | 40 + .../rxjs/_esm5/operators/findIndex.js.map | 1 + node_modules/rxjs/_esm5/operators/first.js | 153 + .../rxjs/_esm5/operators/first.js.map | 1 + node_modules/rxjs/_esm5/operators/groupBy.js | 276 + .../rxjs/_esm5/operators/groupBy.js.map | 1 + .../rxjs/_esm5/operators/ignoreElements.js | 49 + .../_esm5/operators/ignoreElements.js.map | 1 + node_modules/rxjs/_esm5/operators/isEmpty.js | 44 + .../rxjs/_esm5/operators/isEmpty.js.map | 1 + node_modules/rxjs/_esm5/operators/last.js | 120 + node_modules/rxjs/_esm5/operators/last.js.map | 1 + node_modules/rxjs/_esm5/operators/map.js | 89 + node_modules/rxjs/_esm5/operators/map.js.map | 1 + node_modules/rxjs/_esm5/operators/mapTo.js | 64 + .../rxjs/_esm5/operators/mapTo.js.map | 1 + .../rxjs/_esm5/operators/materialize.js | 93 + .../rxjs/_esm5/operators/materialize.js.map | 1 + node_modules/rxjs/_esm5/operators/max.js | 40 + node_modules/rxjs/_esm5/operators/max.js.map | 1 + node_modules/rxjs/_esm5/operators/merge.js | 58 + .../rxjs/_esm5/operators/merge.js.map | 1 + node_modules/rxjs/_esm5/operators/mergeAll.js | 54 + .../rxjs/_esm5/operators/mergeAll.js.map | 1 + node_modules/rxjs/_esm5/operators/mergeMap.js | 178 + .../rxjs/_esm5/operators/mergeMap.js.map | 1 + .../rxjs/_esm5/operators/mergeMapTo.js | 160 + .../rxjs/_esm5/operators/mergeMapTo.js.map | 1 + .../rxjs/_esm5/operators/mergeScan.js | 130 + .../rxjs/_esm5/operators/mergeScan.js.map | 1 + node_modules/rxjs/_esm5/operators/min.js | 40 + node_modules/rxjs/_esm5/operators/min.js.map | 1 + .../rxjs/_esm5/operators/multicast.js | 57 + .../rxjs/_esm5/operators/multicast.js.map | 1 + .../rxjs/_esm5/operators/observeOn.js | 119 + .../rxjs/_esm5/operators/observeOn.js.map | 1 + .../rxjs/_esm5/operators/onErrorResumeNext.js | 137 + .../_esm5/operators/onErrorResumeNext.js.map | 1 + node_modules/rxjs/_esm5/operators/pairwise.js | 78 + .../rxjs/_esm5/operators/pairwise.js.map | 1 + .../rxjs/_esm5/operators/partition.js | 53 + .../rxjs/_esm5/operators/partition.js.map | 1 + node_modules/rxjs/_esm5/operators/pluck.js | 56 + .../rxjs/_esm5/operators/pluck.js.map | 1 + node_modules/rxjs/_esm5/operators/publish.js | 23 + .../rxjs/_esm5/operators/publish.js.map | 1 + .../rxjs/_esm5/operators/publishBehavior.js | 13 + .../_esm5/operators/publishBehavior.js.map | 1 + .../rxjs/_esm5/operators/publishLast.js | 7 + .../rxjs/_esm5/operators/publishLast.js.map | 1 + .../rxjs/_esm5/operators/publishReplay.js | 13 + .../rxjs/_esm5/operators/publishReplay.js.map | 1 + node_modules/rxjs/_esm5/operators/race.js | 27 + node_modules/rxjs/_esm5/operators/race.js.map | 1 + node_modules/rxjs/_esm5/operators/reduce.js | 68 + .../rxjs/_esm5/operators/reduce.js.map | 1 + node_modules/rxjs/_esm5/operators/refCount.js | 86 + .../rxjs/_esm5/operators/refCount.js.map | 1 + node_modules/rxjs/_esm5/operators/repeat.js | 75 + .../rxjs/_esm5/operators/repeat.js.map | 1 + .../rxjs/_esm5/operators/repeatWhen.js | 109 + .../rxjs/_esm5/operators/repeatWhen.js.map | 1 + node_modules/rxjs/_esm5/operators/retry.js | 68 + .../rxjs/_esm5/operators/retry.js.map | 1 + .../rxjs/_esm5/operators/retryWhen.js | 102 + .../rxjs/_esm5/operators/retryWhen.js.map | 1 + node_modules/rxjs/_esm5/operators/sample.js | 89 + .../rxjs/_esm5/operators/sample.js.map | 1 + .../rxjs/_esm5/operators/sampleTime.js | 94 + .../rxjs/_esm5/operators/sampleTime.js.map | 1 + node_modules/rxjs/_esm5/operators/scan.js | 124 + node_modules/rxjs/_esm5/operators/scan.js.map | 1 + .../rxjs/_esm5/operators/sequenceEqual.js | 163 + .../rxjs/_esm5/operators/sequenceEqual.js.map | 1 + node_modules/rxjs/_esm5/operators/share.js | 24 + .../rxjs/_esm5/operators/share.js.map | 1 + .../rxjs/_esm5/operators/shareReplay.js | 44 + .../rxjs/_esm5/operators/shareReplay.js.map | 1 + node_modules/rxjs/_esm5/operators/single.js | 94 + .../rxjs/_esm5/operators/single.js.map | 1 + node_modules/rxjs/_esm5/operators/skip.js | 52 + node_modules/rxjs/_esm5/operators/skip.js.map | 1 + node_modules/rxjs/_esm5/operators/skipLast.js | 94 + .../rxjs/_esm5/operators/skipLast.js.map | 1 + .../rxjs/_esm5/operators/skipUntil.js | 72 + .../rxjs/_esm5/operators/skipUntil.js.map | 1 + .../rxjs/_esm5/operators/skipWhile.js | 67 + .../rxjs/_esm5/operators/skipWhile.js.map | 1 + .../rxjs/_esm5/operators/startWith.js | 47 + .../rxjs/_esm5/operators/startWith.js.map | 1 + .../rxjs/_esm5/operators/subscribeOn.js | 32 + .../rxjs/_esm5/operators/subscribeOn.js.map | 1 + .../rxjs/_esm5/operators/switchAll.js | 7 + .../rxjs/_esm5/operators/switchAll.js.map | 1 + .../rxjs/_esm5/operators/switchMap.js | 143 + .../rxjs/_esm5/operators/switchMap.js.map | 1 + .../rxjs/_esm5/operators/switchMapTo.js | 126 + .../rxjs/_esm5/operators/switchMapTo.js.map | 1 + node_modules/rxjs/_esm5/operators/take.js | 92 + node_modules/rxjs/_esm5/operators/take.js.map | 1 + node_modules/rxjs/_esm5/operators/takeLast.js | 110 + .../rxjs/_esm5/operators/takeLast.js.map | 1 + .../rxjs/_esm5/operators/takeUntil.js | 76 + .../rxjs/_esm5/operators/takeUntil.js.map | 1 + .../rxjs/_esm5/operators/takeWhile.js | 93 + .../rxjs/_esm5/operators/takeWhile.js.map | 1 + node_modules/rxjs/_esm5/operators/tap.js | 114 + node_modules/rxjs/_esm5/operators/tap.js.map | 1 + node_modules/rxjs/_esm5/operators/throttle.js | 145 + .../rxjs/_esm5/operators/throttle.js.map | 1 + .../rxjs/_esm5/operators/throttleTime.js | 121 + .../rxjs/_esm5/operators/throttleTime.js.map | 1 + .../rxjs/_esm5/operators/timeInterval.js | 55 + .../rxjs/_esm5/operators/timeInterval.js.map | 1 + node_modules/rxjs/_esm5/operators/timeout.js | 144 + .../rxjs/_esm5/operators/timeout.js.map | 1 + .../rxjs/_esm5/operators/timeoutWith.js | 131 + .../rxjs/_esm5/operators/timeoutWith.js.map | 1 + .../rxjs/_esm5/operators/timestamp.js | 25 + .../rxjs/_esm5/operators/timestamp.js.map | 1 + node_modules/rxjs/_esm5/operators/toArray.js | 13 + .../rxjs/_esm5/operators/toArray.js.map | 1 + node_modules/rxjs/_esm5/operators/window.js | 113 + .../rxjs/_esm5/operators/window.js.map | 1 + .../rxjs/_esm5/operators/windowCount.js | 136 + .../rxjs/_esm5/operators/windowCount.js.map | 1 + .../rxjs/_esm5/operators/windowTime.js | 164 + .../rxjs/_esm5/operators/windowTime.js.map | 1 + .../rxjs/_esm5/operators/windowToggle.js | 181 + .../rxjs/_esm5/operators/windowToggle.js.map | 1 + .../rxjs/_esm5/operators/windowWhen.js | 132 + .../rxjs/_esm5/operators/windowWhen.js.map | 1 + .../rxjs/_esm5/operators/withLatestFrom.js | 133 + .../_esm5/operators/withLatestFrom.js.map | 1 + node_modules/rxjs/_esm5/operators/zip.js | 281 + node_modules/rxjs/_esm5/operators/zip.js.map | 1 + node_modules/rxjs/_esm5/operators/zipAll.js | 6 + .../rxjs/_esm5/operators/zipAll.js.map | 1 + node_modules/rxjs/_esm5/path-mapping.js | 465 + node_modules/rxjs/_esm5/scheduler/Action.js | 47 + .../rxjs/_esm5/scheduler/Action.js.map | 1 + .../_esm5/scheduler/AnimationFrameAction.js | 60 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.js | 38 + .../scheduler/AnimationFrameScheduler.js.map | 1 + .../rxjs/_esm5/scheduler/AsapAction.js | 60 + .../rxjs/_esm5/scheduler/AsapAction.js.map | 1 + .../rxjs/_esm5/scheduler/AsapScheduler.js | 38 + .../rxjs/_esm5/scheduler/AsapScheduler.js.map | 1 + .../rxjs/_esm5/scheduler/AsyncAction.js | 149 + .../rxjs/_esm5/scheduler/AsyncAction.js.map | 1 + .../rxjs/_esm5/scheduler/AsyncScheduler.js | 52 + .../_esm5/scheduler/AsyncScheduler.js.map | 1 + .../rxjs/_esm5/scheduler/QueueAction.js | 54 + .../rxjs/_esm5/scheduler/QueueAction.js.map | 1 + .../rxjs/_esm5/scheduler/QueueScheduler.js | 17 + .../_esm5/scheduler/QueueScheduler.js.map | 1 + .../_esm5/scheduler/VirtualTimeScheduler.js | 125 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../rxjs/_esm5/scheduler/animationFrame.js | 35 + .../_esm5/scheduler/animationFrame.js.map | 1 + node_modules/rxjs/_esm5/scheduler/asap.js | 39 + node_modules/rxjs/_esm5/scheduler/asap.js.map | 1 + node_modules/rxjs/_esm5/scheduler/async.js | 47 + .../rxjs/_esm5/scheduler/async.js.map | 1 + node_modules/rxjs/_esm5/scheduler/queue.js | 66 + .../rxjs/_esm5/scheduler/queue.js.map | 1 + node_modules/rxjs/_esm5/symbol/iterator.js | 37 + .../rxjs/_esm5/symbol/iterator.js.map | 1 + node_modules/rxjs/_esm5/symbol/observable.js | 25 + .../rxjs/_esm5/symbol/observable.js.map | 1 + .../rxjs/_esm5/symbol/rxSubscriber.js | 10 + .../rxjs/_esm5/symbol/rxSubscriber.js.map | 1 + .../rxjs/_esm5/testing/ColdObservable.js | 47 + .../rxjs/_esm5/testing/ColdObservable.js.map | 1 + .../rxjs/_esm5/testing/HotObservable.js | 49 + .../rxjs/_esm5/testing/HotObservable.js.map | 1 + .../rxjs/_esm5/testing/SubscriptionLog.js | 11 + .../rxjs/_esm5/testing/SubscriptionLog.js.map | 1 + .../_esm5/testing/SubscriptionLoggable.js | 18 + .../_esm5/testing/SubscriptionLoggable.js.map | 1 + .../rxjs/_esm5/testing/TestMessage.js | 1 + .../rxjs/_esm5/testing/TestMessage.js.map | 1 + .../rxjs/_esm5/testing/TestScheduler.js | 228 + .../rxjs/_esm5/testing/TestScheduler.js.map | 1 + .../rxjs/_esm5/util/AnimationFrame.js | 33 + .../rxjs/_esm5/util/AnimationFrame.js.map | 1 + .../_esm5/util/ArgumentOutOfRangeError.js | 29 + .../_esm5/util/ArgumentOutOfRangeError.js.map | 1 + node_modules/rxjs/_esm5/util/EmptyError.js | 29 + .../rxjs/_esm5/util/EmptyError.js.map | 1 + node_modules/rxjs/_esm5/util/FastMap.js | 29 + node_modules/rxjs/_esm5/util/FastMap.js.map | 1 + node_modules/rxjs/_esm5/util/Immediate.js | 208 + node_modules/rxjs/_esm5/util/Immediate.js.map | 1 + node_modules/rxjs/_esm5/util/Map.js | 5 + node_modules/rxjs/_esm5/util/Map.js.map | 1 + node_modules/rxjs/_esm5/util/MapPolyfill.js | 45 + .../rxjs/_esm5/util/MapPolyfill.js.map | 1 + .../_esm5/util/ObjectUnsubscribedError.js | 28 + .../_esm5/util/ObjectUnsubscribedError.js.map | 1 + node_modules/rxjs/_esm5/util/Set.js | 32 + node_modules/rxjs/_esm5/util/Set.js.map | 1 + node_modules/rxjs/_esm5/util/TimeoutError.js | 26 + .../rxjs/_esm5/util/TimeoutError.js.map | 1 + .../rxjs/_esm5/util/UnsubscriptionError.js | 26 + .../_esm5/util/UnsubscriptionError.js.map | 1 + node_modules/rxjs/_esm5/util/applyMixins.js | 12 + .../rxjs/_esm5/util/applyMixins.js.map | 1 + node_modules/rxjs/_esm5/util/assign.js | 24 + node_modules/rxjs/_esm5/util/assign.js.map | 1 + node_modules/rxjs/_esm5/util/errorObject.js | 4 + .../rxjs/_esm5/util/errorObject.js.map | 1 + node_modules/rxjs/_esm5/util/identity.js | 5 + node_modules/rxjs/_esm5/util/identity.js.map | 1 + node_modules/rxjs/_esm5/util/isArray.js | 3 + node_modules/rxjs/_esm5/util/isArray.js.map | 1 + node_modules/rxjs/_esm5/util/isArrayLike.js | 3 + .../rxjs/_esm5/util/isArrayLike.js.map | 1 + node_modules/rxjs/_esm5/util/isDate.js | 5 + node_modules/rxjs/_esm5/util/isDate.js.map | 1 + node_modules/rxjs/_esm5/util/isFunction.js | 5 + .../rxjs/_esm5/util/isFunction.js.map | 1 + node_modules/rxjs/_esm5/util/isNumeric.js | 11 + node_modules/rxjs/_esm5/util/isNumeric.js.map | 1 + node_modules/rxjs/_esm5/util/isObject.js | 5 + node_modules/rxjs/_esm5/util/isObject.js.map | 1 + node_modules/rxjs/_esm5/util/isPromise.js | 5 + node_modules/rxjs/_esm5/util/isPromise.js.map | 1 + node_modules/rxjs/_esm5/util/isScheduler.js | 5 + .../rxjs/_esm5/util/isScheduler.js.map | 1 + node_modules/rxjs/_esm5/util/noop.js | 4 + node_modules/rxjs/_esm5/util/noop.js.map | 1 + node_modules/rxjs/_esm5/util/not.js | 10 + node_modules/rxjs/_esm5/util/not.js.map | 1 + node_modules/rxjs/_esm5/util/pipe.js | 23 + node_modules/rxjs/_esm5/util/pipe.js.map | 1 + node_modules/rxjs/_esm5/util/root.js | 19 + node_modules/rxjs/_esm5/util/root.js.map | 1 + .../rxjs/_esm5/util/subscribeToResult.js | 78 + .../rxjs/_esm5/util/subscribeToResult.js.map | 1 + node_modules/rxjs/_esm5/util/toSubscriber.js | 19 + .../rxjs/_esm5/util/toSubscriber.js.map | 1 + node_modules/rxjs/_esm5/util/tryCatch.js | 18 + node_modules/rxjs/_esm5/util/tryCatch.js.map | 1 + .../rxjs/add/observable/bindCallback.d.ts | 6 + .../rxjs/add/observable/bindCallback.js | 5 + .../rxjs/add/observable/bindCallback.js.map | 1 + .../rxjs/add/observable/bindNodeCallback.d.ts | 6 + .../rxjs/add/observable/bindNodeCallback.js | 5 + .../add/observable/bindNodeCallback.js.map | 1 + .../rxjs/add/observable/combineLatest.d.ts | 6 + .../rxjs/add/observable/combineLatest.js | 5 + .../rxjs/add/observable/combineLatest.js.map | 1 + node_modules/rxjs/add/observable/concat.d.ts | 6 + node_modules/rxjs/add/observable/concat.js | 5 + .../rxjs/add/observable/concat.js.map | 1 + node_modules/rxjs/add/observable/defer.d.ts | 6 + node_modules/rxjs/add/observable/defer.js | 5 + node_modules/rxjs/add/observable/defer.js.map | 1 + .../rxjs/add/observable/dom/ajax.d.ts | 6 + node_modules/rxjs/add/observable/dom/ajax.js | 5 + .../rxjs/add/observable/dom/ajax.js.map | 1 + .../rxjs/add/observable/dom/webSocket.d.ts | 6 + .../rxjs/add/observable/dom/webSocket.js | 5 + .../rxjs/add/observable/dom/webSocket.js.map | 1 + node_modules/rxjs/add/observable/empty.d.ts | 6 + node_modules/rxjs/add/observable/empty.js | 5 + node_modules/rxjs/add/observable/empty.js.map | 1 + .../rxjs/add/observable/forkJoin.d.ts | 6 + node_modules/rxjs/add/observable/forkJoin.js | 5 + .../rxjs/add/observable/forkJoin.js.map | 1 + node_modules/rxjs/add/observable/from.d.ts | 6 + node_modules/rxjs/add/observable/from.js | 5 + node_modules/rxjs/add/observable/from.js.map | 1 + .../rxjs/add/observable/fromEvent.d.ts | 6 + node_modules/rxjs/add/observable/fromEvent.js | 5 + .../rxjs/add/observable/fromEvent.js.map | 1 + .../rxjs/add/observable/fromEventPattern.d.ts | 6 + .../rxjs/add/observable/fromEventPattern.js | 5 + .../add/observable/fromEventPattern.js.map | 1 + .../rxjs/add/observable/fromPromise.d.ts | 6 + .../rxjs/add/observable/fromPromise.js | 5 + .../rxjs/add/observable/fromPromise.js.map | 1 + .../rxjs/add/observable/generate.d.ts | 6 + node_modules/rxjs/add/observable/generate.js | 5 + .../rxjs/add/observable/generate.js.map | 1 + node_modules/rxjs/add/observable/if.d.ts | 0 node_modules/rxjs/add/observable/if.js | 5 + node_modules/rxjs/add/observable/if.js.map | 1 + .../rxjs/add/observable/interval.d.ts | 6 + node_modules/rxjs/add/observable/interval.js | 5 + .../rxjs/add/observable/interval.js.map | 1 + node_modules/rxjs/add/observable/merge.d.ts | 6 + node_modules/rxjs/add/observable/merge.js | 5 + node_modules/rxjs/add/observable/merge.js.map | 1 + node_modules/rxjs/add/observable/never.d.ts | 6 + node_modules/rxjs/add/observable/never.js | 5 + node_modules/rxjs/add/observable/never.js.map | 1 + node_modules/rxjs/add/observable/of.d.ts | 6 + node_modules/rxjs/add/observable/of.js | 5 + node_modules/rxjs/add/observable/of.js.map | 1 + .../add/observable/onErrorResumeNext.d.ts | 6 + .../rxjs/add/observable/onErrorResumeNext.js | 5 + .../add/observable/onErrorResumeNext.js.map | 1 + node_modules/rxjs/add/observable/pairs.d.ts | 6 + node_modules/rxjs/add/observable/pairs.js | 5 + node_modules/rxjs/add/observable/pairs.js.map | 1 + node_modules/rxjs/add/observable/race.d.ts | 6 + node_modules/rxjs/add/observable/race.js | 5 + node_modules/rxjs/add/observable/race.js.map | 1 + node_modules/rxjs/add/observable/range.d.ts | 6 + node_modules/rxjs/add/observable/range.js | 5 + node_modules/rxjs/add/observable/range.js.map | 1 + node_modules/rxjs/add/observable/throw.d.ts | 0 node_modules/rxjs/add/observable/throw.js | 5 + node_modules/rxjs/add/observable/throw.js.map | 1 + node_modules/rxjs/add/observable/timer.d.ts | 6 + node_modules/rxjs/add/observable/timer.js | 5 + node_modules/rxjs/add/observable/timer.js.map | 1 + node_modules/rxjs/add/observable/using.d.ts | 6 + node_modules/rxjs/add/observable/using.js | 5 + node_modules/rxjs/add/observable/using.js.map | 1 + node_modules/rxjs/add/observable/zip.d.ts | 6 + node_modules/rxjs/add/observable/zip.js | 5 + node_modules/rxjs/add/observable/zip.js.map | 1 + node_modules/rxjs/add/operator/audit.d.ts | 6 + node_modules/rxjs/add/operator/audit.js | 5 + node_modules/rxjs/add/operator/audit.js.map | 1 + node_modules/rxjs/add/operator/auditTime.d.ts | 6 + node_modules/rxjs/add/operator/auditTime.js | 5 + .../rxjs/add/operator/auditTime.js.map | 1 + node_modules/rxjs/add/operator/buffer.d.ts | 6 + node_modules/rxjs/add/operator/buffer.js | 5 + node_modules/rxjs/add/operator/buffer.js.map | 1 + .../rxjs/add/operator/bufferCount.d.ts | 6 + node_modules/rxjs/add/operator/bufferCount.js | 5 + .../rxjs/add/operator/bufferCount.js.map | 1 + .../rxjs/add/operator/bufferTime.d.ts | 6 + node_modules/rxjs/add/operator/bufferTime.js | 5 + .../rxjs/add/operator/bufferTime.js.map | 1 + .../rxjs/add/operator/bufferToggle.d.ts | 6 + .../rxjs/add/operator/bufferToggle.js | 5 + .../rxjs/add/operator/bufferToggle.js.map | 1 + .../rxjs/add/operator/bufferWhen.d.ts | 6 + node_modules/rxjs/add/operator/bufferWhen.js | 5 + .../rxjs/add/operator/bufferWhen.js.map | 1 + node_modules/rxjs/add/operator/catch.d.ts | 7 + node_modules/rxjs/add/operator/catch.js | 6 + node_modules/rxjs/add/operator/catch.js.map | 1 + .../rxjs/add/operator/combineAll.d.ts | 6 + node_modules/rxjs/add/operator/combineAll.js | 5 + .../rxjs/add/operator/combineAll.js.map | 1 + .../rxjs/add/operator/combineLatest.d.ts | 6 + .../rxjs/add/operator/combineLatest.js | 5 + .../rxjs/add/operator/combineLatest.js.map | 1 + node_modules/rxjs/add/operator/concat.d.ts | 6 + node_modules/rxjs/add/operator/concat.js | 5 + node_modules/rxjs/add/operator/concat.js.map | 1 + node_modules/rxjs/add/operator/concatAll.d.ts | 6 + node_modules/rxjs/add/operator/concatAll.js | 5 + .../rxjs/add/operator/concatAll.js.map | 1 + node_modules/rxjs/add/operator/concatMap.d.ts | 6 + node_modules/rxjs/add/operator/concatMap.js | 5 + .../rxjs/add/operator/concatMap.js.map | 1 + .../rxjs/add/operator/concatMapTo.d.ts | 6 + node_modules/rxjs/add/operator/concatMapTo.js | 5 + .../rxjs/add/operator/concatMapTo.js.map | 1 + node_modules/rxjs/add/operator/count.d.ts | 6 + node_modules/rxjs/add/operator/count.js | 5 + node_modules/rxjs/add/operator/count.js.map | 1 + node_modules/rxjs/add/operator/debounce.d.ts | 6 + node_modules/rxjs/add/operator/debounce.js | 5 + .../rxjs/add/operator/debounce.js.map | 1 + .../rxjs/add/operator/debounceTime.d.ts | 6 + .../rxjs/add/operator/debounceTime.js | 5 + .../rxjs/add/operator/debounceTime.js.map | 1 + .../rxjs/add/operator/defaultIfEmpty.d.ts | 6 + .../rxjs/add/operator/defaultIfEmpty.js | 5 + .../rxjs/add/operator/defaultIfEmpty.js.map | 1 + node_modules/rxjs/add/operator/delay.d.ts | 6 + node_modules/rxjs/add/operator/delay.js | 5 + node_modules/rxjs/add/operator/delay.js.map | 1 + node_modules/rxjs/add/operator/delayWhen.d.ts | 6 + node_modules/rxjs/add/operator/delayWhen.js | 5 + .../rxjs/add/operator/delayWhen.js.map | 1 + .../rxjs/add/operator/dematerialize.d.ts | 6 + .../rxjs/add/operator/dematerialize.js | 5 + .../rxjs/add/operator/dematerialize.js.map | 1 + node_modules/rxjs/add/operator/distinct.d.ts | 6 + node_modules/rxjs/add/operator/distinct.js | 5 + .../rxjs/add/operator/distinct.js.map | 1 + .../add/operator/distinctUntilChanged.d.ts | 6 + .../rxjs/add/operator/distinctUntilChanged.js | 5 + .../add/operator/distinctUntilChanged.js.map | 1 + .../add/operator/distinctUntilKeyChanged.d.ts | 6 + .../add/operator/distinctUntilKeyChanged.js | 5 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/add/operator/do.d.ts | 7 + node_modules/rxjs/add/operator/do.js | 6 + node_modules/rxjs/add/operator/do.js.map | 1 + node_modules/rxjs/add/operator/elementAt.d.ts | 6 + node_modules/rxjs/add/operator/elementAt.js | 5 + .../rxjs/add/operator/elementAt.js.map | 1 + node_modules/rxjs/add/operator/every.d.ts | 6 + node_modules/rxjs/add/operator/every.js | 5 + node_modules/rxjs/add/operator/every.js.map | 1 + node_modules/rxjs/add/operator/exhaust.d.ts | 6 + node_modules/rxjs/add/operator/exhaust.js | 5 + node_modules/rxjs/add/operator/exhaust.js.map | 1 + .../rxjs/add/operator/exhaustMap.d.ts | 6 + node_modules/rxjs/add/operator/exhaustMap.js | 5 + .../rxjs/add/operator/exhaustMap.js.map | 1 + node_modules/rxjs/add/operator/expand.d.ts | 6 + node_modules/rxjs/add/operator/expand.js | 5 + node_modules/rxjs/add/operator/expand.js.map | 1 + node_modules/rxjs/add/operator/filter.d.ts | 6 + node_modules/rxjs/add/operator/filter.js | 5 + node_modules/rxjs/add/operator/filter.js.map | 1 + node_modules/rxjs/add/operator/finally.d.ts | 7 + node_modules/rxjs/add/operator/finally.js | 6 + node_modules/rxjs/add/operator/finally.js.map | 1 + node_modules/rxjs/add/operator/find.d.ts | 6 + node_modules/rxjs/add/operator/find.js | 5 + node_modules/rxjs/add/operator/find.js.map | 1 + node_modules/rxjs/add/operator/findIndex.d.ts | 6 + node_modules/rxjs/add/operator/findIndex.js | 5 + .../rxjs/add/operator/findIndex.js.map | 1 + node_modules/rxjs/add/operator/first.d.ts | 6 + node_modules/rxjs/add/operator/first.js | 5 + node_modules/rxjs/add/operator/first.js.map | 1 + node_modules/rxjs/add/operator/groupBy.d.ts | 6 + node_modules/rxjs/add/operator/groupBy.js | 5 + node_modules/rxjs/add/operator/groupBy.js.map | 1 + .../rxjs/add/operator/ignoreElements.d.ts | 6 + .../rxjs/add/operator/ignoreElements.js | 5 + .../rxjs/add/operator/ignoreElements.js.map | 1 + node_modules/rxjs/add/operator/isEmpty.d.ts | 6 + node_modules/rxjs/add/operator/isEmpty.js | 5 + node_modules/rxjs/add/operator/isEmpty.js.map | 1 + node_modules/rxjs/add/operator/last.d.ts | 6 + node_modules/rxjs/add/operator/last.js | 5 + node_modules/rxjs/add/operator/last.js.map | 1 + node_modules/rxjs/add/operator/let.d.ts | 7 + node_modules/rxjs/add/operator/let.js | 6 + node_modules/rxjs/add/operator/let.js.map | 1 + node_modules/rxjs/add/operator/map.d.ts | 6 + node_modules/rxjs/add/operator/map.js | 5 + node_modules/rxjs/add/operator/map.js.map | 1 + node_modules/rxjs/add/operator/mapTo.d.ts | 6 + node_modules/rxjs/add/operator/mapTo.js | 5 + node_modules/rxjs/add/operator/mapTo.js.map | 1 + .../rxjs/add/operator/materialize.d.ts | 6 + node_modules/rxjs/add/operator/materialize.js | 5 + .../rxjs/add/operator/materialize.js.map | 1 + node_modules/rxjs/add/operator/max.d.ts | 6 + node_modules/rxjs/add/operator/max.js | 5 + node_modules/rxjs/add/operator/max.js.map | 1 + node_modules/rxjs/add/operator/merge.d.ts | 6 + node_modules/rxjs/add/operator/merge.js | 5 + node_modules/rxjs/add/operator/merge.js.map | 1 + node_modules/rxjs/add/operator/mergeAll.d.ts | 6 + node_modules/rxjs/add/operator/mergeAll.js | 5 + .../rxjs/add/operator/mergeAll.js.map | 1 + node_modules/rxjs/add/operator/mergeMap.d.ts | 7 + node_modules/rxjs/add/operator/mergeMap.js | 6 + .../rxjs/add/operator/mergeMap.js.map | 1 + .../rxjs/add/operator/mergeMapTo.d.ts | 7 + node_modules/rxjs/add/operator/mergeMapTo.js | 6 + .../rxjs/add/operator/mergeMapTo.js.map | 1 + node_modules/rxjs/add/operator/mergeScan.d.ts | 6 + node_modules/rxjs/add/operator/mergeScan.js | 5 + .../rxjs/add/operator/mergeScan.js.map | 1 + node_modules/rxjs/add/operator/min.d.ts | 6 + node_modules/rxjs/add/operator/min.js | 5 + node_modules/rxjs/add/operator/min.js.map | 1 + node_modules/rxjs/add/operator/multicast.d.ts | 6 + node_modules/rxjs/add/operator/multicast.js | 5 + .../rxjs/add/operator/multicast.js.map | 1 + node_modules/rxjs/add/operator/observeOn.d.ts | 6 + node_modules/rxjs/add/operator/observeOn.js | 5 + .../rxjs/add/operator/observeOn.js.map | 1 + .../rxjs/add/operator/onErrorResumeNext.d.ts | 6 + .../rxjs/add/operator/onErrorResumeNext.js | 5 + .../add/operator/onErrorResumeNext.js.map | 1 + node_modules/rxjs/add/operator/pairwise.d.ts | 6 + node_modules/rxjs/add/operator/pairwise.js | 5 + .../rxjs/add/operator/pairwise.js.map | 1 + node_modules/rxjs/add/operator/partition.d.ts | 6 + node_modules/rxjs/add/operator/partition.js | 5 + .../rxjs/add/operator/partition.js.map | 1 + node_modules/rxjs/add/operator/pluck.d.ts | 6 + node_modules/rxjs/add/operator/pluck.js | 5 + node_modules/rxjs/add/operator/pluck.js.map | 1 + node_modules/rxjs/add/operator/publish.d.ts | 6 + node_modules/rxjs/add/operator/publish.js | 5 + node_modules/rxjs/add/operator/publish.js.map | 1 + .../rxjs/add/operator/publishBehavior.d.ts | 6 + .../rxjs/add/operator/publishBehavior.js | 5 + .../rxjs/add/operator/publishBehavior.js.map | 1 + .../rxjs/add/operator/publishLast.d.ts | 6 + node_modules/rxjs/add/operator/publishLast.js | 5 + .../rxjs/add/operator/publishLast.js.map | 1 + .../rxjs/add/operator/publishReplay.d.ts | 6 + .../rxjs/add/operator/publishReplay.js | 5 + .../rxjs/add/operator/publishReplay.js.map | 1 + node_modules/rxjs/add/operator/race.d.ts | 6 + node_modules/rxjs/add/operator/race.js | 5 + node_modules/rxjs/add/operator/race.js.map | 1 + node_modules/rxjs/add/operator/reduce.d.ts | 6 + node_modules/rxjs/add/operator/reduce.js | 5 + node_modules/rxjs/add/operator/reduce.js.map | 1 + node_modules/rxjs/add/operator/repeat.d.ts | 6 + node_modules/rxjs/add/operator/repeat.js | 5 + node_modules/rxjs/add/operator/repeat.js.map | 1 + .../rxjs/add/operator/repeatWhen.d.ts | 6 + node_modules/rxjs/add/operator/repeatWhen.js | 5 + .../rxjs/add/operator/repeatWhen.js.map | 1 + node_modules/rxjs/add/operator/retry.d.ts | 6 + node_modules/rxjs/add/operator/retry.js | 5 + node_modules/rxjs/add/operator/retry.js.map | 1 + node_modules/rxjs/add/operator/retryWhen.d.ts | 6 + node_modules/rxjs/add/operator/retryWhen.js | 5 + .../rxjs/add/operator/retryWhen.js.map | 1 + node_modules/rxjs/add/operator/sample.d.ts | 6 + node_modules/rxjs/add/operator/sample.js | 5 + node_modules/rxjs/add/operator/sample.js.map | 1 + .../rxjs/add/operator/sampleTime.d.ts | 6 + node_modules/rxjs/add/operator/sampleTime.js | 5 + .../rxjs/add/operator/sampleTime.js.map | 1 + node_modules/rxjs/add/operator/scan.d.ts | 6 + node_modules/rxjs/add/operator/scan.js | 5 + node_modules/rxjs/add/operator/scan.js.map | 1 + .../rxjs/add/operator/sequenceEqual.d.ts | 6 + .../rxjs/add/operator/sequenceEqual.js | 5 + .../rxjs/add/operator/sequenceEqual.js.map | 1 + node_modules/rxjs/add/operator/share.d.ts | 6 + node_modules/rxjs/add/operator/share.js | 5 + node_modules/rxjs/add/operator/share.js.map | 1 + .../rxjs/add/operator/shareReplay.d.ts | 6 + node_modules/rxjs/add/operator/shareReplay.js | 5 + .../rxjs/add/operator/shareReplay.js.map | 1 + node_modules/rxjs/add/operator/single.d.ts | 6 + node_modules/rxjs/add/operator/single.js | 5 + node_modules/rxjs/add/operator/single.js.map | 1 + node_modules/rxjs/add/operator/skip.d.ts | 6 + node_modules/rxjs/add/operator/skip.js | 5 + node_modules/rxjs/add/operator/skip.js.map | 1 + node_modules/rxjs/add/operator/skipLast.d.ts | 6 + node_modules/rxjs/add/operator/skipLast.js | 5 + .../rxjs/add/operator/skipLast.js.map | 1 + node_modules/rxjs/add/operator/skipUntil.d.ts | 6 + node_modules/rxjs/add/operator/skipUntil.js | 5 + .../rxjs/add/operator/skipUntil.js.map | 1 + node_modules/rxjs/add/operator/skipWhile.d.ts | 6 + node_modules/rxjs/add/operator/skipWhile.js | 5 + .../rxjs/add/operator/skipWhile.js.map | 1 + node_modules/rxjs/add/operator/startWith.d.ts | 6 + node_modules/rxjs/add/operator/startWith.js | 5 + .../rxjs/add/operator/startWith.js.map | 1 + .../rxjs/add/operator/subscribeOn.d.ts | 6 + node_modules/rxjs/add/operator/subscribeOn.js | 5 + .../rxjs/add/operator/subscribeOn.js.map | 1 + node_modules/rxjs/add/operator/switch.d.ts | 7 + node_modules/rxjs/add/operator/switch.js | 6 + node_modules/rxjs/add/operator/switch.js.map | 1 + node_modules/rxjs/add/operator/switchMap.d.ts | 6 + node_modules/rxjs/add/operator/switchMap.js | 5 + .../rxjs/add/operator/switchMap.js.map | 1 + .../rxjs/add/operator/switchMapTo.d.ts | 6 + node_modules/rxjs/add/operator/switchMapTo.js | 5 + .../rxjs/add/operator/switchMapTo.js.map | 1 + node_modules/rxjs/add/operator/take.d.ts | 6 + node_modules/rxjs/add/operator/take.js | 5 + node_modules/rxjs/add/operator/take.js.map | 1 + node_modules/rxjs/add/operator/takeLast.d.ts | 6 + node_modules/rxjs/add/operator/takeLast.js | 5 + .../rxjs/add/operator/takeLast.js.map | 1 + node_modules/rxjs/add/operator/takeUntil.d.ts | 6 + node_modules/rxjs/add/operator/takeUntil.js | 5 + .../rxjs/add/operator/takeUntil.js.map | 1 + node_modules/rxjs/add/operator/takeWhile.d.ts | 6 + node_modules/rxjs/add/operator/takeWhile.js | 5 + .../rxjs/add/operator/takeWhile.js.map | 1 + node_modules/rxjs/add/operator/throttle.d.ts | 6 + node_modules/rxjs/add/operator/throttle.js | 5 + .../rxjs/add/operator/throttle.js.map | 1 + .../rxjs/add/operator/throttleTime.d.ts | 6 + .../rxjs/add/operator/throttleTime.js | 5 + .../rxjs/add/operator/throttleTime.js.map | 1 + .../rxjs/add/operator/timeInterval.d.ts | 6 + .../rxjs/add/operator/timeInterval.js | 5 + .../rxjs/add/operator/timeInterval.js.map | 1 + node_modules/rxjs/add/operator/timeout.d.ts | 6 + node_modules/rxjs/add/operator/timeout.js | 5 + node_modules/rxjs/add/operator/timeout.js.map | 1 + .../rxjs/add/operator/timeoutWith.d.ts | 6 + node_modules/rxjs/add/operator/timeoutWith.js | 5 + .../rxjs/add/operator/timeoutWith.js.map | 1 + node_modules/rxjs/add/operator/timestamp.d.ts | 6 + node_modules/rxjs/add/operator/timestamp.js | 5 + .../rxjs/add/operator/timestamp.js.map | 1 + node_modules/rxjs/add/operator/toArray.d.ts | 6 + node_modules/rxjs/add/operator/toArray.js | 5 + node_modules/rxjs/add/operator/toArray.js.map | 1 + node_modules/rxjs/add/operator/toPromise.d.ts | 0 node_modules/rxjs/add/operator/toPromise.js | 3 + .../rxjs/add/operator/toPromise.js.map | 1 + node_modules/rxjs/add/operator/window.d.ts | 6 + node_modules/rxjs/add/operator/window.js | 5 + node_modules/rxjs/add/operator/window.js.map | 1 + .../rxjs/add/operator/windowCount.d.ts | 6 + node_modules/rxjs/add/operator/windowCount.js | 5 + .../rxjs/add/operator/windowCount.js.map | 1 + .../rxjs/add/operator/windowTime.d.ts | 6 + node_modules/rxjs/add/operator/windowTime.js | 5 + .../rxjs/add/operator/windowTime.js.map | 1 + .../rxjs/add/operator/windowToggle.d.ts | 6 + .../rxjs/add/operator/windowToggle.js | 5 + .../rxjs/add/operator/windowToggle.js.map | 1 + .../rxjs/add/operator/windowWhen.d.ts | 6 + node_modules/rxjs/add/operator/windowWhen.js | 5 + .../rxjs/add/operator/windowWhen.js.map | 1 + .../rxjs/add/operator/withLatestFrom.d.ts | 6 + .../rxjs/add/operator/withLatestFrom.js | 5 + .../rxjs/add/operator/withLatestFrom.js.map | 1 + node_modules/rxjs/add/operator/zip.d.ts | 6 + node_modules/rxjs/add/operator/zip.js | 5 + node_modules/rxjs/add/operator/zip.js.map | 1 + node_modules/rxjs/add/operator/zipAll.d.ts | 6 + node_modules/rxjs/add/operator/zipAll.js | 5 + node_modules/rxjs/add/operator/zipAll.js.map | 1 + node_modules/rxjs/bundles/Rx.js | 20262 ++++++++++++++++ node_modules/rxjs/bundles/Rx.js.map | 1 + node_modules/rxjs/bundles/Rx.min.js | 316 + node_modules/rxjs/bundles/Rx.min.js.map | 8 + node_modules/rxjs/interfaces.d.ts | 5 + node_modules/rxjs/interfaces.js | 2 + node_modules/rxjs/interfaces.js.map | 1 + .../rxjs/observable/ArrayLikeObservable.d.ts | 18 + .../rxjs/observable/ArrayLikeObservable.js | 70 + .../observable/ArrayLikeObservable.js.map | 1 + .../rxjs/observable/ArrayObservable.d.ts | 25 + .../rxjs/observable/ArrayObservable.js | 122 + .../rxjs/observable/ArrayObservable.js.map | 1 + .../observable/BoundCallbackObservable.d.ts | 42 + .../observable/BoundCallbackObservable.js | 264 + .../observable/BoundCallbackObservable.js.map | 1 + .../BoundNodeCallbackObservable.d.ts | 29 + .../observable/BoundNodeCallbackObservable.js | 263 + .../BoundNodeCallbackObservable.js.map | 1 + .../observable/ConnectableObservable.d.ts | 22 + .../rxjs/observable/ConnectableObservable.js | 171 + .../observable/ConnectableObservable.js.map | 1 + .../rxjs/observable/DeferObservable.d.ts | 60 + .../rxjs/observable/DeferObservable.js | 99 + .../rxjs/observable/DeferObservable.js.map | 1 + .../rxjs/observable/EmptyObservable.d.ts | 62 + .../rxjs/observable/EmptyObservable.js | 81 + .../rxjs/observable/EmptyObservable.js.map | 1 + .../rxjs/observable/ErrorObservable.d.ts | 61 + .../rxjs/observable/ErrorObservable.js | 83 + .../rxjs/observable/ErrorObservable.js.map | 1 + .../rxjs/observable/ForkJoinObservable.d.ts | 31 + .../rxjs/observable/ForkJoinObservable.js | 202 + .../rxjs/observable/ForkJoinObservable.js.map | 1 + .../rxjs/observable/FromEventObservable.d.ts | 36 + .../rxjs/observable/FromEventObservable.js | 216 + .../observable/FromEventObservable.js.map | 1 + .../FromEventPatternObservable.d.ts | 65 + .../observable/FromEventPatternObservable.js | 113 + .../FromEventPatternObservable.js.map | 1 + .../rxjs/observable/FromObservable.d.ts | 16 + .../rxjs/observable/FromObservable.js | 122 + .../rxjs/observable/FromObservable.js.map | 1 + .../rxjs/observable/GenerateObservable.d.ts | 144 + .../rxjs/observable/GenerateObservable.js | 135 + .../rxjs/observable/GenerateObservable.js.map | 1 + .../rxjs/observable/IfObservable.d.ts | 16 + node_modules/rxjs/observable/IfObservable.js | 61 + .../rxjs/observable/IfObservable.js.map | 1 + .../rxjs/observable/IntervalObservable.d.ts | 49 + .../rxjs/observable/IntervalObservable.js | 88 + .../rxjs/observable/IntervalObservable.js.map | 1 + .../rxjs/observable/IteratorObservable.d.ts | 17 + .../rxjs/observable/IteratorObservable.js | 163 + .../rxjs/observable/IteratorObservable.js.map | 1 + .../rxjs/observable/NeverObservable.d.ts | 43 + .../rxjs/observable/NeverObservable.js | 59 + .../rxjs/observable/NeverObservable.js.map | 1 + .../rxjs/observable/PairsObservable.d.ts | 48 + .../rxjs/observable/PairsObservable.js | 85 + .../rxjs/observable/PairsObservable.js.map | 1 + .../rxjs/observable/PromiseObservable.d.ts | 43 + .../rxjs/observable/PromiseObservable.js | 121 + .../rxjs/observable/PromiseObservable.js.map | 1 + .../rxjs/observable/RangeObservable.d.ts | 48 + .../rxjs/observable/RangeObservable.js | 96 + .../rxjs/observable/RangeObservable.js.map | 1 + .../rxjs/observable/ScalarObservable.d.ts | 18 + .../rxjs/observable/ScalarObservable.js | 58 + .../rxjs/observable/ScalarObservable.js.map | 1 + .../observable/SubscribeOnObservable.d.ts | 23 + .../rxjs/observable/SubscribeOnObservable.js | 51 + .../observable/SubscribeOnObservable.js.map | 1 + .../rxjs/observable/TimerObservable.d.ts | 60 + .../rxjs/observable/TimerObservable.js | 107 + .../rxjs/observable/TimerObservable.js.map | 1 + .../rxjs/observable/UsingObservable.d.ts | 15 + .../rxjs/observable/UsingObservable.js | 61 + .../rxjs/observable/UsingObservable.js.map | 1 + .../rxjs/observable/bindCallback.d.ts | 2 + node_modules/rxjs/observable/bindCallback.js | 4 + .../rxjs/observable/bindCallback.js.map | 1 + .../rxjs/observable/bindNodeCallback.d.ts | 2 + .../rxjs/observable/bindNodeCallback.js | 4 + .../rxjs/observable/bindNodeCallback.js.map | 1 + .../rxjs/observable/combineLatest.d.ts | 20 + node_modules/rxjs/observable/combineLatest.js | 136 + .../rxjs/observable/combineLatest.js.map | 1 + node_modules/rxjs/observable/concat.d.ts | 10 + node_modules/rxjs/observable/concat.js | 111 + node_modules/rxjs/observable/concat.js.map | 1 + node_modules/rxjs/observable/defer.d.ts | 2 + node_modules/rxjs/observable/defer.js | 4 + node_modules/rxjs/observable/defer.js.map | 1 + .../rxjs/observable/dom/AjaxObservable.d.ts | 137 + .../rxjs/observable/dom/AjaxObservable.js | 426 + .../rxjs/observable/dom/AjaxObservable.js.map | 1 + .../rxjs/observable/dom/WebSocketSubject.d.ts | 83 + .../rxjs/observable/dom/WebSocketSubject.js | 250 + .../observable/dom/WebSocketSubject.js.map | 1 + node_modules/rxjs/observable/dom/ajax.d.ts | 2 + node_modules/rxjs/observable/dom/ajax.js | 4 + node_modules/rxjs/observable/dom/ajax.js.map | 1 + .../rxjs/observable/dom/webSocket.d.ts | 2 + node_modules/rxjs/observable/dom/webSocket.js | 4 + .../rxjs/observable/dom/webSocket.js.map | 1 + node_modules/rxjs/observable/empty.d.ts | 2 + node_modules/rxjs/observable/empty.js | 4 + node_modules/rxjs/observable/empty.js.map | 1 + node_modules/rxjs/observable/forkJoin.d.ts | 2 + node_modules/rxjs/observable/forkJoin.js | 4 + node_modules/rxjs/observable/forkJoin.js.map | 1 + node_modules/rxjs/observable/from.d.ts | 2 + node_modules/rxjs/observable/from.js | 4 + node_modules/rxjs/observable/from.js.map | 1 + node_modules/rxjs/observable/fromEvent.d.ts | 2 + node_modules/rxjs/observable/fromEvent.js | 4 + node_modules/rxjs/observable/fromEvent.js.map | 1 + .../rxjs/observable/fromEventPattern.d.ts | 2 + .../rxjs/observable/fromEventPattern.js | 4 + .../rxjs/observable/fromEventPattern.js.map | 1 + node_modules/rxjs/observable/fromPromise.d.ts | 2 + node_modules/rxjs/observable/fromPromise.js | 4 + .../rxjs/observable/fromPromise.js.map | 1 + node_modules/rxjs/observable/generate.d.ts | 2 + node_modules/rxjs/observable/generate.js | 4 + node_modules/rxjs/observable/generate.js.map | 1 + node_modules/rxjs/observable/if.d.ts | 2 + node_modules/rxjs/observable/if.js | 4 + node_modules/rxjs/observable/if.js.map | 1 + node_modules/rxjs/observable/interval.d.ts | 2 + node_modules/rxjs/observable/interval.js | 4 + node_modules/rxjs/observable/interval.js.map | 1 + node_modules/rxjs/observable/merge.d.ts | 16 + node_modules/rxjs/observable/merge.js | 90 + node_modules/rxjs/observable/merge.js.map | 1 + node_modules/rxjs/observable/never.d.ts | 2 + node_modules/rxjs/observable/never.js | 4 + node_modules/rxjs/observable/never.js.map | 1 + node_modules/rxjs/observable/of.d.ts | 2 + node_modules/rxjs/observable/of.js | 4 + node_modules/rxjs/observable/of.js.map | 1 + .../rxjs/observable/onErrorResumeNext.d.ts | 2 + .../rxjs/observable/onErrorResumeNext.js | 4 + .../rxjs/observable/onErrorResumeNext.js.map | 1 + node_modules/rxjs/observable/pairs.d.ts | 2 + node_modules/rxjs/observable/pairs.js | 4 + node_modules/rxjs/observable/pairs.js.map | 1 + node_modules/rxjs/observable/race.d.ts | 34 + node_modules/rxjs/observable/race.js | 89 + node_modules/rxjs/observable/race.js.map | 1 + node_modules/rxjs/observable/range.d.ts | 2 + node_modules/rxjs/observable/range.js | 4 + node_modules/rxjs/observable/range.js.map | 1 + node_modules/rxjs/observable/throw.d.ts | 2 + node_modules/rxjs/observable/throw.js | 4 + node_modules/rxjs/observable/throw.js.map | 1 + node_modules/rxjs/observable/timer.d.ts | 2 + node_modules/rxjs/observable/timer.js | 4 + node_modules/rxjs/observable/timer.js.map | 1 + node_modules/rxjs/observable/using.d.ts | 2 + node_modules/rxjs/observable/using.js | 4 + node_modules/rxjs/observable/using.js.map | 1 + node_modules/rxjs/observable/zip.d.ts | 2 + node_modules/rxjs/observable/zip.js | 4 + node_modules/rxjs/observable/zip.js.map | 1 + node_modules/rxjs/operator/audit.d.ts | 42 + node_modules/rxjs/operator/audit.js | 47 + node_modules/rxjs/operator/audit.js.map | 1 + node_modules/rxjs/operator/auditTime.d.ts | 45 + node_modules/rxjs/operator/auditTime.js | 51 + node_modules/rxjs/operator/auditTime.js.map | 1 + node_modules/rxjs/operator/buffer.d.ts | 34 + node_modules/rxjs/operator/buffer.js | 39 + node_modules/rxjs/operator/buffer.js.map | 1 + node_modules/rxjs/operator/bufferCount.d.ts | 43 + node_modules/rxjs/operator/bufferCount.js | 49 + node_modules/rxjs/operator/bufferCount.js.map | 1 + node_modules/rxjs/operator/bufferTime.d.ts | 5 + node_modules/rxjs/operator/bufferTime.js | 67 + node_modules/rxjs/operator/bufferTime.js.map | 1 + node_modules/rxjs/operator/bufferToggle.d.ts | 40 + node_modules/rxjs/operator/bufferToggle.js | 45 + .../rxjs/operator/bufferToggle.js.map | 1 + node_modules/rxjs/operator/bufferWhen.d.ts | 35 + node_modules/rxjs/operator/bufferWhen.js | 40 + node_modules/rxjs/operator/bufferWhen.js.map | 1 + node_modules/rxjs/operator/catch.d.ts | 61 + node_modules/rxjs/operator/catch.js | 66 + node_modules/rxjs/operator/catch.js.map | 1 + node_modules/rxjs/operator/combineAll.d.ts | 42 + node_modules/rxjs/operator/combineAll.js | 47 + node_modules/rxjs/operator/combineAll.js.map | 1 + node_modules/rxjs/operator/combineLatest.d.ts | 15 + node_modules/rxjs/operator/combineLatest.js | 55 + .../rxjs/operator/combineLatest.js.map | 1 + node_modules/rxjs/operator/concat.d.ts | 11 + node_modules/rxjs/operator/concat.js | 63 + node_modules/rxjs/operator/concat.js.map | 1 + node_modules/rxjs/operator/concatAll.d.ts | 4 + node_modules/rxjs/operator/concatAll.js | 56 + node_modules/rxjs/operator/concatAll.js.map | 1 + node_modules/rxjs/operator/concatMap.d.ts | 3 + node_modules/rxjs/operator/concatMap.js | 67 + node_modules/rxjs/operator/concatMap.js.map | 1 + node_modules/rxjs/operator/concatMapTo.d.ts | 3 + node_modules/rxjs/operator/concatMapTo.js | 64 + node_modules/rxjs/operator/concatMapTo.js.map | 1 + node_modules/rxjs/operator/count.d.ts | 50 + node_modules/rxjs/operator/count.js | 55 + node_modules/rxjs/operator/count.js.map | 1 + node_modules/rxjs/operator/debounce.d.ts | 44 + node_modules/rxjs/operator/debounce.js | 49 + node_modules/rxjs/operator/debounce.js.map | 1 + node_modules/rxjs/operator/debounceTime.d.ts | 49 + node_modules/rxjs/operator/debounceTime.js | 55 + .../rxjs/operator/debounceTime.js.map | 1 + .../rxjs/operator/defaultIfEmpty.d.ts | 3 + node_modules/rxjs/operator/defaultIfEmpty.js | 39 + .../rxjs/operator/defaultIfEmpty.js.map | 1 + node_modules/rxjs/operator/delay.d.ts | 42 + node_modules/rxjs/operator/delay.js | 48 + node_modules/rxjs/operator/delay.js.map | 1 + node_modules/rxjs/operator/delayWhen.d.ts | 47 + node_modules/rxjs/operator/delayWhen.js | 52 + node_modules/rxjs/operator/delayWhen.js.map | 1 + node_modules/rxjs/operator/dematerialize.d.ts | 43 + node_modules/rxjs/operator/dematerialize.js | 47 + .../rxjs/operator/dematerialize.js.map | 1 + node_modules/rxjs/operator/distinct.d.ts | 47 + node_modules/rxjs/operator/distinct.js | 52 + node_modules/rxjs/operator/distinct.js.map | 1 + .../rxjs/operator/distinctUntilChanged.d.ts | 3 + .../rxjs/operator/distinctUntilChanged.js | 47 + .../rxjs/operator/distinctUntilChanged.js.map | 1 + .../operator/distinctUntilKeyChanged.d.ts | 3 + .../rxjs/operator/distinctUntilKeyChanged.js | 65 + .../operator/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/operator/do.d.ts | 4 + node_modules/rxjs/operator/do.js | 51 + node_modules/rxjs/operator/do.js.map | 1 + node_modules/rxjs/operator/elementAt.d.ts | 44 + node_modules/rxjs/operator/elementAt.js | 49 + node_modules/rxjs/operator/elementAt.js.map | 1 + node_modules/rxjs/operator/every.d.ts | 16 + node_modules/rxjs/operator/every.js | 21 + node_modules/rxjs/operator/every.js.map | 1 + node_modules/rxjs/operator/exhaust.d.ts | 37 + node_modules/rxjs/operator/exhaust.js | 42 + node_modules/rxjs/operator/exhaust.js.map | 1 + node_modules/rxjs/operator/exhaustMap.d.ts | 3 + node_modules/rxjs/operator/exhaustMap.js | 53 + node_modules/rxjs/operator/exhaustMap.js.map | 1 + node_modules/rxjs/operator/expand.d.ts | 4 + node_modules/rxjs/operator/expand.js | 56 + node_modules/rxjs/operator/expand.js.map | 1 + node_modules/rxjs/operator/filter.d.ts | 3 + node_modules/rxjs/operator/filter.js | 47 + node_modules/rxjs/operator/filter.js.map | 1 + node_modules/rxjs/operator/finally.d.ts | 10 + node_modules/rxjs/operator/finally.js | 15 + node_modules/rxjs/operator/finally.js.map | 1 + node_modules/rxjs/operator/find.d.ts | 3 + node_modules/rxjs/operator/find.js | 41 + node_modules/rxjs/operator/find.js.map | 1 + node_modules/rxjs/operator/findIndex.d.ts | 36 + node_modules/rxjs/operator/findIndex.js | 41 + node_modules/rxjs/operator/findIndex.js.map | 1 + node_modules/rxjs/operator/first.d.ts | 7 + node_modules/rxjs/operator/first.js | 56 + node_modules/rxjs/operator/first.js.map | 1 + node_modules/rxjs/operator/groupBy.d.ts | 8 + node_modules/rxjs/operator/groupBy.js | 76 + node_modules/rxjs/operator/groupBy.js.map | 1 + .../rxjs/operator/ignoreElements.d.ts | 12 + node_modules/rxjs/operator/ignoreElements.js | 18 + .../rxjs/operator/ignoreElements.js.map | 1 + node_modules/rxjs/operator/isEmpty.d.ts | 11 + node_modules/rxjs/operator/isEmpty.js | 16 + node_modules/rxjs/operator/isEmpty.js.map | 1 + node_modules/rxjs/operator/last.d.ts | 7 + node_modules/rxjs/operator/last.js | 25 + node_modules/rxjs/operator/last.js.map | 1 + node_modules/rxjs/operator/let.d.ts | 8 + node_modules/rxjs/operator/let.js | 12 + node_modules/rxjs/operator/let.js.map | 1 + node_modules/rxjs/operator/map.d.ts | 35 + node_modules/rxjs/operator/map.js | 40 + node_modules/rxjs/operator/map.js.map | 1 + node_modules/rxjs/operator/mapTo.d.ts | 28 + node_modules/rxjs/operator/mapTo.js | 33 + node_modules/rxjs/operator/mapTo.js.map | 1 + node_modules/rxjs/operator/materialize.d.ts | 47 + node_modules/rxjs/operator/materialize.js | 51 + node_modules/rxjs/operator/materialize.js.map | 1 + node_modules/rxjs/operator/max.d.ts | 33 + node_modules/rxjs/operator/max.js | 38 + node_modules/rxjs/operator/max.js.map | 1 + node_modules/rxjs/operator/merge.d.ts | 17 + node_modules/rxjs/operator/merge.js | 60 + node_modules/rxjs/operator/merge.js.map | 1 + node_modules/rxjs/operator/mergeAll.d.ts | 4 + node_modules/rxjs/operator/mergeAll.js | 52 + node_modules/rxjs/operator/mergeAll.js.map | 1 + node_modules/rxjs/operator/mergeMap.d.ts | 3 + node_modules/rxjs/operator/mergeMap.js | 67 + node_modules/rxjs/operator/mergeMap.js.map | 1 + node_modules/rxjs/operator/mergeMapTo.d.ts | 3 + node_modules/rxjs/operator/mergeMapTo.js | 52 + node_modules/rxjs/operator/mergeMapTo.js.map | 1 + node_modules/rxjs/operator/mergeScan.d.ts | 33 + node_modules/rxjs/operator/mergeScan.js | 39 + node_modules/rxjs/operator/mergeScan.js.map | 1 + node_modules/rxjs/operator/min.d.ts | 33 + node_modules/rxjs/operator/min.js | 38 + node_modules/rxjs/operator/min.js.map | 1 + node_modules/rxjs/operator/multicast.d.ts | 7 + node_modules/rxjs/operator/multicast.js | 102 + node_modules/rxjs/operator/multicast.js.map | 1 + node_modules/rxjs/operator/observeOn.d.ts | 49 + node_modules/rxjs/operator/observeOn.js | 54 + node_modules/rxjs/operator/observeOn.js.map | 1 + .../rxjs/operator/onErrorResumeNext.d.ts | 8 + .../rxjs/operator/onErrorResumeNext.js | 73 + .../rxjs/operator/onErrorResumeNext.js.map | 1 + node_modules/rxjs/operator/pairwise.d.ts | 37 + node_modules/rxjs/operator/pairwise.js | 42 + node_modules/rxjs/operator/pairwise.js.map | 1 + node_modules/rxjs/operator/partition.d.ts | 43 + node_modules/rxjs/operator/partition.js | 48 + node_modules/rxjs/operator/partition.js.map | 1 + node_modules/rxjs/operator/pluck.d.ts | 28 + node_modules/rxjs/operator/pluck.js | 37 + node_modules/rxjs/operator/pluck.js.map | 1 + node_modules/rxjs/operator/publish.d.ts | 6 + node_modules/rxjs/operator/publish.js | 21 + node_modules/rxjs/operator/publish.js.map | 1 + .../rxjs/operator/publishBehavior.d.ts | 9 + node_modules/rxjs/operator/publishBehavior.js | 13 + .../rxjs/operator/publishBehavior.js.map | 1 + node_modules/rxjs/operator/publishLast.d.ts | 8 + node_modules/rxjs/operator/publishLast.js | 13 + node_modules/rxjs/operator/publishLast.js.map | 1 + node_modules/rxjs/operator/publishReplay.d.ts | 7 + node_modules/rxjs/operator/publishReplay.js | 17 + .../rxjs/operator/publishReplay.js.map | 1 + node_modules/rxjs/operator/race.d.ts | 6 + node_modules/rxjs/operator/race.js | 23 + node_modules/rxjs/operator/race.js.map | 1 + node_modules/rxjs/operator/reduce.d.ts | 4 + node_modules/rxjs/operator/reduce.js | 60 + node_modules/rxjs/operator/reduce.js.map | 1 + node_modules/rxjs/operator/repeat.d.ts | 14 + node_modules/rxjs/operator/repeat.js | 20 + node_modules/rxjs/operator/repeat.js.map | 1 + node_modules/rxjs/operator/repeatWhen.d.ts | 16 + node_modules/rxjs/operator/repeatWhen.js | 21 + node_modules/rxjs/operator/repeatWhen.js.map | 1 + node_modules/rxjs/operator/retry.d.ts | 18 + node_modules/rxjs/operator/retry.js | 24 + node_modules/rxjs/operator/retry.js.map | 1 + node_modules/rxjs/operator/retryWhen.d.ts | 16 + node_modules/rxjs/operator/retryWhen.js | 21 + node_modules/rxjs/operator/retryWhen.js.map | 1 + node_modules/rxjs/operator/sample.d.ts | 36 + node_modules/rxjs/operator/sample.js | 41 + node_modules/rxjs/operator/sample.js.map | 1 + node_modules/rxjs/operator/sampleTime.d.ts | 39 + node_modules/rxjs/operator/sampleTime.js | 45 + node_modules/rxjs/operator/sampleTime.js.map | 1 + node_modules/rxjs/operator/scan.d.ts | 4 + node_modules/rxjs/operator/scan.js | 48 + node_modules/rxjs/operator/scan.js.map | 1 + node_modules/rxjs/operator/sequenceEqual.d.ts | 54 + node_modules/rxjs/operator/sequenceEqual.js | 59 + .../rxjs/operator/sequenceEqual.js.map | 1 + node_modules/rxjs/operator/share.d.ts | 18 + node_modules/rxjs/operator/share.js | 24 + node_modules/rxjs/operator/share.js.map | 1 + node_modules/rxjs/operator/shareReplay.d.ts | 7 + node_modules/rxjs/operator/shareReplay.js | 12 + node_modules/rxjs/operator/shareReplay.js.map | 1 + node_modules/rxjs/operator/single.d.ts | 18 + node_modules/rxjs/operator/single.js | 23 + node_modules/rxjs/operator/single.js.map | 1 + node_modules/rxjs/operator/skip.d.ts | 13 + node_modules/rxjs/operator/skip.js | 18 + node_modules/rxjs/operator/skip.js.map | 1 + node_modules/rxjs/operator/skipLast.d.ts | 34 + node_modules/rxjs/operator/skipLast.js | 39 + node_modules/rxjs/operator/skipLast.js.map | 1 + node_modules/rxjs/operator/skipUntil.d.ts | 14 + node_modules/rxjs/operator/skipUntil.js | 19 + node_modules/rxjs/operator/skipUntil.js.map | 1 + node_modules/rxjs/operator/skipWhile.d.ts | 14 + node_modules/rxjs/operator/skipWhile.js | 19 + node_modules/rxjs/operator/skipWhile.js.map | 1 + node_modules/rxjs/operator/startWith.d.ts | 9 + node_modules/rxjs/operator/startWith.js | 26 + node_modules/rxjs/operator/startWith.js.map | 1 + node_modules/rxjs/operator/subscribeOn.d.ts | 14 + node_modules/rxjs/operator/subscribeOn.js | 19 + node_modules/rxjs/operator/subscribeOn.js.map | 1 + node_modules/rxjs/operator/switch.d.ts | 44 + node_modules/rxjs/operator/switch.js | 49 + node_modules/rxjs/operator/switch.js.map | 1 + node_modules/rxjs/operator/switchMap.d.ts | 3 + node_modules/rxjs/operator/switchMap.js | 55 + node_modules/rxjs/operator/switchMap.js.map | 1 + node_modules/rxjs/operator/switchMapTo.d.ts | 3 + node_modules/rxjs/operator/switchMapTo.js | 50 + node_modules/rxjs/operator/switchMapTo.js.map | 1 + node_modules/rxjs/operator/take.d.ts | 35 + node_modules/rxjs/operator/take.js | 40 + node_modules/rxjs/operator/take.js.map | 1 + node_modules/rxjs/operator/takeLast.d.ts | 38 + node_modules/rxjs/operator/takeLast.js | 43 + node_modules/rxjs/operator/takeLast.js.map | 1 + node_modules/rxjs/operator/takeUntil.d.ts | 35 + node_modules/rxjs/operator/takeUntil.js | 40 + node_modules/rxjs/operator/takeUntil.js.map | 1 + node_modules/rxjs/operator/takeWhile.d.ts | 38 + node_modules/rxjs/operator/takeWhile.js | 43 + node_modules/rxjs/operator/takeWhile.js.map | 1 + node_modules/rxjs/operator/throttle.d.ts | 43 + node_modules/rxjs/operator/throttle.js | 48 + node_modules/rxjs/operator/throttle.js.map | 1 + node_modules/rxjs/operator/throttleTime.d.ts | 43 + node_modules/rxjs/operator/throttleTime.js | 50 + .../rxjs/operator/throttleTime.js.map | 1 + node_modules/rxjs/operator/timeInterval.d.ts | 11 + node_modules/rxjs/operator/timeInterval.js | 16 + .../rxjs/operator/timeInterval.js.map | 1 + node_modules/rxjs/operator/timeout.d.ts | 68 + node_modules/rxjs/operator/timeout.js | 74 + node_modules/rxjs/operator/timeout.js.map | 1 + node_modules/rxjs/operator/timeoutWith.d.ts | 4 + node_modules/rxjs/operator/timeoutWith.js | 57 + node_modules/rxjs/operator/timeoutWith.js.map | 1 + node_modules/rxjs/operator/timestamp.d.ts | 10 + node_modules/rxjs/operator/timestamp.js | 15 + node_modules/rxjs/operator/timestamp.js.map | 1 + node_modules/rxjs/operator/toArray.d.ts | 25 + node_modules/rxjs/operator/toArray.js | 30 + node_modules/rxjs/operator/toArray.js.map | 1 + node_modules/rxjs/operator/toPromise.d.ts | 2 + node_modules/rxjs/operator/toPromise.js | 6 + node_modules/rxjs/operator/toPromise.js.map | 1 + node_modules/rxjs/operator/window.d.ts | 38 + node_modules/rxjs/operator/window.js | 43 + node_modules/rxjs/operator/window.js.map | 1 + node_modules/rxjs/operator/windowCount.d.ts | 50 + node_modules/rxjs/operator/windowCount.js | 56 + node_modules/rxjs/operator/windowCount.js.map | 1 + node_modules/rxjs/operator/windowTime.d.ts | 65 + node_modules/rxjs/operator/windowTime.js | 28 + node_modules/rxjs/operator/windowTime.js.map | 1 + node_modules/rxjs/operator/windowToggle.d.ts | 43 + node_modules/rxjs/operator/windowToggle.js | 48 + .../rxjs/operator/windowToggle.js.map | 1 + node_modules/rxjs/operator/windowWhen.d.ts | 40 + node_modules/rxjs/operator/windowWhen.js | 45 + node_modules/rxjs/operator/windowWhen.js.map | 1 + .../rxjs/operator/withLatestFrom.d.ts | 15 + node_modules/rxjs/operator/withLatestFrom.js | 50 + .../rxjs/operator/withLatestFrom.js.map | 1 + node_modules/rxjs/operator/zip.d.ts | 16 + node_modules/rxjs/operator/zip.js | 18 + node_modules/rxjs/operator/zip.js.map | 1 + node_modules/rxjs/operator/zipAll.d.ts | 8 + node_modules/rxjs/operator/zipAll.js | 13 + node_modules/rxjs/operator/zipAll.js.map | 1 + node_modules/rxjs/operators.d.ts | 107 + node_modules/rxjs/operators.js | 211 + node_modules/rxjs/operators.js.map | 1 + node_modules/rxjs/operators/audit.d.ts | 43 + node_modules/rxjs/operators/audit.js | 118 + node_modules/rxjs/operators/audit.js.map | 1 + node_modules/rxjs/operators/auditTime.d.ts | 45 + node_modules/rxjs/operators/auditTime.js | 52 + node_modules/rxjs/operators/auditTime.js.map | 1 + node_modules/rxjs/operators/buffer.d.ts | 35 + node_modules/rxjs/operators/buffer.js | 78 + node_modules/rxjs/operators/buffer.js.map | 1 + node_modules/rxjs/operators/bufferCount.d.ts | 43 + node_modules/rxjs/operators/bufferCount.js | 142 + .../rxjs/operators/bufferCount.js.map | 1 + node_modules/rxjs/operators/bufferTime.d.ts | 5 + node_modules/rxjs/operators/bufferTime.js | 201 + node_modules/rxjs/operators/bufferTime.js.map | 1 + node_modules/rxjs/operators/bufferToggle.d.ts | 41 + node_modules/rxjs/operators/bufferToggle.js | 154 + .../rxjs/operators/bufferToggle.js.map | 1 + node_modules/rxjs/operators/bufferWhen.d.ts | 36 + node_modules/rxjs/operators/bufferWhen.js | 124 + node_modules/rxjs/operators/bufferWhen.js.map | 1 + node_modules/rxjs/operators/catchError.d.ts | 60 + node_modules/rxjs/operators/catchError.js | 116 + node_modules/rxjs/operators/catchError.js.map | 1 + node_modules/rxjs/operators/combineAll.d.ts | 2 + node_modules/rxjs/operators/combineAll.js | 7 + node_modules/rxjs/operators/combineAll.js.map | 1 + .../rxjs/operators/combineLatest.d.ts | 43 + node_modules/rxjs/operators/combineLatest.js | 151 + .../rxjs/operators/combineLatest.js.map | 1 + node_modules/rxjs/operators/concat.d.ts | 12 + node_modules/rxjs/operators/concat.js | 63 + node_modules/rxjs/operators/concat.js.map | 1 + node_modules/rxjs/operators/concatAll.d.ts | 50 + node_modules/rxjs/operators/concatAll.js | 55 + node_modules/rxjs/operators/concatAll.js.map | 1 + node_modules/rxjs/operators/concatMap.d.ts | 4 + node_modules/rxjs/operators/concatMap.js | 67 + node_modules/rxjs/operators/concatMap.js.map | 1 + node_modules/rxjs/operators/concatMapTo.d.ts | 4 + node_modules/rxjs/operators/concatMapTo.js | 64 + .../rxjs/operators/concatMapTo.js.map | 1 + node_modules/rxjs/operators/count.d.ts | 51 + node_modules/rxjs/operators/count.js | 111 + node_modules/rxjs/operators/count.js.map | 1 + node_modules/rxjs/operators/debounce.d.ts | 45 + node_modules/rxjs/operators/debounce.js | 127 + node_modules/rxjs/operators/debounce.js.map | 1 + node_modules/rxjs/operators/debounceTime.d.ts | 49 + node_modules/rxjs/operators/debounceTime.js | 116 + .../rxjs/operators/debounceTime.js.map | 1 + .../rxjs/operators/defaultIfEmpty.d.ts | 3 + node_modules/rxjs/operators/defaultIfEmpty.js | 77 + .../rxjs/operators/defaultIfEmpty.js.map | 1 + node_modules/rxjs/operators/delay.d.ts | 42 + node_modules/rxjs/operators/delay.js | 136 + node_modules/rxjs/operators/delay.js.map | 1 + node_modules/rxjs/operators/delayWhen.d.ts | 48 + node_modules/rxjs/operators/delayWhen.js | 194 + node_modules/rxjs/operators/delayWhen.js.map | 1 + .../rxjs/operators/dematerialize.d.ts | 43 + node_modules/rxjs/operators/dematerialize.js | 77 + .../rxjs/operators/dematerialize.js.map | 1 + node_modules/rxjs/operators/distinct.d.ts | 66 + node_modules/rxjs/operators/distinct.js | 120 + node_modules/rxjs/operators/distinct.js.map | 1 + .../rxjs/operators/distinctUntilChanged.d.ts | 3 + .../rxjs/operators/distinctUntilChanged.js | 108 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.d.ts | 3 + .../rxjs/operators/distinctUntilKeyChanged.js | 65 + .../operators/distinctUntilKeyChanged.js.map | 1 + node_modules/rxjs/operators/elementAt.d.ts | 44 + node_modules/rxjs/operators/elementAt.js | 100 + node_modules/rxjs/operators/elementAt.js.map | 1 + node_modules/rxjs/operators/every.d.ts | 17 + node_modules/rxjs/operators/every.js | 74 + node_modules/rxjs/operators/every.js.map | 1 + node_modules/rxjs/operators/exhaust.d.ts | 37 + node_modules/rxjs/operators/exhaust.js | 89 + node_modules/rxjs/operators/exhaust.js.map | 1 + node_modules/rxjs/operators/exhaustMap.d.ts | 4 + node_modules/rxjs/operators/exhaustMap.js | 138 + node_modules/rxjs/operators/exhaustMap.js.map | 1 + node_modules/rxjs/operators/expand.d.ts | 38 + node_modules/rxjs/operators/expand.js | 151 + node_modules/rxjs/operators/expand.js.map | 1 + node_modules/rxjs/operators/filter.d.ts | 3 + node_modules/rxjs/operators/filter.js | 94 + node_modules/rxjs/operators/filter.js.map | 1 + node_modules/rxjs/operators/finalize.d.ts | 10 + node_modules/rxjs/operators/finalize.js | 43 + node_modules/rxjs/operators/finalize.js.map | 1 + node_modules/rxjs/operators/find.d.ts | 32 + node_modules/rxjs/operators/find.js | 100 + node_modules/rxjs/operators/find.js.map | 1 + node_modules/rxjs/operators/findIndex.d.ts | 37 + node_modules/rxjs/operators/findIndex.js | 41 + node_modules/rxjs/operators/findIndex.js.map | 1 + node_modules/rxjs/operators/first.d.ts | 8 + node_modules/rxjs/operators/first.js | 152 + node_modules/rxjs/operators/first.js.map | 1 + node_modules/rxjs/operators/groupBy.d.ts | 30 + node_modules/rxjs/operators/groupBy.js | 276 + node_modules/rxjs/operators/groupBy.js.map | 1 + .../rxjs/operators/ignoreElements.d.ts | 12 + node_modules/rxjs/operators/ignoreElements.js | 48 + .../rxjs/operators/ignoreElements.js.map | 1 + node_modules/rxjs/operators/isEmpty.d.ts | 2 + node_modules/rxjs/operators/isEmpty.js | 43 + node_modules/rxjs/operators/isEmpty.js.map | 1 + node_modules/rxjs/operators/last.d.ts | 8 + node_modules/rxjs/operators/last.js | 119 + node_modules/rxjs/operators/last.js.map | 1 + node_modules/rxjs/operators/map.d.ts | 43 + node_modules/rxjs/operators/map.js | 89 + node_modules/rxjs/operators/map.js.map | 1 + node_modules/rxjs/operators/mapTo.d.ts | 28 + node_modules/rxjs/operators/mapTo.js | 63 + node_modules/rxjs/operators/mapTo.js.map | 1 + node_modules/rxjs/operators/materialize.d.ts | 47 + node_modules/rxjs/operators/materialize.js | 92 + .../rxjs/operators/materialize.js.map | 1 + node_modules/rxjs/operators/max.d.ts | 33 + node_modules/rxjs/operators/max.js | 41 + node_modules/rxjs/operators/max.js.map | 1 + node_modules/rxjs/operators/merge.d.ts | 18 + node_modules/rxjs/operators/merge.js | 60 + node_modules/rxjs/operators/merge.js.map | 1 + node_modules/rxjs/operators/mergeAll.d.ts | 46 + node_modules/rxjs/operators/mergeAll.js | 53 + node_modules/rxjs/operators/mergeAll.js.map | 1 + node_modules/rxjs/operators/mergeMap.d.ts | 38 + node_modules/rxjs/operators/mergeMap.js | 173 + node_modules/rxjs/operators/mergeMap.js.map | 1 + node_modules/rxjs/operators/mergeMapTo.d.ts | 38 + node_modules/rxjs/operators/mergeMapTo.js | 155 + node_modules/rxjs/operators/mergeMapTo.js.map | 1 + node_modules/rxjs/operators/mergeScan.d.ts | 67 + node_modules/rxjs/operators/mergeScan.js | 129 + node_modules/rxjs/operators/mergeScan.js.map | 1 + node_modules/rxjs/operators/min.d.ts | 33 + node_modules/rxjs/operators/min.js | 41 + node_modules/rxjs/operators/min.js.map | 1 + node_modules/rxjs/operators/multicast.d.ts | 15 + node_modules/rxjs/operators/multicast.js | 59 + node_modules/rxjs/operators/multicast.js.map | 1 + node_modules/rxjs/operators/observeOn.d.ts | 81 + node_modules/rxjs/operators/observeOn.js | 115 + node_modules/rxjs/operators/observeOn.js.map | 1 + .../rxjs/operators/onErrorResumeNext.d.ts | 16 + .../rxjs/operators/onErrorResumeNext.js | 137 + .../rxjs/operators/onErrorResumeNext.js.map | 1 + node_modules/rxjs/operators/pairwise.d.ts | 37 + node_modules/rxjs/operators/pairwise.js | 77 + node_modules/rxjs/operators/pairwise.js.map | 1 + node_modules/rxjs/operators/partition.d.ts | 44 + node_modules/rxjs/operators/partition.js | 52 + node_modules/rxjs/operators/partition.js.map | 1 + node_modules/rxjs/operators/pluck.d.ts | 28 + node_modules/rxjs/operators/pluck.js | 57 + node_modules/rxjs/operators/pluck.js.map | 1 + node_modules/rxjs/operators/publish.d.ts | 6 + node_modules/rxjs/operators/publish.js | 24 + node_modules/rxjs/operators/publish.js.map | 1 + .../rxjs/operators/publishBehavior.d.ts | 10 + .../rxjs/operators/publishBehavior.js | 14 + .../rxjs/operators/publishBehavior.js.map | 1 + node_modules/rxjs/operators/publishLast.d.ts | 4 + node_modules/rxjs/operators/publishLast.js | 8 + .../rxjs/operators/publishLast.js.map | 1 + .../rxjs/operators/publishReplay.d.ts | 7 + node_modules/rxjs/operators/publishReplay.js | 14 + .../rxjs/operators/publishReplay.js.map | 1 + node_modules/rxjs/operators/race.d.ts | 6 + node_modules/rxjs/operators/race.js | 28 + node_modules/rxjs/operators/race.js.map | 1 + node_modules/rxjs/operators/reduce.d.ts | 4 + node_modules/rxjs/operators/reduce.js | 69 + node_modules/rxjs/operators/reduce.js.map | 1 + node_modules/rxjs/operators/refCount.d.ts | 2 + node_modules/rxjs/operators/refCount.js | 85 + node_modules/rxjs/operators/refCount.js.map | 1 + node_modules/rxjs/operators/repeat.d.ts | 14 + node_modules/rxjs/operators/repeat.js | 72 + node_modules/rxjs/operators/repeat.js.map | 1 + node_modules/rxjs/operators/repeatWhen.d.ts | 17 + node_modules/rxjs/operators/repeatWhen.js | 108 + node_modules/rxjs/operators/repeatWhen.js.map | 1 + node_modules/rxjs/operators/retry.d.ts | 18 + node_modules/rxjs/operators/retry.js | 65 + node_modules/rxjs/operators/retry.js.map | 1 + node_modules/rxjs/operators/retryWhen.d.ts | 17 + node_modules/rxjs/operators/retryWhen.js | 101 + node_modules/rxjs/operators/retryWhen.js.map | 1 + node_modules/rxjs/operators/sample.d.ts | 37 + node_modules/rxjs/operators/sample.js | 88 + node_modules/rxjs/operators/sample.js.map | 1 + node_modules/rxjs/operators/sampleTime.d.ts | 39 + node_modules/rxjs/operators/sampleTime.js | 91 + node_modules/rxjs/operators/sampleTime.js.map | 1 + node_modules/rxjs/operators/scan.d.ts | 4 + node_modules/rxjs/operators/scan.js | 121 + node_modules/rxjs/operators/scan.js.map | 1 + .../rxjs/operators/sequenceEqual.d.ts | 82 + node_modules/rxjs/operators/sequenceEqual.js | 164 + .../rxjs/operators/sequenceEqual.js.map | 1 + node_modules/rxjs/operators/share.d.ts | 14 + node_modules/rxjs/operators/share.js | 25 + node_modules/rxjs/operators/share.js.map | 1 + node_modules/rxjs/operators/shareReplay.d.ts | 7 + node_modules/rxjs/operators/shareReplay.js | 45 + .../rxjs/operators/shareReplay.js.map | 1 + node_modules/rxjs/operators/single.d.ts | 19 + node_modules/rxjs/operators/single.js | 93 + node_modules/rxjs/operators/single.js.map | 1 + node_modules/rxjs/operators/skip.d.ts | 13 + node_modules/rxjs/operators/skip.js | 51 + node_modules/rxjs/operators/skip.js.map | 1 + node_modules/rxjs/operators/skipLast.d.ts | 34 + node_modules/rxjs/operators/skipLast.js | 93 + node_modules/rxjs/operators/skipLast.js.map | 1 + node_modules/rxjs/operators/skipUntil.d.ts | 15 + node_modules/rxjs/operators/skipUntil.js | 71 + node_modules/rxjs/operators/skipUntil.js.map | 1 + node_modules/rxjs/operators/skipWhile.d.ts | 14 + node_modules/rxjs/operators/skipWhile.js | 66 + node_modules/rxjs/operators/skipWhile.js.map | 1 + node_modules/rxjs/operators/startWith.d.ts | 9 + node_modules/rxjs/operators/startWith.js | 48 + node_modules/rxjs/operators/startWith.js.map | 1 + node_modules/rxjs/operators/subscribeOn.d.ts | 14 + node_modules/rxjs/operators/subscribeOn.js | 31 + .../rxjs/operators/subscribeOn.js.map | 1 + node_modules/rxjs/operators/switchAll.d.ts | 3 + node_modules/rxjs/operators/switchAll.js | 8 + node_modules/rxjs/operators/switchAll.js.map | 1 + node_modules/rxjs/operators/switchMap.d.ts | 4 + node_modules/rxjs/operators/switchMap.js | 142 + node_modules/rxjs/operators/switchMap.js.map | 1 + node_modules/rxjs/operators/switchMapTo.d.ts | 4 + node_modules/rxjs/operators/switchMapTo.js | 125 + .../rxjs/operators/switchMapTo.js.map | 1 + node_modules/rxjs/operators/take.d.ts | 35 + node_modules/rxjs/operators/take.js | 91 + node_modules/rxjs/operators/take.js.map | 1 + node_modules/rxjs/operators/takeLast.d.ts | 38 + node_modules/rxjs/operators/takeLast.js | 109 + node_modules/rxjs/operators/takeLast.js.map | 1 + node_modules/rxjs/operators/takeUntil.d.ts | 36 + node_modules/rxjs/operators/takeUntil.js | 75 + node_modules/rxjs/operators/takeUntil.js.map | 1 + node_modules/rxjs/operators/takeWhile.d.ts | 38 + node_modules/rxjs/operators/takeWhile.js | 92 + node_modules/rxjs/operators/takeWhile.js.map | 1 + node_modules/rxjs/operators/tap.d.ts | 4 + node_modules/rxjs/operators/tap.js | 113 + node_modules/rxjs/operators/tap.js.map | 1 + node_modules/rxjs/operators/throttle.d.ts | 48 + node_modules/rxjs/operators/throttle.js | 142 + node_modules/rxjs/operators/throttle.js.map | 1 + node_modules/rxjs/operators/throttleTime.d.ts | 43 + node_modules/rxjs/operators/throttleTime.js | 116 + .../rxjs/operators/throttleTime.js.map | 1 + node_modules/rxjs/operators/timeInterval.d.ts | 8 + node_modules/rxjs/operators/timeInterval.js | 53 + .../rxjs/operators/timeInterval.js.map | 1 + node_modules/rxjs/operators/timeout.d.ts | 68 + node_modules/rxjs/operators/timeout.js | 141 + node_modules/rxjs/operators/timeout.js.map | 1 + node_modules/rxjs/operators/timeoutWith.d.ts | 5 + node_modules/rxjs/operators/timeoutWith.js | 128 + .../rxjs/operators/timeoutWith.js.map | 1 + node_modules/rxjs/operators/timestamp.d.ts | 14 + node_modules/rxjs/operators/timestamp.js | 25 + node_modules/rxjs/operators/timestamp.js.map | 1 + node_modules/rxjs/operators/toArray.d.ts | 2 + node_modules/rxjs/operators/toArray.js | 14 + node_modules/rxjs/operators/toArray.js.map | 1 + node_modules/rxjs/operators/window.d.ts | 39 + node_modules/rxjs/operators/window.js | 112 + node_modules/rxjs/operators/window.js.map | 1 + node_modules/rxjs/operators/windowCount.d.ts | 51 + node_modules/rxjs/operators/windowCount.js | 133 + .../rxjs/operators/windowCount.js.map | 1 + node_modules/rxjs/operators/windowTime.d.ts | 66 + node_modules/rxjs/operators/windowTime.js | 163 + node_modules/rxjs/operators/windowTime.js.map | 1 + node_modules/rxjs/operators/windowToggle.d.ts | 44 + node_modules/rxjs/operators/windowToggle.js | 180 + .../rxjs/operators/windowToggle.js.map | 1 + node_modules/rxjs/operators/windowWhen.d.ts | 41 + node_modules/rxjs/operators/windowWhen.js | 129 + node_modules/rxjs/operators/windowWhen.js.map | 1 + .../rxjs/operators/withLatestFrom.d.ts | 16 + node_modules/rxjs/operators/withLatestFrom.js | 132 + .../rxjs/operators/withLatestFrom.js.map | 1 + node_modules/rxjs/operators/zip.d.ts | 58 + node_modules/rxjs/operators/zip.js | 281 + node_modules/rxjs/operators/zip.js.map | 1 + node_modules/rxjs/operators/zipAll.d.ts | 2 + node_modules/rxjs/operators/zipAll.js | 7 + node_modules/rxjs/operators/zipAll.js.map | 1 + node_modules/rxjs/package.json | 198 + node_modules/rxjs/scheduler/Action.d.ts | 30 + node_modules/rxjs/scheduler/Action.js | 44 + node_modules/rxjs/scheduler/Action.js.map | 1 + .../rxjs/scheduler/AnimationFrameAction.d.ts | 14 + .../rxjs/scheduler/AnimationFrameAction.js | 55 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.d.ts | 5 + .../rxjs/scheduler/AnimationFrameScheduler.js | 37 + .../scheduler/AnimationFrameScheduler.js.map | 1 + node_modules/rxjs/scheduler/AsapAction.d.ts | 14 + node_modules/rxjs/scheduler/AsapAction.js | 55 + node_modules/rxjs/scheduler/AsapAction.js.map | 1 + .../rxjs/scheduler/AsapScheduler.d.ts | 5 + node_modules/rxjs/scheduler/AsapScheduler.js | 37 + .../rxjs/scheduler/AsapScheduler.js.map | 1 + node_modules/rxjs/scheduler/AsyncAction.d.ts | 27 + node_modules/rxjs/scheduler/AsyncAction.js | 142 + .../rxjs/scheduler/AsyncAction.js.map | 1 + .../rxjs/scheduler/AsyncScheduler.d.ts | 19 + node_modules/rxjs/scheduler/AsyncScheduler.js | 51 + .../rxjs/scheduler/AsyncScheduler.js.map | 1 + node_modules/rxjs/scheduler/QueueAction.d.ts | 16 + node_modules/rxjs/scheduler/QueueAction.js | 49 + .../rxjs/scheduler/QueueAction.js.map | 1 + .../rxjs/scheduler/QueueScheduler.d.ts | 3 + node_modules/rxjs/scheduler/QueueScheduler.js | 16 + .../rxjs/scheduler/QueueScheduler.js.map | 1 + .../rxjs/scheduler/VirtualTimeScheduler.d.ts | 33 + .../rxjs/scheduler/VirtualTimeScheduler.js | 113 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../rxjs/scheduler/animationFrame.d.ts | 32 + node_modules/rxjs/scheduler/animationFrame.js | 35 + .../rxjs/scheduler/animationFrame.js.map | 1 + node_modules/rxjs/scheduler/asap.d.ts | 36 + node_modules/rxjs/scheduler/asap.js | 39 + node_modules/rxjs/scheduler/asap.js.map | 1 + node_modules/rxjs/scheduler/async.d.ts | 44 + node_modules/rxjs/scheduler/async.js | 47 + node_modules/rxjs/scheduler/async.js.map | 1 + node_modules/rxjs/scheduler/queue.d.ts | 63 + node_modules/rxjs/scheduler/queue.js | 66 + node_modules/rxjs/scheduler/queue.js.map | 1 + node_modules/rxjs/src/AsyncSubject.ts | 45 + node_modules/rxjs/src/BUILD.bazel | 18 + node_modules/rxjs/src/BehaviorSubject.ts | 40 + node_modules/rxjs/src/InnerSubscriber.ts | 29 + node_modules/rxjs/src/LICENSE.txt | 202 + node_modules/rxjs/src/MiscJSDoc.ts | 451 + node_modules/rxjs/src/Notification.ts | 131 + node_modules/rxjs/src/Observable.ts | 355 + node_modules/rxjs/src/Observer.ts | 36 + node_modules/rxjs/src/Operator.ts | 6 + node_modules/rxjs/src/OuterSubscriber.ts | 23 + node_modules/rxjs/src/README.md | 206 + node_modules/rxjs/src/ReplaySubject.ts | 104 + node_modules/rxjs/src/Rx.global.js | 5 + node_modules/rxjs/src/Rx.ts | 227 + node_modules/rxjs/src/Scheduler.ts | 63 + node_modules/rxjs/src/Subject.ts | 170 + node_modules/rxjs/src/SubjectSubscription.ts | 39 + node_modules/rxjs/src/Subscriber.ts | 286 + node_modules/rxjs/src/Subscription.ts | 222 + node_modules/rxjs/src/WORKSPACE | 1 + .../rxjs/src/add/observable/bindCallback.ts | 10 + .../src/add/observable/bindNodeCallback.ts | 10 + .../rxjs/src/add/observable/combineLatest.ts | 10 + .../rxjs/src/add/observable/concat.ts | 10 + node_modules/rxjs/src/add/observable/defer.ts | 10 + .../rxjs/src/add/observable/dom/ajax.ts | 11 + .../rxjs/src/add/observable/dom/webSocket.ts | 10 + node_modules/rxjs/src/add/observable/empty.ts | 10 + .../rxjs/src/add/observable/forkJoin.ts | 10 + node_modules/rxjs/src/add/observable/from.ts | 10 + .../rxjs/src/add/observable/fromEvent.ts | 10 + .../src/add/observable/fromEventPattern.ts | 10 + .../rxjs/src/add/observable/fromPromise.ts | 10 + .../rxjs/src/add/observable/generate.ts | 10 + node_modules/rxjs/src/add/observable/if.ts | 4 + .../rxjs/src/add/observable/interval.ts | 10 + node_modules/rxjs/src/add/observable/merge.ts | 10 + node_modules/rxjs/src/add/observable/never.ts | 10 + node_modules/rxjs/src/add/observable/of.ts | 10 + .../src/add/observable/onErrorResumeNext.ts | 10 + node_modules/rxjs/src/add/observable/pairs.ts | 10 + node_modules/rxjs/src/add/observable/race.ts | 10 + node_modules/rxjs/src/add/observable/range.ts | 10 + node_modules/rxjs/src/add/observable/throw.ts | 4 + node_modules/rxjs/src/add/observable/timer.ts | 10 + node_modules/rxjs/src/add/observable/using.ts | 10 + node_modules/rxjs/src/add/observable/zip.ts | 10 + node_modules/rxjs/src/add/operator/audit.ts | 10 + .../rxjs/src/add/operator/auditTime.ts | 10 + node_modules/rxjs/src/add/operator/buffer.ts | 11 + .../rxjs/src/add/operator/bufferCount.ts | 11 + .../rxjs/src/add/operator/bufferTime.ts | 11 + .../rxjs/src/add/operator/bufferToggle.ts | 11 + .../rxjs/src/add/operator/bufferWhen.ts | 11 + node_modules/rxjs/src/add/operator/catch.ts | 13 + .../rxjs/src/add/operator/combineAll.ts | 11 + .../rxjs/src/add/operator/combineLatest.ts | 11 + node_modules/rxjs/src/add/operator/concat.ts | 11 + .../rxjs/src/add/operator/concatAll.ts | 11 + .../rxjs/src/add/operator/concatMap.ts | 11 + .../rxjs/src/add/operator/concatMapTo.ts | 11 + node_modules/rxjs/src/add/operator/count.ts | 11 + .../rxjs/src/add/operator/debounce.ts | 11 + .../rxjs/src/add/operator/debounceTime.ts | 11 + .../rxjs/src/add/operator/defaultIfEmpty.ts | 11 + node_modules/rxjs/src/add/operator/delay.ts | 11 + .../rxjs/src/add/operator/delayWhen.ts | 11 + .../rxjs/src/add/operator/dematerialize.ts | 11 + .../rxjs/src/add/operator/distinct.ts | 10 + .../src/add/operator/distinctUntilChanged.ts | 11 + .../add/operator/distinctUntilKeyChanged.ts | 11 + node_modules/rxjs/src/add/operator/do.ts | 13 + .../rxjs/src/add/operator/elementAt.ts | 11 + node_modules/rxjs/src/add/operator/every.ts | 11 + node_modules/rxjs/src/add/operator/exhaust.ts | 11 + .../rxjs/src/add/operator/exhaustMap.ts | 11 + node_modules/rxjs/src/add/operator/expand.ts | 11 + node_modules/rxjs/src/add/operator/filter.ts | 11 + node_modules/rxjs/src/add/operator/finally.ts | 13 + node_modules/rxjs/src/add/operator/find.ts | 11 + .../rxjs/src/add/operator/findIndex.ts | 11 + node_modules/rxjs/src/add/operator/first.ts | 11 + node_modules/rxjs/src/add/operator/groupBy.ts | 11 + .../rxjs/src/add/operator/ignoreElements.ts | 11 + node_modules/rxjs/src/add/operator/isEmpty.ts | 11 + node_modules/rxjs/src/add/operator/last.ts | 11 + node_modules/rxjs/src/add/operator/let.ts | 13 + node_modules/rxjs/src/add/operator/map.ts | 11 + node_modules/rxjs/src/add/operator/mapTo.ts | 11 + .../rxjs/src/add/operator/materialize.ts | 11 + node_modules/rxjs/src/add/operator/max.ts | 11 + node_modules/rxjs/src/add/operator/merge.ts | 11 + .../rxjs/src/add/operator/mergeAll.ts | 11 + .../rxjs/src/add/operator/mergeMap.ts | 13 + .../rxjs/src/add/operator/mergeMapTo.ts | 13 + .../rxjs/src/add/operator/mergeScan.ts | 11 + node_modules/rxjs/src/add/operator/min.ts | 11 + .../rxjs/src/add/operator/multicast.ts | 11 + .../rxjs/src/add/operator/observeOn.ts | 11 + .../src/add/operator/onErrorResumeNext.ts | 10 + .../rxjs/src/add/operator/pairwise.ts | 11 + .../rxjs/src/add/operator/partition.ts | 11 + node_modules/rxjs/src/add/operator/pluck.ts | 11 + node_modules/rxjs/src/add/operator/publish.ts | 11 + .../rxjs/src/add/operator/publishBehavior.ts | 11 + .../rxjs/src/add/operator/publishLast.ts | 11 + .../rxjs/src/add/operator/publishReplay.ts | 11 + node_modules/rxjs/src/add/operator/race.ts | 11 + node_modules/rxjs/src/add/operator/reduce.ts | 11 + node_modules/rxjs/src/add/operator/repeat.ts | 11 + .../rxjs/src/add/operator/repeatWhen.ts | 11 + node_modules/rxjs/src/add/operator/retry.ts | 11 + .../rxjs/src/add/operator/retryWhen.ts | 11 + node_modules/rxjs/src/add/operator/sample.ts | 11 + .../rxjs/src/add/operator/sampleTime.ts | 11 + node_modules/rxjs/src/add/operator/scan.ts | 12 + .../rxjs/src/add/operator/sequenceEqual.ts | 11 + node_modules/rxjs/src/add/operator/share.ts | 11 + .../rxjs/src/add/operator/shareReplay.ts | 11 + node_modules/rxjs/src/add/operator/single.ts | 11 + node_modules/rxjs/src/add/operator/skip.ts | 11 + .../rxjs/src/add/operator/skipLast.ts | 10 + .../rxjs/src/add/operator/skipUntil.ts | 11 + .../rxjs/src/add/operator/skipWhile.ts | 11 + .../rxjs/src/add/operator/startWith.ts | 11 + .../rxjs/src/add/operator/subscribeOn.ts | 11 + node_modules/rxjs/src/add/operator/switch.ts | 13 + .../rxjs/src/add/operator/switchMap.ts | 11 + .../rxjs/src/add/operator/switchMapTo.ts | 11 + node_modules/rxjs/src/add/operator/take.ts | 11 + .../rxjs/src/add/operator/takeLast.ts | 10 + .../rxjs/src/add/operator/takeUntil.ts | 11 + .../rxjs/src/add/operator/takeWhile.ts | 11 + .../rxjs/src/add/operator/throttle.ts | 11 + .../rxjs/src/add/operator/throttleTime.ts | 11 + .../rxjs/src/add/operator/timeInterval.ts | 11 + node_modules/rxjs/src/add/operator/timeout.ts | 11 + .../rxjs/src/add/operator/timeoutWith.ts | 11 + .../rxjs/src/add/operator/timestamp.ts | 10 + node_modules/rxjs/src/add/operator/toArray.ts | 11 + .../rxjs/src/add/operator/toPromise.ts | 2 + node_modules/rxjs/src/add/operator/window.ts | 11 + .../rxjs/src/add/operator/windowCount.ts | 11 + .../rxjs/src/add/operator/windowTime.ts | 11 + .../rxjs/src/add/operator/windowToggle.ts | 11 + .../rxjs/src/add/operator/windowWhen.ts | 11 + .../rxjs/src/add/operator/withLatestFrom.ts | 11 + node_modules/rxjs/src/add/operator/zip.ts | 11 + node_modules/rxjs/src/add/operator/zipAll.ts | 11 + node_modules/rxjs/src/interfaces.ts | 9 + .../src/observable/ArrayLikeObservable.ts | 72 + .../rxjs/src/observable/ArrayObservable.ts | 129 + .../src/observable/BoundCallbackObservable.ts | 281 + .../observable/BoundNodeCallbackObservable.ts | 279 + .../src/observable/ConnectableObservable.ts | 180 + .../rxjs/src/observable/DeferObservable.ts | 94 + .../rxjs/src/observable/EmptyObservable.ts | 83 + .../rxjs/src/observable/ErrorObservable.ts | 85 + .../rxjs/src/observable/ForkJoinObservable.ts | 233 + .../src/observable/FromEventObservable.ts | 244 + .../observable/FromEventPatternObservable.ts | 110 + .../rxjs/src/observable/FromObservable.ts | 115 + .../rxjs/src/observable/GenerateObservable.ts | 295 + .../rxjs/src/observable/IfObservable.ts | 59 + .../rxjs/src/observable/IntervalObservable.ts | 85 + .../rxjs/src/observable/IteratorObservable.ts | 168 + .../rxjs/src/observable/NeverObservable.ts | 53 + .../rxjs/src/observable/PairsObservable.ts | 95 + .../rxjs/src/observable/PromiseObservable.ts | 130 + .../rxjs/src/observable/RangeObservable.ts | 106 + .../rxjs/src/observable/ScalarObservable.ts | 57 + .../src/observable/SubscribeOnObservable.ts | 50 + .../rxjs/src/observable/TimerObservable.ts | 115 + .../rxjs/src/observable/UsingObservable.ts | 57 + .../rxjs/src/observable/bindCallback.ts | 3 + .../rxjs/src/observable/bindNodeCallback.ts | 3 + .../rxjs/src/observable/combineLatest.ts | 161 + node_modules/rxjs/src/observable/concat.ts | 116 + node_modules/rxjs/src/observable/defer.ts | 3 + .../rxjs/src/observable/dom/AjaxObservable.ts | 488 + .../rxjs/src/observable/dom/MiscJSDoc.ts | 73 + .../src/observable/dom/WebSocketSubject.ts | 280 + node_modules/rxjs/src/observable/dom/ajax.ts | 3 + .../rxjs/src/observable/dom/webSocket.ts | 3 + node_modules/rxjs/src/observable/empty.ts | 3 + node_modules/rxjs/src/observable/forkJoin.ts | 3 + node_modules/rxjs/src/observable/from.ts | 3 + node_modules/rxjs/src/observable/fromEvent.ts | 3 + .../rxjs/src/observable/fromEventPattern.ts | 3 + .../rxjs/src/observable/fromPromise.ts | 3 + node_modules/rxjs/src/observable/generate.ts | 3 + node_modules/rxjs/src/observable/if.ts | 3 + node_modules/rxjs/src/observable/interval.ts | 3 + node_modules/rxjs/src/observable/merge.ts | 101 + node_modules/rxjs/src/observable/never.ts | 3 + node_modules/rxjs/src/observable/of.ts | 3 + .../rxjs/src/observable/onErrorResumeNext.ts | 3 + node_modules/rxjs/src/observable/pairs.ts | 3 + node_modules/rxjs/src/observable/race.ts | 100 + node_modules/rxjs/src/observable/range.ts | 3 + node_modules/rxjs/src/observable/throw.ts | 3 + node_modules/rxjs/src/observable/timer.ts | 3 + node_modules/rxjs/src/observable/using.ts | 3 + node_modules/rxjs/src/observable/zip.ts | 3 + node_modules/rxjs/src/operator/audit.ts | 47 + node_modules/rxjs/src/operator/auditTime.ts | 50 + node_modules/rxjs/src/operator/buffer.ts | 39 + node_modules/rxjs/src/operator/bufferCount.ts | 48 + node_modules/rxjs/src/operator/bufferTime.ts | 76 + .../rxjs/src/operator/bufferToggle.ts | 46 + node_modules/rxjs/src/operator/bufferWhen.ts | 40 + node_modules/rxjs/src/operator/catch.ts | 66 + node_modules/rxjs/src/operator/combineAll.ts | 47 + .../rxjs/src/operator/combineLatest.ts | 68 + node_modules/rxjs/src/operator/concat.ts | 69 + node_modules/rxjs/src/operator/concatAll.ts | 60 + node_modules/rxjs/src/operator/concatMap.ts | 71 + node_modules/rxjs/src/operator/concatMapTo.ts | 68 + node_modules/rxjs/src/operator/count.ts | 54 + node_modules/rxjs/src/operator/debounce.ts | 49 + .../rxjs/src/operator/debounceTime.ts | 55 + .../rxjs/src/operator/defaultIfEmpty.ts | 42 + node_modules/rxjs/src/operator/delay.ts | 48 + node_modules/rxjs/src/operator/delayWhen.ts | 53 + .../rxjs/src/operator/dematerialize.ts | 48 + node_modules/rxjs/src/operator/distinct.ts | 53 + .../rxjs/src/operator/distinctUntilChanged.ts | 51 + .../src/operator/distinctUntilKeyChanged.ts | 69 + node_modules/rxjs/src/operator/do.ts | 58 + node_modules/rxjs/src/operator/elementAt.ts | 49 + node_modules/rxjs/src/operator/every.ts | 22 + node_modules/rxjs/src/operator/exhaust.ts | 42 + node_modules/rxjs/src/operator/exhaustMap.ts | 58 + node_modules/rxjs/src/operator/expand.ts | 61 + node_modules/rxjs/src/operator/filter.ts | 56 + node_modules/rxjs/src/operator/finally.ts | 15 + node_modules/rxjs/src/operator/find.ts | 49 + node_modules/rxjs/src/operator/findIndex.ts | 40 + node_modules/rxjs/src/operator/first.ts | 78 + node_modules/rxjs/src/operator/groupBy.ts | 86 + .../rxjs/src/operator/ignoreElements.ts | 16 + node_modules/rxjs/src/operator/isEmpty.ts | 16 + node_modules/rxjs/src/operator/last.ts | 47 + node_modules/rxjs/src/operator/let.ts | 11 + node_modules/rxjs/src/operator/map.ts | 39 + node_modules/rxjs/src/operator/mapTo.ts | 32 + node_modules/rxjs/src/operator/materialize.ts | 52 + node_modules/rxjs/src/operator/max.ts | 37 + node_modules/rxjs/src/operator/merge.ts | 72 + node_modules/rxjs/src/operator/mergeAll.ts | 54 + node_modules/rxjs/src/operator/mergeMap.ts | 71 + node_modules/rxjs/src/operator/mergeMapTo.ts | 56 + node_modules/rxjs/src/operator/mergeScan.ts | 41 + node_modules/rxjs/src/operator/min.ts | 37 + node_modules/rxjs/src/operator/multicast.ts | 110 + node_modules/rxjs/src/operator/observeOn.ts | 53 + .../rxjs/src/operator/onErrorResumeNext.ts | 80 + node_modules/rxjs/src/operator/pairwise.ts | 41 + node_modules/rxjs/src/operator/partition.ts | 46 + node_modules/rxjs/src/operator/pluck.ts | 32 + node_modules/rxjs/src/operator/publish.ts | 29 + .../rxjs/src/operator/publishBehavior.ts | 13 + node_modules/rxjs/src/operator/publishLast.ts | 12 + .../rxjs/src/operator/publishReplay.ts | 28 + node_modules/rxjs/src/operator/race.ts | 24 + node_modules/rxjs/src/operator/reduce.ts | 65 + node_modules/rxjs/src/operator/repeat.ts | 19 + node_modules/rxjs/src/operator/repeatWhen.ts | 20 + node_modules/rxjs/src/operator/retry.ts | 22 + node_modules/rxjs/src/operator/retryWhen.ts | 19 + node_modules/rxjs/src/operator/sample.ts | 40 + node_modules/rxjs/src/operator/sampleTime.ts | 44 + node_modules/rxjs/src/operator/scan.ts | 53 + .../rxjs/src/operator/sequenceEqual.ts | 59 + node_modules/rxjs/src/operator/share.ts | 22 + node_modules/rxjs/src/operator/shareReplay.ts | 12 + node_modules/rxjs/src/operator/single.ts | 22 + node_modules/rxjs/src/operator/skip.ts | 17 + node_modules/rxjs/src/operator/skipLast.ts | 38 + node_modules/rxjs/src/operator/skipUntil.ts | 18 + node_modules/rxjs/src/operator/skipWhile.ts | 18 + node_modules/rxjs/src/operator/startWith.ts | 31 + node_modules/rxjs/src/operator/subscribeOn.ts | 19 + node_modules/rxjs/src/operator/switch.ts | 48 + node_modules/rxjs/src/operator/switchMap.ts | 60 + node_modules/rxjs/src/operator/switchMapTo.ts | 57 + node_modules/rxjs/src/operator/take.ts | 39 + node_modules/rxjs/src/operator/takeLast.ts | 43 + node_modules/rxjs/src/operator/takeUntil.ts | 39 + node_modules/rxjs/src/operator/takeWhile.ts | 42 + node_modules/rxjs/src/operator/throttle.ts | 48 + .../rxjs/src/operator/throttleTime.ts | 51 + .../rxjs/src/operator/timeInterval.ts | 15 + node_modules/rxjs/src/operator/timeout.ts | 75 + node_modules/rxjs/src/operator/timeoutWith.ts | 62 + node_modules/rxjs/src/operator/timestamp.ts | 14 + node_modules/rxjs/src/operator/toArray.ts | 30 + node_modules/rxjs/src/operator/toPromise.ts | 5 + node_modules/rxjs/src/operator/window.ts | 43 + node_modules/rxjs/src/operator/windowCount.ts | 56 + node_modules/rxjs/src/operator/windowTime.ts | 102 + .../rxjs/src/operator/windowToggle.ts | 49 + node_modules/rxjs/src/operator/windowWhen.ts | 45 + .../rxjs/src/operator/withLatestFrom.ts | 61 + node_modules/rxjs/src/operator/zip.ts | 30 + node_modules/rxjs/src/operator/zipAll.ts | 12 + node_modules/rxjs/src/operators.ts | 108 + node_modules/rxjs/src/operators/audit.ts | 122 + node_modules/rxjs/src/operators/auditTime.ts | 51 + node_modules/rxjs/src/operators/buffer.ts | 81 + .../rxjs/src/operators/bufferCount.ts | 145 + node_modules/rxjs/src/operators/bufferTime.ts | 237 + .../rxjs/src/operators/bufferToggle.ts | 174 + node_modules/rxjs/src/operators/bufferWhen.ts | 136 + node_modules/rxjs/src/operators/catchError.ts | 115 + node_modules/rxjs/src/operators/combineAll.ts | 7 + .../rxjs/src/operators/combineLatest.ts | 169 + node_modules/rxjs/src/operators/concat.ts | 70 + node_modules/rxjs/src/operators/concatAll.ts | 55 + node_modules/rxjs/src/operators/concatMap.ts | 72 + .../rxjs/src/operators/concatMapTo.ts | 71 + node_modules/rxjs/src/operators/count.ts | 111 + node_modules/rxjs/src/operators/debounce.ts | 137 + .../rxjs/src/operators/debounceTime.ts | 119 + .../rxjs/src/operators/defaultIfEmpty.ts | 78 + node_modules/rxjs/src/operators/delay.ts | 150 + node_modules/rxjs/src/operators/delayWhen.ts | 205 + .../rxjs/src/operators/dematerialize.ts | 72 + node_modules/rxjs/src/operators/distinct.ts | 124 + .../src/operators/distinctUntilChanged.ts | 117 + .../src/operators/distinctUntilKeyChanged.ts | 68 + node_modules/rxjs/src/operators/elementAt.ts | 96 + node_modules/rxjs/src/operators/every.ts | 75 + node_modules/rxjs/src/operators/exhaust.ts | 88 + node_modules/rxjs/src/operators/exhaustMap.ts | 152 + node_modules/rxjs/src/operators/expand.ts | 169 + node_modules/rxjs/src/operators/filter.ts | 99 + node_modules/rxjs/src/operators/finalize.ts | 38 + node_modules/rxjs/src/operators/find.ts | 106 + node_modules/rxjs/src/operators/findIndex.ts | 41 + node_modules/rxjs/src/operators/first.ts | 166 + node_modules/rxjs/src/operators/groupBy.ts | 295 + .../rxjs/src/operators/ignoreElements.ts | 38 + node_modules/rxjs/src/operators/isEmpty.ts | 40 + node_modules/rxjs/src/operators/last.ts | 133 + node_modules/rxjs/src/operators/map.ts | 85 + node_modules/rxjs/src/operators/mapTo.ts | 66 + .../rxjs/src/operators/materialize.ts | 88 + node_modules/rxjs/src/operators/max.ts | 41 + node_modules/rxjs/src/operators/merge.ts | 72 + node_modules/rxjs/src/operators/mergeAll.ts | 53 + node_modules/rxjs/src/operators/mergeMap.ts | 179 + node_modules/rxjs/src/operators/mergeMapTo.ts | 168 + node_modules/rxjs/src/operators/mergeScan.ts | 133 + node_modules/rxjs/src/operators/min.ts | 40 + node_modules/rxjs/src/operators/multicast.ts | 68 + node_modules/rxjs/src/operators/observeOn.ts | 115 + .../rxjs/src/operators/onErrorResumeNext.ts | 156 + node_modules/rxjs/src/operators/pairwise.ts | 73 + node_modules/rxjs/src/operators/partition.ts | 53 + node_modules/rxjs/src/operators/pluck.ts | 54 + node_modules/rxjs/src/operators/publish.ts | 30 + .../rxjs/src/operators/publishBehavior.ts | 15 + .../rxjs/src/operators/publishLast.ts | 9 + .../rxjs/src/operators/publishReplay.ts | 27 + node_modules/rxjs/src/operators/race.ts | 31 + node_modules/rxjs/src/operators/reduce.ts | 74 + node_modules/rxjs/src/operators/refCount.ts | 94 + node_modules/rxjs/src/operators/repeat.ts | 63 + node_modules/rxjs/src/operators/repeatWhen.ts | 123 + node_modules/rxjs/src/operators/retry.ts | 60 + node_modules/rxjs/src/operators/retryWhen.ts | 118 + node_modules/rxjs/src/operators/sample.ts | 91 + node_modules/rxjs/src/operators/sampleTime.ts | 94 + node_modules/rxjs/src/operators/scan.ts | 115 + .../rxjs/src/operators/sequenceEqual.ts | 163 + node_modules/rxjs/src/operators/share.ts | 26 + .../rxjs/src/operators/shareReplay.ts | 51 + node_modules/rxjs/src/operators/single.ts | 95 + node_modules/rxjs/src/operators/skip.ts | 48 + node_modules/rxjs/src/operators/skipLast.ts | 91 + node_modules/rxjs/src/operators/skipUntil.ts | 77 + node_modules/rxjs/src/operators/skipWhile.ts | 65 + node_modules/rxjs/src/operators/startWith.ts | 52 + .../rxjs/src/operators/subscribeOn.ts | 35 + node_modules/rxjs/src/operators/switchAll.ts | 8 + node_modules/rxjs/src/operators/switchMap.ts | 155 + .../rxjs/src/operators/switchMapTo.ts | 141 + node_modules/rxjs/src/operators/take.ts | 87 + node_modules/rxjs/src/operators/takeLast.ts | 109 + node_modules/rxjs/src/operators/takeUntil.ts | 80 + node_modules/rxjs/src/operators/takeWhile.ts | 89 + node_modules/rxjs/src/operators/tap.ts | 122 + node_modules/rxjs/src/operators/throttle.ts | 160 + .../rxjs/src/operators/throttleTime.ts | 123 + .../rxjs/src/operators/timeInterval.ts | 49 + node_modules/rxjs/src/operators/timeout.ts | 148 + .../rxjs/src/operators/timeoutWith.ts | 141 + node_modules/rxjs/src/operators/timestamp.ts | 21 + node_modules/rxjs/src/operators/toArray.ts | 14 + node_modules/rxjs/src/operators/window.ts | 122 + .../rxjs/src/operators/windowCount.ts | 134 + node_modules/rxjs/src/operators/windowTime.ts | 262 + .../rxjs/src/operators/windowToggle.ts | 206 + node_modules/rxjs/src/operators/windowWhen.ts | 140 + .../rxjs/src/operators/withLatestFrom.ts | 149 + node_modules/rxjs/src/operators/zip.ts | 344 + node_modules/rxjs/src/operators/zipAll.ts | 7 + node_modules/rxjs/src/scheduler/Action.ts | 35 + .../src/scheduler/AnimationFrameAction.ts | 48 + .../src/scheduler/AnimationFrameScheduler.ts | 31 + node_modules/rxjs/src/scheduler/AsapAction.ts | 48 + .../rxjs/src/scheduler/AsapScheduler.ts | 31 + .../rxjs/src/scheduler/AsyncAction.ts | 156 + .../rxjs/src/scheduler/AsyncScheduler.ts | 47 + .../rxjs/src/scheduler/QueueAction.ts | 43 + .../rxjs/src/scheduler/QueueScheduler.ts | 4 + .../src/scheduler/VirtualTimeScheduler.ts | 105 + .../rxjs/src/scheduler/animationFrame.ts | 35 + node_modules/rxjs/src/scheduler/asap.ts | 39 + node_modules/rxjs/src/scheduler/async.ts | 47 + node_modules/rxjs/src/scheduler/queue.ts | 66 + node_modules/rxjs/src/symbol/iterator.ts | 38 + node_modules/rxjs/src/symbol/observable.ts | 26 + node_modules/rxjs/src/symbol/rxSubscriber.ts | 11 + .../rxjs/src/testing/ColdObservable.ts | 47 + .../rxjs/src/testing/HotObservable.ts | 52 + .../rxjs/src/testing/SubscriptionLog.ts | 5 + .../rxjs/src/testing/SubscriptionLoggable.ts | 21 + node_modules/rxjs/src/testing/TestMessage.ts | 6 + .../rxjs/src/testing/TestScheduler.ts | 244 + node_modules/rxjs/src/tsconfig.json | 32 + node_modules/rxjs/src/util/AnimationFrame.ts | 29 + .../rxjs/src/util/ArgumentOutOfRangeError.ts | 18 + node_modules/rxjs/src/util/EmptyError.ts | 18 + node_modules/rxjs/src/util/FastMap.ts | 30 + node_modules/rxjs/src/util/Immediate.ts | 238 + node_modules/rxjs/src/util/Map.ts | 4 + node_modules/rxjs/src/util/MapPolyfill.ts | 43 + .../rxjs/src/util/ObjectUnsubscribedError.ts | 17 + node_modules/rxjs/src/util/Set.ts | 40 + node_modules/rxjs/src/util/TimeoutError.ts | 15 + .../rxjs/src/util/UnsubscriptionError.ts | 15 + node_modules/rxjs/src/util/applyMixins.ts | 10 + node_modules/rxjs/src/util/assign.ts | 20 + node_modules/rxjs/src/util/errorObject.ts | 2 + node_modules/rxjs/src/util/identity.ts | 3 + node_modules/rxjs/src/util/isArray.ts | 1 + node_modules/rxjs/src/util/isArrayLike.ts | 1 + node_modules/rxjs/src/util/isDate.ts | 3 + node_modules/rxjs/src/util/isFunction.ts | 3 + node_modules/rxjs/src/util/isNumeric.ts | 9 + node_modules/rxjs/src/util/isObject.ts | 3 + node_modules/rxjs/src/util/isPromise.ts | 3 + node_modules/rxjs/src/util/isScheduler.ts | 4 + node_modules/rxjs/src/util/noop.ts | 2 + node_modules/rxjs/src/util/not.ts | 8 + node_modules/rxjs/src/util/pipe.ts | 34 + node_modules/rxjs/src/util/root.ts | 31 + .../rxjs/src/util/subscribeToResult.ts | 85 + node_modules/rxjs/src/util/toSubscriber.ts | 25 + node_modules/rxjs/src/util/tryCatch.ts | 17 + node_modules/rxjs/symbol/iterator.d.ts | 6 + node_modules/rxjs/symbol/iterator.js | 38 + node_modules/rxjs/symbol/iterator.js.map | 1 + node_modules/rxjs/symbol/observable.d.ts | 6 + node_modules/rxjs/symbol/observable.js | 26 + node_modules/rxjs/symbol/observable.js.map | 1 + node_modules/rxjs/symbol/rxSubscriber.d.ts | 5 + node_modules/rxjs/symbol/rxSubscriber.js | 10 + node_modules/rxjs/symbol/rxSubscriber.js.map | 1 + node_modules/rxjs/testing/ColdObservable.d.ts | 20 + node_modules/rxjs/testing/ColdObservable.js | 46 + .../rxjs/testing/ColdObservable.js.map | 1 + node_modules/rxjs/testing/HotObservable.d.ts | 22 + node_modules/rxjs/testing/HotObservable.js | 48 + .../rxjs/testing/HotObservable.js.map | 1 + .../rxjs/testing/SubscriptionLog.d.ts | 5 + node_modules/rxjs/testing/SubscriptionLog.js | 11 + .../rxjs/testing/SubscriptionLog.js.map | 1 + .../rxjs/testing/SubscriptionLoggable.d.ts | 8 + .../rxjs/testing/SubscriptionLoggable.js | 19 + .../rxjs/testing/SubscriptionLoggable.js.map | 1 + node_modules/rxjs/testing/TestMessage.d.ts | 5 + node_modules/rxjs/testing/TestMessage.js | 2 + node_modules/rxjs/testing/TestMessage.js.map | 1 + node_modules/rxjs/testing/TestScheduler.d.ts | 28 + node_modules/rxjs/testing/TestScheduler.js | 223 + .../rxjs/testing/TestScheduler.js.map | 1 + node_modules/rxjs/util/AnimationFrame.d.ts | 6 + node_modules/rxjs/util/AnimationFrame.js | 34 + node_modules/rxjs/util/AnimationFrame.js.map | 1 + .../rxjs/util/ArgumentOutOfRangeError.d.ts | 13 + .../rxjs/util/ArgumentOutOfRangeError.js | 28 + .../rxjs/util/ArgumentOutOfRangeError.js.map | 1 + node_modules/rxjs/util/EmptyError.d.ts | 13 + node_modules/rxjs/util/EmptyError.js | 28 + node_modules/rxjs/util/EmptyError.js.map | 1 + node_modules/rxjs/util/FastMap.d.ts | 8 + node_modules/rxjs/util/FastMap.js | 31 + node_modules/rxjs/util/FastMap.js.map | 1 + node_modules/rxjs/util/Immediate.d.ts | 23 + node_modules/rxjs/util/Immediate.js | 209 + node_modules/rxjs/util/Immediate.js.map | 1 + node_modules/rxjs/util/Map.d.ts | 1 + node_modules/rxjs/util/Map.js | 5 + node_modules/rxjs/util/Map.js.map | 1 + node_modules/rxjs/util/MapPolyfill.d.ts | 10 + node_modules/rxjs/util/MapPolyfill.js | 47 + node_modules/rxjs/util/MapPolyfill.js.map | 1 + .../rxjs/util/ObjectUnsubscribedError.d.ts | 12 + .../rxjs/util/ObjectUnsubscribedError.js | 27 + .../rxjs/util/ObjectUnsubscribedError.js.map | 1 + node_modules/rxjs/util/Set.d.ts | 11 + node_modules/rxjs/util/Set.js | 33 + node_modules/rxjs/util/Set.js.map | 1 + node_modules/rxjs/util/TimeoutError.d.ts | 10 + node_modules/rxjs/util/TimeoutError.js | 25 + node_modules/rxjs/util/TimeoutError.js.map | 1 + .../rxjs/util/UnsubscriptionError.d.ts | 8 + node_modules/rxjs/util/UnsubscriptionError.js | 25 + .../rxjs/util/UnsubscriptionError.js.map | 1 + node_modules/rxjs/util/applyMixins.d.ts | 1 + node_modules/rxjs/util/applyMixins.js | 13 + node_modules/rxjs/util/applyMixins.js.map | 1 + node_modules/rxjs/util/assign.d.ts | 3 + node_modules/rxjs/util/assign.js | 26 + node_modules/rxjs/util/assign.js.map | 1 + node_modules/rxjs/util/errorObject.d.ts | 1 + node_modules/rxjs/util/errorObject.js | 4 + node_modules/rxjs/util/errorObject.js.map | 1 + node_modules/rxjs/util/identity.d.ts | 1 + node_modules/rxjs/util/identity.js | 6 + node_modules/rxjs/util/identity.js.map | 1 + node_modules/rxjs/util/isArray.d.ts | 1 + node_modules/rxjs/util/isArray.js | 3 + node_modules/rxjs/util/isArray.js.map | 1 + node_modules/rxjs/util/isArrayLike.d.ts | 1 + node_modules/rxjs/util/isArrayLike.js | 3 + node_modules/rxjs/util/isArrayLike.js.map | 1 + node_modules/rxjs/util/isDate.d.ts | 1 + node_modules/rxjs/util/isDate.js | 6 + node_modules/rxjs/util/isDate.js.map | 1 + node_modules/rxjs/util/isFunction.d.ts | 1 + node_modules/rxjs/util/isFunction.js | 6 + node_modules/rxjs/util/isFunction.js.map | 1 + node_modules/rxjs/util/isNumeric.d.ts | 1 + node_modules/rxjs/util/isNumeric.js | 12 + node_modules/rxjs/util/isNumeric.js.map | 1 + node_modules/rxjs/util/isObject.d.ts | 1 + node_modules/rxjs/util/isObject.js | 6 + node_modules/rxjs/util/isObject.js.map | 1 + node_modules/rxjs/util/isPromise.d.ts | 1 + node_modules/rxjs/util/isPromise.js | 6 + node_modules/rxjs/util/isPromise.js.map | 1 + node_modules/rxjs/util/isScheduler.d.ts | 2 + node_modules/rxjs/util/isScheduler.js | 6 + node_modules/rxjs/util/isScheduler.js.map | 1 + node_modules/rxjs/util/noop.d.ts | 1 + node_modules/rxjs/util/noop.js | 5 + node_modules/rxjs/util/noop.js.map | 1 + node_modules/rxjs/util/not.d.ts | 1 + node_modules/rxjs/util/not.js | 11 + node_modules/rxjs/util/not.js.map | 1 + node_modules/rxjs/util/pipe.d.ts | 12 + node_modules/rxjs/util/pipe.js | 25 + node_modules/rxjs/util/pipe.js.map | 1 + node_modules/rxjs/util/root.d.ts | 2 + node_modules/rxjs/util/root.js | 19 + node_modules/rxjs/util/root.js.map | 1 + node_modules/rxjs/util/subscribeToResult.d.ts | 3 + node_modules/rxjs/util/subscribeToResult.js | 79 + .../rxjs/util/subscribeToResult.js.map | 1 + node_modules/rxjs/util/toSubscriber.d.ts | 3 + node_modules/rxjs/util/toSubscriber.js | 20 + node_modules/rxjs/util/toSubscriber.js.map | 1 + node_modules/rxjs/util/tryCatch.d.ts | 1 + node_modules/rxjs/util/tryCatch.js | 19 + node_modules/rxjs/util/tryCatch.js.map | 1 + node_modules/safe-buffer/LICENSE | 21 + node_modules/safe-buffer/README.md | 584 + node_modules/safe-buffer/index.d.ts | 187 + node_modules/safe-buffer/index.js | 62 + node_modules/safe-buffer/package.json | 65 + node_modules/safer-buffer/LICENSE | 21 + node_modules/safer-buffer/Porting-Buffer.md | 268 + node_modules/safer-buffer/Readme.md | 156 + node_modules/safer-buffer/dangerous.js | 58 + node_modules/safer-buffer/package.json | 62 + node_modules/safer-buffer/safer.js | 77 + node_modules/safer-buffer/tests.js | 406 + node_modules/semver/CHANGELOG.md | 39 + node_modules/semver/LICENSE | 15 + node_modules/semver/README.md | 412 + node_modules/semver/bin/semver | 160 + node_modules/semver/package.json | 60 + node_modules/semver/range.bnf | 16 + node_modules/semver/semver.js | 1483 ++ node_modules/shebang-command/index.js | 19 + node_modules/shebang-command/license | 21 + node_modules/shebang-command/package.json | 71 + node_modules/shebang-command/readme.md | 39 + node_modules/shebang-regex/index.js | 2 + node_modules/shebang-regex/license | 21 + node_modules/shebang-regex/package.json | 64 + node_modules/shebang-regex/readme.md | 29 + node_modules/signal-exit/CHANGELOG.md | 27 + node_modules/signal-exit/LICENSE.txt | 16 + node_modules/signal-exit/README.md | 40 + node_modules/signal-exit/index.js | 157 + node_modules/signal-exit/package.json | 66 + node_modules/signal-exit/signals.js | 53 + node_modules/slice-ansi/index.js | 80 + node_modules/slice-ansi/license | 22 + node_modules/slice-ansi/package.json | 104 + node_modules/slice-ansi/readme.md | 56 + node_modules/sshpk/.npmignore | 9 + node_modules/sshpk/.travis.yml | 11 + node_modules/sshpk/LICENSE | 18 + node_modules/sshpk/README.md | 804 + node_modules/sshpk/bin/sshpk-conv | 243 + node_modules/sshpk/bin/sshpk-sign | 191 + node_modules/sshpk/bin/sshpk-verify | 167 + node_modules/sshpk/lib/algs.js | 168 + node_modules/sshpk/lib/certificate.js | 410 + node_modules/sshpk/lib/dhe.js | 397 + node_modules/sshpk/lib/ed-compat.js | 92 + node_modules/sshpk/lib/errors.js | 84 + node_modules/sshpk/lib/fingerprint.js | 220 + node_modules/sshpk/lib/formats/auto.js | 124 + node_modules/sshpk/lib/formats/dnssec.js | 287 + .../sshpk/lib/formats/openssh-cert.js | 352 + node_modules/sshpk/lib/formats/pem.js | 290 + node_modules/sshpk/lib/formats/pkcs1.js | 373 + node_modules/sshpk/lib/formats/pkcs8.js | 631 + node_modules/sshpk/lib/formats/putty.js | 99 + node_modules/sshpk/lib/formats/rfc4253.js | 166 + node_modules/sshpk/lib/formats/ssh-private.js | 262 + node_modules/sshpk/lib/formats/ssh.js | 115 + node_modules/sshpk/lib/formats/x509-pem.js | 88 + node_modules/sshpk/lib/formats/x509.js | 752 + node_modules/sshpk/lib/identity.js | 373 + node_modules/sshpk/lib/index.js | 40 + node_modules/sshpk/lib/key.js | 294 + node_modules/sshpk/lib/private-key.js | 246 + node_modules/sshpk/lib/signature.js | 314 + node_modules/sshpk/lib/ssh-buffer.js | 149 + node_modules/sshpk/lib/utils.js | 404 + node_modules/sshpk/man/man1/sshpk-conv.1 | 135 + node_modules/sshpk/man/man1/sshpk-sign.1 | 81 + node_modules/sshpk/man/man1/sshpk-verify.1 | 68 + node_modules/sshpk/package.json | 96 + node_modules/stream-to-observable/index.js | 80 + node_modules/stream-to-observable/license | 21 + .../stream-to-observable/package.json | 71 + node_modules/stream-to-observable/readme.md | 122 + node_modules/stream-to-observable/rxjs-all.js | 5 + node_modules/stream-to-observable/rxjs.js | 5 + node_modules/stream-to-observable/zen.js | 5 + node_modules/string-width/index.js | 37 + node_modules/string-width/license | 21 + node_modules/string-width/package.json | 88 + node_modules/string-width/readme.md | 42 + node_modules/string_decoder/.travis.yml | 50 + node_modules/string_decoder/LICENSE | 48 + node_modules/string_decoder/README.md | 47 + .../string_decoder/lib/string_decoder.js | 296 + node_modules/string_decoder/package.json | 59 + node_modules/strip-ansi/index.js | 6 + node_modules/strip-ansi/license | 21 + node_modules/strip-ansi/package.json | 108 + node_modules/strip-ansi/readme.md | 33 + node_modules/strip-eof/index.js | 15 + node_modules/strip-eof/license | 21 + node_modules/strip-eof/package.json | 71 + node_modules/strip-eof/readme.md | 28 + node_modules/supports-color/browser.js | 5 + node_modules/supports-color/index.js | 131 + node_modules/supports-color/license | 9 + node_modules/supports-color/package.json | 86 + node_modules/supports-color/readme.md | 66 + node_modules/symbol-observable/CHANGELOG.md | 75 + node_modules/symbol-observable/es/index.js | 12 + node_modules/symbol-observable/es/ponyfill.js | 17 + node_modules/symbol-observable/index.d.ts | 2 + node_modules/symbol-observable/index.js | 1 + node_modules/symbol-observable/lib/index.js | 22 + .../symbol-observable/lib/ponyfill.js | 23 + node_modules/symbol-observable/license | 22 + node_modules/symbol-observable/package.json | 77 + node_modules/symbol-observable/readme.md | 31 + node_modules/throttleit/.npmignore | 3 + node_modules/throttleit/History.md | 19 + node_modules/throttleit/Makefile | 18 + node_modules/throttleit/Readme.md | 32 + node_modules/throttleit/component.json | 13 + node_modules/throttleit/example.js | 14 + node_modules/throttleit/index.js | 32 + node_modules/throttleit/package.json | 51 + node_modules/throttleit/test.js | 73 + node_modules/tmp/LICENSE | 21 + node_modules/tmp/README.md | 358 + node_modules/tmp/lib/tmp.js | 762 + node_modules/tmp/package.json | 75 + node_modules/tough-cookie/LICENSE | 12 + node_modules/tough-cookie/README.md | 507 + node_modules/tough-cookie/lib/cookie.js | 1431 ++ node_modules/tough-cookie/lib/memstore.js | 176 + node_modules/tough-cookie/lib/pathMatch.js | 61 + .../tough-cookie/lib/permuteDomain.js | 56 + .../tough-cookie/lib/pubsuffix-psl.js | 38 + node_modules/tough-cookie/lib/store.js | 71 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 176 + .../node_modules/punycode/package.json | 87 + .../node_modules/punycode/punycode.js | 533 + node_modules/tough-cookie/package.json | 94 + node_modules/tunnel-agent/LICENSE | 55 + node_modules/tunnel-agent/README.md | 4 + node_modules/tunnel-agent/index.js | 244 + node_modules/tunnel-agent/package.json | 55 + node_modules/tweetnacl/.npmignore | 4 + node_modules/tweetnacl/AUTHORS.md | 28 + node_modules/tweetnacl/CHANGELOG.md | 221 + node_modules/tweetnacl/LICENSE | 24 + .../tweetnacl/PULL_REQUEST_TEMPLATE.md | 20 + node_modules/tweetnacl/README.md | 459 + node_modules/tweetnacl/nacl-fast.js | 2388 ++ node_modules/tweetnacl/nacl-fast.min.js | 2 + node_modules/tweetnacl/nacl.d.ts | 98 + node_modules/tweetnacl/nacl.js | 1175 + node_modules/tweetnacl/nacl.min.js | 1 + node_modules/tweetnacl/package.json | 86 + node_modules/typedarray/.travis.yml | 4 + node_modules/typedarray/LICENSE | 35 + node_modules/typedarray/example/tarray.js | 4 + node_modules/typedarray/index.js | 630 + node_modules/typedarray/package.json | 83 + node_modules/typedarray/readme.markdown | 61 + .../typedarray/test/server/undef_globals.js | 19 + node_modules/typedarray/test/tarray.js | 10 + node_modules/universalify/LICENSE | 20 + node_modules/universalify/README.md | 76 + node_modules/universalify/index.js | 25 + node_modules/universalify/package.json | 64 + node_modules/uri-js/README.md | 199 + node_modules/uri-js/bower.json | 47 + node_modules/uri-js/dist/es5/uri.all.d.ts | 59 + node_modules/uri-js/dist/es5/uri.all.js | 1389 ++ node_modules/uri-js/dist/es5/uri.all.js.map | 1 + node_modules/uri-js/dist/es5/uri.all.min.d.ts | 59 + node_modules/uri-js/dist/es5/uri.all.min.js | 3 + .../uri-js/dist/es5/uri.all.min.js.map | 1 + node_modules/uri-js/dist/esnext/index.d.ts | 1 + node_modules/uri-js/dist/esnext/index.js | 13 + node_modules/uri-js/dist/esnext/index.js.map | 1 + .../uri-js/dist/esnext/regexps-iri.d.ts | 3 + .../uri-js/dist/esnext/regexps-iri.js | 3 + .../uri-js/dist/esnext/regexps-iri.js.map | 1 + .../uri-js/dist/esnext/regexps-uri.d.ts | 4 + .../uri-js/dist/esnext/regexps-uri.js | 42 + .../uri-js/dist/esnext/regexps-uri.js.map | 1 + .../uri-js/dist/esnext/schemes/http.d.ts | 3 + .../uri-js/dist/esnext/schemes/http.js | 27 + .../uri-js/dist/esnext/schemes/http.js.map | 1 + .../uri-js/dist/esnext/schemes/https.d.ts | 3 + .../uri-js/dist/esnext/schemes/https.js | 9 + .../uri-js/dist/esnext/schemes/https.js.map | 1 + .../uri-js/dist/esnext/schemes/mailto.d.ts | 12 + .../uri-js/dist/esnext/schemes/mailto.js | 148 + .../uri-js/dist/esnext/schemes/mailto.js.map | 1 + .../uri-js/dist/esnext/schemes/urn-uuid.d.ts | 7 + .../uri-js/dist/esnext/schemes/urn-uuid.js | 23 + .../dist/esnext/schemes/urn-uuid.js.map | 1 + .../uri-js/dist/esnext/schemes/urn.d.ts | 10 + .../uri-js/dist/esnext/schemes/urn.js | 49 + .../uri-js/dist/esnext/schemes/urn.js.map | 1 + node_modules/uri-js/dist/esnext/uri.d.ts | 59 + node_modules/uri-js/dist/esnext/uri.js | 480 + node_modules/uri-js/dist/esnext/uri.js.map | 1 + node_modules/uri-js/dist/esnext/util.d.ts | 6 + node_modules/uri-js/dist/esnext/util.js | 36 + node_modules/uri-js/dist/esnext/util.js.map | 1 + node_modules/uri-js/package.json | 93 + node_modules/uri-js/rollup.config.js | 32 + node_modules/uri-js/src/index.ts | 18 + node_modules/uri-js/src/punycode.d.ts | 24 + node_modules/uri-js/src/regexps-iri.ts | 4 + node_modules/uri-js/src/regexps-uri.ts | 89 + node_modules/uri-js/src/schemes/http.ts | 36 + node_modules/uri-js/src/schemes/https.ts | 11 + node_modules/uri-js/src/schemes/mailto.ts | 182 + node_modules/uri-js/src/schemes/urn-uuid.ts | 36 + node_modules/uri-js/src/schemes/urn.ts | 69 + node_modules/uri-js/src/uri.ts | 556 + node_modules/uri-js/src/util.ts | 40 + node_modules/uri-js/tests/qunit.css | 118 + node_modules/uri-js/tests/qunit.js | 1042 + node_modules/uri-js/tests/test-es5-min.html | 17 + node_modules/uri-js/tests/test-es5.html | 17 + node_modules/uri-js/tests/tests.js | 774 + node_modules/uri-js/tsconfig.json | 20 + node_modules/uri-js/yarn.lock | 1902 ++ node_modules/url/.npmignore | 1 + node_modules/url/.travis.yml | 7 + node_modules/url/.zuul.yml | 16 + node_modules/url/LICENSE | 21 + node_modules/url/README.md | 108 + .../url/node_modules/punycode/LICENSE-MIT.txt | 20 + .../url/node_modules/punycode/README.md | 176 + .../url/node_modules/punycode/package.json | 80 + .../url/node_modules/punycode/punycode.js | 530 + node_modules/url/package.json | 53 + node_modules/url/test.js | 1599 ++ node_modules/url/url.js | 732 + node_modules/url/util.js | 16 + node_modules/util-deprecate/History.md | 16 + node_modules/util-deprecate/LICENSE | 24 + node_modules/util-deprecate/README.md | 53 + node_modules/util-deprecate/browser.js | 67 + node_modules/util-deprecate/node.js | 6 + node_modules/util-deprecate/package.json | 56 + node_modules/uuid/.eslintrc.json | 47 + node_modules/uuid/AUTHORS | 5 + node_modules/uuid/CHANGELOG.md | 110 + node_modules/uuid/LICENSE.md | 21 + node_modules/uuid/README.md | 293 + node_modules/uuid/README_js.md | 280 + node_modules/uuid/bin/uuid | 65 + node_modules/uuid/index.js | 8 + node_modules/uuid/lib/bytesToUuid.js | 24 + node_modules/uuid/lib/md5-browser.js | 216 + node_modules/uuid/lib/md5.js | 25 + node_modules/uuid/lib/rng-browser.js | 34 + node_modules/uuid/lib/rng.js | 8 + node_modules/uuid/lib/sha1-browser.js | 89 + node_modules/uuid/lib/sha1.js | 25 + node_modules/uuid/lib/v35.js | 57 + node_modules/uuid/package.json | 95 + node_modules/uuid/v1.js | 109 + node_modules/uuid/v3.js | 4 + node_modules/uuid/v4.js | 29 + node_modules/uuid/v5.js | 3 + node_modules/verror/.npmignore | 9 + node_modules/verror/CHANGES.md | 28 + node_modules/verror/CONTRIBUTING.md | 19 + node_modules/verror/LICENSE | 19 + node_modules/verror/README.md | 528 + node_modules/verror/lib/verror.js | 451 + node_modules/verror/package.json | 51 + node_modules/which/CHANGELOG.md | 152 + node_modules/which/LICENSE | 15 + node_modules/which/README.md | 51 + node_modules/which/bin/which | 52 + node_modules/which/package.json | 65 + node_modules/which/which.js | 135 + node_modules/wrappy/LICENSE | 15 + node_modules/wrappy/README.md | 36 + node_modules/wrappy/package.json | 59 + node_modules/wrappy/wrappy.js | 33 + node_modules/yauzl/LICENSE | 21 + node_modules/yauzl/README.md | 658 + node_modules/yauzl/index.js | 796 + .../yauzl/node_modules/fd-slicer/.npmignore | 2 + .../yauzl/node_modules/fd-slicer/.travis.yml | 7 + .../yauzl/node_modules/fd-slicer/CHANGELOG.md | 49 + .../yauzl/node_modules/fd-slicer/LICENSE | 21 + .../yauzl/node_modules/fd-slicer/README.md | 199 + .../yauzl/node_modules/fd-slicer/index.js | 296 + .../yauzl/node_modules/fd-slicer/package.json | 65 + .../yauzl/node_modules/fd-slicer/test/test.js | 350 + node_modules/yauzl/package.json | 70 + package-lock.json | 1576 ++ 8697 files changed, 534105 insertions(+) create mode 120000 node_modules/.bin/cypress create mode 120000 node_modules/.bin/extract-zip create mode 120000 node_modules/.bin/is-ci create mode 120000 node_modules/.bin/mkdirp create mode 120000 node_modules/.bin/rimraf create mode 120000 node_modules/.bin/semver create mode 120000 node_modules/.bin/sshpk-conv create mode 120000 node_modules/.bin/sshpk-sign create mode 120000 node_modules/.bin/sshpk-verify create mode 120000 node_modules/.bin/uuid create mode 120000 node_modules/.bin/which create mode 100644 node_modules/@cypress/listr-verbose-renderer/index.js create mode 100644 node_modules/@cypress/listr-verbose-renderer/lib/utils.js create mode 100644 node_modules/@cypress/listr-verbose-renderer/license create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/index.js create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/license create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/package.json create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/readme.md create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color/index.js create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color/license create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color/package.json create mode 100644 node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color/readme.md create mode 100644 node_modules/@cypress/listr-verbose-renderer/package.json create mode 100644 node_modules/@cypress/listr-verbose-renderer/readme.md create mode 100644 node_modules/@cypress/xvfb/LICENSE create mode 100644 node_modules/@cypress/xvfb/README.md create mode 100644 node_modules/@cypress/xvfb/index.js create mode 100644 node_modules/@cypress/xvfb/package.json create mode 100644 node_modules/ajv/.tonic_example.js create mode 100644 node_modules/ajv/LICENSE create mode 100644 node_modules/ajv/README.md create mode 100644 node_modules/ajv/dist/ajv.bundle.js create mode 100644 node_modules/ajv/dist/ajv.min.js create mode 100644 node_modules/ajv/dist/ajv.min.js.map create mode 100644 node_modules/ajv/lib/ajv.d.ts create mode 100644 node_modules/ajv/lib/ajv.js create mode 100644 node_modules/ajv/lib/cache.js create mode 100644 node_modules/ajv/lib/compile/async.js create mode 100644 node_modules/ajv/lib/compile/equal.js create mode 100644 node_modules/ajv/lib/compile/error_classes.js create mode 100644 node_modules/ajv/lib/compile/formats.js create mode 100644 node_modules/ajv/lib/compile/index.js create mode 100644 node_modules/ajv/lib/compile/resolve.js create mode 100644 node_modules/ajv/lib/compile/rules.js create mode 100644 node_modules/ajv/lib/compile/schema_obj.js create mode 100644 node_modules/ajv/lib/compile/ucs2length.js create mode 100644 node_modules/ajv/lib/compile/util.js create mode 100644 node_modules/ajv/lib/data.js create mode 100644 node_modules/ajv/lib/definition_schema.js create mode 100644 node_modules/ajv/lib/dot/_limit.jst create mode 100644 node_modules/ajv/lib/dot/_limitItems.jst create mode 100644 node_modules/ajv/lib/dot/_limitLength.jst create mode 100644 node_modules/ajv/lib/dot/_limitProperties.jst create mode 100644 node_modules/ajv/lib/dot/allOf.jst create mode 100644 node_modules/ajv/lib/dot/anyOf.jst create mode 100644 node_modules/ajv/lib/dot/coerce.def create mode 100644 node_modules/ajv/lib/dot/comment.jst create mode 100644 node_modules/ajv/lib/dot/const.jst create mode 100644 node_modules/ajv/lib/dot/contains.jst create mode 100644 node_modules/ajv/lib/dot/custom.jst create mode 100644 node_modules/ajv/lib/dot/defaults.def create mode 100644 node_modules/ajv/lib/dot/definitions.def create mode 100644 node_modules/ajv/lib/dot/dependencies.jst create mode 100644 node_modules/ajv/lib/dot/enum.jst create mode 100644 node_modules/ajv/lib/dot/errors.def create mode 100644 node_modules/ajv/lib/dot/format.jst create mode 100644 node_modules/ajv/lib/dot/if.jst create mode 100644 node_modules/ajv/lib/dot/items.jst create mode 100644 node_modules/ajv/lib/dot/missing.def create mode 100644 node_modules/ajv/lib/dot/multipleOf.jst create mode 100644 node_modules/ajv/lib/dot/not.jst create mode 100644 node_modules/ajv/lib/dot/oneOf.jst create mode 100644 node_modules/ajv/lib/dot/pattern.jst create mode 100644 node_modules/ajv/lib/dot/properties.jst create mode 100644 node_modules/ajv/lib/dot/propertyNames.jst create mode 100644 node_modules/ajv/lib/dot/ref.jst create mode 100644 node_modules/ajv/lib/dot/required.jst create mode 100644 node_modules/ajv/lib/dot/uniqueItems.jst create mode 100644 node_modules/ajv/lib/dot/validate.jst create mode 100644 node_modules/ajv/lib/dotjs/README.md create mode 100644 node_modules/ajv/lib/dotjs/_limit.js create mode 100644 node_modules/ajv/lib/dotjs/_limitItems.js create mode 100644 node_modules/ajv/lib/dotjs/_limitLength.js create mode 100644 node_modules/ajv/lib/dotjs/_limitProperties.js create mode 100644 node_modules/ajv/lib/dotjs/allOf.js create mode 100644 node_modules/ajv/lib/dotjs/anyOf.js create mode 100644 node_modules/ajv/lib/dotjs/comment.js create mode 100644 node_modules/ajv/lib/dotjs/const.js create mode 100644 node_modules/ajv/lib/dotjs/contains.js create mode 100644 node_modules/ajv/lib/dotjs/custom.js create mode 100644 node_modules/ajv/lib/dotjs/dependencies.js create mode 100644 node_modules/ajv/lib/dotjs/enum.js create mode 100644 node_modules/ajv/lib/dotjs/format.js create mode 100644 node_modules/ajv/lib/dotjs/if.js create mode 100644 node_modules/ajv/lib/dotjs/index.js create mode 100644 node_modules/ajv/lib/dotjs/items.js create mode 100644 node_modules/ajv/lib/dotjs/multipleOf.js create mode 100644 node_modules/ajv/lib/dotjs/not.js create mode 100644 node_modules/ajv/lib/dotjs/oneOf.js create mode 100644 node_modules/ajv/lib/dotjs/pattern.js create mode 100644 node_modules/ajv/lib/dotjs/properties.js create mode 100644 node_modules/ajv/lib/dotjs/propertyNames.js create mode 100644 node_modules/ajv/lib/dotjs/ref.js create mode 100644 node_modules/ajv/lib/dotjs/required.js create mode 100644 node_modules/ajv/lib/dotjs/uniqueItems.js create mode 100644 node_modules/ajv/lib/dotjs/validate.js create mode 100644 node_modules/ajv/lib/keyword.js create mode 100644 node_modules/ajv/lib/refs/data.json create mode 100644 node_modules/ajv/lib/refs/json-schema-draft-04.json create mode 100644 node_modules/ajv/lib/refs/json-schema-draft-06.json create mode 100644 node_modules/ajv/lib/refs/json-schema-draft-07.json create mode 100644 node_modules/ajv/lib/refs/json-schema-secure.json create mode 100644 node_modules/ajv/package.json create mode 100644 node_modules/ajv/scripts/.eslintrc.yml create mode 100644 node_modules/ajv/scripts/bundle.js create mode 100644 node_modules/ajv/scripts/compile-dots.js create mode 100755 node_modules/ajv/scripts/info create mode 100755 node_modules/ajv/scripts/prepare-tests create mode 100755 node_modules/ajv/scripts/publish-built-version create mode 100755 node_modules/ajv/scripts/travis-gh-pages create mode 100644 node_modules/ansi-escapes/index.js create mode 100644 node_modules/ansi-escapes/license create mode 100644 node_modules/ansi-escapes/package.json create mode 100644 node_modules/ansi-escapes/readme.md create mode 100644 node_modules/ansi-regex/index.js create mode 100644 node_modules/ansi-regex/license create mode 100644 node_modules/ansi-regex/package.json create mode 100644 node_modules/ansi-regex/readme.md create mode 100644 node_modules/ansi-styles/index.js create mode 100644 node_modules/ansi-styles/license create mode 100644 node_modules/ansi-styles/package.json create mode 100644 node_modules/ansi-styles/readme.md create mode 100644 node_modules/arch/LICENSE create mode 100644 node_modules/arch/README.md create mode 100644 node_modules/arch/browser.js create mode 100644 node_modules/arch/index.js create mode 100644 node_modules/arch/package.json create mode 100644 node_modules/asn1/LICENSE create mode 100644 node_modules/asn1/README.md create mode 100644 node_modules/asn1/lib/ber/errors.js create mode 100644 node_modules/asn1/lib/ber/index.js create mode 100644 node_modules/asn1/lib/ber/reader.js create mode 100644 node_modules/asn1/lib/ber/types.js create mode 100644 node_modules/asn1/lib/ber/writer.js create mode 100644 node_modules/asn1/lib/index.js create mode 100644 node_modules/asn1/package.json create mode 100644 node_modules/assert-plus/AUTHORS create mode 100644 node_modules/assert-plus/CHANGES.md create mode 100644 node_modules/assert-plus/README.md create mode 100644 node_modules/assert-plus/assert.js create mode 100644 node_modules/assert-plus/package.json create mode 100644 node_modules/async/CHANGELOG.md create mode 100644 node_modules/async/LICENSE create mode 100644 node_modules/async/README.md create mode 100644 node_modules/async/all.js create mode 100644 node_modules/async/allLimit.js create mode 100644 node_modules/async/allSeries.js create mode 100644 node_modules/async/any.js create mode 100644 node_modules/async/anyLimit.js create mode 100644 node_modules/async/anySeries.js create mode 100644 node_modules/async/apply.js create mode 100644 node_modules/async/applyEach.js create mode 100644 node_modules/async/applyEachSeries.js create mode 100644 node_modules/async/asyncify.js create mode 100644 node_modules/async/auto.js create mode 100644 node_modules/async/autoInject.js create mode 100644 node_modules/async/bower.json create mode 100644 node_modules/async/cargo.js create mode 100644 node_modules/async/compose.js create mode 100644 node_modules/async/concat.js create mode 100644 node_modules/async/concatLimit.js create mode 100644 node_modules/async/concatSeries.js create mode 100644 node_modules/async/constant.js create mode 100644 node_modules/async/detect.js create mode 100644 node_modules/async/detectLimit.js create mode 100644 node_modules/async/detectSeries.js create mode 100644 node_modules/async/dir.js create mode 100644 node_modules/async/dist/async.js create mode 100644 node_modules/async/dist/async.min.js create mode 100644 node_modules/async/dist/async.min.map create mode 100644 node_modules/async/doDuring.js create mode 100644 node_modules/async/doUntil.js create mode 100644 node_modules/async/doWhilst.js create mode 100644 node_modules/async/during.js create mode 100644 node_modules/async/each.js create mode 100644 node_modules/async/eachLimit.js create mode 100644 node_modules/async/eachOf.js create mode 100644 node_modules/async/eachOfLimit.js create mode 100644 node_modules/async/eachOfSeries.js create mode 100644 node_modules/async/eachSeries.js create mode 100644 node_modules/async/ensureAsync.js create mode 100644 node_modules/async/every.js create mode 100644 node_modules/async/everyLimit.js create mode 100644 node_modules/async/everySeries.js create mode 100644 node_modules/async/filter.js create mode 100644 node_modules/async/filterLimit.js create mode 100644 node_modules/async/filterSeries.js create mode 100644 node_modules/async/find.js create mode 100644 node_modules/async/findLimit.js create mode 100644 node_modules/async/findSeries.js create mode 100644 node_modules/async/foldl.js create mode 100644 node_modules/async/foldr.js create mode 100644 node_modules/async/forEach.js create mode 100644 node_modules/async/forEachLimit.js create mode 100644 node_modules/async/forEachOf.js create mode 100644 node_modules/async/forEachOfLimit.js create mode 100644 node_modules/async/forEachOfSeries.js create mode 100644 node_modules/async/forEachSeries.js create mode 100644 node_modules/async/forever.js create mode 100644 node_modules/async/groupBy.js create mode 100644 node_modules/async/groupByLimit.js create mode 100644 node_modules/async/groupBySeries.js create mode 100644 node_modules/async/index.js create mode 100644 node_modules/async/inject.js create mode 100644 node_modules/async/internal/DoublyLinkedList.js create mode 100644 node_modules/async/internal/applyEach.js create mode 100644 node_modules/async/internal/breakLoop.js create mode 100644 node_modules/async/internal/consoleFunc.js create mode 100644 node_modules/async/internal/createTester.js create mode 100644 node_modules/async/internal/doLimit.js create mode 100644 node_modules/async/internal/doParallel.js create mode 100644 node_modules/async/internal/doParallelLimit.js create mode 100644 node_modules/async/internal/eachOfLimit.js create mode 100644 node_modules/async/internal/filter.js create mode 100644 node_modules/async/internal/findGetResult.js create mode 100644 node_modules/async/internal/getIterator.js create mode 100644 node_modules/async/internal/initialParams.js create mode 100644 node_modules/async/internal/iterator.js create mode 100644 node_modules/async/internal/map.js create mode 100644 node_modules/async/internal/notId.js create mode 100644 node_modules/async/internal/once.js create mode 100644 node_modules/async/internal/onlyOnce.js create mode 100644 node_modules/async/internal/parallel.js create mode 100644 node_modules/async/internal/queue.js create mode 100644 node_modules/async/internal/reject.js create mode 100644 node_modules/async/internal/setImmediate.js create mode 100644 node_modules/async/internal/slice.js create mode 100644 node_modules/async/internal/withoutIndex.js create mode 100644 node_modules/async/internal/wrapAsync.js create mode 100644 node_modules/async/log.js create mode 100644 node_modules/async/map.js create mode 100644 node_modules/async/mapLimit.js create mode 100644 node_modules/async/mapSeries.js create mode 100644 node_modules/async/mapValues.js create mode 100644 node_modules/async/mapValuesLimit.js create mode 100644 node_modules/async/mapValuesSeries.js create mode 100644 node_modules/async/memoize.js create mode 100644 node_modules/async/nextTick.js create mode 100644 node_modules/async/package.json create mode 100644 node_modules/async/parallel.js create mode 100644 node_modules/async/parallelLimit.js create mode 100644 node_modules/async/priorityQueue.js create mode 100644 node_modules/async/queue.js create mode 100644 node_modules/async/race.js create mode 100644 node_modules/async/reduce.js create mode 100644 node_modules/async/reduceRight.js create mode 100644 node_modules/async/reflect.js create mode 100644 node_modules/async/reflectAll.js create mode 100644 node_modules/async/reject.js create mode 100644 node_modules/async/rejectLimit.js create mode 100644 node_modules/async/rejectSeries.js create mode 100644 node_modules/async/retry.js create mode 100644 node_modules/async/retryable.js create mode 100644 node_modules/async/select.js create mode 100644 node_modules/async/selectLimit.js create mode 100644 node_modules/async/selectSeries.js create mode 100644 node_modules/async/seq.js create mode 100644 node_modules/async/series.js create mode 100644 node_modules/async/setImmediate.js create mode 100644 node_modules/async/some.js create mode 100644 node_modules/async/someLimit.js create mode 100644 node_modules/async/someSeries.js create mode 100644 node_modules/async/sortBy.js create mode 100644 node_modules/async/timeout.js create mode 100644 node_modules/async/times.js create mode 100644 node_modules/async/timesLimit.js create mode 100644 node_modules/async/timesSeries.js create mode 100644 node_modules/async/transform.js create mode 100644 node_modules/async/tryEach.js create mode 100644 node_modules/async/unmemoize.js create mode 100644 node_modules/async/until.js create mode 100644 node_modules/async/waterfall.js create mode 100644 node_modules/async/whilst.js create mode 100644 node_modules/async/wrapSync.js create mode 100644 node_modules/asynckit/LICENSE create mode 100644 node_modules/asynckit/README.md create mode 100644 node_modules/asynckit/bench.js create mode 100644 node_modules/asynckit/index.js create mode 100644 node_modules/asynckit/lib/abort.js create mode 100644 node_modules/asynckit/lib/async.js create mode 100644 node_modules/asynckit/lib/defer.js create mode 100644 node_modules/asynckit/lib/iterate.js create mode 100644 node_modules/asynckit/lib/readable_asynckit.js create mode 100644 node_modules/asynckit/lib/readable_parallel.js create mode 100644 node_modules/asynckit/lib/readable_serial.js create mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 node_modules/asynckit/lib/state.js create mode 100644 node_modules/asynckit/lib/streamify.js create mode 100644 node_modules/asynckit/lib/terminator.js create mode 100644 node_modules/asynckit/package.json create mode 100644 node_modules/asynckit/parallel.js create mode 100644 node_modules/asynckit/serial.js create mode 100644 node_modules/asynckit/serialOrdered.js create mode 100644 node_modules/asynckit/stream.js create mode 100644 node_modules/aws-sign2/LICENSE create mode 100644 node_modules/aws-sign2/README.md create mode 100644 node_modules/aws-sign2/index.js create mode 100644 node_modules/aws-sign2/package.json create mode 100644 node_modules/aws4/.travis.yml create mode 100644 node_modules/aws4/LICENSE create mode 100644 node_modules/aws4/README.md create mode 100644 node_modules/aws4/aws4.js create mode 100644 node_modules/aws4/lru.js create mode 100644 node_modules/aws4/package.json create mode 100644 node_modules/balanced-match/.npmignore create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/bcrypt-pbkdf/CONTRIBUTING.md create mode 100644 node_modules/bcrypt-pbkdf/LICENSE create mode 100644 node_modules/bcrypt-pbkdf/README.md create mode 100644 node_modules/bcrypt-pbkdf/index.js create mode 100644 node_modules/bcrypt-pbkdf/package.json create mode 100644 node_modules/bluebird/LICENSE create mode 100644 node_modules/bluebird/README.md create mode 100644 node_modules/bluebird/changelog.md create mode 100644 node_modules/bluebird/js/browser/bluebird.core.js create mode 100644 node_modules/bluebird/js/browser/bluebird.core.min.js create mode 100644 node_modules/bluebird/js/browser/bluebird.js create mode 100644 node_modules/bluebird/js/browser/bluebird.min.js create mode 100644 node_modules/bluebird/js/release/any.js create mode 100644 node_modules/bluebird/js/release/assert.js create mode 100644 node_modules/bluebird/js/release/async.js create mode 100644 node_modules/bluebird/js/release/bind.js create mode 100644 node_modules/bluebird/js/release/bluebird.js create mode 100644 node_modules/bluebird/js/release/call_get.js create mode 100644 node_modules/bluebird/js/release/cancel.js create mode 100644 node_modules/bluebird/js/release/catch_filter.js create mode 100644 node_modules/bluebird/js/release/context.js create mode 100644 node_modules/bluebird/js/release/debuggability.js create mode 100644 node_modules/bluebird/js/release/direct_resolve.js create mode 100644 node_modules/bluebird/js/release/each.js create mode 100644 node_modules/bluebird/js/release/errors.js create mode 100644 node_modules/bluebird/js/release/es5.js create mode 100644 node_modules/bluebird/js/release/filter.js create mode 100644 node_modules/bluebird/js/release/finally.js create mode 100644 node_modules/bluebird/js/release/generators.js create mode 100644 node_modules/bluebird/js/release/join.js create mode 100644 node_modules/bluebird/js/release/map.js create mode 100644 node_modules/bluebird/js/release/method.js create mode 100644 node_modules/bluebird/js/release/nodeback.js create mode 100644 node_modules/bluebird/js/release/nodeify.js create mode 100644 node_modules/bluebird/js/release/promise.js create mode 100644 node_modules/bluebird/js/release/promise_array.js create mode 100644 node_modules/bluebird/js/release/promisify.js create mode 100644 node_modules/bluebird/js/release/props.js create mode 100644 node_modules/bluebird/js/release/queue.js create mode 100644 node_modules/bluebird/js/release/race.js create mode 100644 node_modules/bluebird/js/release/reduce.js create mode 100644 node_modules/bluebird/js/release/schedule.js create mode 100644 node_modules/bluebird/js/release/settle.js create mode 100644 node_modules/bluebird/js/release/some.js create mode 100644 node_modules/bluebird/js/release/synchronous_inspection.js create mode 100644 node_modules/bluebird/js/release/thenables.js create mode 100644 node_modules/bluebird/js/release/timers.js create mode 100644 node_modules/bluebird/js/release/using.js create mode 100644 node_modules/bluebird/js/release/util.js create mode 100644 node_modules/bluebird/package.json create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/buffer-crc32/LICENSE create mode 100644 node_modules/buffer-crc32/README.md create mode 100644 node_modules/buffer-crc32/index.js create mode 100644 node_modules/buffer-crc32/package.json create mode 100644 node_modules/buffer-from/LICENSE create mode 100644 node_modules/buffer-from/index.js create mode 100644 node_modules/buffer-from/package.json create mode 100644 node_modules/buffer-from/readme.md create mode 100644 node_modules/cachedir/.travis.yml create mode 100644 node_modules/cachedir/LICENSE create mode 100644 node_modules/cachedir/README.md create mode 100644 node_modules/cachedir/index.js create mode 100644 node_modules/cachedir/package.json create mode 100644 node_modules/cachedir/test.js create mode 100644 node_modules/caseless/LICENSE create mode 100644 node_modules/caseless/README.md create mode 100644 node_modules/caseless/index.js create mode 100644 node_modules/caseless/package.json create mode 100644 node_modules/caseless/test.js create mode 100644 node_modules/chalk/index.js create mode 100644 node_modules/chalk/index.js.flow create mode 100644 node_modules/chalk/license create mode 100644 node_modules/chalk/node_modules/ansi-styles/index.js create mode 100644 node_modules/chalk/node_modules/ansi-styles/license create mode 100644 node_modules/chalk/node_modules/ansi-styles/package.json create mode 100644 node_modules/chalk/node_modules/ansi-styles/readme.md create mode 100644 node_modules/chalk/package.json create mode 100644 node_modules/chalk/readme.md create mode 100644 node_modules/chalk/templates.js create mode 100644 node_modules/chalk/types/index.d.ts create mode 100644 node_modules/check-more-types/LICENSE create mode 100644 node_modules/check-more-types/README.md create mode 100644 node_modules/check-more-types/bower.json create mode 100644 node_modules/check-more-types/dist/check-more-types.d.ts create mode 100644 node_modules/check-more-types/dist/check-more-types.js create mode 100644 node_modules/check-more-types/dist/check-more-types.min.js create mode 100644 node_modules/check-more-types/package.json create mode 100644 node_modules/ci-info/CHANGELOG.md create mode 100644 node_modules/ci-info/LICENSE create mode 100644 node_modules/ci-info/README.md create mode 100644 node_modules/ci-info/index.js create mode 100644 node_modules/ci-info/package.json create mode 100644 node_modules/ci-info/vendors.json create mode 100644 node_modules/cli-cursor/index.js create mode 100644 node_modules/cli-cursor/license create mode 100644 node_modules/cli-cursor/package.json create mode 100644 node_modules/cli-cursor/readme.md create mode 100644 node_modules/cli-spinners/index.js create mode 100644 node_modules/cli-spinners/license create mode 100644 node_modules/cli-spinners/package.json create mode 100644 node_modules/cli-spinners/readme.md create mode 100644 node_modules/cli-spinners/spinners.json create mode 100644 node_modules/cli-truncate/index.js create mode 100644 node_modules/cli-truncate/license create mode 100644 node_modules/cli-truncate/package.json create mode 100644 node_modules/cli-truncate/readme.md create mode 100644 node_modules/code-point-at/index.js create mode 100644 node_modules/code-point-at/license create mode 100644 node_modules/code-point-at/package.json create mode 100644 node_modules/code-point-at/readme.md create mode 100644 node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/color-convert/LICENSE create mode 100644 node_modules/color-convert/README.md create mode 100644 node_modules/color-convert/conversions.js create mode 100644 node_modules/color-convert/index.js create mode 100644 node_modules/color-convert/package.json create mode 100644 node_modules/color-convert/route.js create mode 100644 node_modules/color-name/.eslintrc.json create mode 100644 node_modules/color-name/.npmignore create mode 100644 node_modules/color-name/LICENSE create mode 100644 node_modules/color-name/README.md create mode 100644 node_modules/color-name/index.js create mode 100644 node_modules/color-name/package.json create mode 100644 node_modules/color-name/test.js create mode 100644 node_modules/combined-stream/License create mode 100644 node_modules/combined-stream/Readme.md create mode 100644 node_modules/combined-stream/lib/combined_stream.js create mode 100644 node_modules/combined-stream/package.json create mode 100644 node_modules/combined-stream/yarn.lock create mode 100644 node_modules/commander/CHANGELOG.md create mode 100644 node_modules/commander/LICENSE create mode 100644 node_modules/commander/Readme.md create mode 100644 node_modules/commander/index.js create mode 100644 node_modules/commander/package.json create mode 100644 node_modules/commander/typings/index.d.ts create mode 100644 node_modules/common-tags/dist/common-tags.min.js create mode 100644 node_modules/common-tags/es/TemplateTag/TemplateTag.js create mode 100644 node_modules/common-tags/es/TemplateTag/index.js create mode 100644 node_modules/common-tags/es/codeBlock/index.js create mode 100644 node_modules/common-tags/es/commaLists/commaLists.js create mode 100644 node_modules/common-tags/es/commaLists/index.js create mode 100644 node_modules/common-tags/es/commaListsAnd/commaListsAnd.js create mode 100644 node_modules/common-tags/es/commaListsAnd/index.js create mode 100644 node_modules/common-tags/es/commaListsOr/commaListsOr.js create mode 100644 node_modules/common-tags/es/commaListsOr/index.js create mode 100644 node_modules/common-tags/es/html/html.js create mode 100644 node_modules/common-tags/es/html/index.js create mode 100644 node_modules/common-tags/es/index.js create mode 100644 node_modules/common-tags/es/inlineArrayTransformer/index.js create mode 100644 node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js create mode 100644 node_modules/common-tags/es/inlineLists/index.js create mode 100644 node_modules/common-tags/es/inlineLists/inlineLists.js create mode 100644 node_modules/common-tags/es/oneLine/index.js create mode 100644 node_modules/common-tags/es/oneLine/oneLine.js create mode 100644 node_modules/common-tags/es/oneLineCommaLists/index.js create mode 100644 node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js create mode 100644 node_modules/common-tags/es/oneLineCommaListsAnd/index.js create mode 100644 node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js create mode 100644 node_modules/common-tags/es/oneLineCommaListsOr/index.js create mode 100644 node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js create mode 100644 node_modules/common-tags/es/oneLineInlineLists/index.js create mode 100644 node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js create mode 100644 node_modules/common-tags/es/oneLineTrim/index.js create mode 100644 node_modules/common-tags/es/oneLineTrim/oneLineTrim.js create mode 100644 node_modules/common-tags/es/removeNonPrintingValuesTransformer/index.js create mode 100644 node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js create mode 100644 node_modules/common-tags/es/replaceResultTransformer/index.js create mode 100644 node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js create mode 100644 node_modules/common-tags/es/replaceStringTransformer/index.js create mode 100644 node_modules/common-tags/es/replaceStringTransformer/replaceStringTransformer.js create mode 100644 node_modules/common-tags/es/replaceSubstitutionTransformer/index.js create mode 100644 node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js create mode 100644 node_modules/common-tags/es/safeHtml/index.js create mode 100644 node_modules/common-tags/es/safeHtml/safeHtml.js create mode 100644 node_modules/common-tags/es/source/index.js create mode 100644 node_modules/common-tags/es/splitStringTransformer/index.js create mode 100644 node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js create mode 100644 node_modules/common-tags/es/stripIndent/index.js create mode 100644 node_modules/common-tags/es/stripIndent/stripIndent.js create mode 100644 node_modules/common-tags/es/stripIndentTransformer/index.js create mode 100644 node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js create mode 100644 node_modules/common-tags/es/stripIndents/index.js create mode 100644 node_modules/common-tags/es/stripIndents/stripIndents.js create mode 100644 node_modules/common-tags/es/trimResultTransformer/index.js create mode 100644 node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js create mode 100644 node_modules/common-tags/es/utils/index.js create mode 100644 node_modules/common-tags/es/utils/readFromFixture/index.js create mode 100644 node_modules/common-tags/es/utils/readFromFixture/readFromFixture.js create mode 100644 node_modules/common-tags/lib/TemplateTag/TemplateTag.js create mode 100644 node_modules/common-tags/lib/TemplateTag/index.js create mode 100644 node_modules/common-tags/lib/codeBlock/index.js create mode 100644 node_modules/common-tags/lib/commaLists/commaLists.js create mode 100644 node_modules/common-tags/lib/commaLists/index.js create mode 100644 node_modules/common-tags/lib/commaListsAnd/commaListsAnd.js create mode 100644 node_modules/common-tags/lib/commaListsAnd/index.js create mode 100644 node_modules/common-tags/lib/commaListsOr/commaListsOr.js create mode 100644 node_modules/common-tags/lib/commaListsOr/index.js create mode 100644 node_modules/common-tags/lib/html/html.js create mode 100644 node_modules/common-tags/lib/html/index.js create mode 100644 node_modules/common-tags/lib/index.js create mode 100644 node_modules/common-tags/lib/inlineArrayTransformer/index.js create mode 100644 node_modules/common-tags/lib/inlineArrayTransformer/inlineArrayTransformer.js create mode 100644 node_modules/common-tags/lib/inlineLists/index.js create mode 100644 node_modules/common-tags/lib/inlineLists/inlineLists.js create mode 100644 node_modules/common-tags/lib/oneLine/index.js create mode 100644 node_modules/common-tags/lib/oneLine/oneLine.js create mode 100644 node_modules/common-tags/lib/oneLineCommaLists/index.js create mode 100644 node_modules/common-tags/lib/oneLineCommaLists/oneLineCommaLists.js create mode 100644 node_modules/common-tags/lib/oneLineCommaListsAnd/index.js create mode 100644 node_modules/common-tags/lib/oneLineCommaListsAnd/oneLineCommaListsAnd.js create mode 100644 node_modules/common-tags/lib/oneLineCommaListsOr/index.js create mode 100644 node_modules/common-tags/lib/oneLineCommaListsOr/oneLineCommaListsOr.js create mode 100644 node_modules/common-tags/lib/oneLineInlineLists/index.js create mode 100644 node_modules/common-tags/lib/oneLineInlineLists/oneLineInlineLists.js create mode 100644 node_modules/common-tags/lib/oneLineTrim/index.js create mode 100644 node_modules/common-tags/lib/oneLineTrim/oneLineTrim.js create mode 100644 node_modules/common-tags/lib/removeNonPrintingValuesTransformer/index.js create mode 100644 node_modules/common-tags/lib/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js create mode 100644 node_modules/common-tags/lib/replaceResultTransformer/index.js create mode 100644 node_modules/common-tags/lib/replaceResultTransformer/replaceResultTransformer.js create mode 100644 node_modules/common-tags/lib/replaceStringTransformer/index.js create mode 100644 node_modules/common-tags/lib/replaceStringTransformer/replaceStringTransformer.js create mode 100644 node_modules/common-tags/lib/replaceSubstitutionTransformer/index.js create mode 100644 node_modules/common-tags/lib/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js create mode 100644 node_modules/common-tags/lib/safeHtml/index.js create mode 100644 node_modules/common-tags/lib/safeHtml/safeHtml.js create mode 100644 node_modules/common-tags/lib/source/index.js create mode 100644 node_modules/common-tags/lib/splitStringTransformer/index.js create mode 100644 node_modules/common-tags/lib/splitStringTransformer/splitStringTransformer.js create mode 100644 node_modules/common-tags/lib/stripIndent/index.js create mode 100644 node_modules/common-tags/lib/stripIndent/stripIndent.js create mode 100644 node_modules/common-tags/lib/stripIndentTransformer/index.js create mode 100644 node_modules/common-tags/lib/stripIndentTransformer/stripIndentTransformer.js create mode 100644 node_modules/common-tags/lib/stripIndents/index.js create mode 100644 node_modules/common-tags/lib/stripIndents/stripIndents.js create mode 100644 node_modules/common-tags/lib/trimResultTransformer/index.js create mode 100644 node_modules/common-tags/lib/trimResultTransformer/trimResultTransformer.js create mode 100644 node_modules/common-tags/lib/utils/index.js create mode 100644 node_modules/common-tags/lib/utils/readFromFixture/index.js create mode 100644 node_modules/common-tags/lib/utils/readFromFixture/readFromFixture.js create mode 100644 node_modules/common-tags/license.md create mode 100644 node_modules/common-tags/package.json create mode 100644 node_modules/common-tags/readme.md create mode 100644 node_modules/concat-map/.travis.yml create mode 100644 node_modules/concat-map/LICENSE create mode 100644 node_modules/concat-map/README.markdown create mode 100644 node_modules/concat-map/example/map.js create mode 100644 node_modules/concat-map/index.js create mode 100644 node_modules/concat-map/package.json create mode 100644 node_modules/concat-map/test/map.js create mode 100644 node_modules/concat-stream/LICENSE create mode 100644 node_modules/concat-stream/index.js create mode 100644 node_modules/concat-stream/package.json create mode 100644 node_modules/concat-stream/readme.md create mode 100644 node_modules/core-util-is/LICENSE create mode 100644 node_modules/core-util-is/README.md create mode 100644 node_modules/core-util-is/float.patch create mode 100644 node_modules/core-util-is/lib/util.js create mode 100644 node_modules/core-util-is/package.json create mode 100644 node_modules/core-util-is/test.js create mode 100644 node_modules/cross-spawn/CHANGELOG.md create mode 100644 node_modules/cross-spawn/LICENSE create mode 100644 node_modules/cross-spawn/README.md create mode 100644 node_modules/cross-spawn/index.js create mode 100644 node_modules/cross-spawn/lib/enoent.js create mode 100644 node_modules/cross-spawn/lib/parse.js create mode 100644 node_modules/cross-spawn/lib/util/escape.js create mode 100644 node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 node_modules/cross-spawn/lib/util/resolveCommand.js create mode 100644 node_modules/cross-spawn/package.json create mode 100644 node_modules/cypress/README.md create mode 100755 node_modules/cypress/bin/cypress create mode 100644 node_modules/cypress/index.js create mode 100644 node_modules/cypress/lib/cli.js create mode 100644 node_modules/cypress/lib/cypress.js create mode 100644 node_modules/cypress/lib/errors.js create mode 100644 node_modules/cypress/lib/exec/open.js create mode 100644 node_modules/cypress/lib/exec/run.js create mode 100644 node_modules/cypress/lib/exec/spawn.js create mode 100644 node_modules/cypress/lib/exec/versions.js create mode 100644 node_modules/cypress/lib/exec/xvfb.js create mode 100644 node_modules/cypress/lib/fs.js create mode 100644 node_modules/cypress/lib/logger.js create mode 100644 node_modules/cypress/lib/tasks/cache.js create mode 100644 node_modules/cypress/lib/tasks/download.js create mode 100644 node_modules/cypress/lib/tasks/install.js create mode 100644 node_modules/cypress/lib/tasks/state.js create mode 100644 node_modules/cypress/lib/tasks/unzip.js create mode 100644 node_modules/cypress/lib/tasks/verify.js create mode 100644 node_modules/cypress/lib/util.js create mode 100644 node_modules/cypress/package.json create mode 100644 node_modules/cypress/types/blob-util/LICENSE create mode 100644 node_modules/cypress/types/blob-util/README.md create mode 100644 node_modules/cypress/types/blob-util/index.d.ts create mode 100644 node_modules/cypress/types/blob-util/package.json create mode 100644 node_modules/cypress/types/bluebird/LICENSE create mode 100644 node_modules/cypress/types/bluebird/README.md create mode 100644 node_modules/cypress/types/bluebird/index.d.ts create mode 100644 node_modules/cypress/types/bluebird/package.json create mode 100644 node_modules/cypress/types/chai-jquery/LICENSE create mode 100644 node_modules/cypress/types/chai-jquery/README.md create mode 100644 node_modules/cypress/types/chai-jquery/index.d.ts create mode 100644 node_modules/cypress/types/chai-jquery/package.json create mode 100644 node_modules/cypress/types/chai/LICENSE create mode 100644 node_modules/cypress/types/chai/README.md create mode 100644 node_modules/cypress/types/chai/index.d.ts create mode 100644 node_modules/cypress/types/chai/package.json create mode 100644 node_modules/cypress/types/cy-blob-util.d.ts create mode 100644 node_modules/cypress/types/cy-bluebird.d.ts create mode 100644 node_modules/cypress/types/cy-chai.d.ts create mode 100644 node_modules/cypress/types/cy-minimatch.d.ts create mode 100644 node_modules/cypress/types/cy-moment.d.ts create mode 100644 node_modules/cypress/types/cypress-npm-api.d.ts create mode 100644 node_modules/cypress/types/index.d.ts create mode 100644 node_modules/cypress/types/jquery/LICENSE create mode 100644 node_modules/cypress/types/jquery/README.md create mode 100644 node_modules/cypress/types/jquery/index.d.ts create mode 100644 node_modules/cypress/types/jquery/package.json create mode 100644 node_modules/cypress/types/lodash/LICENSE create mode 100644 node_modules/cypress/types/lodash/README.md create mode 100644 node_modules/cypress/types/lodash/add.d.ts create mode 100644 node_modules/cypress/types/lodash/after.d.ts create mode 100644 node_modules/cypress/types/lodash/ary.d.ts create mode 100644 node_modules/cypress/types/lodash/assign.d.ts create mode 100644 node_modules/cypress/types/lodash/assignIn.d.ts create mode 100644 node_modules/cypress/types/lodash/assignInWith.d.ts create mode 100644 node_modules/cypress/types/lodash/assignWith.d.ts create mode 100644 node_modules/cypress/types/lodash/at.d.ts create mode 100644 node_modules/cypress/types/lodash/attempt.d.ts create mode 100644 node_modules/cypress/types/lodash/before.d.ts create mode 100644 node_modules/cypress/types/lodash/bind.d.ts create mode 100644 node_modules/cypress/types/lodash/bindAll.d.ts create mode 100644 node_modules/cypress/types/lodash/bindKey.d.ts create mode 100644 node_modules/cypress/types/lodash/camelCase.d.ts create mode 100644 node_modules/cypress/types/lodash/capitalize.d.ts create mode 100644 node_modules/cypress/types/lodash/castArray.d.ts create mode 100644 node_modules/cypress/types/lodash/ceil.d.ts create mode 100644 node_modules/cypress/types/lodash/chain.d.ts create mode 100644 node_modules/cypress/types/lodash/chunk.d.ts create mode 100644 node_modules/cypress/types/lodash/clamp.d.ts create mode 100644 node_modules/cypress/types/lodash/clone.d.ts create mode 100644 node_modules/cypress/types/lodash/cloneDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/cloneDeepWith.d.ts create mode 100644 node_modules/cypress/types/lodash/cloneWith.d.ts create mode 100644 node_modules/cypress/types/lodash/common/array.d.ts create mode 100644 node_modules/cypress/types/lodash/common/collection.d.ts create mode 100644 node_modules/cypress/types/lodash/common/common.d.ts create mode 100644 node_modules/cypress/types/lodash/common/date.d.ts create mode 100644 node_modules/cypress/types/lodash/common/function.d.ts create mode 100644 node_modules/cypress/types/lodash/common/lang.d.ts create mode 100644 node_modules/cypress/types/lodash/common/math.d.ts create mode 100644 node_modules/cypress/types/lodash/common/number.d.ts create mode 100644 node_modules/cypress/types/lodash/common/object.d.ts create mode 100644 node_modules/cypress/types/lodash/common/seq.d.ts create mode 100644 node_modules/cypress/types/lodash/common/string.d.ts create mode 100644 node_modules/cypress/types/lodash/common/util.d.ts create mode 100644 node_modules/cypress/types/lodash/compact.d.ts create mode 100644 node_modules/cypress/types/lodash/concat.d.ts create mode 100644 node_modules/cypress/types/lodash/cond.d.ts create mode 100644 node_modules/cypress/types/lodash/conformsTo.d.ts create mode 100644 node_modules/cypress/types/lodash/constant.d.ts create mode 100644 node_modules/cypress/types/lodash/countBy.d.ts create mode 100644 node_modules/cypress/types/lodash/create.d.ts create mode 100644 node_modules/cypress/types/lodash/curry.d.ts create mode 100644 node_modules/cypress/types/lodash/curryRight.d.ts create mode 100644 node_modules/cypress/types/lodash/debounce.d.ts create mode 100644 node_modules/cypress/types/lodash/deburr.d.ts create mode 100644 node_modules/cypress/types/lodash/defaultTo.d.ts create mode 100644 node_modules/cypress/types/lodash/defaults.d.ts create mode 100644 node_modules/cypress/types/lodash/defaultsDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/defer.d.ts create mode 100644 node_modules/cypress/types/lodash/delay.d.ts create mode 100644 node_modules/cypress/types/lodash/difference.d.ts create mode 100644 node_modules/cypress/types/lodash/differenceBy.d.ts create mode 100644 node_modules/cypress/types/lodash/differenceWith.d.ts create mode 100644 node_modules/cypress/types/lodash/divide.d.ts create mode 100644 node_modules/cypress/types/lodash/drop.d.ts create mode 100644 node_modules/cypress/types/lodash/dropRight.d.ts create mode 100644 node_modules/cypress/types/lodash/dropRightWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/dropWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/each.d.ts create mode 100644 node_modules/cypress/types/lodash/eachRight.d.ts create mode 100644 node_modules/cypress/types/lodash/endsWith.d.ts create mode 100644 node_modules/cypress/types/lodash/entries.d.ts create mode 100644 node_modules/cypress/types/lodash/entriesIn.d.ts create mode 100644 node_modules/cypress/types/lodash/eq.d.ts create mode 100644 node_modules/cypress/types/lodash/escape.d.ts create mode 100644 node_modules/cypress/types/lodash/escapeRegExp.d.ts create mode 100644 node_modules/cypress/types/lodash/every.d.ts create mode 100644 node_modules/cypress/types/lodash/extend.d.ts create mode 100644 node_modules/cypress/types/lodash/extendWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fill.d.ts create mode 100644 node_modules/cypress/types/lodash/filter.d.ts create mode 100644 node_modules/cypress/types/lodash/find.d.ts create mode 100644 node_modules/cypress/types/lodash/findIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/findKey.d.ts create mode 100644 node_modules/cypress/types/lodash/findLast.d.ts create mode 100644 node_modules/cypress/types/lodash/findLastIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/findLastKey.d.ts create mode 100644 node_modules/cypress/types/lodash/first.d.ts create mode 100644 node_modules/cypress/types/lodash/flatMap.d.ts create mode 100644 node_modules/cypress/types/lodash/flatMapDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/flatMapDepth.d.ts create mode 100644 node_modules/cypress/types/lodash/flatten.d.ts create mode 100644 node_modules/cypress/types/lodash/flattenDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/flattenDepth.d.ts create mode 100644 node_modules/cypress/types/lodash/flip.d.ts create mode 100644 node_modules/cypress/types/lodash/floor.d.ts create mode 100644 node_modules/cypress/types/lodash/flow.d.ts create mode 100644 node_modules/cypress/types/lodash/flowRight.d.ts create mode 100644 node_modules/cypress/types/lodash/forEach.d.ts create mode 100644 node_modules/cypress/types/lodash/forEachRight.d.ts create mode 100644 node_modules/cypress/types/lodash/forIn.d.ts create mode 100644 node_modules/cypress/types/lodash/forInRight.d.ts create mode 100644 node_modules/cypress/types/lodash/forOwn.d.ts create mode 100644 node_modules/cypress/types/lodash/forOwnRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/F.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/T.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/__.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/add.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/after.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/all.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/allPass.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/always.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/any.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/anyPass.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/apply.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/ary.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assign.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignInAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignInAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignInWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assignWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assoc.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/assocPath.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/at.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/attempt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/before.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/bind.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/bindAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/bindKey.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/camelCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/capitalize.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/castArray.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/ceil.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/chunk.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/clamp.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/clone.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/cloneDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/cloneDeepWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/cloneWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/compact.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/complement.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/compose.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/concat.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/cond.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/conforms.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/conformsTo.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/constant.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/contains.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/convert.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/countBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/create.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/curry.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/curryN.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/curryRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/curryRightN.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/debounce.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/deburr.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defaultTo.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defaults.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defaultsAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defaultsDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defaultsDeepAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/defer.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/delay.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/difference.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/differenceBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/differenceWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dissoc.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dissocPath.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/divide.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/drop.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dropLast.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dropLastWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dropRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dropRightWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/dropWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/each.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/eachRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/endsWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/entries.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/entriesIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/eq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/equals.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/escape.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/escapeRegExp.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/every.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/extend.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/extendAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/extendAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/extendWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/fill.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/filter.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/find.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findIndexFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findKey.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findLast.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findLastFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findLastIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findLastIndexFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/findLastKey.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/first.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flatMap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flatMapDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flatMapDepth.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flatten.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flattenDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flattenDepth.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flip.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/floor.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flow.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/flowRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forEach.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forEachRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forInRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forOwn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/forOwnRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/fromPairs.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/functions.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/functionsIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/get.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/getOr.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/groupBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/gt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/gte.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/has.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/hasIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/head.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/identical.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/identity.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/inRange.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/includes.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/includesFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/indexBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/indexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/indexOfFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/init.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/initial.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/intersection.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/intersectionBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/intersectionWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invert.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invertBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invertObj.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invoke.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invokeArgs.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invokeArgsMap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/invokeMap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isArguments.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isArray.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isArrayBuffer.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isArrayLike.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isArrayLikeObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isBoolean.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isBuffer.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isDate.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isElement.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isEmpty.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isEqual.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isEqualWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isError.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isFinite.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isFunction.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isLength.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isMap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isMatch.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isMatchWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isNaN.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isNative.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isNil.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isNull.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isNumber.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isObjectLike.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isPlainObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isRegExp.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isSafeInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isSet.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isString.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isSymbol.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isTypedArray.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isUndefined.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isWeakMap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/isWeakSet.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/iteratee.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/join.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/juxt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/kebabCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/keyBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/keys.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/keysIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/last.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lastIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lastIndexOfFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lowerCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lowerFirst.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/lte.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/map.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mapKeys.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mapValues.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/matches.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/matchesProperty.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/max.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/maxBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mean.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/meanBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/memoize.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/merge.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mergeAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mergeAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/mergeWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/method.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/methodOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/min.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/minBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/multiply.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/nAry.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/negate.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/noConflict.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/noop.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/now.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/nth.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/nthArg.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/omit.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/omitAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/omitBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/once.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/orderBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/over.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/overArgs.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/overEvery.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/overSome.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pad.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/padChars.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/padCharsEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/padCharsStart.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/padEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/padStart.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/parseInt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/partial.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/partialRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/partition.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/path.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pathEq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pathOr.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/paths.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pick.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pickAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pickBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pipe.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/placeholder.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pluck.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/prop.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/propEq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/propOr.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/property.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/propertyOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/props.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pull.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pullAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pullAllBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pullAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/pullAt.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/random.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/range.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/rangeRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/rangeStep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/rangeStepRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/rearg.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/reduce.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/reduceRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/reject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/remove.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/repeat.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/replace.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/rest.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/restFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/result.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/reverse.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/round.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/runInContext.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sample.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sampleSize.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/set.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/setWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/shuffle.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/size.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/slice.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/snakeCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/some.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedIndexBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedLastIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedLastIndexBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedLastIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedUniq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sortedUniqBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/split.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/spread.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/spreadFrom.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/startCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/startsWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/stubArray.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/stubFalse.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/stubObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/stubString.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/stubTrue.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/subtract.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sum.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/sumBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/symmetricDifference.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/symmetricDifferenceBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/symmetricDifferenceWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/tail.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/take.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/takeLast.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/takeLastWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/takeRight.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/takeRightWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/takeWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/tap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/template.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/throttle.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/thru.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/times.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toArray.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toFinite.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toLength.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toLower.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toNumber.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toPairs.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toPairsIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toPath.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toPlainObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toSafeInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toString.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/toUpper.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/transform.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trim.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trimChars.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trimCharsEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trimCharsStart.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trimEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/trimStart.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/truncate.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unapply.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unary.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unescape.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/union.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unionBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unionWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/uniq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/uniqBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/uniqWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/uniqueId.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unnest.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unset.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unzip.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/unzipWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/update.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/updateWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/upperCase.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/upperFirst.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/useWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/values.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/valuesIn.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/where.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/whereEq.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/without.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/words.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/wrap.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/xor.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/xorBy.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/xorWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zip.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zipAll.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zipObj.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zipObject.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zipObjectDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/fp/zipWith.d.ts create mode 100644 node_modules/cypress/types/lodash/fromPairs.d.ts create mode 100644 node_modules/cypress/types/lodash/functions.d.ts create mode 100644 node_modules/cypress/types/lodash/functionsIn.d.ts create mode 100644 node_modules/cypress/types/lodash/get.d.ts create mode 100644 node_modules/cypress/types/lodash/groupBy.d.ts create mode 100644 node_modules/cypress/types/lodash/gt.d.ts create mode 100644 node_modules/cypress/types/lodash/gte.d.ts create mode 100644 node_modules/cypress/types/lodash/has.d.ts create mode 100644 node_modules/cypress/types/lodash/hasIn.d.ts create mode 100644 node_modules/cypress/types/lodash/head.d.ts create mode 100644 node_modules/cypress/types/lodash/identity.d.ts create mode 100644 node_modules/cypress/types/lodash/inRange.d.ts create mode 100644 node_modules/cypress/types/lodash/includes.d.ts create mode 100644 node_modules/cypress/types/lodash/index.d.ts create mode 100644 node_modules/cypress/types/lodash/indexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/initial.d.ts create mode 100644 node_modules/cypress/types/lodash/intersection.d.ts create mode 100644 node_modules/cypress/types/lodash/intersectionBy.d.ts create mode 100644 node_modules/cypress/types/lodash/intersectionWith.d.ts create mode 100644 node_modules/cypress/types/lodash/invert.d.ts create mode 100644 node_modules/cypress/types/lodash/invertBy.d.ts create mode 100644 node_modules/cypress/types/lodash/invoke.d.ts create mode 100644 node_modules/cypress/types/lodash/invokeMap.d.ts create mode 100644 node_modules/cypress/types/lodash/isArguments.d.ts create mode 100644 node_modules/cypress/types/lodash/isArray.d.ts create mode 100644 node_modules/cypress/types/lodash/isArrayBuffer.d.ts create mode 100644 node_modules/cypress/types/lodash/isArrayLike.d.ts create mode 100644 node_modules/cypress/types/lodash/isArrayLikeObject.d.ts create mode 100644 node_modules/cypress/types/lodash/isBoolean.d.ts create mode 100644 node_modules/cypress/types/lodash/isBuffer.d.ts create mode 100644 node_modules/cypress/types/lodash/isDate.d.ts create mode 100644 node_modules/cypress/types/lodash/isElement.d.ts create mode 100644 node_modules/cypress/types/lodash/isEmpty.d.ts create mode 100644 node_modules/cypress/types/lodash/isEqual.d.ts create mode 100644 node_modules/cypress/types/lodash/isEqualWith.d.ts create mode 100644 node_modules/cypress/types/lodash/isError.d.ts create mode 100644 node_modules/cypress/types/lodash/isFinite.d.ts create mode 100644 node_modules/cypress/types/lodash/isFunction.d.ts create mode 100644 node_modules/cypress/types/lodash/isInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/isLength.d.ts create mode 100644 node_modules/cypress/types/lodash/isMap.d.ts create mode 100644 node_modules/cypress/types/lodash/isMatch.d.ts create mode 100644 node_modules/cypress/types/lodash/isMatchWith.d.ts create mode 100644 node_modules/cypress/types/lodash/isNaN.d.ts create mode 100644 node_modules/cypress/types/lodash/isNative.d.ts create mode 100644 node_modules/cypress/types/lodash/isNil.d.ts create mode 100644 node_modules/cypress/types/lodash/isNull.d.ts create mode 100644 node_modules/cypress/types/lodash/isNumber.d.ts create mode 100644 node_modules/cypress/types/lodash/isObject.d.ts create mode 100644 node_modules/cypress/types/lodash/isObjectLike.d.ts create mode 100644 node_modules/cypress/types/lodash/isPlainObject.d.ts create mode 100644 node_modules/cypress/types/lodash/isRegExp.d.ts create mode 100644 node_modules/cypress/types/lodash/isSafeInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/isSet.d.ts create mode 100644 node_modules/cypress/types/lodash/isString.d.ts create mode 100644 node_modules/cypress/types/lodash/isSymbol.d.ts create mode 100644 node_modules/cypress/types/lodash/isTypedArray.d.ts create mode 100644 node_modules/cypress/types/lodash/isUndefined.d.ts create mode 100644 node_modules/cypress/types/lodash/isWeakMap.d.ts create mode 100644 node_modules/cypress/types/lodash/isWeakSet.d.ts create mode 100644 node_modules/cypress/types/lodash/iteratee.d.ts create mode 100644 node_modules/cypress/types/lodash/join.d.ts create mode 100644 node_modules/cypress/types/lodash/kebabCase.d.ts create mode 100644 node_modules/cypress/types/lodash/keyBy.d.ts create mode 100644 node_modules/cypress/types/lodash/keys.d.ts create mode 100644 node_modules/cypress/types/lodash/keysIn.d.ts create mode 100644 node_modules/cypress/types/lodash/last.d.ts create mode 100644 node_modules/cypress/types/lodash/lastIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/lowerCase.d.ts create mode 100644 node_modules/cypress/types/lodash/lowerFirst.d.ts create mode 100644 node_modules/cypress/types/lodash/lt.d.ts create mode 100644 node_modules/cypress/types/lodash/lte.d.ts create mode 100644 node_modules/cypress/types/lodash/map.d.ts create mode 100644 node_modules/cypress/types/lodash/mapKeys.d.ts create mode 100644 node_modules/cypress/types/lodash/mapValues.d.ts create mode 100644 node_modules/cypress/types/lodash/matches.d.ts create mode 100644 node_modules/cypress/types/lodash/matchesProperty.d.ts create mode 100644 node_modules/cypress/types/lodash/max.d.ts create mode 100644 node_modules/cypress/types/lodash/maxBy.d.ts create mode 100644 node_modules/cypress/types/lodash/mean.d.ts create mode 100644 node_modules/cypress/types/lodash/meanBy.d.ts create mode 100644 node_modules/cypress/types/lodash/memoize.d.ts create mode 100644 node_modules/cypress/types/lodash/merge.d.ts create mode 100644 node_modules/cypress/types/lodash/mergeWith.d.ts create mode 100644 node_modules/cypress/types/lodash/method.d.ts create mode 100644 node_modules/cypress/types/lodash/methodOf.d.ts create mode 100644 node_modules/cypress/types/lodash/min.d.ts create mode 100644 node_modules/cypress/types/lodash/minBy.d.ts create mode 100644 node_modules/cypress/types/lodash/mixin.d.ts create mode 100644 node_modules/cypress/types/lodash/negate.d.ts create mode 100644 node_modules/cypress/types/lodash/noConflict.d.ts create mode 100644 node_modules/cypress/types/lodash/noop.d.ts create mode 100644 node_modules/cypress/types/lodash/now.d.ts create mode 100644 node_modules/cypress/types/lodash/nth.d.ts create mode 100644 node_modules/cypress/types/lodash/nthArg.d.ts create mode 100644 node_modules/cypress/types/lodash/omit.d.ts create mode 100644 node_modules/cypress/types/lodash/omitBy.d.ts create mode 100644 node_modules/cypress/types/lodash/once.d.ts create mode 100644 node_modules/cypress/types/lodash/orderBy.d.ts create mode 100644 node_modules/cypress/types/lodash/over.d.ts create mode 100644 node_modules/cypress/types/lodash/overArgs.d.ts create mode 100644 node_modules/cypress/types/lodash/overEvery.d.ts create mode 100644 node_modules/cypress/types/lodash/overSome.d.ts create mode 100644 node_modules/cypress/types/lodash/package.json create mode 100644 node_modules/cypress/types/lodash/pad.d.ts create mode 100644 node_modules/cypress/types/lodash/padEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/padStart.d.ts create mode 100644 node_modules/cypress/types/lodash/parseInt.d.ts create mode 100644 node_modules/cypress/types/lodash/partial.d.ts create mode 100644 node_modules/cypress/types/lodash/partialRight.d.ts create mode 100644 node_modules/cypress/types/lodash/partition.d.ts create mode 100644 node_modules/cypress/types/lodash/pick.d.ts create mode 100644 node_modules/cypress/types/lodash/pickBy.d.ts create mode 100644 node_modules/cypress/types/lodash/property.d.ts create mode 100644 node_modules/cypress/types/lodash/propertyOf.d.ts create mode 100644 node_modules/cypress/types/lodash/pull.d.ts create mode 100644 node_modules/cypress/types/lodash/pullAll.d.ts create mode 100644 node_modules/cypress/types/lodash/pullAllBy.d.ts create mode 100644 node_modules/cypress/types/lodash/pullAllWith.d.ts create mode 100644 node_modules/cypress/types/lodash/pullAt.d.ts create mode 100644 node_modules/cypress/types/lodash/random.d.ts create mode 100644 node_modules/cypress/types/lodash/range.d.ts create mode 100644 node_modules/cypress/types/lodash/rangeRight.d.ts create mode 100644 node_modules/cypress/types/lodash/rearg.d.ts create mode 100644 node_modules/cypress/types/lodash/reduce.d.ts create mode 100644 node_modules/cypress/types/lodash/reduceRight.d.ts create mode 100644 node_modules/cypress/types/lodash/reject.d.ts create mode 100644 node_modules/cypress/types/lodash/remove.d.ts create mode 100644 node_modules/cypress/types/lodash/repeat.d.ts create mode 100644 node_modules/cypress/types/lodash/replace.d.ts create mode 100644 node_modules/cypress/types/lodash/rest.d.ts create mode 100644 node_modules/cypress/types/lodash/result.d.ts create mode 100644 node_modules/cypress/types/lodash/reverse.d.ts create mode 100644 node_modules/cypress/types/lodash/round.d.ts create mode 100644 node_modules/cypress/types/lodash/runInContext.d.ts create mode 100644 node_modules/cypress/types/lodash/sample.d.ts create mode 100644 node_modules/cypress/types/lodash/sampleSize.d.ts create mode 100644 node_modules/cypress/types/lodash/set.d.ts create mode 100644 node_modules/cypress/types/lodash/setWith.d.ts create mode 100644 node_modules/cypress/types/lodash/shuffle.d.ts create mode 100644 node_modules/cypress/types/lodash/size.d.ts create mode 100644 node_modules/cypress/types/lodash/slice.d.ts create mode 100644 node_modules/cypress/types/lodash/snakeCase.d.ts create mode 100644 node_modules/cypress/types/lodash/some.d.ts create mode 100644 node_modules/cypress/types/lodash/sortBy.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedIndexBy.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedLastIndex.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedLastIndexBy.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedLastIndexOf.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedUniq.d.ts create mode 100644 node_modules/cypress/types/lodash/sortedUniqBy.d.ts create mode 100644 node_modules/cypress/types/lodash/split.d.ts create mode 100644 node_modules/cypress/types/lodash/spread.d.ts create mode 100644 node_modules/cypress/types/lodash/startCase.d.ts create mode 100644 node_modules/cypress/types/lodash/startsWith.d.ts create mode 100644 node_modules/cypress/types/lodash/subtract.d.ts create mode 100644 node_modules/cypress/types/lodash/sum.d.ts create mode 100644 node_modules/cypress/types/lodash/sumBy.d.ts create mode 100644 node_modules/cypress/types/lodash/tail.d.ts create mode 100644 node_modules/cypress/types/lodash/take.d.ts create mode 100644 node_modules/cypress/types/lodash/takeRight.d.ts create mode 100644 node_modules/cypress/types/lodash/takeRightWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/takeWhile.d.ts create mode 100644 node_modules/cypress/types/lodash/tap.d.ts create mode 100644 node_modules/cypress/types/lodash/template.d.ts create mode 100644 node_modules/cypress/types/lodash/throttle.d.ts create mode 100644 node_modules/cypress/types/lodash/thru.d.ts create mode 100644 node_modules/cypress/types/lodash/times.d.ts create mode 100644 node_modules/cypress/types/lodash/toArray.d.ts create mode 100644 node_modules/cypress/types/lodash/toFinite.d.ts create mode 100644 node_modules/cypress/types/lodash/toInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/toLength.d.ts create mode 100644 node_modules/cypress/types/lodash/toLower.d.ts create mode 100644 node_modules/cypress/types/lodash/toNumber.d.ts create mode 100644 node_modules/cypress/types/lodash/toPairs.d.ts create mode 100644 node_modules/cypress/types/lodash/toPairsIn.d.ts create mode 100644 node_modules/cypress/types/lodash/toPath.d.ts create mode 100644 node_modules/cypress/types/lodash/toPlainObject.d.ts create mode 100644 node_modules/cypress/types/lodash/toSafeInteger.d.ts create mode 100644 node_modules/cypress/types/lodash/toString.d.ts create mode 100644 node_modules/cypress/types/lodash/toUpper.d.ts create mode 100644 node_modules/cypress/types/lodash/transform.d.ts create mode 100644 node_modules/cypress/types/lodash/trim.d.ts create mode 100644 node_modules/cypress/types/lodash/trimEnd.d.ts create mode 100644 node_modules/cypress/types/lodash/trimStart.d.ts create mode 100644 node_modules/cypress/types/lodash/truncate.d.ts create mode 100644 node_modules/cypress/types/lodash/unary.d.ts create mode 100644 node_modules/cypress/types/lodash/unescape.d.ts create mode 100644 node_modules/cypress/types/lodash/union.d.ts create mode 100644 node_modules/cypress/types/lodash/unionBy.d.ts create mode 100644 node_modules/cypress/types/lodash/unionWith.d.ts create mode 100644 node_modules/cypress/types/lodash/uniq.d.ts create mode 100644 node_modules/cypress/types/lodash/uniqBy.d.ts create mode 100644 node_modules/cypress/types/lodash/uniqWith.d.ts create mode 100644 node_modules/cypress/types/lodash/uniqueId.d.ts create mode 100644 node_modules/cypress/types/lodash/unset.d.ts create mode 100644 node_modules/cypress/types/lodash/unzip.d.ts create mode 100644 node_modules/cypress/types/lodash/unzipWith.d.ts create mode 100644 node_modules/cypress/types/lodash/update.d.ts create mode 100644 node_modules/cypress/types/lodash/updateWith.d.ts create mode 100644 node_modules/cypress/types/lodash/upperCase.d.ts create mode 100644 node_modules/cypress/types/lodash/upperFirst.d.ts create mode 100644 node_modules/cypress/types/lodash/values.d.ts create mode 100644 node_modules/cypress/types/lodash/valuesIn.d.ts create mode 100644 node_modules/cypress/types/lodash/without.d.ts create mode 100644 node_modules/cypress/types/lodash/words.d.ts create mode 100644 node_modules/cypress/types/lodash/wrap.d.ts create mode 100644 node_modules/cypress/types/lodash/xor.d.ts create mode 100644 node_modules/cypress/types/lodash/xorBy.d.ts create mode 100644 node_modules/cypress/types/lodash/xorWith.d.ts create mode 100644 node_modules/cypress/types/lodash/zip.d.ts create mode 100644 node_modules/cypress/types/lodash/zipObject.d.ts create mode 100644 node_modules/cypress/types/lodash/zipObjectDeep.d.ts create mode 100644 node_modules/cypress/types/lodash/zipWith.d.ts create mode 100644 node_modules/cypress/types/minimatch/LICENSE create mode 100644 node_modules/cypress/types/minimatch/README.md create mode 100644 node_modules/cypress/types/minimatch/index.d.ts create mode 100644 node_modules/cypress/types/minimatch/package.json create mode 100644 node_modules/cypress/types/mocha/LICENSE create mode 100644 node_modules/cypress/types/mocha/README.md create mode 100644 node_modules/cypress/types/mocha/index.d.ts create mode 100644 node_modules/cypress/types/mocha/package.json create mode 100644 node_modules/cypress/types/sinon-chai/LICENSE create mode 100644 node_modules/cypress/types/sinon-chai/README.md create mode 100644 node_modules/cypress/types/sinon-chai/index.d.ts create mode 100644 node_modules/cypress/types/sinon-chai/package.json create mode 100644 node_modules/cypress/types/sinon/LICENSE create mode 100644 node_modules/cypress/types/sinon/README.md create mode 100644 node_modules/cypress/types/sinon/index.d.ts create mode 100644 node_modules/cypress/types/sinon/package.json create mode 100644 node_modules/cypress/types/sinon/ts3.1/index.d.ts create mode 100644 node_modules/dashdash/CHANGES.md create mode 100644 node_modules/dashdash/LICENSE.txt create mode 100644 node_modules/dashdash/README.md create mode 100644 node_modules/dashdash/etc/dashdash.bash_completion.in create mode 100644 node_modules/dashdash/lib/dashdash.js create mode 100644 node_modules/dashdash/package.json create mode 100644 node_modules/date-fns/CHANGELOG.md create mode 100644 node_modules/date-fns/LICENSE.md create mode 100644 node_modules/date-fns/README.md create mode 100644 node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js create mode 100644 node_modules/date-fns/_lib/package.json create mode 100644 node_modules/date-fns/add_days/index.d.ts create mode 100644 node_modules/date-fns/add_days/index.js create mode 100644 node_modules/date-fns/add_days/index.js.flow create mode 100644 node_modules/date-fns/add_days/package.json create mode 100644 node_modules/date-fns/add_hours/index.d.ts create mode 100644 node_modules/date-fns/add_hours/index.js create mode 100644 node_modules/date-fns/add_hours/index.js.flow create mode 100644 node_modules/date-fns/add_hours/package.json create mode 100644 node_modules/date-fns/add_iso_years/index.d.ts create mode 100644 node_modules/date-fns/add_iso_years/index.js create mode 100644 node_modules/date-fns/add_iso_years/index.js.flow create mode 100644 node_modules/date-fns/add_iso_years/package.json create mode 100644 node_modules/date-fns/add_milliseconds/index.d.ts create mode 100644 node_modules/date-fns/add_milliseconds/index.js create mode 100644 node_modules/date-fns/add_milliseconds/index.js.flow create mode 100644 node_modules/date-fns/add_milliseconds/package.json create mode 100644 node_modules/date-fns/add_minutes/index.d.ts create mode 100644 node_modules/date-fns/add_minutes/index.js create mode 100644 node_modules/date-fns/add_minutes/index.js.flow create mode 100644 node_modules/date-fns/add_minutes/package.json create mode 100644 node_modules/date-fns/add_months/index.d.ts create mode 100644 node_modules/date-fns/add_months/index.js create mode 100644 node_modules/date-fns/add_months/index.js.flow create mode 100644 node_modules/date-fns/add_months/package.json create mode 100644 node_modules/date-fns/add_quarters/index.d.ts create mode 100644 node_modules/date-fns/add_quarters/index.js create mode 100644 node_modules/date-fns/add_quarters/index.js.flow create mode 100644 node_modules/date-fns/add_quarters/package.json create mode 100644 node_modules/date-fns/add_seconds/index.d.ts create mode 100644 node_modules/date-fns/add_seconds/index.js create mode 100644 node_modules/date-fns/add_seconds/index.js.flow create mode 100644 node_modules/date-fns/add_seconds/package.json create mode 100644 node_modules/date-fns/add_weeks/index.d.ts create mode 100644 node_modules/date-fns/add_weeks/index.js create mode 100644 node_modules/date-fns/add_weeks/index.js.flow create mode 100644 node_modules/date-fns/add_weeks/package.json create mode 100644 node_modules/date-fns/add_years/index.d.ts create mode 100644 node_modules/date-fns/add_years/index.js create mode 100644 node_modules/date-fns/add_years/index.js.flow create mode 100644 node_modules/date-fns/add_years/package.json create mode 100644 node_modules/date-fns/are_ranges_overlapping/index.d.ts create mode 100644 node_modules/date-fns/are_ranges_overlapping/index.js create mode 100644 node_modules/date-fns/are_ranges_overlapping/index.js.flow create mode 100644 node_modules/date-fns/are_ranges_overlapping/package.json create mode 100644 node_modules/date-fns/closest_index_to/index.d.ts create mode 100644 node_modules/date-fns/closest_index_to/index.js create mode 100644 node_modules/date-fns/closest_index_to/index.js.flow create mode 100644 node_modules/date-fns/closest_index_to/package.json create mode 100644 node_modules/date-fns/closest_to/index.d.ts create mode 100644 node_modules/date-fns/closest_to/index.js create mode 100644 node_modules/date-fns/closest_to/index.js.flow create mode 100644 node_modules/date-fns/closest_to/package.json create mode 100644 node_modules/date-fns/compare_asc/index.d.ts create mode 100644 node_modules/date-fns/compare_asc/index.js create mode 100644 node_modules/date-fns/compare_asc/index.js.flow create mode 100644 node_modules/date-fns/compare_asc/package.json create mode 100644 node_modules/date-fns/compare_desc/index.d.ts create mode 100644 node_modules/date-fns/compare_desc/index.js create mode 100644 node_modules/date-fns/compare_desc/index.js.flow create mode 100644 node_modules/date-fns/compare_desc/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_days/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_days/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_days/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_days/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_iso_weeks/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_iso_weeks/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_iso_weeks/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_iso_weeks/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_iso_years/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_iso_years/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_iso_years/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_iso_years/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_months/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_months/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_months/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_months/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_quarters/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_quarters/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_quarters/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_quarters/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_weeks/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_weeks/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_weeks/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_weeks/package.json create mode 100644 node_modules/date-fns/difference_in_calendar_years/index.d.ts create mode 100644 node_modules/date-fns/difference_in_calendar_years/index.js create mode 100644 node_modules/date-fns/difference_in_calendar_years/index.js.flow create mode 100644 node_modules/date-fns/difference_in_calendar_years/package.json create mode 100644 node_modules/date-fns/difference_in_days/index.d.ts create mode 100644 node_modules/date-fns/difference_in_days/index.js create mode 100644 node_modules/date-fns/difference_in_days/index.js.flow create mode 100644 node_modules/date-fns/difference_in_days/package.json create mode 100644 node_modules/date-fns/difference_in_hours/index.d.ts create mode 100644 node_modules/date-fns/difference_in_hours/index.js create mode 100644 node_modules/date-fns/difference_in_hours/index.js.flow create mode 100644 node_modules/date-fns/difference_in_hours/package.json create mode 100644 node_modules/date-fns/difference_in_iso_years/index.d.ts create mode 100644 node_modules/date-fns/difference_in_iso_years/index.js create mode 100644 node_modules/date-fns/difference_in_iso_years/index.js.flow create mode 100644 node_modules/date-fns/difference_in_iso_years/package.json create mode 100644 node_modules/date-fns/difference_in_milliseconds/index.d.ts create mode 100644 node_modules/date-fns/difference_in_milliseconds/index.js create mode 100644 node_modules/date-fns/difference_in_milliseconds/index.js.flow create mode 100644 node_modules/date-fns/difference_in_milliseconds/package.json create mode 100644 node_modules/date-fns/difference_in_minutes/index.d.ts create mode 100644 node_modules/date-fns/difference_in_minutes/index.js create mode 100644 node_modules/date-fns/difference_in_minutes/index.js.flow create mode 100644 node_modules/date-fns/difference_in_minutes/package.json create mode 100644 node_modules/date-fns/difference_in_months/index.d.ts create mode 100644 node_modules/date-fns/difference_in_months/index.js create mode 100644 node_modules/date-fns/difference_in_months/index.js.flow create mode 100644 node_modules/date-fns/difference_in_months/package.json create mode 100644 node_modules/date-fns/difference_in_quarters/index.d.ts create mode 100644 node_modules/date-fns/difference_in_quarters/index.js create mode 100644 node_modules/date-fns/difference_in_quarters/index.js.flow create mode 100644 node_modules/date-fns/difference_in_quarters/package.json create mode 100644 node_modules/date-fns/difference_in_seconds/index.d.ts create mode 100644 node_modules/date-fns/difference_in_seconds/index.js create mode 100644 node_modules/date-fns/difference_in_seconds/index.js.flow create mode 100644 node_modules/date-fns/difference_in_seconds/package.json create mode 100644 node_modules/date-fns/difference_in_weeks/index.d.ts create mode 100644 node_modules/date-fns/difference_in_weeks/index.js create mode 100644 node_modules/date-fns/difference_in_weeks/index.js.flow create mode 100644 node_modules/date-fns/difference_in_weeks/package.json create mode 100644 node_modules/date-fns/difference_in_years/index.d.ts create mode 100644 node_modules/date-fns/difference_in_years/index.js create mode 100644 node_modules/date-fns/difference_in_years/index.js.flow create mode 100644 node_modules/date-fns/difference_in_years/package.json create mode 100644 node_modules/date-fns/distance_in_words/index.d.ts create mode 100644 node_modules/date-fns/distance_in_words/index.js create mode 100644 node_modules/date-fns/distance_in_words/index.js.flow create mode 100644 node_modules/date-fns/distance_in_words/package.json create mode 100644 node_modules/date-fns/distance_in_words_strict/index.d.ts create mode 100644 node_modules/date-fns/distance_in_words_strict/index.js create mode 100644 node_modules/date-fns/distance_in_words_strict/index.js.flow create mode 100644 node_modules/date-fns/distance_in_words_strict/package.json create mode 100644 node_modules/date-fns/distance_in_words_to_now/index.d.ts create mode 100644 node_modules/date-fns/distance_in_words_to_now/index.js create mode 100644 node_modules/date-fns/distance_in_words_to_now/index.js.flow create mode 100644 node_modules/date-fns/distance_in_words_to_now/package.json create mode 100644 node_modules/date-fns/docs.json create mode 100644 node_modules/date-fns/each_day/index.d.ts create mode 100644 node_modules/date-fns/each_day/index.js create mode 100644 node_modules/date-fns/each_day/index.js.flow create mode 100644 node_modules/date-fns/each_day/package.json create mode 100644 node_modules/date-fns/end_of_day/index.d.ts create mode 100644 node_modules/date-fns/end_of_day/index.js create mode 100644 node_modules/date-fns/end_of_day/index.js.flow create mode 100644 node_modules/date-fns/end_of_day/package.json create mode 100644 node_modules/date-fns/end_of_hour/index.d.ts create mode 100644 node_modules/date-fns/end_of_hour/index.js create mode 100644 node_modules/date-fns/end_of_hour/index.js.flow create mode 100644 node_modules/date-fns/end_of_hour/package.json create mode 100644 node_modules/date-fns/end_of_iso_week/index.d.ts create mode 100644 node_modules/date-fns/end_of_iso_week/index.js create mode 100644 node_modules/date-fns/end_of_iso_week/index.js.flow create mode 100644 node_modules/date-fns/end_of_iso_week/package.json create mode 100644 node_modules/date-fns/end_of_iso_year/index.d.ts create mode 100644 node_modules/date-fns/end_of_iso_year/index.js create mode 100644 node_modules/date-fns/end_of_iso_year/index.js.flow create mode 100644 node_modules/date-fns/end_of_iso_year/package.json create mode 100644 node_modules/date-fns/end_of_minute/index.d.ts create mode 100644 node_modules/date-fns/end_of_minute/index.js create mode 100644 node_modules/date-fns/end_of_minute/index.js.flow create mode 100644 node_modules/date-fns/end_of_minute/package.json create mode 100644 node_modules/date-fns/end_of_month/index.d.ts create mode 100644 node_modules/date-fns/end_of_month/index.js create mode 100644 node_modules/date-fns/end_of_month/index.js.flow create mode 100644 node_modules/date-fns/end_of_month/package.json create mode 100644 node_modules/date-fns/end_of_quarter/index.d.ts create mode 100644 node_modules/date-fns/end_of_quarter/index.js create mode 100644 node_modules/date-fns/end_of_quarter/index.js.flow create mode 100644 node_modules/date-fns/end_of_quarter/package.json create mode 100644 node_modules/date-fns/end_of_second/index.d.ts create mode 100644 node_modules/date-fns/end_of_second/index.js create mode 100644 node_modules/date-fns/end_of_second/index.js.flow create mode 100644 node_modules/date-fns/end_of_second/package.json create mode 100644 node_modules/date-fns/end_of_today/index.d.ts create mode 100644 node_modules/date-fns/end_of_today/index.js create mode 100644 node_modules/date-fns/end_of_today/index.js.flow create mode 100644 node_modules/date-fns/end_of_today/package.json create mode 100644 node_modules/date-fns/end_of_tomorrow/index.d.ts create mode 100644 node_modules/date-fns/end_of_tomorrow/index.js create mode 100644 node_modules/date-fns/end_of_tomorrow/index.js.flow create mode 100644 node_modules/date-fns/end_of_tomorrow/package.json create mode 100644 node_modules/date-fns/end_of_week/index.d.ts create mode 100644 node_modules/date-fns/end_of_week/index.js create mode 100644 node_modules/date-fns/end_of_week/index.js.flow create mode 100644 node_modules/date-fns/end_of_week/package.json create mode 100644 node_modules/date-fns/end_of_year/index.d.ts create mode 100644 node_modules/date-fns/end_of_year/index.js create mode 100644 node_modules/date-fns/end_of_year/index.js.flow create mode 100644 node_modules/date-fns/end_of_year/package.json create mode 100644 node_modules/date-fns/end_of_yesterday/index.d.ts create mode 100644 node_modules/date-fns/end_of_yesterday/index.js create mode 100644 node_modules/date-fns/end_of_yesterday/index.js.flow create mode 100644 node_modules/date-fns/end_of_yesterday/package.json create mode 100644 node_modules/date-fns/format/index.d.ts create mode 100644 node_modules/date-fns/format/index.js create mode 100644 node_modules/date-fns/format/index.js.flow create mode 100644 node_modules/date-fns/format/package.json create mode 100644 node_modules/date-fns/get_date/index.d.ts create mode 100644 node_modules/date-fns/get_date/index.js create mode 100644 node_modules/date-fns/get_date/index.js.flow create mode 100644 node_modules/date-fns/get_date/package.json create mode 100644 node_modules/date-fns/get_day/index.d.ts create mode 100644 node_modules/date-fns/get_day/index.js create mode 100644 node_modules/date-fns/get_day/index.js.flow create mode 100644 node_modules/date-fns/get_day/package.json create mode 100644 node_modules/date-fns/get_day_of_year/index.d.ts create mode 100644 node_modules/date-fns/get_day_of_year/index.js create mode 100644 node_modules/date-fns/get_day_of_year/index.js.flow create mode 100644 node_modules/date-fns/get_day_of_year/package.json create mode 100644 node_modules/date-fns/get_days_in_month/index.d.ts create mode 100644 node_modules/date-fns/get_days_in_month/index.js create mode 100644 node_modules/date-fns/get_days_in_month/index.js.flow create mode 100644 node_modules/date-fns/get_days_in_month/package.json create mode 100644 node_modules/date-fns/get_days_in_year/index.d.ts create mode 100644 node_modules/date-fns/get_days_in_year/index.js create mode 100644 node_modules/date-fns/get_days_in_year/index.js.flow create mode 100644 node_modules/date-fns/get_days_in_year/package.json create mode 100644 node_modules/date-fns/get_hours/index.d.ts create mode 100644 node_modules/date-fns/get_hours/index.js create mode 100644 node_modules/date-fns/get_hours/index.js.flow create mode 100644 node_modules/date-fns/get_hours/package.json create mode 100644 node_modules/date-fns/get_iso_day/index.d.ts create mode 100644 node_modules/date-fns/get_iso_day/index.js create mode 100644 node_modules/date-fns/get_iso_day/index.js.flow create mode 100644 node_modules/date-fns/get_iso_day/package.json create mode 100644 node_modules/date-fns/get_iso_week/index.d.ts create mode 100644 node_modules/date-fns/get_iso_week/index.js create mode 100644 node_modules/date-fns/get_iso_week/index.js.flow create mode 100644 node_modules/date-fns/get_iso_week/package.json create mode 100644 node_modules/date-fns/get_iso_weeks_in_year/index.d.ts create mode 100644 node_modules/date-fns/get_iso_weeks_in_year/index.js create mode 100644 node_modules/date-fns/get_iso_weeks_in_year/index.js.flow create mode 100644 node_modules/date-fns/get_iso_weeks_in_year/package.json create mode 100644 node_modules/date-fns/get_iso_year/index.d.ts create mode 100644 node_modules/date-fns/get_iso_year/index.js create mode 100644 node_modules/date-fns/get_iso_year/index.js.flow create mode 100644 node_modules/date-fns/get_iso_year/package.json create mode 100644 node_modules/date-fns/get_milliseconds/index.d.ts create mode 100644 node_modules/date-fns/get_milliseconds/index.js create mode 100644 node_modules/date-fns/get_milliseconds/index.js.flow create mode 100644 node_modules/date-fns/get_milliseconds/package.json create mode 100644 node_modules/date-fns/get_minutes/index.d.ts create mode 100644 node_modules/date-fns/get_minutes/index.js create mode 100644 node_modules/date-fns/get_minutes/index.js.flow create mode 100644 node_modules/date-fns/get_minutes/package.json create mode 100644 node_modules/date-fns/get_month/index.d.ts create mode 100644 node_modules/date-fns/get_month/index.js create mode 100644 node_modules/date-fns/get_month/index.js.flow create mode 100644 node_modules/date-fns/get_month/package.json create mode 100644 node_modules/date-fns/get_overlapping_days_in_ranges/index.d.ts create mode 100644 node_modules/date-fns/get_overlapping_days_in_ranges/index.js create mode 100644 node_modules/date-fns/get_overlapping_days_in_ranges/index.js.flow create mode 100644 node_modules/date-fns/get_overlapping_days_in_ranges/package.json create mode 100644 node_modules/date-fns/get_quarter/index.d.ts create mode 100644 node_modules/date-fns/get_quarter/index.js create mode 100644 node_modules/date-fns/get_quarter/index.js.flow create mode 100644 node_modules/date-fns/get_quarter/package.json create mode 100644 node_modules/date-fns/get_seconds/index.d.ts create mode 100644 node_modules/date-fns/get_seconds/index.js create mode 100644 node_modules/date-fns/get_seconds/index.js.flow create mode 100644 node_modules/date-fns/get_seconds/package.json create mode 100644 node_modules/date-fns/get_time/index.d.ts create mode 100644 node_modules/date-fns/get_time/index.js create mode 100644 node_modules/date-fns/get_time/index.js.flow create mode 100644 node_modules/date-fns/get_time/package.json create mode 100644 node_modules/date-fns/get_year/index.d.ts create mode 100644 node_modules/date-fns/get_year/index.js create mode 100644 node_modules/date-fns/get_year/index.js.flow create mode 100644 node_modules/date-fns/get_year/package.json create mode 100644 node_modules/date-fns/index.js create mode 100644 node_modules/date-fns/is_after/index.d.ts create mode 100644 node_modules/date-fns/is_after/index.js create mode 100644 node_modules/date-fns/is_after/index.js.flow create mode 100644 node_modules/date-fns/is_after/package.json create mode 100644 node_modules/date-fns/is_before/index.d.ts create mode 100644 node_modules/date-fns/is_before/index.js create mode 100644 node_modules/date-fns/is_before/index.js.flow create mode 100644 node_modules/date-fns/is_before/package.json create mode 100644 node_modules/date-fns/is_date/index.d.ts create mode 100644 node_modules/date-fns/is_date/index.js create mode 100644 node_modules/date-fns/is_date/index.js.flow create mode 100644 node_modules/date-fns/is_date/package.json create mode 100644 node_modules/date-fns/is_equal/index.d.ts create mode 100644 node_modules/date-fns/is_equal/index.js create mode 100644 node_modules/date-fns/is_equal/index.js.flow create mode 100644 node_modules/date-fns/is_equal/package.json create mode 100644 node_modules/date-fns/is_first_day_of_month/index.d.ts create mode 100644 node_modules/date-fns/is_first_day_of_month/index.js create mode 100644 node_modules/date-fns/is_first_day_of_month/index.js.flow create mode 100644 node_modules/date-fns/is_first_day_of_month/package.json create mode 100644 node_modules/date-fns/is_friday/index.d.ts create mode 100644 node_modules/date-fns/is_friday/index.js create mode 100644 node_modules/date-fns/is_friday/index.js.flow create mode 100644 node_modules/date-fns/is_friday/package.json create mode 100644 node_modules/date-fns/is_future/index.d.ts create mode 100644 node_modules/date-fns/is_future/index.js create mode 100644 node_modules/date-fns/is_future/index.js.flow create mode 100644 node_modules/date-fns/is_future/package.json create mode 100644 node_modules/date-fns/is_last_day_of_month/index.d.ts create mode 100644 node_modules/date-fns/is_last_day_of_month/index.js create mode 100644 node_modules/date-fns/is_last_day_of_month/index.js.flow create mode 100644 node_modules/date-fns/is_last_day_of_month/package.json create mode 100644 node_modules/date-fns/is_leap_year/index.d.ts create mode 100644 node_modules/date-fns/is_leap_year/index.js create mode 100644 node_modules/date-fns/is_leap_year/index.js.flow create mode 100644 node_modules/date-fns/is_leap_year/package.json create mode 100644 node_modules/date-fns/is_monday/index.d.ts create mode 100644 node_modules/date-fns/is_monday/index.js create mode 100644 node_modules/date-fns/is_monday/index.js.flow create mode 100644 node_modules/date-fns/is_monday/package.json create mode 100644 node_modules/date-fns/is_past/index.d.ts create mode 100644 node_modules/date-fns/is_past/index.js create mode 100644 node_modules/date-fns/is_past/index.js.flow create mode 100644 node_modules/date-fns/is_past/package.json create mode 100644 node_modules/date-fns/is_same_day/index.d.ts create mode 100644 node_modules/date-fns/is_same_day/index.js create mode 100644 node_modules/date-fns/is_same_day/index.js.flow create mode 100644 node_modules/date-fns/is_same_day/package.json create mode 100644 node_modules/date-fns/is_same_hour/index.d.ts create mode 100644 node_modules/date-fns/is_same_hour/index.js create mode 100644 node_modules/date-fns/is_same_hour/index.js.flow create mode 100644 node_modules/date-fns/is_same_hour/package.json create mode 100644 node_modules/date-fns/is_same_iso_week/index.d.ts create mode 100644 node_modules/date-fns/is_same_iso_week/index.js create mode 100644 node_modules/date-fns/is_same_iso_week/index.js.flow create mode 100644 node_modules/date-fns/is_same_iso_week/package.json create mode 100644 node_modules/date-fns/is_same_iso_year/index.d.ts create mode 100644 node_modules/date-fns/is_same_iso_year/index.js create mode 100644 node_modules/date-fns/is_same_iso_year/index.js.flow create mode 100644 node_modules/date-fns/is_same_iso_year/package.json create mode 100644 node_modules/date-fns/is_same_minute/index.d.ts create mode 100644 node_modules/date-fns/is_same_minute/index.js create mode 100644 node_modules/date-fns/is_same_minute/index.js.flow create mode 100644 node_modules/date-fns/is_same_minute/package.json create mode 100644 node_modules/date-fns/is_same_month/index.d.ts create mode 100644 node_modules/date-fns/is_same_month/index.js create mode 100644 node_modules/date-fns/is_same_month/index.js.flow create mode 100644 node_modules/date-fns/is_same_month/package.json create mode 100644 node_modules/date-fns/is_same_quarter/index.d.ts create mode 100644 node_modules/date-fns/is_same_quarter/index.js create mode 100644 node_modules/date-fns/is_same_quarter/index.js.flow create mode 100644 node_modules/date-fns/is_same_quarter/package.json create mode 100644 node_modules/date-fns/is_same_second/index.d.ts create mode 100644 node_modules/date-fns/is_same_second/index.js create mode 100644 node_modules/date-fns/is_same_second/index.js.flow create mode 100644 node_modules/date-fns/is_same_second/package.json create mode 100644 node_modules/date-fns/is_same_week/index.d.ts create mode 100644 node_modules/date-fns/is_same_week/index.js create mode 100644 node_modules/date-fns/is_same_week/index.js.flow create mode 100644 node_modules/date-fns/is_same_week/package.json create mode 100644 node_modules/date-fns/is_same_year/index.d.ts create mode 100644 node_modules/date-fns/is_same_year/index.js create mode 100644 node_modules/date-fns/is_same_year/index.js.flow create mode 100644 node_modules/date-fns/is_same_year/package.json create mode 100644 node_modules/date-fns/is_saturday/index.d.ts create mode 100644 node_modules/date-fns/is_saturday/index.js create mode 100644 node_modules/date-fns/is_saturday/index.js.flow create mode 100644 node_modules/date-fns/is_saturday/package.json create mode 100644 node_modules/date-fns/is_sunday/index.d.ts create mode 100644 node_modules/date-fns/is_sunday/index.js create mode 100644 node_modules/date-fns/is_sunday/index.js.flow create mode 100644 node_modules/date-fns/is_sunday/package.json create mode 100644 node_modules/date-fns/is_this_hour/index.d.ts create mode 100644 node_modules/date-fns/is_this_hour/index.js create mode 100644 node_modules/date-fns/is_this_hour/index.js.flow create mode 100644 node_modules/date-fns/is_this_hour/package.json create mode 100644 node_modules/date-fns/is_this_iso_week/index.d.ts create mode 100644 node_modules/date-fns/is_this_iso_week/index.js create mode 100644 node_modules/date-fns/is_this_iso_week/index.js.flow create mode 100644 node_modules/date-fns/is_this_iso_week/package.json create mode 100644 node_modules/date-fns/is_this_iso_year/index.d.ts create mode 100644 node_modules/date-fns/is_this_iso_year/index.js create mode 100644 node_modules/date-fns/is_this_iso_year/index.js.flow create mode 100644 node_modules/date-fns/is_this_iso_year/package.json create mode 100644 node_modules/date-fns/is_this_minute/index.d.ts create mode 100644 node_modules/date-fns/is_this_minute/index.js create mode 100644 node_modules/date-fns/is_this_minute/index.js.flow create mode 100644 node_modules/date-fns/is_this_minute/package.json create mode 100644 node_modules/date-fns/is_this_month/index.d.ts create mode 100644 node_modules/date-fns/is_this_month/index.js create mode 100644 node_modules/date-fns/is_this_month/index.js.flow create mode 100644 node_modules/date-fns/is_this_month/package.json create mode 100644 node_modules/date-fns/is_this_quarter/index.d.ts create mode 100644 node_modules/date-fns/is_this_quarter/index.js create mode 100644 node_modules/date-fns/is_this_quarter/index.js.flow create mode 100644 node_modules/date-fns/is_this_quarter/package.json create mode 100644 node_modules/date-fns/is_this_second/index.d.ts create mode 100644 node_modules/date-fns/is_this_second/index.js create mode 100644 node_modules/date-fns/is_this_second/index.js.flow create mode 100644 node_modules/date-fns/is_this_second/package.json create mode 100644 node_modules/date-fns/is_this_week/index.d.ts create mode 100644 node_modules/date-fns/is_this_week/index.js create mode 100644 node_modules/date-fns/is_this_week/index.js.flow create mode 100644 node_modules/date-fns/is_this_week/package.json create mode 100644 node_modules/date-fns/is_this_year/index.d.ts create mode 100644 node_modules/date-fns/is_this_year/index.js create mode 100644 node_modules/date-fns/is_this_year/index.js.flow create mode 100644 node_modules/date-fns/is_this_year/package.json create mode 100644 node_modules/date-fns/is_thursday/index.d.ts create mode 100644 node_modules/date-fns/is_thursday/index.js create mode 100644 node_modules/date-fns/is_thursday/index.js.flow create mode 100644 node_modules/date-fns/is_thursday/package.json create mode 100644 node_modules/date-fns/is_today/index.d.ts create mode 100644 node_modules/date-fns/is_today/index.js create mode 100644 node_modules/date-fns/is_today/index.js.flow create mode 100644 node_modules/date-fns/is_today/package.json create mode 100644 node_modules/date-fns/is_tomorrow/index.d.ts create mode 100644 node_modules/date-fns/is_tomorrow/index.js create mode 100644 node_modules/date-fns/is_tomorrow/index.js.flow create mode 100644 node_modules/date-fns/is_tomorrow/package.json create mode 100644 node_modules/date-fns/is_tuesday/index.d.ts create mode 100644 node_modules/date-fns/is_tuesday/index.js create mode 100644 node_modules/date-fns/is_tuesday/index.js.flow create mode 100644 node_modules/date-fns/is_tuesday/package.json create mode 100644 node_modules/date-fns/is_valid/index.d.ts create mode 100644 node_modules/date-fns/is_valid/index.js create mode 100644 node_modules/date-fns/is_valid/index.js.flow create mode 100644 node_modules/date-fns/is_valid/package.json create mode 100644 node_modules/date-fns/is_wednesday/index.d.ts create mode 100644 node_modules/date-fns/is_wednesday/index.js create mode 100644 node_modules/date-fns/is_wednesday/index.js.flow create mode 100644 node_modules/date-fns/is_wednesday/package.json create mode 100644 node_modules/date-fns/is_weekend/index.d.ts create mode 100644 node_modules/date-fns/is_weekend/index.js create mode 100644 node_modules/date-fns/is_weekend/index.js.flow create mode 100644 node_modules/date-fns/is_weekend/package.json create mode 100644 node_modules/date-fns/is_within_range/index.d.ts create mode 100644 node_modules/date-fns/is_within_range/index.js create mode 100644 node_modules/date-fns/is_within_range/index.js.flow create mode 100644 node_modules/date-fns/is_within_range/package.json create mode 100644 node_modules/date-fns/is_yesterday/index.d.ts create mode 100644 node_modules/date-fns/is_yesterday/index.js create mode 100644 node_modules/date-fns/is_yesterday/index.js.flow create mode 100644 node_modules/date-fns/is_yesterday/package.json create mode 100644 node_modules/date-fns/last_day_of_iso_week/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_iso_week/index.js create mode 100644 node_modules/date-fns/last_day_of_iso_week/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_iso_week/package.json create mode 100644 node_modules/date-fns/last_day_of_iso_year/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_iso_year/index.js create mode 100644 node_modules/date-fns/last_day_of_iso_year/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_iso_year/package.json create mode 100644 node_modules/date-fns/last_day_of_month/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_month/index.js create mode 100644 node_modules/date-fns/last_day_of_month/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_month/package.json create mode 100644 node_modules/date-fns/last_day_of_quarter/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_quarter/index.js create mode 100644 node_modules/date-fns/last_day_of_quarter/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_quarter/package.json create mode 100644 node_modules/date-fns/last_day_of_week/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_week/index.js create mode 100644 node_modules/date-fns/last_day_of_week/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_week/package.json create mode 100644 node_modules/date-fns/last_day_of_year/index.d.ts create mode 100644 node_modules/date-fns/last_day_of_year/index.js create mode 100644 node_modules/date-fns/last_day_of_year/index.js.flow create mode 100644 node_modules/date-fns/last_day_of_year/package.json create mode 100644 node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js create mode 100644 node_modules/date-fns/locale/_lib/package.json create mode 100644 node_modules/date-fns/locale/ar/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ar/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ar/index.d.ts create mode 100644 node_modules/date-fns/locale/ar/index.js create mode 100644 node_modules/date-fns/locale/ar/package.json create mode 100644 node_modules/date-fns/locale/be/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/be/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/be/index.d.ts create mode 100644 node_modules/date-fns/locale/be/index.js create mode 100644 node_modules/date-fns/locale/be/package.json create mode 100644 node_modules/date-fns/locale/bg/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/bg/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/bg/index.d.ts create mode 100644 node_modules/date-fns/locale/bg/index.js create mode 100644 node_modules/date-fns/locale/bg/package.json create mode 100644 node_modules/date-fns/locale/ca/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ca/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ca/index.d.ts create mode 100644 node_modules/date-fns/locale/ca/index.js create mode 100644 node_modules/date-fns/locale/ca/package.json create mode 100644 node_modules/date-fns/locale/cs/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/cs/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/cs/index.d.ts create mode 100644 node_modules/date-fns/locale/cs/index.js create mode 100644 node_modules/date-fns/locale/cs/package.json create mode 100644 node_modules/date-fns/locale/da/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/da/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/da/index.d.ts create mode 100644 node_modules/date-fns/locale/da/index.js create mode 100644 node_modules/date-fns/locale/da/package.json create mode 100644 node_modules/date-fns/locale/de/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/de/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/de/index.d.ts create mode 100644 node_modules/date-fns/locale/de/index.js create mode 100644 node_modules/date-fns/locale/de/package.json create mode 100644 node_modules/date-fns/locale/el/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/el/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/el/index.d.ts create mode 100644 node_modules/date-fns/locale/el/index.js create mode 100644 node_modules/date-fns/locale/el/package.json create mode 100644 node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/en/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/en/index.d.ts create mode 100644 node_modules/date-fns/locale/en/index.js create mode 100644 node_modules/date-fns/locale/en/package.json create mode 100644 node_modules/date-fns/locale/eo/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/eo/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/eo/index.d.ts create mode 100644 node_modules/date-fns/locale/eo/index.js create mode 100644 node_modules/date-fns/locale/eo/package.json create mode 100644 node_modules/date-fns/locale/es/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/es/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/es/index.d.ts create mode 100644 node_modules/date-fns/locale/es/index.js create mode 100644 node_modules/date-fns/locale/es/package.json create mode 100644 node_modules/date-fns/locale/fi/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/fi/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/fi/index.d.ts create mode 100644 node_modules/date-fns/locale/fi/index.js create mode 100644 node_modules/date-fns/locale/fi/package.json create mode 100644 node_modules/date-fns/locale/fil/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/fil/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/fil/index.d.ts create mode 100644 node_modules/date-fns/locale/fil/index.js create mode 100644 node_modules/date-fns/locale/fil/package.json create mode 100644 node_modules/date-fns/locale/fr/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/fr/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/fr/index.d.ts create mode 100644 node_modules/date-fns/locale/fr/index.js create mode 100644 node_modules/date-fns/locale/fr/package.json create mode 100644 node_modules/date-fns/locale/hr/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/hr/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/hr/index.d.ts create mode 100644 node_modules/date-fns/locale/hr/index.js create mode 100644 node_modules/date-fns/locale/hr/package.json create mode 100644 node_modules/date-fns/locale/hu/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/hu/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/hu/index.d.ts create mode 100644 node_modules/date-fns/locale/hu/index.js create mode 100644 node_modules/date-fns/locale/hu/package.json create mode 100644 node_modules/date-fns/locale/id/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/id/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/id/index.d.ts create mode 100644 node_modules/date-fns/locale/id/index.js create mode 100644 node_modules/date-fns/locale/id/package.json create mode 100644 node_modules/date-fns/locale/is/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/is/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/is/index.d.ts create mode 100644 node_modules/date-fns/locale/is/index.js create mode 100644 node_modules/date-fns/locale/is/package.json create mode 100644 node_modules/date-fns/locale/it/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/it/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/it/index.d.ts create mode 100644 node_modules/date-fns/locale/it/index.js create mode 100644 node_modules/date-fns/locale/it/package.json create mode 100644 node_modules/date-fns/locale/ja/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ja/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ja/index.d.ts create mode 100644 node_modules/date-fns/locale/ja/index.js create mode 100644 node_modules/date-fns/locale/ja/package.json create mode 100644 node_modules/date-fns/locale/ko/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ko/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ko/index.d.ts create mode 100644 node_modules/date-fns/locale/ko/index.js create mode 100644 node_modules/date-fns/locale/ko/package.json create mode 100644 node_modules/date-fns/locale/mk/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/mk/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/mk/index.d.ts create mode 100644 node_modules/date-fns/locale/mk/index.js create mode 100644 node_modules/date-fns/locale/mk/package.json create mode 100644 node_modules/date-fns/locale/nb/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/nb/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/nb/index.d.ts create mode 100644 node_modules/date-fns/locale/nb/index.js create mode 100644 node_modules/date-fns/locale/nb/package.json create mode 100644 node_modules/date-fns/locale/nl/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/nl/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/nl/index.d.ts create mode 100644 node_modules/date-fns/locale/nl/index.js create mode 100644 node_modules/date-fns/locale/nl/package.json create mode 100644 node_modules/date-fns/locale/package.json create mode 100644 node_modules/date-fns/locale/pl/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/pl/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/pl/index.d.ts create mode 100644 node_modules/date-fns/locale/pl/index.js create mode 100644 node_modules/date-fns/locale/pl/package.json create mode 100644 node_modules/date-fns/locale/pt/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/pt/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/pt/index.d.ts create mode 100644 node_modules/date-fns/locale/pt/index.js create mode 100644 node_modules/date-fns/locale/pt/package.json create mode 100644 node_modules/date-fns/locale/ro/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ro/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ro/index.d.ts create mode 100644 node_modules/date-fns/locale/ro/index.js create mode 100644 node_modules/date-fns/locale/ro/package.json create mode 100644 node_modules/date-fns/locale/ru/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/ru/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/ru/index.d.ts create mode 100644 node_modules/date-fns/locale/ru/index.js create mode 100644 node_modules/date-fns/locale/ru/package.json create mode 100644 node_modules/date-fns/locale/sk/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/sk/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/sk/index.d.ts create mode 100644 node_modules/date-fns/locale/sk/index.js create mode 100644 node_modules/date-fns/locale/sk/package.json create mode 100644 node_modules/date-fns/locale/sl/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/sl/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/sl/index.d.ts create mode 100644 node_modules/date-fns/locale/sl/index.js create mode 100644 node_modules/date-fns/locale/sl/package.json create mode 100644 node_modules/date-fns/locale/sr/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/sr/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/sr/index.d.ts create mode 100644 node_modules/date-fns/locale/sr/index.js create mode 100644 node_modules/date-fns/locale/sr/package.json create mode 100644 node_modules/date-fns/locale/sv/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/sv/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/sv/index.d.ts create mode 100644 node_modules/date-fns/locale/sv/index.js create mode 100644 node_modules/date-fns/locale/sv/package.json create mode 100644 node_modules/date-fns/locale/th/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/th/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/th/index.d.ts create mode 100644 node_modules/date-fns/locale/th/index.js create mode 100644 node_modules/date-fns/locale/th/package.json create mode 100644 node_modules/date-fns/locale/tr/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/tr/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/tr/index.d.ts create mode 100644 node_modules/date-fns/locale/tr/index.js create mode 100644 node_modules/date-fns/locale/tr/package.json create mode 100644 node_modules/date-fns/locale/zh_cn/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/zh_cn/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/zh_cn/index.d.ts create mode 100644 node_modules/date-fns/locale/zh_cn/index.js create mode 100644 node_modules/date-fns/locale/zh_cn/package.json create mode 100644 node_modules/date-fns/locale/zh_tw/build_distance_in_words_locale/index.js create mode 100644 node_modules/date-fns/locale/zh_tw/build_format_locale/index.js create mode 100644 node_modules/date-fns/locale/zh_tw/index.d.ts create mode 100644 node_modules/date-fns/locale/zh_tw/index.js create mode 100644 node_modules/date-fns/locale/zh_tw/package.json create mode 100644 node_modules/date-fns/max/index.d.ts create mode 100644 node_modules/date-fns/max/index.js create mode 100644 node_modules/date-fns/max/index.js.flow create mode 100644 node_modules/date-fns/max/package.json create mode 100644 node_modules/date-fns/min/index.d.ts create mode 100644 node_modules/date-fns/min/index.js create mode 100644 node_modules/date-fns/min/index.js.flow create mode 100644 node_modules/date-fns/min/package.json create mode 100644 node_modules/date-fns/package.json create mode 100644 node_modules/date-fns/parse/index.d.ts create mode 100644 node_modules/date-fns/parse/index.js create mode 100644 node_modules/date-fns/parse/index.js.flow create mode 100644 node_modules/date-fns/parse/package.json create mode 100644 node_modules/date-fns/set_date/index.d.ts create mode 100644 node_modules/date-fns/set_date/index.js create mode 100644 node_modules/date-fns/set_date/index.js.flow create mode 100644 node_modules/date-fns/set_date/package.json create mode 100644 node_modules/date-fns/set_day/index.d.ts create mode 100644 node_modules/date-fns/set_day/index.js create mode 100644 node_modules/date-fns/set_day/index.js.flow create mode 100644 node_modules/date-fns/set_day/package.json create mode 100644 node_modules/date-fns/set_day_of_year/index.d.ts create mode 100644 node_modules/date-fns/set_day_of_year/index.js create mode 100644 node_modules/date-fns/set_day_of_year/index.js.flow create mode 100644 node_modules/date-fns/set_day_of_year/package.json create mode 100644 node_modules/date-fns/set_hours/index.d.ts create mode 100644 node_modules/date-fns/set_hours/index.js create mode 100644 node_modules/date-fns/set_hours/index.js.flow create mode 100644 node_modules/date-fns/set_hours/package.json create mode 100644 node_modules/date-fns/set_iso_day/index.d.ts create mode 100644 node_modules/date-fns/set_iso_day/index.js create mode 100644 node_modules/date-fns/set_iso_day/index.js.flow create mode 100644 node_modules/date-fns/set_iso_day/package.json create mode 100644 node_modules/date-fns/set_iso_week/index.d.ts create mode 100644 node_modules/date-fns/set_iso_week/index.js create mode 100644 node_modules/date-fns/set_iso_week/index.js.flow create mode 100644 node_modules/date-fns/set_iso_week/package.json create mode 100644 node_modules/date-fns/set_iso_year/index.d.ts create mode 100644 node_modules/date-fns/set_iso_year/index.js create mode 100644 node_modules/date-fns/set_iso_year/index.js.flow create mode 100644 node_modules/date-fns/set_iso_year/package.json create mode 100644 node_modules/date-fns/set_milliseconds/index.d.ts create mode 100644 node_modules/date-fns/set_milliseconds/index.js create mode 100644 node_modules/date-fns/set_milliseconds/index.js.flow create mode 100644 node_modules/date-fns/set_milliseconds/package.json create mode 100644 node_modules/date-fns/set_minutes/index.d.ts create mode 100644 node_modules/date-fns/set_minutes/index.js create mode 100644 node_modules/date-fns/set_minutes/index.js.flow create mode 100644 node_modules/date-fns/set_minutes/package.json create mode 100644 node_modules/date-fns/set_month/index.d.ts create mode 100644 node_modules/date-fns/set_month/index.js create mode 100644 node_modules/date-fns/set_month/index.js.flow create mode 100644 node_modules/date-fns/set_month/package.json create mode 100644 node_modules/date-fns/set_quarter/index.d.ts create mode 100644 node_modules/date-fns/set_quarter/index.js create mode 100644 node_modules/date-fns/set_quarter/index.js.flow create mode 100644 node_modules/date-fns/set_quarter/package.json create mode 100644 node_modules/date-fns/set_seconds/index.d.ts create mode 100644 node_modules/date-fns/set_seconds/index.js create mode 100644 node_modules/date-fns/set_seconds/index.js.flow create mode 100644 node_modules/date-fns/set_seconds/package.json create mode 100644 node_modules/date-fns/set_year/index.d.ts create mode 100644 node_modules/date-fns/set_year/index.js create mode 100644 node_modules/date-fns/set_year/index.js.flow create mode 100644 node_modules/date-fns/set_year/package.json create mode 100644 node_modules/date-fns/start_of_day/index.d.ts create mode 100644 node_modules/date-fns/start_of_day/index.js create mode 100644 node_modules/date-fns/start_of_day/index.js.flow create mode 100644 node_modules/date-fns/start_of_day/package.json create mode 100644 node_modules/date-fns/start_of_hour/index.d.ts create mode 100644 node_modules/date-fns/start_of_hour/index.js create mode 100644 node_modules/date-fns/start_of_hour/index.js.flow create mode 100644 node_modules/date-fns/start_of_hour/package.json create mode 100644 node_modules/date-fns/start_of_iso_week/index.d.ts create mode 100644 node_modules/date-fns/start_of_iso_week/index.js create mode 100644 node_modules/date-fns/start_of_iso_week/index.js.flow create mode 100644 node_modules/date-fns/start_of_iso_week/package.json create mode 100644 node_modules/date-fns/start_of_iso_year/index.d.ts create mode 100644 node_modules/date-fns/start_of_iso_year/index.js create mode 100644 node_modules/date-fns/start_of_iso_year/index.js.flow create mode 100644 node_modules/date-fns/start_of_iso_year/package.json create mode 100644 node_modules/date-fns/start_of_minute/index.d.ts create mode 100644 node_modules/date-fns/start_of_minute/index.js create mode 100644 node_modules/date-fns/start_of_minute/index.js.flow create mode 100644 node_modules/date-fns/start_of_minute/package.json create mode 100644 node_modules/date-fns/start_of_month/index.d.ts create mode 100644 node_modules/date-fns/start_of_month/index.js create mode 100644 node_modules/date-fns/start_of_month/index.js.flow create mode 100644 node_modules/date-fns/start_of_month/package.json create mode 100644 node_modules/date-fns/start_of_quarter/index.d.ts create mode 100644 node_modules/date-fns/start_of_quarter/index.js create mode 100644 node_modules/date-fns/start_of_quarter/index.js.flow create mode 100644 node_modules/date-fns/start_of_quarter/package.json create mode 100644 node_modules/date-fns/start_of_second/index.d.ts create mode 100644 node_modules/date-fns/start_of_second/index.js create mode 100644 node_modules/date-fns/start_of_second/index.js.flow create mode 100644 node_modules/date-fns/start_of_second/package.json create mode 100644 node_modules/date-fns/start_of_today/index.d.ts create mode 100644 node_modules/date-fns/start_of_today/index.js create mode 100644 node_modules/date-fns/start_of_today/index.js.flow create mode 100644 node_modules/date-fns/start_of_today/package.json create mode 100644 node_modules/date-fns/start_of_tomorrow/index.d.ts create mode 100644 node_modules/date-fns/start_of_tomorrow/index.js create mode 100644 node_modules/date-fns/start_of_tomorrow/index.js.flow create mode 100644 node_modules/date-fns/start_of_tomorrow/package.json create mode 100644 node_modules/date-fns/start_of_week/index.d.ts create mode 100644 node_modules/date-fns/start_of_week/index.js create mode 100644 node_modules/date-fns/start_of_week/index.js.flow create mode 100644 node_modules/date-fns/start_of_week/package.json create mode 100644 node_modules/date-fns/start_of_year/index.d.ts create mode 100644 node_modules/date-fns/start_of_year/index.js create mode 100644 node_modules/date-fns/start_of_year/index.js.flow create mode 100644 node_modules/date-fns/start_of_year/package.json create mode 100644 node_modules/date-fns/start_of_yesterday/index.d.ts create mode 100644 node_modules/date-fns/start_of_yesterday/index.js create mode 100644 node_modules/date-fns/start_of_yesterday/index.js.flow create mode 100644 node_modules/date-fns/start_of_yesterday/package.json create mode 100644 node_modules/date-fns/sub_days/index.d.ts create mode 100644 node_modules/date-fns/sub_days/index.js create mode 100644 node_modules/date-fns/sub_days/index.js.flow create mode 100644 node_modules/date-fns/sub_days/package.json create mode 100644 node_modules/date-fns/sub_hours/index.d.ts create mode 100644 node_modules/date-fns/sub_hours/index.js create mode 100644 node_modules/date-fns/sub_hours/index.js.flow create mode 100644 node_modules/date-fns/sub_hours/package.json create mode 100644 node_modules/date-fns/sub_iso_years/index.d.ts create mode 100644 node_modules/date-fns/sub_iso_years/index.js create mode 100644 node_modules/date-fns/sub_iso_years/index.js.flow create mode 100644 node_modules/date-fns/sub_iso_years/package.json create mode 100644 node_modules/date-fns/sub_milliseconds/index.d.ts create mode 100644 node_modules/date-fns/sub_milliseconds/index.js create mode 100644 node_modules/date-fns/sub_milliseconds/index.js.flow create mode 100644 node_modules/date-fns/sub_milliseconds/package.json create mode 100644 node_modules/date-fns/sub_minutes/index.d.ts create mode 100644 node_modules/date-fns/sub_minutes/index.js create mode 100644 node_modules/date-fns/sub_minutes/index.js.flow create mode 100644 node_modules/date-fns/sub_minutes/package.json create mode 100644 node_modules/date-fns/sub_months/index.d.ts create mode 100644 node_modules/date-fns/sub_months/index.js create mode 100644 node_modules/date-fns/sub_months/index.js.flow create mode 100644 node_modules/date-fns/sub_months/package.json create mode 100644 node_modules/date-fns/sub_quarters/index.d.ts create mode 100644 node_modules/date-fns/sub_quarters/index.js create mode 100644 node_modules/date-fns/sub_quarters/index.js.flow create mode 100644 node_modules/date-fns/sub_quarters/package.json create mode 100644 node_modules/date-fns/sub_seconds/index.d.ts create mode 100644 node_modules/date-fns/sub_seconds/index.js create mode 100644 node_modules/date-fns/sub_seconds/index.js.flow create mode 100644 node_modules/date-fns/sub_seconds/package.json create mode 100644 node_modules/date-fns/sub_weeks/index.d.ts create mode 100644 node_modules/date-fns/sub_weeks/index.js create mode 100644 node_modules/date-fns/sub_weeks/index.js.flow create mode 100644 node_modules/date-fns/sub_weeks/package.json create mode 100644 node_modules/date-fns/sub_years/index.d.ts create mode 100644 node_modules/date-fns/sub_years/index.js create mode 100644 node_modules/date-fns/sub_years/index.js.flow create mode 100644 node_modules/date-fns/sub_years/package.json create mode 100644 node_modules/date-fns/typings.d.ts create mode 100644 node_modules/debug/CHANGELOG.md create mode 100644 node_modules/debug/LICENSE create mode 100644 node_modules/debug/README.md create mode 100644 node_modules/debug/dist/debug.js create mode 100644 node_modules/debug/node.js create mode 100644 node_modules/debug/package.json create mode 100644 node_modules/debug/src/browser.js create mode 100644 node_modules/debug/src/common.js create mode 100644 node_modules/debug/src/index.js create mode 100644 node_modules/debug/src/node.js create mode 100644 node_modules/delayed-stream/.npmignore create mode 100644 node_modules/delayed-stream/License create mode 100644 node_modules/delayed-stream/Makefile create mode 100644 node_modules/delayed-stream/Readme.md create mode 100644 node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 node_modules/delayed-stream/package.json create mode 100755 node_modules/ecc-jsbn/LICENSE create mode 100755 node_modules/ecc-jsbn/README.md create mode 100755 node_modules/ecc-jsbn/index.js create mode 100755 node_modules/ecc-jsbn/lib/LICENSE-jsbn create mode 100755 node_modules/ecc-jsbn/lib/ec.js create mode 100755 node_modules/ecc-jsbn/lib/sec.js create mode 100755 node_modules/ecc-jsbn/package.json create mode 100755 node_modules/ecc-jsbn/test.js create mode 100644 node_modules/elegant-spinner/index.js create mode 100644 node_modules/elegant-spinner/license create mode 100644 node_modules/elegant-spinner/package.json create mode 100644 node_modules/elegant-spinner/readme.md create mode 100644 node_modules/escape-string-regexp/index.js create mode 100644 node_modules/escape-string-regexp/license create mode 100644 node_modules/escape-string-regexp/package.json create mode 100644 node_modules/escape-string-regexp/readme.md create mode 100644 node_modules/execa/index.js create mode 100644 node_modules/execa/lib/errname.js create mode 100644 node_modules/execa/lib/stdio.js create mode 100644 node_modules/execa/license create mode 100644 node_modules/execa/package.json create mode 100644 node_modules/execa/readme.md create mode 100644 node_modules/executable/index.js create mode 100644 node_modules/executable/license create mode 100644 node_modules/executable/package.json create mode 100644 node_modules/executable/readme.md create mode 100644 node_modules/exit-hook/index.js create mode 100644 node_modules/exit-hook/package.json create mode 100644 node_modules/exit-hook/readme.md create mode 100644 node_modules/extend/.editorconfig create mode 100644 node_modules/extend/.eslintrc create mode 100644 node_modules/extend/.jscs.json create mode 100644 node_modules/extend/.travis.yml create mode 100644 node_modules/extend/CHANGELOG.md create mode 100644 node_modules/extend/LICENSE create mode 100644 node_modules/extend/README.md create mode 100644 node_modules/extend/component.json create mode 100644 node_modules/extend/index.js create mode 100644 node_modules/extend/package.json create mode 100644 node_modules/extract-zip/.npmignore create mode 100644 node_modules/extract-zip/.travis.yml create mode 100644 node_modules/extract-zip/CONTRIBUTING.md create mode 100644 node_modules/extract-zip/LICENSE create mode 100755 node_modules/extract-zip/cli.js create mode 100644 node_modules/extract-zip/index.js create mode 100644 node_modules/extract-zip/node_modules/debug/.coveralls.yml create mode 100644 node_modules/extract-zip/node_modules/debug/.eslintrc create mode 100644 node_modules/extract-zip/node_modules/debug/.npmignore create mode 100644 node_modules/extract-zip/node_modules/debug/.travis.yml create mode 100644 node_modules/extract-zip/node_modules/debug/CHANGELOG.md create mode 100644 node_modules/extract-zip/node_modules/debug/LICENSE create mode 100644 node_modules/extract-zip/node_modules/debug/Makefile create mode 100644 node_modules/extract-zip/node_modules/debug/README.md create mode 100644 node_modules/extract-zip/node_modules/debug/component.json create mode 100644 node_modules/extract-zip/node_modules/debug/karma.conf.js create mode 100644 node_modules/extract-zip/node_modules/debug/node.js create mode 100644 node_modules/extract-zip/node_modules/debug/package.json create mode 100644 node_modules/extract-zip/node_modules/debug/src/browser.js create mode 100644 node_modules/extract-zip/node_modules/debug/src/debug.js create mode 100644 node_modules/extract-zip/node_modules/debug/src/index.js create mode 100644 node_modules/extract-zip/node_modules/debug/src/inspector-log.js create mode 100644 node_modules/extract-zip/node_modules/debug/src/node.js create mode 100644 node_modules/extract-zip/node_modules/ms/index.js create mode 100644 node_modules/extract-zip/node_modules/ms/license.md create mode 100644 node_modules/extract-zip/node_modules/ms/package.json create mode 100644 node_modules/extract-zip/node_modules/ms/readme.md create mode 100644 node_modules/extract-zip/node_modules/yauzl/.npmignore create mode 100644 node_modules/extract-zip/node_modules/yauzl/.travis.yml create mode 100644 node_modules/extract-zip/node_modules/yauzl/LICENSE create mode 100644 node_modules/extract-zip/node_modules/yauzl/README.md create mode 100644 node_modules/extract-zip/node_modules/yauzl/index.js create mode 100644 node_modules/extract-zip/node_modules/yauzl/package.json create mode 100644 node_modules/extract-zip/package.json create mode 100644 node_modules/extract-zip/readme.md create mode 100644 node_modules/extsprintf/.gitmodules create mode 100644 node_modules/extsprintf/.npmignore create mode 100644 node_modules/extsprintf/LICENSE create mode 100644 node_modules/extsprintf/Makefile create mode 100644 node_modules/extsprintf/Makefile.targ create mode 100644 node_modules/extsprintf/README.md create mode 100644 node_modules/extsprintf/jsl.node.conf create mode 100644 node_modules/extsprintf/lib/extsprintf.js create mode 100644 node_modules/extsprintf/package.json create mode 100644 node_modules/fast-deep-equal/LICENSE create mode 100644 node_modules/fast-deep-equal/README.md create mode 100644 node_modules/fast-deep-equal/index.d.ts create mode 100644 node_modules/fast-deep-equal/index.js create mode 100644 node_modules/fast-deep-equal/package.json create mode 100644 node_modules/fast-json-stable-stringify/.eslintrc.yml create mode 100644 node_modules/fast-json-stable-stringify/.npmignore create mode 100644 node_modules/fast-json-stable-stringify/.travis.yml create mode 100644 node_modules/fast-json-stable-stringify/LICENSE create mode 100644 node_modules/fast-json-stable-stringify/README.md create mode 100644 node_modules/fast-json-stable-stringify/benchmark/index.js create mode 100644 node_modules/fast-json-stable-stringify/benchmark/test.json create mode 100644 node_modules/fast-json-stable-stringify/example/key_cmp.js create mode 100644 node_modules/fast-json-stable-stringify/example/nested.js create mode 100644 node_modules/fast-json-stable-stringify/example/str.js create mode 100644 node_modules/fast-json-stable-stringify/example/value_cmp.js create mode 100644 node_modules/fast-json-stable-stringify/index.js create mode 100644 node_modules/fast-json-stable-stringify/package.json create mode 100644 node_modules/fast-json-stable-stringify/test/cmp.js create mode 100644 node_modules/fast-json-stable-stringify/test/nested.js create mode 100644 node_modules/fast-json-stable-stringify/test/str.js create mode 100644 node_modules/fast-json-stable-stringify/test/to-json.js create mode 100644 node_modules/fd-slicer/.npmignore create mode 100644 node_modules/fd-slicer/.travis.yml create mode 100644 node_modules/fd-slicer/CHANGELOG.md create mode 100644 node_modules/fd-slicer/LICENSE create mode 100644 node_modules/fd-slicer/README.md create mode 100644 node_modules/fd-slicer/index.js create mode 100644 node_modules/fd-slicer/package.json create mode 100644 node_modules/fd-slicer/test/test.js create mode 100644 node_modules/figures/index.js create mode 100644 node_modules/figures/license create mode 100644 node_modules/figures/package.json create mode 100644 node_modules/figures/readme.md create mode 100644 node_modules/forever-agent/LICENSE create mode 100644 node_modules/forever-agent/README.md create mode 100644 node_modules/forever-agent/index.js create mode 100644 node_modules/forever-agent/package.json create mode 100644 node_modules/form-data/License create mode 100644 node_modules/form-data/README.md create mode 100644 node_modules/form-data/README.md.bak create mode 100644 node_modules/form-data/lib/browser.js create mode 100644 node_modules/form-data/lib/form_data.js create mode 100644 node_modules/form-data/lib/populate.js create mode 100644 node_modules/form-data/package.json create mode 100644 node_modules/form-data/yarn.lock create mode 100644 node_modules/fs-extra/CHANGELOG.md create mode 100644 node_modules/fs-extra/LICENSE create mode 100644 node_modules/fs-extra/README.md create mode 100644 node_modules/fs-extra/docs/copy-sync.md create mode 100644 node_modules/fs-extra/docs/copy.md create mode 100644 node_modules/fs-extra/docs/emptyDir-sync.md create mode 100644 node_modules/fs-extra/docs/emptyDir.md create mode 100644 node_modules/fs-extra/docs/ensureDir-sync.md create mode 100644 node_modules/fs-extra/docs/ensureDir.md create mode 100644 node_modules/fs-extra/docs/ensureFile-sync.md create mode 100644 node_modules/fs-extra/docs/ensureFile.md create mode 100644 node_modules/fs-extra/docs/ensureLink-sync.md create mode 100644 node_modules/fs-extra/docs/ensureLink.md create mode 100644 node_modules/fs-extra/docs/ensureSymlink-sync.md create mode 100644 node_modules/fs-extra/docs/ensureSymlink.md create mode 100644 node_modules/fs-extra/docs/fs-read-write.md create mode 100644 node_modules/fs-extra/docs/move-sync.md create mode 100644 node_modules/fs-extra/docs/move.md create mode 100644 node_modules/fs-extra/docs/outputFile-sync.md create mode 100644 node_modules/fs-extra/docs/outputFile.md create mode 100644 node_modules/fs-extra/docs/outputJson-sync.md create mode 100644 node_modules/fs-extra/docs/outputJson.md create mode 100644 node_modules/fs-extra/docs/pathExists-sync.md create mode 100644 node_modules/fs-extra/docs/pathExists.md create mode 100644 node_modules/fs-extra/docs/readJson-sync.md create mode 100644 node_modules/fs-extra/docs/readJson.md create mode 100644 node_modules/fs-extra/docs/remove-sync.md create mode 100644 node_modules/fs-extra/docs/remove.md create mode 100644 node_modules/fs-extra/docs/writeJson-sync.md create mode 100644 node_modules/fs-extra/docs/writeJson.md create mode 100644 node_modules/fs-extra/lib/copy-sync/copy-sync.js create mode 100644 node_modules/fs-extra/lib/copy-sync/index.js create mode 100644 node_modules/fs-extra/lib/copy/copy.js create mode 100644 node_modules/fs-extra/lib/copy/index.js create mode 100644 node_modules/fs-extra/lib/empty/index.js create mode 100644 node_modules/fs-extra/lib/ensure/file.js create mode 100644 node_modules/fs-extra/lib/ensure/index.js create mode 100644 node_modules/fs-extra/lib/ensure/link.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-paths.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink-type.js create mode 100644 node_modules/fs-extra/lib/ensure/symlink.js create mode 100644 node_modules/fs-extra/lib/fs/index.js create mode 100644 node_modules/fs-extra/lib/index.js create mode 100644 node_modules/fs-extra/lib/json/index.js create mode 100644 node_modules/fs-extra/lib/json/jsonfile.js create mode 100644 node_modules/fs-extra/lib/json/output-json-sync.js create mode 100644 node_modules/fs-extra/lib/json/output-json.js create mode 100644 node_modules/fs-extra/lib/mkdirs/index.js create mode 100644 node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js create mode 100644 node_modules/fs-extra/lib/mkdirs/mkdirs.js create mode 100644 node_modules/fs-extra/lib/mkdirs/win32.js create mode 100644 node_modules/fs-extra/lib/move-sync/index.js create mode 100644 node_modules/fs-extra/lib/move/index.js create mode 100644 node_modules/fs-extra/lib/output/index.js create mode 100644 node_modules/fs-extra/lib/path-exists/index.js create mode 100644 node_modules/fs-extra/lib/remove/index.js create mode 100644 node_modules/fs-extra/lib/remove/rimraf.js create mode 100644 node_modules/fs-extra/lib/util/assign.js create mode 100644 node_modules/fs-extra/lib/util/buffer.js create mode 100644 node_modules/fs-extra/lib/util/utimes.js create mode 100644 node_modules/fs-extra/package.json create mode 100644 node_modules/fs.realpath/LICENSE create mode 100644 node_modules/fs.realpath/README.md create mode 100644 node_modules/fs.realpath/index.js create mode 100644 node_modules/fs.realpath/old.js create mode 100644 node_modules/fs.realpath/package.json create mode 100644 node_modules/get-stream/buffer-stream.js create mode 100644 node_modules/get-stream/index.js create mode 100644 node_modules/get-stream/license create mode 100644 node_modules/get-stream/package.json create mode 100644 node_modules/get-stream/readme.md create mode 100644 node_modules/getos/.travis.yml create mode 100644 node_modules/getos/Dockerfile create mode 100644 node_modules/getos/LICENSE create mode 100644 node_modules/getos/README.md create mode 100644 node_modules/getos/imgs/logo.png create mode 100644 node_modules/getos/imgs/logo.svg create mode 100644 node_modules/getos/index.js create mode 100644 node_modules/getos/logic/alpine.js create mode 100644 node_modules/getos/logic/amazon.js create mode 100644 node_modules/getos/logic/centos.js create mode 100644 node_modules/getos/logic/debian.js create mode 100644 node_modules/getos/logic/fedora.js create mode 100644 node_modules/getos/logic/manjaro.js create mode 100644 node_modules/getos/logic/raspbian.js create mode 100644 node_modules/getos/logic/red.js create mode 100644 node_modules/getos/logic/suse.js create mode 100644 node_modules/getos/logic/ubuntu.js create mode 100644 node_modules/getos/os.json create mode 100644 node_modules/getos/package.json create mode 100644 node_modules/getos/test.js create mode 100644 node_modules/getos/tests/alpine/3.3/Dockerfile create mode 100644 node_modules/getos/tests/debian/7.3/Dockerfile create mode 100644 node_modules/getos/tests/debian/7.4/Dockerfile create mode 100644 node_modules/getos/tests/debian/7.5/Dockerfile create mode 100644 node_modules/getos/tests/debian/7.6/Dockerfile create mode 100644 node_modules/getos/tests/fedora/20/Dockerfile create mode 100644 node_modules/getos/tests/mockdata.json create mode 100644 node_modules/getos/tests/mocktests.js create mode 100644 node_modules/getos/tests/runTest.js create mode 100644 node_modules/getos/tests/ubuntu/13.10/Dockerfile create mode 100644 node_modules/getos/tests/ubuntu/14.04/Dockerfile create mode 100644 node_modules/getpass/.npmignore create mode 100644 node_modules/getpass/.travis.yml create mode 100644 node_modules/getpass/LICENSE create mode 100644 node_modules/getpass/README.md create mode 100644 node_modules/getpass/lib/index.js create mode 100644 node_modules/getpass/package.json create mode 100644 node_modules/glob/LICENSE create mode 100644 node_modules/glob/README.md create mode 100644 node_modules/glob/changelog.md create mode 100644 node_modules/glob/common.js create mode 100644 node_modules/glob/glob.js create mode 100644 node_modules/glob/package.json create mode 100644 node_modules/glob/sync.js create mode 100644 node_modules/global-dirs/index.js create mode 100644 node_modules/global-dirs/license create mode 100644 node_modules/global-dirs/package.json create mode 100644 node_modules/global-dirs/readme.md create mode 100644 node_modules/graceful-fs/LICENSE create mode 100644 node_modules/graceful-fs/README.md create mode 100644 node_modules/graceful-fs/clone.js create mode 100644 node_modules/graceful-fs/graceful-fs.js create mode 100644 node_modules/graceful-fs/legacy-streams.js create mode 100644 node_modules/graceful-fs/package.json create mode 100644 node_modules/graceful-fs/polyfills.js create mode 100644 node_modules/har-schema/LICENSE create mode 100644 node_modules/har-schema/README.md create mode 100644 node_modules/har-schema/lib/afterRequest.json create mode 100644 node_modules/har-schema/lib/beforeRequest.json create mode 100644 node_modules/har-schema/lib/browser.json create mode 100644 node_modules/har-schema/lib/cache.json create mode 100644 node_modules/har-schema/lib/content.json create mode 100644 node_modules/har-schema/lib/cookie.json create mode 100644 node_modules/har-schema/lib/creator.json create mode 100644 node_modules/har-schema/lib/entry.json create mode 100644 node_modules/har-schema/lib/har.json create mode 100644 node_modules/har-schema/lib/header.json create mode 100644 node_modules/har-schema/lib/index.js create mode 100644 node_modules/har-schema/lib/log.json create mode 100644 node_modules/har-schema/lib/page.json create mode 100644 node_modules/har-schema/lib/pageTimings.json create mode 100644 node_modules/har-schema/lib/postData.json create mode 100644 node_modules/har-schema/lib/query.json create mode 100644 node_modules/har-schema/lib/request.json create mode 100644 node_modules/har-schema/lib/response.json create mode 100644 node_modules/har-schema/lib/timings.json create mode 100644 node_modules/har-schema/package.json create mode 100644 node_modules/har-validator/LICENSE create mode 100644 node_modules/har-validator/README.md create mode 100644 node_modules/har-validator/lib/async.js create mode 100644 node_modules/har-validator/lib/error.js create mode 100644 node_modules/har-validator/lib/promise.js create mode 100644 node_modules/har-validator/package.json create mode 100644 node_modules/has-ansi/index.js create mode 100644 node_modules/has-ansi/license create mode 100644 node_modules/has-ansi/package.json create mode 100644 node_modules/has-ansi/readme.md create mode 100644 node_modules/has-flag/index.js create mode 100644 node_modules/has-flag/license create mode 100644 node_modules/has-flag/package.json create mode 100644 node_modules/has-flag/readme.md create mode 100644 node_modules/http-signature/.dir-locals.el create mode 100644 node_modules/http-signature/.npmignore create mode 100644 node_modules/http-signature/CHANGES.md create mode 100644 node_modules/http-signature/LICENSE create mode 100644 node_modules/http-signature/README.md create mode 100644 node_modules/http-signature/http_signing.md create mode 100644 node_modules/http-signature/lib/index.js create mode 100644 node_modules/http-signature/lib/parser.js create mode 100644 node_modules/http-signature/lib/signer.js create mode 100644 node_modules/http-signature/lib/utils.js create mode 100644 node_modules/http-signature/lib/verify.js create mode 100644 node_modules/http-signature/package.json create mode 100644 node_modules/indent-string/index.js create mode 100644 node_modules/indent-string/license create mode 100644 node_modules/indent-string/package.json create mode 100644 node_modules/indent-string/readme.md create mode 100644 node_modules/inflight/LICENSE create mode 100644 node_modules/inflight/README.md create mode 100644 node_modules/inflight/inflight.js create mode 100644 node_modules/inflight/package.json create mode 100644 node_modules/inherits/LICENSE create mode 100644 node_modules/inherits/README.md create mode 100644 node_modules/inherits/inherits.js create mode 100644 node_modules/inherits/inherits_browser.js create mode 100644 node_modules/inherits/package.json create mode 100644 node_modules/ini/LICENSE create mode 100644 node_modules/ini/README.md create mode 100644 node_modules/ini/ini.js create mode 100644 node_modules/ini/package.json create mode 100644 node_modules/is-ci/LICENSE create mode 100644 node_modules/is-ci/README.md create mode 100755 node_modules/is-ci/bin.js create mode 100644 node_modules/is-ci/index.js create mode 100644 node_modules/is-ci/package.json create mode 100644 node_modules/is-finite/index.js create mode 100644 node_modules/is-finite/license create mode 100644 node_modules/is-finite/package.json create mode 100644 node_modules/is-finite/readme.md create mode 100644 node_modules/is-fullwidth-code-point/index.js create mode 100644 node_modules/is-fullwidth-code-point/license create mode 100644 node_modules/is-fullwidth-code-point/package.json create mode 100644 node_modules/is-fullwidth-code-point/readme.md create mode 100644 node_modules/is-installed-globally/index.js create mode 100644 node_modules/is-installed-globally/license create mode 100644 node_modules/is-installed-globally/package.json create mode 100644 node_modules/is-installed-globally/readme.md create mode 100644 node_modules/is-path-inside/index.js create mode 100644 node_modules/is-path-inside/license create mode 100644 node_modules/is-path-inside/package.json create mode 100644 node_modules/is-path-inside/readme.md create mode 100644 node_modules/is-promise/.npmignore create mode 100644 node_modules/is-promise/.travis.yml create mode 100644 node_modules/is-promise/LICENSE create mode 100644 node_modules/is-promise/index.js create mode 100644 node_modules/is-promise/package.json create mode 100644 node_modules/is-promise/readme.md create mode 100644 node_modules/is-stream/index.js create mode 100644 node_modules/is-stream/license create mode 100644 node_modules/is-stream/package.json create mode 100644 node_modules/is-stream/readme.md create mode 100644 node_modules/is-typedarray/LICENSE.md create mode 100644 node_modules/is-typedarray/README.md create mode 100644 node_modules/is-typedarray/index.js create mode 100644 node_modules/is-typedarray/package.json create mode 100644 node_modules/is-typedarray/test.js create mode 100644 node_modules/isarray/.npmignore create mode 100644 node_modules/isarray/.travis.yml create mode 100644 node_modules/isarray/Makefile create mode 100644 node_modules/isarray/README.md create mode 100644 node_modules/isarray/component.json create mode 100644 node_modules/isarray/index.js create mode 100644 node_modules/isarray/package.json create mode 100644 node_modules/isarray/test.js create mode 100644 node_modules/isexe/.npmignore create mode 100644 node_modules/isexe/LICENSE create mode 100644 node_modules/isexe/README.md create mode 100644 node_modules/isexe/index.js create mode 100644 node_modules/isexe/mode.js create mode 100644 node_modules/isexe/package.json create mode 100644 node_modules/isexe/test/basic.js create mode 100644 node_modules/isexe/windows.js create mode 100644 node_modules/isstream/.jshintrc create mode 100644 node_modules/isstream/.npmignore create mode 100644 node_modules/isstream/.travis.yml create mode 100644 node_modules/isstream/LICENSE.md create mode 100644 node_modules/isstream/README.md create mode 100644 node_modules/isstream/isstream.js create mode 100644 node_modules/isstream/package.json create mode 100644 node_modules/isstream/test.js create mode 100644 node_modules/jsbn/.npmignore create mode 100644 node_modules/jsbn/LICENSE create mode 100644 node_modules/jsbn/README.md create mode 100644 node_modules/jsbn/example.html create mode 100644 node_modules/jsbn/example.js create mode 100644 node_modules/jsbn/index.js create mode 100644 node_modules/jsbn/package.json create mode 100644 node_modules/json-schema-traverse/.eslintrc.yml create mode 100644 node_modules/json-schema-traverse/.travis.yml create mode 100644 node_modules/json-schema-traverse/LICENSE create mode 100644 node_modules/json-schema-traverse/README.md create mode 100644 node_modules/json-schema-traverse/index.js create mode 100644 node_modules/json-schema-traverse/package.json create mode 100644 node_modules/json-schema-traverse/spec/.eslintrc.yml create mode 100644 node_modules/json-schema-traverse/spec/fixtures/schema.js create mode 100644 node_modules/json-schema-traverse/spec/index.spec.js create mode 100644 node_modules/json-schema/README.md create mode 100644 node_modules/json-schema/draft-00/hyper-schema create mode 100644 node_modules/json-schema/draft-00/json-ref create mode 100644 node_modules/json-schema/draft-00/links create mode 100644 node_modules/json-schema/draft-00/schema create mode 100644 node_modules/json-schema/draft-01/hyper-schema create mode 100644 node_modules/json-schema/draft-01/json-ref create mode 100644 node_modules/json-schema/draft-01/links create mode 100644 node_modules/json-schema/draft-01/schema create mode 100644 node_modules/json-schema/draft-02/hyper-schema create mode 100644 node_modules/json-schema/draft-02/json-ref create mode 100644 node_modules/json-schema/draft-02/links create mode 100644 node_modules/json-schema/draft-02/schema create mode 100644 node_modules/json-schema/draft-03/examples/address create mode 100644 node_modules/json-schema/draft-03/examples/calendar create mode 100644 node_modules/json-schema/draft-03/examples/card create mode 100644 node_modules/json-schema/draft-03/examples/geo create mode 100644 node_modules/json-schema/draft-03/examples/interfaces create mode 100644 node_modules/json-schema/draft-03/hyper-schema create mode 100644 node_modules/json-schema/draft-03/json-ref create mode 100644 node_modules/json-schema/draft-03/links create mode 100644 node_modules/json-schema/draft-03/schema create mode 100644 node_modules/json-schema/draft-04/hyper-schema create mode 100644 node_modules/json-schema/draft-04/links create mode 100644 node_modules/json-schema/draft-04/schema create mode 100644 node_modules/json-schema/draft-zyp-json-schema-03.xml create mode 100644 node_modules/json-schema/draft-zyp-json-schema-04.xml create mode 100644 node_modules/json-schema/lib/links.js create mode 100644 node_modules/json-schema/lib/validate.js create mode 100644 node_modules/json-schema/package.json create mode 100644 node_modules/json-schema/test/tests.js create mode 100644 node_modules/json-stringify-safe/.npmignore create mode 100644 node_modules/json-stringify-safe/CHANGELOG.md create mode 100644 node_modules/json-stringify-safe/LICENSE create mode 100644 node_modules/json-stringify-safe/Makefile create mode 100644 node_modules/json-stringify-safe/README.md create mode 100644 node_modules/json-stringify-safe/package.json create mode 100644 node_modules/json-stringify-safe/stringify.js create mode 100644 node_modules/json-stringify-safe/test/mocha.opts create mode 100644 node_modules/json-stringify-safe/test/stringify_test.js create mode 100644 node_modules/jsonfile/CHANGELOG.md create mode 100644 node_modules/jsonfile/LICENSE create mode 100644 node_modules/jsonfile/README.md create mode 100644 node_modules/jsonfile/index.js create mode 100644 node_modules/jsonfile/package.json create mode 100644 node_modules/jsprim/CHANGES.md create mode 100644 node_modules/jsprim/CONTRIBUTING.md create mode 100644 node_modules/jsprim/LICENSE create mode 100644 node_modules/jsprim/README.md create mode 100644 node_modules/jsprim/lib/jsprim.js create mode 100644 node_modules/jsprim/package.json create mode 100644 node_modules/lazy-ass/LICENSE create mode 100644 node_modules/lazy-ass/README.md create mode 100644 node_modules/lazy-ass/bower.json create mode 100644 node_modules/lazy-ass/index.d.ts create mode 100644 node_modules/lazy-ass/index.html create mode 100644 node_modules/lazy-ass/index.js create mode 100644 node_modules/lazy-ass/package.json create mode 100644 node_modules/lazy-ass/test/demo.js create mode 100644 node_modules/listr-silent-renderer/index.js create mode 100644 node_modules/listr-silent-renderer/license create mode 100644 node_modules/listr-silent-renderer/package.json create mode 100644 node_modules/listr-silent-renderer/readme.md create mode 100644 node_modules/listr-update-renderer/index.js create mode 100644 node_modules/listr-update-renderer/lib/utils.js create mode 100644 node_modules/listr-update-renderer/license create mode 100644 node_modules/listr-update-renderer/node_modules/chalk/index.js create mode 100644 node_modules/listr-update-renderer/node_modules/chalk/license create mode 100644 node_modules/listr-update-renderer/node_modules/chalk/package.json create mode 100644 node_modules/listr-update-renderer/node_modules/chalk/readme.md create mode 100644 node_modules/listr-update-renderer/node_modules/indent-string/index.js create mode 100644 node_modules/listr-update-renderer/node_modules/indent-string/license create mode 100644 node_modules/listr-update-renderer/node_modules/indent-string/package.json create mode 100644 node_modules/listr-update-renderer/node_modules/indent-string/readme.md create mode 100644 node_modules/listr-update-renderer/node_modules/log-symbols/index.js create mode 100644 node_modules/listr-update-renderer/node_modules/log-symbols/license create mode 100644 node_modules/listr-update-renderer/node_modules/log-symbols/package.json create mode 100644 node_modules/listr-update-renderer/node_modules/log-symbols/readme.md create mode 100644 node_modules/listr-update-renderer/node_modules/supports-color/index.js create mode 100644 node_modules/listr-update-renderer/node_modules/supports-color/license create mode 100644 node_modules/listr-update-renderer/node_modules/supports-color/package.json create mode 100644 node_modules/listr-update-renderer/node_modules/supports-color/readme.md create mode 100644 node_modules/listr-update-renderer/package.json create mode 100644 node_modules/listr-update-renderer/readme.md create mode 100644 node_modules/listr-verbose-renderer/index.js create mode 100644 node_modules/listr-verbose-renderer/lib/utils.js create mode 100644 node_modules/listr-verbose-renderer/license create mode 100644 node_modules/listr-verbose-renderer/node_modules/chalk/index.js create mode 100644 node_modules/listr-verbose-renderer/node_modules/chalk/license create mode 100644 node_modules/listr-verbose-renderer/node_modules/chalk/package.json create mode 100644 node_modules/listr-verbose-renderer/node_modules/chalk/readme.md create mode 100644 node_modules/listr-verbose-renderer/node_modules/supports-color/index.js create mode 100644 node_modules/listr-verbose-renderer/node_modules/supports-color/license create mode 100644 node_modules/listr-verbose-renderer/node_modules/supports-color/package.json create mode 100644 node_modules/listr-verbose-renderer/node_modules/supports-color/readme.md create mode 100644 node_modules/listr-verbose-renderer/package.json create mode 100644 node_modules/listr-verbose-renderer/readme.md create mode 100644 node_modules/listr/index.js create mode 100644 node_modules/listr/lib/listr-error.js create mode 100644 node_modules/listr/lib/renderer.js create mode 100644 node_modules/listr/lib/state.js create mode 100644 node_modules/listr/lib/task-wrapper.js create mode 100644 node_modules/listr/lib/task.js create mode 100644 node_modules/listr/lib/utils.js create mode 100644 node_modules/listr/license create mode 100644 node_modules/listr/node_modules/chalk/index.js create mode 100644 node_modules/listr/node_modules/chalk/license create mode 100644 node_modules/listr/node_modules/chalk/package.json create mode 100644 node_modules/listr/node_modules/chalk/readme.md create mode 100644 node_modules/listr/node_modules/log-symbols/index.js create mode 100644 node_modules/listr/node_modules/log-symbols/license create mode 100644 node_modules/listr/node_modules/log-symbols/package.json create mode 100644 node_modules/listr/node_modules/log-symbols/readme.md create mode 100644 node_modules/listr/node_modules/supports-color/index.js create mode 100644 node_modules/listr/node_modules/supports-color/license create mode 100644 node_modules/listr/node_modules/supports-color/package.json create mode 100644 node_modules/listr/node_modules/supports-color/readme.md create mode 100644 node_modules/listr/package.json create mode 100644 node_modules/listr/readme.md create mode 100644 node_modules/lodash.once/LICENSE create mode 100644 node_modules/lodash.once/README.md create mode 100644 node_modules/lodash.once/index.js create mode 100644 node_modules/lodash.once/package.json create mode 100644 node_modules/lodash/LICENSE create mode 100644 node_modules/lodash/README.md create mode 100644 node_modules/lodash/_DataView.js create mode 100644 node_modules/lodash/_Hash.js create mode 100644 node_modules/lodash/_LazyWrapper.js create mode 100644 node_modules/lodash/_ListCache.js create mode 100644 node_modules/lodash/_LodashWrapper.js create mode 100644 node_modules/lodash/_Map.js create mode 100644 node_modules/lodash/_MapCache.js create mode 100644 node_modules/lodash/_Promise.js create mode 100644 node_modules/lodash/_Set.js create mode 100644 node_modules/lodash/_SetCache.js create mode 100644 node_modules/lodash/_Stack.js create mode 100644 node_modules/lodash/_Symbol.js create mode 100644 node_modules/lodash/_Uint8Array.js create mode 100644 node_modules/lodash/_WeakMap.js create mode 100644 node_modules/lodash/_apply.js create mode 100644 node_modules/lodash/_arrayAggregator.js create mode 100644 node_modules/lodash/_arrayEach.js create mode 100644 node_modules/lodash/_arrayEachRight.js create mode 100644 node_modules/lodash/_arrayEvery.js create mode 100644 node_modules/lodash/_arrayFilter.js create mode 100644 node_modules/lodash/_arrayIncludes.js create mode 100644 node_modules/lodash/_arrayIncludesWith.js create mode 100644 node_modules/lodash/_arrayLikeKeys.js create mode 100644 node_modules/lodash/_arrayMap.js create mode 100644 node_modules/lodash/_arrayPush.js create mode 100644 node_modules/lodash/_arrayReduce.js create mode 100644 node_modules/lodash/_arrayReduceRight.js create mode 100644 node_modules/lodash/_arraySample.js create mode 100644 node_modules/lodash/_arraySampleSize.js create mode 100644 node_modules/lodash/_arrayShuffle.js create mode 100644 node_modules/lodash/_arraySome.js create mode 100644 node_modules/lodash/_asciiSize.js create mode 100644 node_modules/lodash/_asciiToArray.js create mode 100644 node_modules/lodash/_asciiWords.js create mode 100644 node_modules/lodash/_assignMergeValue.js create mode 100644 node_modules/lodash/_assignValue.js create mode 100644 node_modules/lodash/_assocIndexOf.js create mode 100644 node_modules/lodash/_baseAggregator.js create mode 100644 node_modules/lodash/_baseAssign.js create mode 100644 node_modules/lodash/_baseAssignIn.js create mode 100644 node_modules/lodash/_baseAssignValue.js create mode 100644 node_modules/lodash/_baseAt.js create mode 100644 node_modules/lodash/_baseClamp.js create mode 100644 node_modules/lodash/_baseClone.js create mode 100644 node_modules/lodash/_baseConforms.js create mode 100644 node_modules/lodash/_baseConformsTo.js create mode 100644 node_modules/lodash/_baseCreate.js create mode 100644 node_modules/lodash/_baseDelay.js create mode 100644 node_modules/lodash/_baseDifference.js create mode 100644 node_modules/lodash/_baseEach.js create mode 100644 node_modules/lodash/_baseEachRight.js create mode 100644 node_modules/lodash/_baseEvery.js create mode 100644 node_modules/lodash/_baseExtremum.js create mode 100644 node_modules/lodash/_baseFill.js create mode 100644 node_modules/lodash/_baseFilter.js create mode 100644 node_modules/lodash/_baseFindIndex.js create mode 100644 node_modules/lodash/_baseFindKey.js create mode 100644 node_modules/lodash/_baseFlatten.js create mode 100644 node_modules/lodash/_baseFor.js create mode 100644 node_modules/lodash/_baseForOwn.js create mode 100644 node_modules/lodash/_baseForOwnRight.js create mode 100644 node_modules/lodash/_baseForRight.js create mode 100644 node_modules/lodash/_baseFunctions.js create mode 100644 node_modules/lodash/_baseGet.js create mode 100644 node_modules/lodash/_baseGetAllKeys.js create mode 100644 node_modules/lodash/_baseGetTag.js create mode 100644 node_modules/lodash/_baseGt.js create mode 100644 node_modules/lodash/_baseHas.js create mode 100644 node_modules/lodash/_baseHasIn.js create mode 100644 node_modules/lodash/_baseInRange.js create mode 100644 node_modules/lodash/_baseIndexOf.js create mode 100644 node_modules/lodash/_baseIndexOfWith.js create mode 100644 node_modules/lodash/_baseIntersection.js create mode 100644 node_modules/lodash/_baseInverter.js create mode 100644 node_modules/lodash/_baseInvoke.js create mode 100644 node_modules/lodash/_baseIsArguments.js create mode 100644 node_modules/lodash/_baseIsArrayBuffer.js create mode 100644 node_modules/lodash/_baseIsDate.js create mode 100644 node_modules/lodash/_baseIsEqual.js create mode 100644 node_modules/lodash/_baseIsEqualDeep.js create mode 100644 node_modules/lodash/_baseIsMap.js create mode 100644 node_modules/lodash/_baseIsMatch.js create mode 100644 node_modules/lodash/_baseIsNaN.js create mode 100644 node_modules/lodash/_baseIsNative.js create mode 100644 node_modules/lodash/_baseIsRegExp.js create mode 100644 node_modules/lodash/_baseIsSet.js create mode 100644 node_modules/lodash/_baseIsTypedArray.js create mode 100644 node_modules/lodash/_baseIteratee.js create mode 100644 node_modules/lodash/_baseKeys.js create mode 100644 node_modules/lodash/_baseKeysIn.js create mode 100644 node_modules/lodash/_baseLodash.js create mode 100644 node_modules/lodash/_baseLt.js create mode 100644 node_modules/lodash/_baseMap.js create mode 100644 node_modules/lodash/_baseMatches.js create mode 100644 node_modules/lodash/_baseMatchesProperty.js create mode 100644 node_modules/lodash/_baseMean.js create mode 100644 node_modules/lodash/_baseMerge.js create mode 100644 node_modules/lodash/_baseMergeDeep.js create mode 100644 node_modules/lodash/_baseNth.js create mode 100644 node_modules/lodash/_baseOrderBy.js create mode 100644 node_modules/lodash/_basePick.js create mode 100644 node_modules/lodash/_basePickBy.js create mode 100644 node_modules/lodash/_baseProperty.js create mode 100644 node_modules/lodash/_basePropertyDeep.js create mode 100644 node_modules/lodash/_basePropertyOf.js create mode 100644 node_modules/lodash/_basePullAll.js create mode 100644 node_modules/lodash/_basePullAt.js create mode 100644 node_modules/lodash/_baseRandom.js create mode 100644 node_modules/lodash/_baseRange.js create mode 100644 node_modules/lodash/_baseReduce.js create mode 100644 node_modules/lodash/_baseRepeat.js create mode 100644 node_modules/lodash/_baseRest.js create mode 100644 node_modules/lodash/_baseSample.js create mode 100644 node_modules/lodash/_baseSampleSize.js create mode 100644 node_modules/lodash/_baseSet.js create mode 100644 node_modules/lodash/_baseSetData.js create mode 100644 node_modules/lodash/_baseSetToString.js create mode 100644 node_modules/lodash/_baseShuffle.js create mode 100644 node_modules/lodash/_baseSlice.js create mode 100644 node_modules/lodash/_baseSome.js create mode 100644 node_modules/lodash/_baseSortBy.js create mode 100644 node_modules/lodash/_baseSortedIndex.js create mode 100644 node_modules/lodash/_baseSortedIndexBy.js create mode 100644 node_modules/lodash/_baseSortedUniq.js create mode 100644 node_modules/lodash/_baseSum.js create mode 100644 node_modules/lodash/_baseTimes.js create mode 100644 node_modules/lodash/_baseToNumber.js create mode 100644 node_modules/lodash/_baseToPairs.js create mode 100644 node_modules/lodash/_baseToString.js create mode 100644 node_modules/lodash/_baseUnary.js create mode 100644 node_modules/lodash/_baseUniq.js create mode 100644 node_modules/lodash/_baseUnset.js create mode 100644 node_modules/lodash/_baseUpdate.js create mode 100644 node_modules/lodash/_baseValues.js create mode 100644 node_modules/lodash/_baseWhile.js create mode 100644 node_modules/lodash/_baseWrapperValue.js create mode 100644 node_modules/lodash/_baseXor.js create mode 100644 node_modules/lodash/_baseZipObject.js create mode 100644 node_modules/lodash/_cacheHas.js create mode 100644 node_modules/lodash/_castArrayLikeObject.js create mode 100644 node_modules/lodash/_castFunction.js create mode 100644 node_modules/lodash/_castPath.js create mode 100644 node_modules/lodash/_castRest.js create mode 100644 node_modules/lodash/_castSlice.js create mode 100644 node_modules/lodash/_charsEndIndex.js create mode 100644 node_modules/lodash/_charsStartIndex.js create mode 100644 node_modules/lodash/_cloneArrayBuffer.js create mode 100644 node_modules/lodash/_cloneBuffer.js create mode 100644 node_modules/lodash/_cloneDataView.js create mode 100644 node_modules/lodash/_cloneRegExp.js create mode 100644 node_modules/lodash/_cloneSymbol.js create mode 100644 node_modules/lodash/_cloneTypedArray.js create mode 100644 node_modules/lodash/_compareAscending.js create mode 100644 node_modules/lodash/_compareMultiple.js create mode 100644 node_modules/lodash/_composeArgs.js create mode 100644 node_modules/lodash/_composeArgsRight.js create mode 100644 node_modules/lodash/_copyArray.js create mode 100644 node_modules/lodash/_copyObject.js create mode 100644 node_modules/lodash/_copySymbols.js create mode 100644 node_modules/lodash/_copySymbolsIn.js create mode 100644 node_modules/lodash/_coreJsData.js create mode 100644 node_modules/lodash/_countHolders.js create mode 100644 node_modules/lodash/_createAggregator.js create mode 100644 node_modules/lodash/_createAssigner.js create mode 100644 node_modules/lodash/_createBaseEach.js create mode 100644 node_modules/lodash/_createBaseFor.js create mode 100644 node_modules/lodash/_createBind.js create mode 100644 node_modules/lodash/_createCaseFirst.js create mode 100644 node_modules/lodash/_createCompounder.js create mode 100644 node_modules/lodash/_createCtor.js create mode 100644 node_modules/lodash/_createCurry.js create mode 100644 node_modules/lodash/_createFind.js create mode 100644 node_modules/lodash/_createFlow.js create mode 100644 node_modules/lodash/_createHybrid.js create mode 100644 node_modules/lodash/_createInverter.js create mode 100644 node_modules/lodash/_createMathOperation.js create mode 100644 node_modules/lodash/_createOver.js create mode 100644 node_modules/lodash/_createPadding.js create mode 100644 node_modules/lodash/_createPartial.js create mode 100644 node_modules/lodash/_createRange.js create mode 100644 node_modules/lodash/_createRecurry.js create mode 100644 node_modules/lodash/_createRelationalOperation.js create mode 100644 node_modules/lodash/_createRound.js create mode 100644 node_modules/lodash/_createSet.js create mode 100644 node_modules/lodash/_createToPairs.js create mode 100644 node_modules/lodash/_createWrap.js create mode 100644 node_modules/lodash/_customDefaultsAssignIn.js create mode 100644 node_modules/lodash/_customDefaultsMerge.js create mode 100644 node_modules/lodash/_customOmitClone.js create mode 100644 node_modules/lodash/_deburrLetter.js create mode 100644 node_modules/lodash/_defineProperty.js create mode 100644 node_modules/lodash/_equalArrays.js create mode 100644 node_modules/lodash/_equalByTag.js create mode 100644 node_modules/lodash/_equalObjects.js create mode 100644 node_modules/lodash/_escapeHtmlChar.js create mode 100644 node_modules/lodash/_escapeStringChar.js create mode 100644 node_modules/lodash/_flatRest.js create mode 100644 node_modules/lodash/_freeGlobal.js create mode 100644 node_modules/lodash/_getAllKeys.js create mode 100644 node_modules/lodash/_getAllKeysIn.js create mode 100644 node_modules/lodash/_getData.js create mode 100644 node_modules/lodash/_getFuncName.js create mode 100644 node_modules/lodash/_getHolder.js create mode 100644 node_modules/lodash/_getMapData.js create mode 100644 node_modules/lodash/_getMatchData.js create mode 100644 node_modules/lodash/_getNative.js create mode 100644 node_modules/lodash/_getPrototype.js create mode 100644 node_modules/lodash/_getRawTag.js create mode 100644 node_modules/lodash/_getSymbols.js create mode 100644 node_modules/lodash/_getSymbolsIn.js create mode 100644 node_modules/lodash/_getTag.js create mode 100644 node_modules/lodash/_getValue.js create mode 100644 node_modules/lodash/_getView.js create mode 100644 node_modules/lodash/_getWrapDetails.js create mode 100644 node_modules/lodash/_hasPath.js create mode 100644 node_modules/lodash/_hasUnicode.js create mode 100644 node_modules/lodash/_hasUnicodeWord.js create mode 100644 node_modules/lodash/_hashClear.js create mode 100644 node_modules/lodash/_hashDelete.js create mode 100644 node_modules/lodash/_hashGet.js create mode 100644 node_modules/lodash/_hashHas.js create mode 100644 node_modules/lodash/_hashSet.js create mode 100644 node_modules/lodash/_initCloneArray.js create mode 100644 node_modules/lodash/_initCloneByTag.js create mode 100644 node_modules/lodash/_initCloneObject.js create mode 100644 node_modules/lodash/_insertWrapDetails.js create mode 100644 node_modules/lodash/_isFlattenable.js create mode 100644 node_modules/lodash/_isIndex.js create mode 100644 node_modules/lodash/_isIterateeCall.js create mode 100644 node_modules/lodash/_isKey.js create mode 100644 node_modules/lodash/_isKeyable.js create mode 100644 node_modules/lodash/_isLaziable.js create mode 100644 node_modules/lodash/_isMaskable.js create mode 100644 node_modules/lodash/_isMasked.js create mode 100644 node_modules/lodash/_isPrototype.js create mode 100644 node_modules/lodash/_isStrictComparable.js create mode 100644 node_modules/lodash/_iteratorToArray.js create mode 100644 node_modules/lodash/_lazyClone.js create mode 100644 node_modules/lodash/_lazyReverse.js create mode 100644 node_modules/lodash/_lazyValue.js create mode 100644 node_modules/lodash/_listCacheClear.js create mode 100644 node_modules/lodash/_listCacheDelete.js create mode 100644 node_modules/lodash/_listCacheGet.js create mode 100644 node_modules/lodash/_listCacheHas.js create mode 100644 node_modules/lodash/_listCacheSet.js create mode 100644 node_modules/lodash/_mapCacheClear.js create mode 100644 node_modules/lodash/_mapCacheDelete.js create mode 100644 node_modules/lodash/_mapCacheGet.js create mode 100644 node_modules/lodash/_mapCacheHas.js create mode 100644 node_modules/lodash/_mapCacheSet.js create mode 100644 node_modules/lodash/_mapToArray.js create mode 100644 node_modules/lodash/_matchesStrictComparable.js create mode 100644 node_modules/lodash/_memoizeCapped.js create mode 100644 node_modules/lodash/_mergeData.js create mode 100644 node_modules/lodash/_metaMap.js create mode 100644 node_modules/lodash/_nativeCreate.js create mode 100644 node_modules/lodash/_nativeKeys.js create mode 100644 node_modules/lodash/_nativeKeysIn.js create mode 100644 node_modules/lodash/_nodeUtil.js create mode 100644 node_modules/lodash/_objectToString.js create mode 100644 node_modules/lodash/_overArg.js create mode 100644 node_modules/lodash/_overRest.js create mode 100644 node_modules/lodash/_parent.js create mode 100644 node_modules/lodash/_reEscape.js create mode 100644 node_modules/lodash/_reEvaluate.js create mode 100644 node_modules/lodash/_reInterpolate.js create mode 100644 node_modules/lodash/_realNames.js create mode 100644 node_modules/lodash/_reorder.js create mode 100644 node_modules/lodash/_replaceHolders.js create mode 100644 node_modules/lodash/_root.js create mode 100644 node_modules/lodash/_safeGet.js create mode 100644 node_modules/lodash/_setCacheAdd.js create mode 100644 node_modules/lodash/_setCacheHas.js create mode 100644 node_modules/lodash/_setData.js create mode 100644 node_modules/lodash/_setToArray.js create mode 100644 node_modules/lodash/_setToPairs.js create mode 100644 node_modules/lodash/_setToString.js create mode 100644 node_modules/lodash/_setWrapToString.js create mode 100644 node_modules/lodash/_shortOut.js create mode 100644 node_modules/lodash/_shuffleSelf.js create mode 100644 node_modules/lodash/_stackClear.js create mode 100644 node_modules/lodash/_stackDelete.js create mode 100644 node_modules/lodash/_stackGet.js create mode 100644 node_modules/lodash/_stackHas.js create mode 100644 node_modules/lodash/_stackSet.js create mode 100644 node_modules/lodash/_strictIndexOf.js create mode 100644 node_modules/lodash/_strictLastIndexOf.js create mode 100644 node_modules/lodash/_stringSize.js create mode 100644 node_modules/lodash/_stringToArray.js create mode 100644 node_modules/lodash/_stringToPath.js create mode 100644 node_modules/lodash/_toKey.js create mode 100644 node_modules/lodash/_toSource.js create mode 100644 node_modules/lodash/_unescapeHtmlChar.js create mode 100644 node_modules/lodash/_unicodeSize.js create mode 100644 node_modules/lodash/_unicodeToArray.js create mode 100644 node_modules/lodash/_unicodeWords.js create mode 100644 node_modules/lodash/_updateWrapDetails.js create mode 100644 node_modules/lodash/_wrapperClone.js create mode 100644 node_modules/lodash/add.js create mode 100644 node_modules/lodash/after.js create mode 100644 node_modules/lodash/array.js create mode 100644 node_modules/lodash/ary.js create mode 100644 node_modules/lodash/assign.js create mode 100644 node_modules/lodash/assignIn.js create mode 100644 node_modules/lodash/assignInWith.js create mode 100644 node_modules/lodash/assignWith.js create mode 100644 node_modules/lodash/at.js create mode 100644 node_modules/lodash/attempt.js create mode 100644 node_modules/lodash/before.js create mode 100644 node_modules/lodash/bind.js create mode 100644 node_modules/lodash/bindAll.js create mode 100644 node_modules/lodash/bindKey.js create mode 100644 node_modules/lodash/camelCase.js create mode 100644 node_modules/lodash/capitalize.js create mode 100644 node_modules/lodash/castArray.js create mode 100644 node_modules/lodash/ceil.js create mode 100644 node_modules/lodash/chain.js create mode 100644 node_modules/lodash/chunk.js create mode 100644 node_modules/lodash/clamp.js create mode 100644 node_modules/lodash/clone.js create mode 100644 node_modules/lodash/cloneDeep.js create mode 100644 node_modules/lodash/cloneDeepWith.js create mode 100644 node_modules/lodash/cloneWith.js create mode 100644 node_modules/lodash/collection.js create mode 100644 node_modules/lodash/commit.js create mode 100644 node_modules/lodash/compact.js create mode 100644 node_modules/lodash/concat.js create mode 100644 node_modules/lodash/cond.js create mode 100644 node_modules/lodash/conforms.js create mode 100644 node_modules/lodash/conformsTo.js create mode 100644 node_modules/lodash/constant.js create mode 100644 node_modules/lodash/core.js create mode 100644 node_modules/lodash/core.min.js create mode 100644 node_modules/lodash/countBy.js create mode 100644 node_modules/lodash/create.js create mode 100644 node_modules/lodash/curry.js create mode 100644 node_modules/lodash/curryRight.js create mode 100644 node_modules/lodash/date.js create mode 100644 node_modules/lodash/debounce.js create mode 100644 node_modules/lodash/deburr.js create mode 100644 node_modules/lodash/defaultTo.js create mode 100644 node_modules/lodash/defaults.js create mode 100644 node_modules/lodash/defaultsDeep.js create mode 100644 node_modules/lodash/defer.js create mode 100644 node_modules/lodash/delay.js create mode 100644 node_modules/lodash/difference.js create mode 100644 node_modules/lodash/differenceBy.js create mode 100644 node_modules/lodash/differenceWith.js create mode 100644 node_modules/lodash/divide.js create mode 100644 node_modules/lodash/drop.js create mode 100644 node_modules/lodash/dropRight.js create mode 100644 node_modules/lodash/dropRightWhile.js create mode 100644 node_modules/lodash/dropWhile.js create mode 100644 node_modules/lodash/each.js create mode 100644 node_modules/lodash/eachRight.js create mode 100644 node_modules/lodash/endsWith.js create mode 100644 node_modules/lodash/entries.js create mode 100644 node_modules/lodash/entriesIn.js create mode 100644 node_modules/lodash/eq.js create mode 100644 node_modules/lodash/escape.js create mode 100644 node_modules/lodash/escapeRegExp.js create mode 100644 node_modules/lodash/every.js create mode 100644 node_modules/lodash/extend.js create mode 100644 node_modules/lodash/extendWith.js create mode 100644 node_modules/lodash/fill.js create mode 100644 node_modules/lodash/filter.js create mode 100644 node_modules/lodash/find.js create mode 100644 node_modules/lodash/findIndex.js create mode 100644 node_modules/lodash/findKey.js create mode 100644 node_modules/lodash/findLast.js create mode 100644 node_modules/lodash/findLastIndex.js create mode 100644 node_modules/lodash/findLastKey.js create mode 100644 node_modules/lodash/first.js create mode 100644 node_modules/lodash/flatMap.js create mode 100644 node_modules/lodash/flatMapDeep.js create mode 100644 node_modules/lodash/flatMapDepth.js create mode 100644 node_modules/lodash/flatten.js create mode 100644 node_modules/lodash/flattenDeep.js create mode 100644 node_modules/lodash/flattenDepth.js create mode 100644 node_modules/lodash/flip.js create mode 100644 node_modules/lodash/floor.js create mode 100644 node_modules/lodash/flow.js create mode 100644 node_modules/lodash/flowRight.js create mode 100644 node_modules/lodash/forEach.js create mode 100644 node_modules/lodash/forEachRight.js create mode 100644 node_modules/lodash/forIn.js create mode 100644 node_modules/lodash/forInRight.js create mode 100644 node_modules/lodash/forOwn.js create mode 100644 node_modules/lodash/forOwnRight.js create mode 100644 node_modules/lodash/fp.js create mode 100644 node_modules/lodash/fp/F.js create mode 100644 node_modules/lodash/fp/T.js create mode 100644 node_modules/lodash/fp/__.js create mode 100644 node_modules/lodash/fp/_baseConvert.js create mode 100644 node_modules/lodash/fp/_convertBrowser.js create mode 100644 node_modules/lodash/fp/_falseOptions.js create mode 100644 node_modules/lodash/fp/_mapping.js create mode 100644 node_modules/lodash/fp/_util.js create mode 100644 node_modules/lodash/fp/add.js create mode 100644 node_modules/lodash/fp/after.js create mode 100644 node_modules/lodash/fp/all.js create mode 100644 node_modules/lodash/fp/allPass.js create mode 100644 node_modules/lodash/fp/always.js create mode 100644 node_modules/lodash/fp/any.js create mode 100644 node_modules/lodash/fp/anyPass.js create mode 100644 node_modules/lodash/fp/apply.js create mode 100644 node_modules/lodash/fp/array.js create mode 100644 node_modules/lodash/fp/ary.js create mode 100644 node_modules/lodash/fp/assign.js create mode 100644 node_modules/lodash/fp/assignAll.js create mode 100644 node_modules/lodash/fp/assignAllWith.js create mode 100644 node_modules/lodash/fp/assignIn.js create mode 100644 node_modules/lodash/fp/assignInAll.js create mode 100644 node_modules/lodash/fp/assignInAllWith.js create mode 100644 node_modules/lodash/fp/assignInWith.js create mode 100644 node_modules/lodash/fp/assignWith.js create mode 100644 node_modules/lodash/fp/assoc.js create mode 100644 node_modules/lodash/fp/assocPath.js create mode 100644 node_modules/lodash/fp/at.js create mode 100644 node_modules/lodash/fp/attempt.js create mode 100644 node_modules/lodash/fp/before.js create mode 100644 node_modules/lodash/fp/bind.js create mode 100644 node_modules/lodash/fp/bindAll.js create mode 100644 node_modules/lodash/fp/bindKey.js create mode 100644 node_modules/lodash/fp/camelCase.js create mode 100644 node_modules/lodash/fp/capitalize.js create mode 100644 node_modules/lodash/fp/castArray.js create mode 100644 node_modules/lodash/fp/ceil.js create mode 100644 node_modules/lodash/fp/chain.js create mode 100644 node_modules/lodash/fp/chunk.js create mode 100644 node_modules/lodash/fp/clamp.js create mode 100644 node_modules/lodash/fp/clone.js create mode 100644 node_modules/lodash/fp/cloneDeep.js create mode 100644 node_modules/lodash/fp/cloneDeepWith.js create mode 100644 node_modules/lodash/fp/cloneWith.js create mode 100644 node_modules/lodash/fp/collection.js create mode 100644 node_modules/lodash/fp/commit.js create mode 100644 node_modules/lodash/fp/compact.js create mode 100644 node_modules/lodash/fp/complement.js create mode 100644 node_modules/lodash/fp/compose.js create mode 100644 node_modules/lodash/fp/concat.js create mode 100644 node_modules/lodash/fp/cond.js create mode 100644 node_modules/lodash/fp/conforms.js create mode 100644 node_modules/lodash/fp/conformsTo.js create mode 100644 node_modules/lodash/fp/constant.js create mode 100644 node_modules/lodash/fp/contains.js create mode 100644 node_modules/lodash/fp/convert.js create mode 100644 node_modules/lodash/fp/countBy.js create mode 100644 node_modules/lodash/fp/create.js create mode 100644 node_modules/lodash/fp/curry.js create mode 100644 node_modules/lodash/fp/curryN.js create mode 100644 node_modules/lodash/fp/curryRight.js create mode 100644 node_modules/lodash/fp/curryRightN.js create mode 100644 node_modules/lodash/fp/date.js create mode 100644 node_modules/lodash/fp/debounce.js create mode 100644 node_modules/lodash/fp/deburr.js create mode 100644 node_modules/lodash/fp/defaultTo.js create mode 100644 node_modules/lodash/fp/defaults.js create mode 100644 node_modules/lodash/fp/defaultsAll.js create mode 100644 node_modules/lodash/fp/defaultsDeep.js create mode 100644 node_modules/lodash/fp/defaultsDeepAll.js create mode 100644 node_modules/lodash/fp/defer.js create mode 100644 node_modules/lodash/fp/delay.js create mode 100644 node_modules/lodash/fp/difference.js create mode 100644 node_modules/lodash/fp/differenceBy.js create mode 100644 node_modules/lodash/fp/differenceWith.js create mode 100644 node_modules/lodash/fp/dissoc.js create mode 100644 node_modules/lodash/fp/dissocPath.js create mode 100644 node_modules/lodash/fp/divide.js create mode 100644 node_modules/lodash/fp/drop.js create mode 100644 node_modules/lodash/fp/dropLast.js create mode 100644 node_modules/lodash/fp/dropLastWhile.js create mode 100644 node_modules/lodash/fp/dropRight.js create mode 100644 node_modules/lodash/fp/dropRightWhile.js create mode 100644 node_modules/lodash/fp/dropWhile.js create mode 100644 node_modules/lodash/fp/each.js create mode 100644 node_modules/lodash/fp/eachRight.js create mode 100644 node_modules/lodash/fp/endsWith.js create mode 100644 node_modules/lodash/fp/entries.js create mode 100644 node_modules/lodash/fp/entriesIn.js create mode 100644 node_modules/lodash/fp/eq.js create mode 100644 node_modules/lodash/fp/equals.js create mode 100644 node_modules/lodash/fp/escape.js create mode 100644 node_modules/lodash/fp/escapeRegExp.js create mode 100644 node_modules/lodash/fp/every.js create mode 100644 node_modules/lodash/fp/extend.js create mode 100644 node_modules/lodash/fp/extendAll.js create mode 100644 node_modules/lodash/fp/extendAllWith.js create mode 100644 node_modules/lodash/fp/extendWith.js create mode 100644 node_modules/lodash/fp/fill.js create mode 100644 node_modules/lodash/fp/filter.js create mode 100644 node_modules/lodash/fp/find.js create mode 100644 node_modules/lodash/fp/findFrom.js create mode 100644 node_modules/lodash/fp/findIndex.js create mode 100644 node_modules/lodash/fp/findIndexFrom.js create mode 100644 node_modules/lodash/fp/findKey.js create mode 100644 node_modules/lodash/fp/findLast.js create mode 100644 node_modules/lodash/fp/findLastFrom.js create mode 100644 node_modules/lodash/fp/findLastIndex.js create mode 100644 node_modules/lodash/fp/findLastIndexFrom.js create mode 100644 node_modules/lodash/fp/findLastKey.js create mode 100644 node_modules/lodash/fp/first.js create mode 100644 node_modules/lodash/fp/flatMap.js create mode 100644 node_modules/lodash/fp/flatMapDeep.js create mode 100644 node_modules/lodash/fp/flatMapDepth.js create mode 100644 node_modules/lodash/fp/flatten.js create mode 100644 node_modules/lodash/fp/flattenDeep.js create mode 100644 node_modules/lodash/fp/flattenDepth.js create mode 100644 node_modules/lodash/fp/flip.js create mode 100644 node_modules/lodash/fp/floor.js create mode 100644 node_modules/lodash/fp/flow.js create mode 100644 node_modules/lodash/fp/flowRight.js create mode 100644 node_modules/lodash/fp/forEach.js create mode 100644 node_modules/lodash/fp/forEachRight.js create mode 100644 node_modules/lodash/fp/forIn.js create mode 100644 node_modules/lodash/fp/forInRight.js create mode 100644 node_modules/lodash/fp/forOwn.js create mode 100644 node_modules/lodash/fp/forOwnRight.js create mode 100644 node_modules/lodash/fp/fromPairs.js create mode 100644 node_modules/lodash/fp/function.js create mode 100644 node_modules/lodash/fp/functions.js create mode 100644 node_modules/lodash/fp/functionsIn.js create mode 100644 node_modules/lodash/fp/get.js create mode 100644 node_modules/lodash/fp/getOr.js create mode 100644 node_modules/lodash/fp/groupBy.js create mode 100644 node_modules/lodash/fp/gt.js create mode 100644 node_modules/lodash/fp/gte.js create mode 100644 node_modules/lodash/fp/has.js create mode 100644 node_modules/lodash/fp/hasIn.js create mode 100644 node_modules/lodash/fp/head.js create mode 100644 node_modules/lodash/fp/identical.js create mode 100644 node_modules/lodash/fp/identity.js create mode 100644 node_modules/lodash/fp/inRange.js create mode 100644 node_modules/lodash/fp/includes.js create mode 100644 node_modules/lodash/fp/includesFrom.js create mode 100644 node_modules/lodash/fp/indexBy.js create mode 100644 node_modules/lodash/fp/indexOf.js create mode 100644 node_modules/lodash/fp/indexOfFrom.js create mode 100644 node_modules/lodash/fp/init.js create mode 100644 node_modules/lodash/fp/initial.js create mode 100644 node_modules/lodash/fp/intersection.js create mode 100644 node_modules/lodash/fp/intersectionBy.js create mode 100644 node_modules/lodash/fp/intersectionWith.js create mode 100644 node_modules/lodash/fp/invert.js create mode 100644 node_modules/lodash/fp/invertBy.js create mode 100644 node_modules/lodash/fp/invertObj.js create mode 100644 node_modules/lodash/fp/invoke.js create mode 100644 node_modules/lodash/fp/invokeArgs.js create mode 100644 node_modules/lodash/fp/invokeArgsMap.js create mode 100644 node_modules/lodash/fp/invokeMap.js create mode 100644 node_modules/lodash/fp/isArguments.js create mode 100644 node_modules/lodash/fp/isArray.js create mode 100644 node_modules/lodash/fp/isArrayBuffer.js create mode 100644 node_modules/lodash/fp/isArrayLike.js create mode 100644 node_modules/lodash/fp/isArrayLikeObject.js create mode 100644 node_modules/lodash/fp/isBoolean.js create mode 100644 node_modules/lodash/fp/isBuffer.js create mode 100644 node_modules/lodash/fp/isDate.js create mode 100644 node_modules/lodash/fp/isElement.js create mode 100644 node_modules/lodash/fp/isEmpty.js create mode 100644 node_modules/lodash/fp/isEqual.js create mode 100644 node_modules/lodash/fp/isEqualWith.js create mode 100644 node_modules/lodash/fp/isError.js create mode 100644 node_modules/lodash/fp/isFinite.js create mode 100644 node_modules/lodash/fp/isFunction.js create mode 100644 node_modules/lodash/fp/isInteger.js create mode 100644 node_modules/lodash/fp/isLength.js create mode 100644 node_modules/lodash/fp/isMap.js create mode 100644 node_modules/lodash/fp/isMatch.js create mode 100644 node_modules/lodash/fp/isMatchWith.js create mode 100644 node_modules/lodash/fp/isNaN.js create mode 100644 node_modules/lodash/fp/isNative.js create mode 100644 node_modules/lodash/fp/isNil.js create mode 100644 node_modules/lodash/fp/isNull.js create mode 100644 node_modules/lodash/fp/isNumber.js create mode 100644 node_modules/lodash/fp/isObject.js create mode 100644 node_modules/lodash/fp/isObjectLike.js create mode 100644 node_modules/lodash/fp/isPlainObject.js create mode 100644 node_modules/lodash/fp/isRegExp.js create mode 100644 node_modules/lodash/fp/isSafeInteger.js create mode 100644 node_modules/lodash/fp/isSet.js create mode 100644 node_modules/lodash/fp/isString.js create mode 100644 node_modules/lodash/fp/isSymbol.js create mode 100644 node_modules/lodash/fp/isTypedArray.js create mode 100644 node_modules/lodash/fp/isUndefined.js create mode 100644 node_modules/lodash/fp/isWeakMap.js create mode 100644 node_modules/lodash/fp/isWeakSet.js create mode 100644 node_modules/lodash/fp/iteratee.js create mode 100644 node_modules/lodash/fp/join.js create mode 100644 node_modules/lodash/fp/juxt.js create mode 100644 node_modules/lodash/fp/kebabCase.js create mode 100644 node_modules/lodash/fp/keyBy.js create mode 100644 node_modules/lodash/fp/keys.js create mode 100644 node_modules/lodash/fp/keysIn.js create mode 100644 node_modules/lodash/fp/lang.js create mode 100644 node_modules/lodash/fp/last.js create mode 100644 node_modules/lodash/fp/lastIndexOf.js create mode 100644 node_modules/lodash/fp/lastIndexOfFrom.js create mode 100644 node_modules/lodash/fp/lowerCase.js create mode 100644 node_modules/lodash/fp/lowerFirst.js create mode 100644 node_modules/lodash/fp/lt.js create mode 100644 node_modules/lodash/fp/lte.js create mode 100644 node_modules/lodash/fp/map.js create mode 100644 node_modules/lodash/fp/mapKeys.js create mode 100644 node_modules/lodash/fp/mapValues.js create mode 100644 node_modules/lodash/fp/matches.js create mode 100644 node_modules/lodash/fp/matchesProperty.js create mode 100644 node_modules/lodash/fp/math.js create mode 100644 node_modules/lodash/fp/max.js create mode 100644 node_modules/lodash/fp/maxBy.js create mode 100644 node_modules/lodash/fp/mean.js create mode 100644 node_modules/lodash/fp/meanBy.js create mode 100644 node_modules/lodash/fp/memoize.js create mode 100644 node_modules/lodash/fp/merge.js create mode 100644 node_modules/lodash/fp/mergeAll.js create mode 100644 node_modules/lodash/fp/mergeAllWith.js create mode 100644 node_modules/lodash/fp/mergeWith.js create mode 100644 node_modules/lodash/fp/method.js create mode 100644 node_modules/lodash/fp/methodOf.js create mode 100644 node_modules/lodash/fp/min.js create mode 100644 node_modules/lodash/fp/minBy.js create mode 100644 node_modules/lodash/fp/mixin.js create mode 100644 node_modules/lodash/fp/multiply.js create mode 100644 node_modules/lodash/fp/nAry.js create mode 100644 node_modules/lodash/fp/negate.js create mode 100644 node_modules/lodash/fp/next.js create mode 100644 node_modules/lodash/fp/noop.js create mode 100644 node_modules/lodash/fp/now.js create mode 100644 node_modules/lodash/fp/nth.js create mode 100644 node_modules/lodash/fp/nthArg.js create mode 100644 node_modules/lodash/fp/number.js create mode 100644 node_modules/lodash/fp/object.js create mode 100644 node_modules/lodash/fp/omit.js create mode 100644 node_modules/lodash/fp/omitAll.js create mode 100644 node_modules/lodash/fp/omitBy.js create mode 100644 node_modules/lodash/fp/once.js create mode 100644 node_modules/lodash/fp/orderBy.js create mode 100644 node_modules/lodash/fp/over.js create mode 100644 node_modules/lodash/fp/overArgs.js create mode 100644 node_modules/lodash/fp/overEvery.js create mode 100644 node_modules/lodash/fp/overSome.js create mode 100644 node_modules/lodash/fp/pad.js create mode 100644 node_modules/lodash/fp/padChars.js create mode 100644 node_modules/lodash/fp/padCharsEnd.js create mode 100644 node_modules/lodash/fp/padCharsStart.js create mode 100644 node_modules/lodash/fp/padEnd.js create mode 100644 node_modules/lodash/fp/padStart.js create mode 100644 node_modules/lodash/fp/parseInt.js create mode 100644 node_modules/lodash/fp/partial.js create mode 100644 node_modules/lodash/fp/partialRight.js create mode 100644 node_modules/lodash/fp/partition.js create mode 100644 node_modules/lodash/fp/path.js create mode 100644 node_modules/lodash/fp/pathEq.js create mode 100644 node_modules/lodash/fp/pathOr.js create mode 100644 node_modules/lodash/fp/paths.js create mode 100644 node_modules/lodash/fp/pick.js create mode 100644 node_modules/lodash/fp/pickAll.js create mode 100644 node_modules/lodash/fp/pickBy.js create mode 100644 node_modules/lodash/fp/pipe.js create mode 100644 node_modules/lodash/fp/placeholder.js create mode 100644 node_modules/lodash/fp/plant.js create mode 100644 node_modules/lodash/fp/pluck.js create mode 100644 node_modules/lodash/fp/prop.js create mode 100644 node_modules/lodash/fp/propEq.js create mode 100644 node_modules/lodash/fp/propOr.js create mode 100644 node_modules/lodash/fp/property.js create mode 100644 node_modules/lodash/fp/propertyOf.js create mode 100644 node_modules/lodash/fp/props.js create mode 100644 node_modules/lodash/fp/pull.js create mode 100644 node_modules/lodash/fp/pullAll.js create mode 100644 node_modules/lodash/fp/pullAllBy.js create mode 100644 node_modules/lodash/fp/pullAllWith.js create mode 100644 node_modules/lodash/fp/pullAt.js create mode 100644 node_modules/lodash/fp/random.js create mode 100644 node_modules/lodash/fp/range.js create mode 100644 node_modules/lodash/fp/rangeRight.js create mode 100644 node_modules/lodash/fp/rangeStep.js create mode 100644 node_modules/lodash/fp/rangeStepRight.js create mode 100644 node_modules/lodash/fp/rearg.js create mode 100644 node_modules/lodash/fp/reduce.js create mode 100644 node_modules/lodash/fp/reduceRight.js create mode 100644 node_modules/lodash/fp/reject.js create mode 100644 node_modules/lodash/fp/remove.js create mode 100644 node_modules/lodash/fp/repeat.js create mode 100644 node_modules/lodash/fp/replace.js create mode 100644 node_modules/lodash/fp/rest.js create mode 100644 node_modules/lodash/fp/restFrom.js create mode 100644 node_modules/lodash/fp/result.js create mode 100644 node_modules/lodash/fp/reverse.js create mode 100644 node_modules/lodash/fp/round.js create mode 100644 node_modules/lodash/fp/sample.js create mode 100644 node_modules/lodash/fp/sampleSize.js create mode 100644 node_modules/lodash/fp/seq.js create mode 100644 node_modules/lodash/fp/set.js create mode 100644 node_modules/lodash/fp/setWith.js create mode 100644 node_modules/lodash/fp/shuffle.js create mode 100644 node_modules/lodash/fp/size.js create mode 100644 node_modules/lodash/fp/slice.js create mode 100644 node_modules/lodash/fp/snakeCase.js create mode 100644 node_modules/lodash/fp/some.js create mode 100644 node_modules/lodash/fp/sortBy.js create mode 100644 node_modules/lodash/fp/sortedIndex.js create mode 100644 node_modules/lodash/fp/sortedIndexBy.js create mode 100644 node_modules/lodash/fp/sortedIndexOf.js create mode 100644 node_modules/lodash/fp/sortedLastIndex.js create mode 100644 node_modules/lodash/fp/sortedLastIndexBy.js create mode 100644 node_modules/lodash/fp/sortedLastIndexOf.js create mode 100644 node_modules/lodash/fp/sortedUniq.js create mode 100644 node_modules/lodash/fp/sortedUniqBy.js create mode 100644 node_modules/lodash/fp/split.js create mode 100644 node_modules/lodash/fp/spread.js create mode 100644 node_modules/lodash/fp/spreadFrom.js create mode 100644 node_modules/lodash/fp/startCase.js create mode 100644 node_modules/lodash/fp/startsWith.js create mode 100644 node_modules/lodash/fp/string.js create mode 100644 node_modules/lodash/fp/stubArray.js create mode 100644 node_modules/lodash/fp/stubFalse.js create mode 100644 node_modules/lodash/fp/stubObject.js create mode 100644 node_modules/lodash/fp/stubString.js create mode 100644 node_modules/lodash/fp/stubTrue.js create mode 100644 node_modules/lodash/fp/subtract.js create mode 100644 node_modules/lodash/fp/sum.js create mode 100644 node_modules/lodash/fp/sumBy.js create mode 100644 node_modules/lodash/fp/symmetricDifference.js create mode 100644 node_modules/lodash/fp/symmetricDifferenceBy.js create mode 100644 node_modules/lodash/fp/symmetricDifferenceWith.js create mode 100644 node_modules/lodash/fp/tail.js create mode 100644 node_modules/lodash/fp/take.js create mode 100644 node_modules/lodash/fp/takeLast.js create mode 100644 node_modules/lodash/fp/takeLastWhile.js create mode 100644 node_modules/lodash/fp/takeRight.js create mode 100644 node_modules/lodash/fp/takeRightWhile.js create mode 100644 node_modules/lodash/fp/takeWhile.js create mode 100644 node_modules/lodash/fp/tap.js create mode 100644 node_modules/lodash/fp/template.js create mode 100644 node_modules/lodash/fp/templateSettings.js create mode 100644 node_modules/lodash/fp/throttle.js create mode 100644 node_modules/lodash/fp/thru.js create mode 100644 node_modules/lodash/fp/times.js create mode 100644 node_modules/lodash/fp/toArray.js create mode 100644 node_modules/lodash/fp/toFinite.js create mode 100644 node_modules/lodash/fp/toInteger.js create mode 100644 node_modules/lodash/fp/toIterator.js create mode 100644 node_modules/lodash/fp/toJSON.js create mode 100644 node_modules/lodash/fp/toLength.js create mode 100644 node_modules/lodash/fp/toLower.js create mode 100644 node_modules/lodash/fp/toNumber.js create mode 100644 node_modules/lodash/fp/toPairs.js create mode 100644 node_modules/lodash/fp/toPairsIn.js create mode 100644 node_modules/lodash/fp/toPath.js create mode 100644 node_modules/lodash/fp/toPlainObject.js create mode 100644 node_modules/lodash/fp/toSafeInteger.js create mode 100644 node_modules/lodash/fp/toString.js create mode 100644 node_modules/lodash/fp/toUpper.js create mode 100644 node_modules/lodash/fp/transform.js create mode 100644 node_modules/lodash/fp/trim.js create mode 100644 node_modules/lodash/fp/trimChars.js create mode 100644 node_modules/lodash/fp/trimCharsEnd.js create mode 100644 node_modules/lodash/fp/trimCharsStart.js create mode 100644 node_modules/lodash/fp/trimEnd.js create mode 100644 node_modules/lodash/fp/trimStart.js create mode 100644 node_modules/lodash/fp/truncate.js create mode 100644 node_modules/lodash/fp/unapply.js create mode 100644 node_modules/lodash/fp/unary.js create mode 100644 node_modules/lodash/fp/unescape.js create mode 100644 node_modules/lodash/fp/union.js create mode 100644 node_modules/lodash/fp/unionBy.js create mode 100644 node_modules/lodash/fp/unionWith.js create mode 100644 node_modules/lodash/fp/uniq.js create mode 100644 node_modules/lodash/fp/uniqBy.js create mode 100644 node_modules/lodash/fp/uniqWith.js create mode 100644 node_modules/lodash/fp/uniqueId.js create mode 100644 node_modules/lodash/fp/unnest.js create mode 100644 node_modules/lodash/fp/unset.js create mode 100644 node_modules/lodash/fp/unzip.js create mode 100644 node_modules/lodash/fp/unzipWith.js create mode 100644 node_modules/lodash/fp/update.js create mode 100644 node_modules/lodash/fp/updateWith.js create mode 100644 node_modules/lodash/fp/upperCase.js create mode 100644 node_modules/lodash/fp/upperFirst.js create mode 100644 node_modules/lodash/fp/useWith.js create mode 100644 node_modules/lodash/fp/util.js create mode 100644 node_modules/lodash/fp/value.js create mode 100644 node_modules/lodash/fp/valueOf.js create mode 100644 node_modules/lodash/fp/values.js create mode 100644 node_modules/lodash/fp/valuesIn.js create mode 100644 node_modules/lodash/fp/where.js create mode 100644 node_modules/lodash/fp/whereEq.js create mode 100644 node_modules/lodash/fp/without.js create mode 100644 node_modules/lodash/fp/words.js create mode 100644 node_modules/lodash/fp/wrap.js create mode 100644 node_modules/lodash/fp/wrapperAt.js create mode 100644 node_modules/lodash/fp/wrapperChain.js create mode 100644 node_modules/lodash/fp/wrapperLodash.js create mode 100644 node_modules/lodash/fp/wrapperReverse.js create mode 100644 node_modules/lodash/fp/wrapperValue.js create mode 100644 node_modules/lodash/fp/xor.js create mode 100644 node_modules/lodash/fp/xorBy.js create mode 100644 node_modules/lodash/fp/xorWith.js create mode 100644 node_modules/lodash/fp/zip.js create mode 100644 node_modules/lodash/fp/zipAll.js create mode 100644 node_modules/lodash/fp/zipObj.js create mode 100644 node_modules/lodash/fp/zipObject.js create mode 100644 node_modules/lodash/fp/zipObjectDeep.js create mode 100644 node_modules/lodash/fp/zipWith.js create mode 100644 node_modules/lodash/fromPairs.js create mode 100644 node_modules/lodash/function.js create mode 100644 node_modules/lodash/functions.js create mode 100644 node_modules/lodash/functionsIn.js create mode 100644 node_modules/lodash/get.js create mode 100644 node_modules/lodash/groupBy.js create mode 100644 node_modules/lodash/gt.js create mode 100644 node_modules/lodash/gte.js create mode 100644 node_modules/lodash/has.js create mode 100644 node_modules/lodash/hasIn.js create mode 100644 node_modules/lodash/head.js create mode 100644 node_modules/lodash/identity.js create mode 100644 node_modules/lodash/inRange.js create mode 100644 node_modules/lodash/includes.js create mode 100644 node_modules/lodash/index.js create mode 100644 node_modules/lodash/indexOf.js create mode 100644 node_modules/lodash/initial.js create mode 100644 node_modules/lodash/intersection.js create mode 100644 node_modules/lodash/intersectionBy.js create mode 100644 node_modules/lodash/intersectionWith.js create mode 100644 node_modules/lodash/invert.js create mode 100644 node_modules/lodash/invertBy.js create mode 100644 node_modules/lodash/invoke.js create mode 100644 node_modules/lodash/invokeMap.js create mode 100644 node_modules/lodash/isArguments.js create mode 100644 node_modules/lodash/isArray.js create mode 100644 node_modules/lodash/isArrayBuffer.js create mode 100644 node_modules/lodash/isArrayLike.js create mode 100644 node_modules/lodash/isArrayLikeObject.js create mode 100644 node_modules/lodash/isBoolean.js create mode 100644 node_modules/lodash/isBuffer.js create mode 100644 node_modules/lodash/isDate.js create mode 100644 node_modules/lodash/isElement.js create mode 100644 node_modules/lodash/isEmpty.js create mode 100644 node_modules/lodash/isEqual.js create mode 100644 node_modules/lodash/isEqualWith.js create mode 100644 node_modules/lodash/isError.js create mode 100644 node_modules/lodash/isFinite.js create mode 100644 node_modules/lodash/isFunction.js create mode 100644 node_modules/lodash/isInteger.js create mode 100644 node_modules/lodash/isLength.js create mode 100644 node_modules/lodash/isMap.js create mode 100644 node_modules/lodash/isMatch.js create mode 100644 node_modules/lodash/isMatchWith.js create mode 100644 node_modules/lodash/isNaN.js create mode 100644 node_modules/lodash/isNative.js create mode 100644 node_modules/lodash/isNil.js create mode 100644 node_modules/lodash/isNull.js create mode 100644 node_modules/lodash/isNumber.js create mode 100644 node_modules/lodash/isObject.js create mode 100644 node_modules/lodash/isObjectLike.js create mode 100644 node_modules/lodash/isPlainObject.js create mode 100644 node_modules/lodash/isRegExp.js create mode 100644 node_modules/lodash/isSafeInteger.js create mode 100644 node_modules/lodash/isSet.js create mode 100644 node_modules/lodash/isString.js create mode 100644 node_modules/lodash/isSymbol.js create mode 100644 node_modules/lodash/isTypedArray.js create mode 100644 node_modules/lodash/isUndefined.js create mode 100644 node_modules/lodash/isWeakMap.js create mode 100644 node_modules/lodash/isWeakSet.js create mode 100644 node_modules/lodash/iteratee.js create mode 100644 node_modules/lodash/join.js create mode 100644 node_modules/lodash/kebabCase.js create mode 100644 node_modules/lodash/keyBy.js create mode 100644 node_modules/lodash/keys.js create mode 100644 node_modules/lodash/keysIn.js create mode 100644 node_modules/lodash/lang.js create mode 100644 node_modules/lodash/last.js create mode 100644 node_modules/lodash/lastIndexOf.js create mode 100644 node_modules/lodash/lodash.js create mode 100644 node_modules/lodash/lodash.min.js create mode 100644 node_modules/lodash/lowerCase.js create mode 100644 node_modules/lodash/lowerFirst.js create mode 100644 node_modules/lodash/lt.js create mode 100644 node_modules/lodash/lte.js create mode 100644 node_modules/lodash/map.js create mode 100644 node_modules/lodash/mapKeys.js create mode 100644 node_modules/lodash/mapValues.js create mode 100644 node_modules/lodash/matches.js create mode 100644 node_modules/lodash/matchesProperty.js create mode 100644 node_modules/lodash/math.js create mode 100644 node_modules/lodash/max.js create mode 100644 node_modules/lodash/maxBy.js create mode 100644 node_modules/lodash/mean.js create mode 100644 node_modules/lodash/meanBy.js create mode 100644 node_modules/lodash/memoize.js create mode 100644 node_modules/lodash/merge.js create mode 100644 node_modules/lodash/mergeWith.js create mode 100644 node_modules/lodash/method.js create mode 100644 node_modules/lodash/methodOf.js create mode 100644 node_modules/lodash/min.js create mode 100644 node_modules/lodash/minBy.js create mode 100644 node_modules/lodash/mixin.js create mode 100644 node_modules/lodash/multiply.js create mode 100644 node_modules/lodash/negate.js create mode 100644 node_modules/lodash/next.js create mode 100644 node_modules/lodash/noop.js create mode 100644 node_modules/lodash/now.js create mode 100644 node_modules/lodash/nth.js create mode 100644 node_modules/lodash/nthArg.js create mode 100644 node_modules/lodash/number.js create mode 100644 node_modules/lodash/object.js create mode 100644 node_modules/lodash/omit.js create mode 100644 node_modules/lodash/omitBy.js create mode 100644 node_modules/lodash/once.js create mode 100644 node_modules/lodash/orderBy.js create mode 100644 node_modules/lodash/over.js create mode 100644 node_modules/lodash/overArgs.js create mode 100644 node_modules/lodash/overEvery.js create mode 100644 node_modules/lodash/overSome.js create mode 100644 node_modules/lodash/package.json create mode 100644 node_modules/lodash/pad.js create mode 100644 node_modules/lodash/padEnd.js create mode 100644 node_modules/lodash/padStart.js create mode 100644 node_modules/lodash/parseInt.js create mode 100644 node_modules/lodash/partial.js create mode 100644 node_modules/lodash/partialRight.js create mode 100644 node_modules/lodash/partition.js create mode 100644 node_modules/lodash/pick.js create mode 100644 node_modules/lodash/pickBy.js create mode 100644 node_modules/lodash/plant.js create mode 100644 node_modules/lodash/property.js create mode 100644 node_modules/lodash/propertyOf.js create mode 100644 node_modules/lodash/pull.js create mode 100644 node_modules/lodash/pullAll.js create mode 100644 node_modules/lodash/pullAllBy.js create mode 100644 node_modules/lodash/pullAllWith.js create mode 100644 node_modules/lodash/pullAt.js create mode 100644 node_modules/lodash/random.js create mode 100644 node_modules/lodash/range.js create mode 100644 node_modules/lodash/rangeRight.js create mode 100644 node_modules/lodash/rearg.js create mode 100644 node_modules/lodash/reduce.js create mode 100644 node_modules/lodash/reduceRight.js create mode 100644 node_modules/lodash/reject.js create mode 100644 node_modules/lodash/remove.js create mode 100644 node_modules/lodash/repeat.js create mode 100644 node_modules/lodash/replace.js create mode 100644 node_modules/lodash/rest.js create mode 100644 node_modules/lodash/result.js create mode 100644 node_modules/lodash/reverse.js create mode 100644 node_modules/lodash/round.js create mode 100644 node_modules/lodash/sample.js create mode 100644 node_modules/lodash/sampleSize.js create mode 100644 node_modules/lodash/seq.js create mode 100644 node_modules/lodash/set.js create mode 100644 node_modules/lodash/setWith.js create mode 100644 node_modules/lodash/shuffle.js create mode 100644 node_modules/lodash/size.js create mode 100644 node_modules/lodash/slice.js create mode 100644 node_modules/lodash/snakeCase.js create mode 100644 node_modules/lodash/some.js create mode 100644 node_modules/lodash/sortBy.js create mode 100644 node_modules/lodash/sortedIndex.js create mode 100644 node_modules/lodash/sortedIndexBy.js create mode 100644 node_modules/lodash/sortedIndexOf.js create mode 100644 node_modules/lodash/sortedLastIndex.js create mode 100644 node_modules/lodash/sortedLastIndexBy.js create mode 100644 node_modules/lodash/sortedLastIndexOf.js create mode 100644 node_modules/lodash/sortedUniq.js create mode 100644 node_modules/lodash/sortedUniqBy.js create mode 100644 node_modules/lodash/split.js create mode 100644 node_modules/lodash/spread.js create mode 100644 node_modules/lodash/startCase.js create mode 100644 node_modules/lodash/startsWith.js create mode 100644 node_modules/lodash/string.js create mode 100644 node_modules/lodash/stubArray.js create mode 100644 node_modules/lodash/stubFalse.js create mode 100644 node_modules/lodash/stubObject.js create mode 100644 node_modules/lodash/stubString.js create mode 100644 node_modules/lodash/stubTrue.js create mode 100644 node_modules/lodash/subtract.js create mode 100644 node_modules/lodash/sum.js create mode 100644 node_modules/lodash/sumBy.js create mode 100644 node_modules/lodash/tail.js create mode 100644 node_modules/lodash/take.js create mode 100644 node_modules/lodash/takeRight.js create mode 100644 node_modules/lodash/takeRightWhile.js create mode 100644 node_modules/lodash/takeWhile.js create mode 100644 node_modules/lodash/tap.js create mode 100644 node_modules/lodash/template.js create mode 100644 node_modules/lodash/templateSettings.js create mode 100644 node_modules/lodash/throttle.js create mode 100644 node_modules/lodash/thru.js create mode 100644 node_modules/lodash/times.js create mode 100644 node_modules/lodash/toArray.js create mode 100644 node_modules/lodash/toFinite.js create mode 100644 node_modules/lodash/toInteger.js create mode 100644 node_modules/lodash/toIterator.js create mode 100644 node_modules/lodash/toJSON.js create mode 100644 node_modules/lodash/toLength.js create mode 100644 node_modules/lodash/toLower.js create mode 100644 node_modules/lodash/toNumber.js create mode 100644 node_modules/lodash/toPairs.js create mode 100644 node_modules/lodash/toPairsIn.js create mode 100644 node_modules/lodash/toPath.js create mode 100644 node_modules/lodash/toPlainObject.js create mode 100644 node_modules/lodash/toSafeInteger.js create mode 100644 node_modules/lodash/toString.js create mode 100644 node_modules/lodash/toUpper.js create mode 100644 node_modules/lodash/transform.js create mode 100644 node_modules/lodash/trim.js create mode 100644 node_modules/lodash/trimEnd.js create mode 100644 node_modules/lodash/trimStart.js create mode 100644 node_modules/lodash/truncate.js create mode 100644 node_modules/lodash/unary.js create mode 100644 node_modules/lodash/unescape.js create mode 100644 node_modules/lodash/union.js create mode 100644 node_modules/lodash/unionBy.js create mode 100644 node_modules/lodash/unionWith.js create mode 100644 node_modules/lodash/uniq.js create mode 100644 node_modules/lodash/uniqBy.js create mode 100644 node_modules/lodash/uniqWith.js create mode 100644 node_modules/lodash/uniqueId.js create mode 100644 node_modules/lodash/unset.js create mode 100644 node_modules/lodash/unzip.js create mode 100644 node_modules/lodash/unzipWith.js create mode 100644 node_modules/lodash/update.js create mode 100644 node_modules/lodash/updateWith.js create mode 100644 node_modules/lodash/upperCase.js create mode 100644 node_modules/lodash/upperFirst.js create mode 100644 node_modules/lodash/util.js create mode 100644 node_modules/lodash/value.js create mode 100644 node_modules/lodash/valueOf.js create mode 100644 node_modules/lodash/values.js create mode 100644 node_modules/lodash/valuesIn.js create mode 100644 node_modules/lodash/without.js create mode 100644 node_modules/lodash/words.js create mode 100644 node_modules/lodash/wrap.js create mode 100644 node_modules/lodash/wrapperAt.js create mode 100644 node_modules/lodash/wrapperChain.js create mode 100644 node_modules/lodash/wrapperLodash.js create mode 100644 node_modules/lodash/wrapperReverse.js create mode 100644 node_modules/lodash/wrapperValue.js create mode 100644 node_modules/lodash/xor.js create mode 100644 node_modules/lodash/xorBy.js create mode 100644 node_modules/lodash/xorWith.js create mode 100644 node_modules/lodash/zip.js create mode 100644 node_modules/lodash/zipObject.js create mode 100644 node_modules/lodash/zipObjectDeep.js create mode 100644 node_modules/lodash/zipWith.js create mode 100644 node_modules/log-symbols/browser.js create mode 100644 node_modules/log-symbols/index.js create mode 100644 node_modules/log-symbols/license create mode 100644 node_modules/log-symbols/package.json create mode 100644 node_modules/log-symbols/readme.md create mode 100644 node_modules/log-update/index.js create mode 100644 node_modules/log-update/license create mode 100644 node_modules/log-update/package.json create mode 100644 node_modules/log-update/readme.md create mode 100644 node_modules/mime-db/HISTORY.md create mode 100644 node_modules/mime-db/LICENSE create mode 100644 node_modules/mime-db/README.md create mode 100644 node_modules/mime-db/db.json create mode 100644 node_modules/mime-db/index.js create mode 100644 node_modules/mime-db/package.json create mode 100644 node_modules/mime-types/HISTORY.md create mode 100644 node_modules/mime-types/LICENSE create mode 100644 node_modules/mime-types/README.md create mode 100644 node_modules/mime-types/index.js create mode 100644 node_modules/mime-types/package.json create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/minimatch.js create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/minimist/.travis.yml create mode 100644 node_modules/minimist/LICENSE create mode 100644 node_modules/minimist/example/parse.js create mode 100644 node_modules/minimist/index.js create mode 100644 node_modules/minimist/package.json create mode 100644 node_modules/minimist/readme.markdown create mode 100644 node_modules/minimist/test/all_bool.js create mode 100644 node_modules/minimist/test/bool.js create mode 100644 node_modules/minimist/test/dash.js create mode 100644 node_modules/minimist/test/default_bool.js create mode 100644 node_modules/minimist/test/dotted.js create mode 100644 node_modules/minimist/test/kv_short.js create mode 100644 node_modules/minimist/test/long.js create mode 100644 node_modules/minimist/test/num.js create mode 100644 node_modules/minimist/test/parse.js create mode 100644 node_modules/minimist/test/parse_modified.js create mode 100644 node_modules/minimist/test/short.js create mode 100644 node_modules/minimist/test/stop_early.js create mode 100644 node_modules/minimist/test/unknown.js create mode 100644 node_modules/minimist/test/whitespace.js create mode 100644 node_modules/mkdirp/.travis.yml create mode 100644 node_modules/mkdirp/LICENSE create mode 100755 node_modules/mkdirp/bin/cmd.js create mode 100644 node_modules/mkdirp/bin/usage.txt create mode 100644 node_modules/mkdirp/examples/pow.js create mode 100644 node_modules/mkdirp/index.js create mode 100644 node_modules/mkdirp/node_modules/minimist/.travis.yml create mode 100644 node_modules/mkdirp/node_modules/minimist/LICENSE create mode 100644 node_modules/mkdirp/node_modules/minimist/example/parse.js create mode 100644 node_modules/mkdirp/node_modules/minimist/index.js create mode 100644 node_modules/mkdirp/node_modules/minimist/package.json create mode 100644 node_modules/mkdirp/node_modules/minimist/readme.markdown create mode 100644 node_modules/mkdirp/node_modules/minimist/test/dash.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/default_bool.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/dotted.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/long.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/parse.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/parse_modified.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/short.js create mode 100644 node_modules/mkdirp/node_modules/minimist/test/whitespace.js create mode 100644 node_modules/mkdirp/package.json create mode 100644 node_modules/mkdirp/readme.markdown create mode 100644 node_modules/mkdirp/test/chmod.js create mode 100644 node_modules/mkdirp/test/clobber.js create mode 100644 node_modules/mkdirp/test/mkdirp.js create mode 100644 node_modules/mkdirp/test/opts_fs.js create mode 100644 node_modules/mkdirp/test/opts_fs_sync.js create mode 100644 node_modules/mkdirp/test/perm.js create mode 100644 node_modules/mkdirp/test/perm_sync.js create mode 100644 node_modules/mkdirp/test/race.js create mode 100644 node_modules/mkdirp/test/rel.js create mode 100644 node_modules/mkdirp/test/return.js create mode 100644 node_modules/mkdirp/test/return_sync.js create mode 100644 node_modules/mkdirp/test/root.js create mode 100644 node_modules/mkdirp/test/sync.js create mode 100644 node_modules/mkdirp/test/umask.js create mode 100644 node_modules/mkdirp/test/umask_sync.js create mode 100644 node_modules/moment/CHANGELOG.md create mode 100644 node_modules/moment/LICENSE create mode 100644 node_modules/moment/README.md create mode 100644 node_modules/moment/ender.js create mode 100644 node_modules/moment/locale/af.js create mode 100644 node_modules/moment/locale/ar-dz.js create mode 100644 node_modules/moment/locale/ar-kw.js create mode 100644 node_modules/moment/locale/ar-ly.js create mode 100644 node_modules/moment/locale/ar-ma.js create mode 100644 node_modules/moment/locale/ar-sa.js create mode 100644 node_modules/moment/locale/ar-tn.js create mode 100644 node_modules/moment/locale/ar.js create mode 100644 node_modules/moment/locale/az.js create mode 100644 node_modules/moment/locale/be.js create mode 100644 node_modules/moment/locale/bg.js create mode 100644 node_modules/moment/locale/bm.js create mode 100644 node_modules/moment/locale/bn.js create mode 100644 node_modules/moment/locale/bo.js create mode 100644 node_modules/moment/locale/br.js create mode 100644 node_modules/moment/locale/bs.js create mode 100644 node_modules/moment/locale/ca.js create mode 100644 node_modules/moment/locale/cs.js create mode 100644 node_modules/moment/locale/cv.js create mode 100644 node_modules/moment/locale/cy.js create mode 100644 node_modules/moment/locale/da.js create mode 100644 node_modules/moment/locale/de-at.js create mode 100644 node_modules/moment/locale/de-ch.js create mode 100644 node_modules/moment/locale/de.js create mode 100644 node_modules/moment/locale/dv.js create mode 100644 node_modules/moment/locale/el.js create mode 100644 node_modules/moment/locale/en-SG.js create mode 100644 node_modules/moment/locale/en-au.js create mode 100644 node_modules/moment/locale/en-ca.js create mode 100644 node_modules/moment/locale/en-gb.js create mode 100644 node_modules/moment/locale/en-ie.js create mode 100644 node_modules/moment/locale/en-il.js create mode 100644 node_modules/moment/locale/en-nz.js create mode 100644 node_modules/moment/locale/eo.js create mode 100644 node_modules/moment/locale/es-do.js create mode 100644 node_modules/moment/locale/es-us.js create mode 100644 node_modules/moment/locale/es.js create mode 100644 node_modules/moment/locale/et.js create mode 100644 node_modules/moment/locale/eu.js create mode 100644 node_modules/moment/locale/fa.js create mode 100644 node_modules/moment/locale/fi.js create mode 100644 node_modules/moment/locale/fo.js create mode 100644 node_modules/moment/locale/fr-ca.js create mode 100644 node_modules/moment/locale/fr-ch.js create mode 100644 node_modules/moment/locale/fr.js create mode 100644 node_modules/moment/locale/fy.js create mode 100644 node_modules/moment/locale/ga.js create mode 100644 node_modules/moment/locale/gd.js create mode 100644 node_modules/moment/locale/gl.js create mode 100644 node_modules/moment/locale/gom-latn.js create mode 100644 node_modules/moment/locale/gu.js create mode 100644 node_modules/moment/locale/he.js create mode 100644 node_modules/moment/locale/hi.js create mode 100644 node_modules/moment/locale/hr.js create mode 100644 node_modules/moment/locale/hu.js create mode 100644 node_modules/moment/locale/hy-am.js create mode 100644 node_modules/moment/locale/id.js create mode 100644 node_modules/moment/locale/is.js create mode 100644 node_modules/moment/locale/it-ch.js create mode 100644 node_modules/moment/locale/it.js create mode 100644 node_modules/moment/locale/ja.js create mode 100644 node_modules/moment/locale/jv.js create mode 100644 node_modules/moment/locale/ka.js create mode 100644 node_modules/moment/locale/kk.js create mode 100644 node_modules/moment/locale/km.js create mode 100644 node_modules/moment/locale/kn.js create mode 100644 node_modules/moment/locale/ko.js create mode 100644 node_modules/moment/locale/ku.js create mode 100644 node_modules/moment/locale/ky.js create mode 100644 node_modules/moment/locale/lb.js create mode 100644 node_modules/moment/locale/lo.js create mode 100644 node_modules/moment/locale/lt.js create mode 100644 node_modules/moment/locale/lv.js create mode 100644 node_modules/moment/locale/me.js create mode 100644 node_modules/moment/locale/mi.js create mode 100644 node_modules/moment/locale/mk.js create mode 100644 node_modules/moment/locale/ml.js create mode 100644 node_modules/moment/locale/mn.js create mode 100644 node_modules/moment/locale/mr.js create mode 100644 node_modules/moment/locale/ms-my.js create mode 100644 node_modules/moment/locale/ms.js create mode 100644 node_modules/moment/locale/mt.js create mode 100644 node_modules/moment/locale/my.js create mode 100644 node_modules/moment/locale/nb.js create mode 100644 node_modules/moment/locale/ne.js create mode 100644 node_modules/moment/locale/nl-be.js create mode 100644 node_modules/moment/locale/nl.js create mode 100644 node_modules/moment/locale/nn.js create mode 100644 node_modules/moment/locale/pa-in.js create mode 100644 node_modules/moment/locale/pl.js create mode 100644 node_modules/moment/locale/pt-br.js create mode 100644 node_modules/moment/locale/pt.js create mode 100644 node_modules/moment/locale/ro.js create mode 100644 node_modules/moment/locale/ru.js create mode 100644 node_modules/moment/locale/sd.js create mode 100644 node_modules/moment/locale/se.js create mode 100644 node_modules/moment/locale/si.js create mode 100644 node_modules/moment/locale/sk.js create mode 100644 node_modules/moment/locale/sl.js create mode 100644 node_modules/moment/locale/sq.js create mode 100644 node_modules/moment/locale/sr-cyrl.js create mode 100644 node_modules/moment/locale/sr.js create mode 100644 node_modules/moment/locale/ss.js create mode 100644 node_modules/moment/locale/sv.js create mode 100644 node_modules/moment/locale/sw.js create mode 100644 node_modules/moment/locale/ta.js create mode 100644 node_modules/moment/locale/te.js create mode 100644 node_modules/moment/locale/tet.js create mode 100644 node_modules/moment/locale/tg.js create mode 100644 node_modules/moment/locale/th.js create mode 100644 node_modules/moment/locale/tl-ph.js create mode 100644 node_modules/moment/locale/tlh.js create mode 100644 node_modules/moment/locale/tr.js create mode 100644 node_modules/moment/locale/tzl.js create mode 100644 node_modules/moment/locale/tzm-latn.js create mode 100644 node_modules/moment/locale/tzm.js create mode 100644 node_modules/moment/locale/ug-cn.js create mode 100644 node_modules/moment/locale/uk.js create mode 100644 node_modules/moment/locale/ur.js create mode 100644 node_modules/moment/locale/uz-latn.js create mode 100644 node_modules/moment/locale/uz.js create mode 100644 node_modules/moment/locale/vi.js create mode 100644 node_modules/moment/locale/x-pseudo.js create mode 100644 node_modules/moment/locale/yo.js create mode 100644 node_modules/moment/locale/zh-cn.js create mode 100644 node_modules/moment/locale/zh-hk.js create mode 100644 node_modules/moment/locale/zh-tw.js create mode 100644 node_modules/moment/min/locales.js create mode 100644 node_modules/moment/min/locales.min.js create mode 100644 node_modules/moment/min/moment-with-locales.js create mode 100644 node_modules/moment/min/moment-with-locales.min.js create mode 100644 node_modules/moment/min/moment.min.js create mode 100644 node_modules/moment/moment.d.ts create mode 100644 node_modules/moment/moment.js create mode 100644 node_modules/moment/package.js create mode 100644 node_modules/moment/package.json create mode 100644 node_modules/moment/src/lib/create/check-overflow.js create mode 100644 node_modules/moment/src/lib/create/date-from-array.js create mode 100644 node_modules/moment/src/lib/create/from-anything.js create mode 100644 node_modules/moment/src/lib/create/from-array.js create mode 100644 node_modules/moment/src/lib/create/from-object.js create mode 100644 node_modules/moment/src/lib/create/from-string-and-array.js create mode 100644 node_modules/moment/src/lib/create/from-string-and-format.js create mode 100644 node_modules/moment/src/lib/create/from-string.js create mode 100644 node_modules/moment/src/lib/create/local.js create mode 100644 node_modules/moment/src/lib/create/parsing-flags.js create mode 100644 node_modules/moment/src/lib/create/utc.js create mode 100644 node_modules/moment/src/lib/create/valid.js create mode 100644 node_modules/moment/src/lib/duration/abs.js create mode 100644 node_modules/moment/src/lib/duration/add-subtract.js create mode 100644 node_modules/moment/src/lib/duration/as.js create mode 100644 node_modules/moment/src/lib/duration/bubble.js create mode 100644 node_modules/moment/src/lib/duration/clone.js create mode 100644 node_modules/moment/src/lib/duration/constructor.js create mode 100644 node_modules/moment/src/lib/duration/create.js create mode 100644 node_modules/moment/src/lib/duration/duration.js create mode 100644 node_modules/moment/src/lib/duration/get.js create mode 100644 node_modules/moment/src/lib/duration/humanize.js create mode 100644 node_modules/moment/src/lib/duration/iso-string.js create mode 100644 node_modules/moment/src/lib/duration/prototype.js create mode 100644 node_modules/moment/src/lib/duration/valid.js create mode 100644 node_modules/moment/src/lib/format/format.js create mode 100644 node_modules/moment/src/lib/locale/base-config.js create mode 100644 node_modules/moment/src/lib/locale/calendar.js create mode 100644 node_modules/moment/src/lib/locale/constructor.js create mode 100644 node_modules/moment/src/lib/locale/en.js create mode 100644 node_modules/moment/src/lib/locale/formats.js create mode 100644 node_modules/moment/src/lib/locale/invalid.js create mode 100644 node_modules/moment/src/lib/locale/lists.js create mode 100644 node_modules/moment/src/lib/locale/locale.js create mode 100644 node_modules/moment/src/lib/locale/locales.js create mode 100644 node_modules/moment/src/lib/locale/ordinal.js create mode 100644 node_modules/moment/src/lib/locale/pre-post-format.js create mode 100644 node_modules/moment/src/lib/locale/prototype.js create mode 100644 node_modules/moment/src/lib/locale/relative.js create mode 100644 node_modules/moment/src/lib/locale/set.js create mode 100644 node_modules/moment/src/lib/moment/add-subtract.js create mode 100644 node_modules/moment/src/lib/moment/calendar.js create mode 100644 node_modules/moment/src/lib/moment/clone.js create mode 100644 node_modules/moment/src/lib/moment/compare.js create mode 100644 node_modules/moment/src/lib/moment/constructor.js create mode 100644 node_modules/moment/src/lib/moment/creation-data.js create mode 100644 node_modules/moment/src/lib/moment/diff.js create mode 100644 node_modules/moment/src/lib/moment/format.js create mode 100644 node_modules/moment/src/lib/moment/from.js create mode 100644 node_modules/moment/src/lib/moment/get-set.js create mode 100644 node_modules/moment/src/lib/moment/locale.js create mode 100644 node_modules/moment/src/lib/moment/min-max.js create mode 100644 node_modules/moment/src/lib/moment/moment.js create mode 100644 node_modules/moment/src/lib/moment/now.js create mode 100644 node_modules/moment/src/lib/moment/prototype.js create mode 100644 node_modules/moment/src/lib/moment/start-end-of.js create mode 100644 node_modules/moment/src/lib/moment/to-type.js create mode 100644 node_modules/moment/src/lib/moment/to.js create mode 100644 node_modules/moment/src/lib/moment/valid.js create mode 100644 node_modules/moment/src/lib/parse/regex.js create mode 100644 node_modules/moment/src/lib/parse/token.js create mode 100644 node_modules/moment/src/lib/units/aliases.js create mode 100644 node_modules/moment/src/lib/units/constants.js create mode 100644 node_modules/moment/src/lib/units/day-of-month.js create mode 100644 node_modules/moment/src/lib/units/day-of-week.js create mode 100644 node_modules/moment/src/lib/units/day-of-year.js create mode 100644 node_modules/moment/src/lib/units/hour.js create mode 100644 node_modules/moment/src/lib/units/millisecond.js create mode 100644 node_modules/moment/src/lib/units/minute.js create mode 100644 node_modules/moment/src/lib/units/month.js create mode 100644 node_modules/moment/src/lib/units/offset.js create mode 100644 node_modules/moment/src/lib/units/priorities.js create mode 100644 node_modules/moment/src/lib/units/quarter.js create mode 100644 node_modules/moment/src/lib/units/second.js create mode 100644 node_modules/moment/src/lib/units/timestamp.js create mode 100644 node_modules/moment/src/lib/units/timezone.js create mode 100644 node_modules/moment/src/lib/units/units.js create mode 100644 node_modules/moment/src/lib/units/week-calendar-utils.js create mode 100644 node_modules/moment/src/lib/units/week-year.js create mode 100644 node_modules/moment/src/lib/units/week.js create mode 100644 node_modules/moment/src/lib/units/year.js create mode 100644 node_modules/moment/src/lib/utils/abs-ceil.js create mode 100644 node_modules/moment/src/lib/utils/abs-floor.js create mode 100644 node_modules/moment/src/lib/utils/abs-round.js create mode 100644 node_modules/moment/src/lib/utils/compare-arrays.js create mode 100644 node_modules/moment/src/lib/utils/defaults.js create mode 100644 node_modules/moment/src/lib/utils/deprecate.js create mode 100644 node_modules/moment/src/lib/utils/extend.js create mode 100644 node_modules/moment/src/lib/utils/has-own-prop.js create mode 100644 node_modules/moment/src/lib/utils/hooks.js create mode 100644 node_modules/moment/src/lib/utils/index-of.js create mode 100644 node_modules/moment/src/lib/utils/is-array.js create mode 100644 node_modules/moment/src/lib/utils/is-date.js create mode 100644 node_modules/moment/src/lib/utils/is-function.js create mode 100644 node_modules/moment/src/lib/utils/is-number.js create mode 100644 node_modules/moment/src/lib/utils/is-object-empty.js create mode 100644 node_modules/moment/src/lib/utils/is-object.js create mode 100644 node_modules/moment/src/lib/utils/is-undefined.js create mode 100644 node_modules/moment/src/lib/utils/keys.js create mode 100644 node_modules/moment/src/lib/utils/map.js create mode 100644 node_modules/moment/src/lib/utils/mod.js create mode 100644 node_modules/moment/src/lib/utils/some.js create mode 100644 node_modules/moment/src/lib/utils/to-int.js create mode 100644 node_modules/moment/src/lib/utils/zero-fill.js create mode 100644 node_modules/moment/src/locale/af.js create mode 100644 node_modules/moment/src/locale/ar-dz.js create mode 100644 node_modules/moment/src/locale/ar-kw.js create mode 100644 node_modules/moment/src/locale/ar-ly.js create mode 100644 node_modules/moment/src/locale/ar-ma.js create mode 100644 node_modules/moment/src/locale/ar-sa.js create mode 100644 node_modules/moment/src/locale/ar-tn.js create mode 100644 node_modules/moment/src/locale/ar.js create mode 100644 node_modules/moment/src/locale/az.js create mode 100644 node_modules/moment/src/locale/be.js create mode 100644 node_modules/moment/src/locale/bg.js create mode 100644 node_modules/moment/src/locale/bm.js create mode 100644 node_modules/moment/src/locale/bn.js create mode 100644 node_modules/moment/src/locale/bo.js create mode 100644 node_modules/moment/src/locale/br.js create mode 100644 node_modules/moment/src/locale/bs.js create mode 100644 node_modules/moment/src/locale/ca.js create mode 100644 node_modules/moment/src/locale/cs.js create mode 100644 node_modules/moment/src/locale/cv.js create mode 100644 node_modules/moment/src/locale/cy.js create mode 100644 node_modules/moment/src/locale/da.js create mode 100644 node_modules/moment/src/locale/de-at.js create mode 100644 node_modules/moment/src/locale/de-ch.js create mode 100644 node_modules/moment/src/locale/de.js create mode 100644 node_modules/moment/src/locale/dv.js create mode 100644 node_modules/moment/src/locale/el.js create mode 100644 node_modules/moment/src/locale/en-SG.js create mode 100644 node_modules/moment/src/locale/en-au.js create mode 100644 node_modules/moment/src/locale/en-ca.js create mode 100644 node_modules/moment/src/locale/en-gb.js create mode 100644 node_modules/moment/src/locale/en-ie.js create mode 100644 node_modules/moment/src/locale/en-il.js create mode 100644 node_modules/moment/src/locale/en-nz.js create mode 100644 node_modules/moment/src/locale/eo.js create mode 100644 node_modules/moment/src/locale/es-do.js create mode 100644 node_modules/moment/src/locale/es-us.js create mode 100644 node_modules/moment/src/locale/es.js create mode 100644 node_modules/moment/src/locale/et.js create mode 100644 node_modules/moment/src/locale/eu.js create mode 100644 node_modules/moment/src/locale/fa.js create mode 100644 node_modules/moment/src/locale/fi.js create mode 100644 node_modules/moment/src/locale/fo.js create mode 100644 node_modules/moment/src/locale/fr-ca.js create mode 100644 node_modules/moment/src/locale/fr-ch.js create mode 100644 node_modules/moment/src/locale/fr.js create mode 100644 node_modules/moment/src/locale/fy.js create mode 100644 node_modules/moment/src/locale/ga.js create mode 100644 node_modules/moment/src/locale/gd.js create mode 100644 node_modules/moment/src/locale/gl.js create mode 100644 node_modules/moment/src/locale/gom-latn.js create mode 100644 node_modules/moment/src/locale/gu.js create mode 100644 node_modules/moment/src/locale/he.js create mode 100644 node_modules/moment/src/locale/hi.js create mode 100644 node_modules/moment/src/locale/hr.js create mode 100644 node_modules/moment/src/locale/hu.js create mode 100644 node_modules/moment/src/locale/hy-am.js create mode 100644 node_modules/moment/src/locale/id.js create mode 100644 node_modules/moment/src/locale/is.js create mode 100644 node_modules/moment/src/locale/it-ch.js create mode 100644 node_modules/moment/src/locale/it.js create mode 100644 node_modules/moment/src/locale/ja.js create mode 100644 node_modules/moment/src/locale/jv.js create mode 100644 node_modules/moment/src/locale/ka.js create mode 100644 node_modules/moment/src/locale/kk.js create mode 100644 node_modules/moment/src/locale/km.js create mode 100644 node_modules/moment/src/locale/kn.js create mode 100644 node_modules/moment/src/locale/ko.js create mode 100644 node_modules/moment/src/locale/ku.js create mode 100644 node_modules/moment/src/locale/ky.js create mode 100644 node_modules/moment/src/locale/lb.js create mode 100644 node_modules/moment/src/locale/lo.js create mode 100644 node_modules/moment/src/locale/lt.js create mode 100644 node_modules/moment/src/locale/lv.js create mode 100644 node_modules/moment/src/locale/me.js create mode 100644 node_modules/moment/src/locale/mi.js create mode 100644 node_modules/moment/src/locale/mk.js create mode 100644 node_modules/moment/src/locale/ml.js create mode 100644 node_modules/moment/src/locale/mn.js create mode 100644 node_modules/moment/src/locale/mr.js create mode 100644 node_modules/moment/src/locale/ms-my.js create mode 100644 node_modules/moment/src/locale/ms.js create mode 100644 node_modules/moment/src/locale/mt.js create mode 100644 node_modules/moment/src/locale/my.js create mode 100644 node_modules/moment/src/locale/nb.js create mode 100644 node_modules/moment/src/locale/ne.js create mode 100644 node_modules/moment/src/locale/nl-be.js create mode 100644 node_modules/moment/src/locale/nl.js create mode 100644 node_modules/moment/src/locale/nn.js create mode 100644 node_modules/moment/src/locale/pa-in.js create mode 100644 node_modules/moment/src/locale/pl.js create mode 100644 node_modules/moment/src/locale/pt-br.js create mode 100644 node_modules/moment/src/locale/pt.js create mode 100644 node_modules/moment/src/locale/ro.js create mode 100644 node_modules/moment/src/locale/ru.js create mode 100644 node_modules/moment/src/locale/sd.js create mode 100644 node_modules/moment/src/locale/se.js create mode 100644 node_modules/moment/src/locale/si.js create mode 100644 node_modules/moment/src/locale/sk.js create mode 100644 node_modules/moment/src/locale/sl.js create mode 100644 node_modules/moment/src/locale/sq.js create mode 100644 node_modules/moment/src/locale/sr-cyrl.js create mode 100644 node_modules/moment/src/locale/sr.js create mode 100644 node_modules/moment/src/locale/ss.js create mode 100644 node_modules/moment/src/locale/sv.js create mode 100644 node_modules/moment/src/locale/sw.js create mode 100644 node_modules/moment/src/locale/ta.js create mode 100644 node_modules/moment/src/locale/te.js create mode 100644 node_modules/moment/src/locale/tet.js create mode 100644 node_modules/moment/src/locale/tg.js create mode 100644 node_modules/moment/src/locale/th.js create mode 100644 node_modules/moment/src/locale/tl-ph.js create mode 100644 node_modules/moment/src/locale/tlh.js create mode 100644 node_modules/moment/src/locale/tr.js create mode 100644 node_modules/moment/src/locale/tzl.js create mode 100644 node_modules/moment/src/locale/tzm-latn.js create mode 100644 node_modules/moment/src/locale/tzm.js create mode 100644 node_modules/moment/src/locale/ug-cn.js create mode 100644 node_modules/moment/src/locale/uk.js create mode 100644 node_modules/moment/src/locale/ur.js create mode 100644 node_modules/moment/src/locale/uz-latn.js create mode 100644 node_modules/moment/src/locale/uz.js create mode 100644 node_modules/moment/src/locale/vi.js create mode 100644 node_modules/moment/src/locale/x-pseudo.js create mode 100644 node_modules/moment/src/locale/yo.js create mode 100644 node_modules/moment/src/locale/zh-cn.js create mode 100644 node_modules/moment/src/locale/zh-hk.js create mode 100644 node_modules/moment/src/locale/zh-tw.js create mode 100644 node_modules/moment/src/moment.js create mode 100644 node_modules/ms/index.js create mode 100644 node_modules/ms/license.md create mode 100644 node_modules/ms/package.json create mode 100644 node_modules/ms/readme.md create mode 100644 node_modules/nice-try/CHANGELOG.md create mode 100644 node_modules/nice-try/LICENSE create mode 100644 node_modules/nice-try/README.md create mode 100644 node_modules/nice-try/package.json create mode 100644 node_modules/nice-try/src/index.js create mode 100644 node_modules/npm-run-path/index.js create mode 100644 node_modules/npm-run-path/license create mode 100644 node_modules/npm-run-path/package.json create mode 100644 node_modules/npm-run-path/readme.md create mode 100644 node_modules/number-is-nan/index.js create mode 100644 node_modules/number-is-nan/license create mode 100644 node_modules/number-is-nan/package.json create mode 100644 node_modules/number-is-nan/readme.md create mode 100644 node_modules/oauth-sign/LICENSE create mode 100644 node_modules/oauth-sign/README.md create mode 100644 node_modules/oauth-sign/index.js create mode 100644 node_modules/oauth-sign/package.json create mode 100644 node_modules/object-assign/index.js create mode 100644 node_modules/object-assign/license create mode 100644 node_modules/object-assign/package.json create mode 100644 node_modules/object-assign/readme.md create mode 100644 node_modules/once/LICENSE create mode 100644 node_modules/once/README.md create mode 100644 node_modules/once/once.js create mode 100644 node_modules/once/package.json create mode 100644 node_modules/onetime/index.js create mode 100644 node_modules/onetime/license create mode 100644 node_modules/onetime/package.json create mode 100644 node_modules/onetime/readme.md create mode 100644 node_modules/ora/index.js create mode 100644 node_modules/ora/license create mode 100644 node_modules/ora/node_modules/chalk/index.js create mode 100644 node_modules/ora/node_modules/chalk/license create mode 100644 node_modules/ora/node_modules/chalk/package.json create mode 100644 node_modules/ora/node_modules/chalk/readme.md create mode 100644 node_modules/ora/node_modules/supports-color/index.js create mode 100644 node_modules/ora/node_modules/supports-color/license create mode 100644 node_modules/ora/node_modules/supports-color/package.json create mode 100644 node_modules/ora/node_modules/supports-color/readme.md create mode 100644 node_modules/ora/package.json create mode 100644 node_modules/ora/readme.md create mode 100644 node_modules/os-homedir/index.js create mode 100644 node_modules/os-homedir/license create mode 100644 node_modules/os-homedir/package.json create mode 100644 node_modules/os-homedir/readme.md create mode 100644 node_modules/p-finally/index.js create mode 100644 node_modules/p-finally/license create mode 100644 node_modules/p-finally/package.json create mode 100644 node_modules/p-finally/readme.md create mode 100644 node_modules/p-map/index.js create mode 100644 node_modules/p-map/license create mode 100644 node_modules/p-map/package.json create mode 100644 node_modules/p-map/readme.md create mode 100644 node_modules/path-is-absolute/index.js create mode 100644 node_modules/path-is-absolute/license create mode 100644 node_modules/path-is-absolute/package.json create mode 100644 node_modules/path-is-absolute/readme.md create mode 100644 node_modules/path-is-inside/LICENSE.txt create mode 100644 node_modules/path-is-inside/lib/path-is-inside.js create mode 100644 node_modules/path-is-inside/package.json create mode 100644 node_modules/path-key/index.js create mode 100644 node_modules/path-key/license create mode 100644 node_modules/path-key/package.json create mode 100644 node_modules/path-key/readme.md create mode 100644 node_modules/pend/LICENSE create mode 100644 node_modules/pend/README.md create mode 100644 node_modules/pend/index.js create mode 100644 node_modules/pend/package.json create mode 100644 node_modules/pend/test.js create mode 100644 node_modules/performance-now/.npmignore create mode 100644 node_modules/performance-now/.tm_properties create mode 100644 node_modules/performance-now/.travis.yml create mode 100644 node_modules/performance-now/README.md create mode 100644 node_modules/performance-now/lib/performance-now.js create mode 100644 node_modules/performance-now/lib/performance-now.js.map create mode 100644 node_modules/performance-now/license.txt create mode 100644 node_modules/performance-now/package.json create mode 100644 node_modules/performance-now/src/index.d.ts create mode 100644 node_modules/performance-now/src/performance-now.coffee create mode 100644 node_modules/performance-now/test/mocha.opts create mode 100644 node_modules/performance-now/test/performance-now.coffee create mode 100644 node_modules/performance-now/test/scripts.coffee create mode 100755 node_modules/performance-now/test/scripts/delayed-call.coffee create mode 100755 node_modules/performance-now/test/scripts/delayed-require.coffee create mode 100755 node_modules/performance-now/test/scripts/difference.coffee create mode 100755 node_modules/performance-now/test/scripts/initial-value.coffee create mode 100644 node_modules/pify/index.js create mode 100644 node_modules/pify/license create mode 100644 node_modules/pify/package.json create mode 100644 node_modules/pify/readme.md create mode 100644 node_modules/process-nextick-args/index.js create mode 100644 node_modules/process-nextick-args/license.md create mode 100644 node_modules/process-nextick-args/package.json create mode 100644 node_modules/process-nextick-args/readme.md create mode 100644 node_modules/psl/LICENSE create mode 100644 node_modules/psl/README.md create mode 100644 node_modules/psl/browserstack-logo.svg create mode 100644 node_modules/psl/data/rules.json create mode 100644 node_modules/psl/dist/psl.js create mode 100644 node_modules/psl/dist/psl.min.js create mode 100644 node_modules/psl/index.js create mode 100644 node_modules/psl/package.json create mode 100644 node_modules/punycode/LICENSE-MIT.txt create mode 100644 node_modules/punycode/README.md create mode 100644 node_modules/punycode/package.json create mode 100644 node_modules/punycode/punycode.es6.js create mode 100644 node_modules/punycode/punycode.js create mode 100644 node_modules/qs/.editorconfig create mode 100644 node_modules/qs/.eslintignore create mode 100644 node_modules/qs/.eslintrc create mode 100644 node_modules/qs/CHANGELOG.md create mode 100644 node_modules/qs/LICENSE create mode 100644 node_modules/qs/README.md create mode 100644 node_modules/qs/dist/qs.js create mode 100644 node_modules/qs/lib/formats.js create mode 100644 node_modules/qs/lib/index.js create mode 100644 node_modules/qs/lib/parse.js create mode 100644 node_modules/qs/lib/stringify.js create mode 100644 node_modules/qs/lib/utils.js create mode 100644 node_modules/qs/package.json create mode 100644 node_modules/qs/test/.eslintrc create mode 100644 node_modules/qs/test/index.js create mode 100644 node_modules/qs/test/parse.js create mode 100644 node_modules/qs/test/stringify.js create mode 100644 node_modules/qs/test/utils.js create mode 100644 node_modules/querystring/.History.md.un~ create mode 100644 node_modules/querystring/.Readme.md.un~ create mode 100644 node_modules/querystring/.package.json.un~ create mode 100644 node_modules/querystring/.travis.yml create mode 100644 node_modules/querystring/History.md create mode 100644 node_modules/querystring/License.md create mode 100644 node_modules/querystring/Readme.md create mode 100644 node_modules/querystring/decode.js create mode 100644 node_modules/querystring/encode.js create mode 100644 node_modules/querystring/index.js create mode 100644 node_modules/querystring/package.json create mode 100644 node_modules/querystring/test/.index.js.un~ create mode 100644 node_modules/querystring/test/common-index.js create mode 100644 node_modules/querystring/test/index.js create mode 100644 node_modules/querystring/test/tap-index.js create mode 100644 node_modules/ramda/CHANGELOG.md create mode 100644 node_modules/ramda/LICENSE.txt create mode 100644 node_modules/ramda/README.md create mode 100644 node_modules/ramda/dist/ramda.js create mode 100644 node_modules/ramda/dist/ramda.min.js create mode 100644 node_modules/ramda/index.js create mode 100644 node_modules/ramda/package.json create mode 100644 node_modules/ramda/src/F.js create mode 100644 node_modules/ramda/src/T.js create mode 100644 node_modules/ramda/src/__.js create mode 100644 node_modules/ramda/src/add.js create mode 100644 node_modules/ramda/src/addIndex.js create mode 100644 node_modules/ramda/src/adjust.js create mode 100644 node_modules/ramda/src/all.js create mode 100644 node_modules/ramda/src/allPass.js create mode 100644 node_modules/ramda/src/always.js create mode 100644 node_modules/ramda/src/and.js create mode 100644 node_modules/ramda/src/any.js create mode 100644 node_modules/ramda/src/anyPass.js create mode 100644 node_modules/ramda/src/ap.js create mode 100644 node_modules/ramda/src/aperture.js create mode 100644 node_modules/ramda/src/append.js create mode 100644 node_modules/ramda/src/apply.js create mode 100644 node_modules/ramda/src/applySpec.js create mode 100644 node_modules/ramda/src/ascend.js create mode 100644 node_modules/ramda/src/assoc.js create mode 100644 node_modules/ramda/src/assocPath.js create mode 100644 node_modules/ramda/src/binary.js create mode 100644 node_modules/ramda/src/bind.js create mode 100644 node_modules/ramda/src/both.js create mode 100644 node_modules/ramda/src/call.js create mode 100644 node_modules/ramda/src/chain.js create mode 100644 node_modules/ramda/src/clamp.js create mode 100644 node_modules/ramda/src/clone.js create mode 100644 node_modules/ramda/src/comparator.js create mode 100644 node_modules/ramda/src/complement.js create mode 100644 node_modules/ramda/src/compose.js create mode 100644 node_modules/ramda/src/composeK.js create mode 100644 node_modules/ramda/src/composeP.js create mode 100644 node_modules/ramda/src/concat.js create mode 100644 node_modules/ramda/src/cond.js create mode 100644 node_modules/ramda/src/construct.js create mode 100644 node_modules/ramda/src/constructN.js create mode 100644 node_modules/ramda/src/contains.js create mode 100644 node_modules/ramda/src/converge.js create mode 100644 node_modules/ramda/src/countBy.js create mode 100644 node_modules/ramda/src/curry.js create mode 100644 node_modules/ramda/src/curryN.js create mode 100644 node_modules/ramda/src/dec.js create mode 100644 node_modules/ramda/src/defaultTo.js create mode 100644 node_modules/ramda/src/descend.js create mode 100644 node_modules/ramda/src/difference.js create mode 100644 node_modules/ramda/src/differenceWith.js create mode 100644 node_modules/ramda/src/dissoc.js create mode 100644 node_modules/ramda/src/dissocPath.js create mode 100644 node_modules/ramda/src/divide.js create mode 100644 node_modules/ramda/src/drop.js create mode 100644 node_modules/ramda/src/dropLast.js create mode 100644 node_modules/ramda/src/dropLastWhile.js create mode 100644 node_modules/ramda/src/dropRepeats.js create mode 100644 node_modules/ramda/src/dropRepeatsWith.js create mode 100644 node_modules/ramda/src/dropWhile.js create mode 100644 node_modules/ramda/src/either.js create mode 100644 node_modules/ramda/src/empty.js create mode 100644 node_modules/ramda/src/endsWith.js create mode 100644 node_modules/ramda/src/eqBy.js create mode 100644 node_modules/ramda/src/eqProps.js create mode 100644 node_modules/ramda/src/equals.js create mode 100644 node_modules/ramda/src/evolve.js create mode 100644 node_modules/ramda/src/filter.js create mode 100644 node_modules/ramda/src/find.js create mode 100644 node_modules/ramda/src/findIndex.js create mode 100644 node_modules/ramda/src/findLast.js create mode 100644 node_modules/ramda/src/findLastIndex.js create mode 100644 node_modules/ramda/src/flatten.js create mode 100644 node_modules/ramda/src/flip.js create mode 100644 node_modules/ramda/src/forEach.js create mode 100644 node_modules/ramda/src/forEachObjIndexed.js create mode 100644 node_modules/ramda/src/fromPairs.js create mode 100644 node_modules/ramda/src/groupBy.js create mode 100644 node_modules/ramda/src/groupWith.js create mode 100644 node_modules/ramda/src/gt.js create mode 100644 node_modules/ramda/src/gte.js create mode 100644 node_modules/ramda/src/has.js create mode 100644 node_modules/ramda/src/hasIn.js create mode 100644 node_modules/ramda/src/head.js create mode 100644 node_modules/ramda/src/identical.js create mode 100644 node_modules/ramda/src/identity.js create mode 100644 node_modules/ramda/src/ifElse.js create mode 100644 node_modules/ramda/src/inc.js create mode 100644 node_modules/ramda/src/indexBy.js create mode 100644 node_modules/ramda/src/indexOf.js create mode 100644 node_modules/ramda/src/init.js create mode 100644 node_modules/ramda/src/innerJoin.js create mode 100644 node_modules/ramda/src/insert.js create mode 100644 node_modules/ramda/src/insertAll.js create mode 100644 node_modules/ramda/src/internal/_Set.js create mode 100644 node_modules/ramda/src/internal/_aperture.js create mode 100644 node_modules/ramda/src/internal/_arity.js create mode 100644 node_modules/ramda/src/internal/_arrayFromIterator.js create mode 100644 node_modules/ramda/src/internal/_assign.js create mode 100644 node_modules/ramda/src/internal/_checkForMethod.js create mode 100644 node_modules/ramda/src/internal/_clone.js create mode 100644 node_modules/ramda/src/internal/_cloneRegExp.js create mode 100644 node_modules/ramda/src/internal/_complement.js create mode 100644 node_modules/ramda/src/internal/_concat.js create mode 100644 node_modules/ramda/src/internal/_contains.js create mode 100644 node_modules/ramda/src/internal/_containsWith.js create mode 100644 node_modules/ramda/src/internal/_createPartialApplicator.js create mode 100644 node_modules/ramda/src/internal/_curry1.js create mode 100644 node_modules/ramda/src/internal/_curry2.js create mode 100644 node_modules/ramda/src/internal/_curry3.js create mode 100644 node_modules/ramda/src/internal/_curryN.js create mode 100644 node_modules/ramda/src/internal/_dispatchable.js create mode 100644 node_modules/ramda/src/internal/_dropLast.js create mode 100644 node_modules/ramda/src/internal/_dropLastWhile.js create mode 100644 node_modules/ramda/src/internal/_equals.js create mode 100644 node_modules/ramda/src/internal/_filter.js create mode 100644 node_modules/ramda/src/internal/_flatCat.js create mode 100644 node_modules/ramda/src/internal/_forceReduced.js create mode 100644 node_modules/ramda/src/internal/_functionName.js create mode 100644 node_modules/ramda/src/internal/_functionsWith.js create mode 100644 node_modules/ramda/src/internal/_has.js create mode 100644 node_modules/ramda/src/internal/_identity.js create mode 100644 node_modules/ramda/src/internal/_indexOf.js create mode 100644 node_modules/ramda/src/internal/_isArguments.js create mode 100644 node_modules/ramda/src/internal/_isArray.js create mode 100644 node_modules/ramda/src/internal/_isArrayLike.js create mode 100644 node_modules/ramda/src/internal/_isFunction.js create mode 100644 node_modules/ramda/src/internal/_isInteger.js create mode 100644 node_modules/ramda/src/internal/_isNumber.js create mode 100644 node_modules/ramda/src/internal/_isObject.js create mode 100644 node_modules/ramda/src/internal/_isPlaceholder.js create mode 100644 node_modules/ramda/src/internal/_isRegExp.js create mode 100644 node_modules/ramda/src/internal/_isString.js create mode 100644 node_modules/ramda/src/internal/_isTransformer.js create mode 100644 node_modules/ramda/src/internal/_makeFlat.js create mode 100644 node_modules/ramda/src/internal/_map.js create mode 100644 node_modules/ramda/src/internal/_objectAssign.js create mode 100644 node_modules/ramda/src/internal/_of.js create mode 100644 node_modules/ramda/src/internal/_pipe.js create mode 100644 node_modules/ramda/src/internal/_pipeP.js create mode 100644 node_modules/ramda/src/internal/_quote.js create mode 100644 node_modules/ramda/src/internal/_reduce.js create mode 100644 node_modules/ramda/src/internal/_reduced.js create mode 100644 node_modules/ramda/src/internal/_stepCat.js create mode 100644 node_modules/ramda/src/internal/_toISOString.js create mode 100644 node_modules/ramda/src/internal/_toString.js create mode 100644 node_modules/ramda/src/internal/_xall.js create mode 100644 node_modules/ramda/src/internal/_xany.js create mode 100644 node_modules/ramda/src/internal/_xaperture.js create mode 100644 node_modules/ramda/src/internal/_xchain.js create mode 100644 node_modules/ramda/src/internal/_xdrop.js create mode 100644 node_modules/ramda/src/internal/_xdropLast.js create mode 100644 node_modules/ramda/src/internal/_xdropLastWhile.js create mode 100644 node_modules/ramda/src/internal/_xdropRepeatsWith.js create mode 100644 node_modules/ramda/src/internal/_xdropWhile.js create mode 100644 node_modules/ramda/src/internal/_xfBase.js create mode 100644 node_modules/ramda/src/internal/_xfilter.js create mode 100644 node_modules/ramda/src/internal/_xfind.js create mode 100644 node_modules/ramda/src/internal/_xfindIndex.js create mode 100644 node_modules/ramda/src/internal/_xfindLast.js create mode 100644 node_modules/ramda/src/internal/_xfindLastIndex.js create mode 100644 node_modules/ramda/src/internal/_xmap.js create mode 100644 node_modules/ramda/src/internal/_xreduceBy.js create mode 100644 node_modules/ramda/src/internal/_xtake.js create mode 100644 node_modules/ramda/src/internal/_xtakeWhile.js create mode 100644 node_modules/ramda/src/internal/_xwrap.js create mode 100644 node_modules/ramda/src/intersection.js create mode 100644 node_modules/ramda/src/intersectionWith.js create mode 100644 node_modules/ramda/src/intersperse.js create mode 100644 node_modules/ramda/src/into.js create mode 100644 node_modules/ramda/src/invert.js create mode 100644 node_modules/ramda/src/invertObj.js create mode 100644 node_modules/ramda/src/invoker.js create mode 100644 node_modules/ramda/src/is.js create mode 100644 node_modules/ramda/src/isEmpty.js create mode 100644 node_modules/ramda/src/isNil.js create mode 100644 node_modules/ramda/src/join.js create mode 100644 node_modules/ramda/src/juxt.js create mode 100644 node_modules/ramda/src/keys.js create mode 100644 node_modules/ramda/src/keysIn.js create mode 100644 node_modules/ramda/src/last.js create mode 100644 node_modules/ramda/src/lastIndexOf.js create mode 100644 node_modules/ramda/src/length.js create mode 100644 node_modules/ramda/src/lens.js create mode 100644 node_modules/ramda/src/lensIndex.js create mode 100644 node_modules/ramda/src/lensPath.js create mode 100644 node_modules/ramda/src/lensProp.js create mode 100644 node_modules/ramda/src/lift.js create mode 100644 node_modules/ramda/src/liftN.js create mode 100644 node_modules/ramda/src/lt.js create mode 100644 node_modules/ramda/src/lte.js create mode 100644 node_modules/ramda/src/map.js create mode 100644 node_modules/ramda/src/mapAccum.js create mode 100644 node_modules/ramda/src/mapAccumRight.js create mode 100644 node_modules/ramda/src/mapObjIndexed.js create mode 100644 node_modules/ramda/src/match.js create mode 100644 node_modules/ramda/src/mathMod.js create mode 100644 node_modules/ramda/src/max.js create mode 100644 node_modules/ramda/src/maxBy.js create mode 100644 node_modules/ramda/src/mean.js create mode 100644 node_modules/ramda/src/median.js create mode 100644 node_modules/ramda/src/memoize.js create mode 100644 node_modules/ramda/src/memoizeWith.js create mode 100644 node_modules/ramda/src/merge.js create mode 100644 node_modules/ramda/src/mergeAll.js create mode 100644 node_modules/ramda/src/mergeDeepLeft.js create mode 100644 node_modules/ramda/src/mergeDeepRight.js create mode 100644 node_modules/ramda/src/mergeDeepWith.js create mode 100644 node_modules/ramda/src/mergeDeepWithKey.js create mode 100644 node_modules/ramda/src/mergeWith.js create mode 100644 node_modules/ramda/src/mergeWithKey.js create mode 100644 node_modules/ramda/src/min.js create mode 100644 node_modules/ramda/src/minBy.js create mode 100644 node_modules/ramda/src/modulo.js create mode 100644 node_modules/ramda/src/multiply.js create mode 100644 node_modules/ramda/src/nAry.js create mode 100644 node_modules/ramda/src/negate.js create mode 100644 node_modules/ramda/src/none.js create mode 100644 node_modules/ramda/src/not.js create mode 100644 node_modules/ramda/src/nth.js create mode 100644 node_modules/ramda/src/nthArg.js create mode 100644 node_modules/ramda/src/o.js create mode 100644 node_modules/ramda/src/objOf.js create mode 100644 node_modules/ramda/src/of.js create mode 100644 node_modules/ramda/src/omit.js create mode 100644 node_modules/ramda/src/once.js create mode 100644 node_modules/ramda/src/or.js create mode 100644 node_modules/ramda/src/over.js create mode 100644 node_modules/ramda/src/pair.js create mode 100644 node_modules/ramda/src/partial.js create mode 100644 node_modules/ramda/src/partialRight.js create mode 100644 node_modules/ramda/src/partition.js create mode 100644 node_modules/ramda/src/path.js create mode 100644 node_modules/ramda/src/pathEq.js create mode 100644 node_modules/ramda/src/pathOr.js create mode 100644 node_modules/ramda/src/pathSatisfies.js create mode 100644 node_modules/ramda/src/pick.js create mode 100644 node_modules/ramda/src/pickAll.js create mode 100644 node_modules/ramda/src/pickBy.js create mode 100644 node_modules/ramda/src/pipe.js create mode 100644 node_modules/ramda/src/pipeK.js create mode 100644 node_modules/ramda/src/pipeP.js create mode 100644 node_modules/ramda/src/pluck.js create mode 100644 node_modules/ramda/src/prepend.js create mode 100644 node_modules/ramda/src/product.js create mode 100644 node_modules/ramda/src/project.js create mode 100644 node_modules/ramda/src/prop.js create mode 100644 node_modules/ramda/src/propEq.js create mode 100644 node_modules/ramda/src/propIs.js create mode 100644 node_modules/ramda/src/propOr.js create mode 100644 node_modules/ramda/src/propSatisfies.js create mode 100644 node_modules/ramda/src/props.js create mode 100644 node_modules/ramda/src/range.js create mode 100644 node_modules/ramda/src/reduce.js create mode 100644 node_modules/ramda/src/reduceBy.js create mode 100644 node_modules/ramda/src/reduceRight.js create mode 100644 node_modules/ramda/src/reduceWhile.js create mode 100644 node_modules/ramda/src/reduced.js create mode 100644 node_modules/ramda/src/reject.js create mode 100644 node_modules/ramda/src/remove.js create mode 100644 node_modules/ramda/src/repeat.js create mode 100644 node_modules/ramda/src/replace.js create mode 100644 node_modules/ramda/src/reverse.js create mode 100644 node_modules/ramda/src/scan.js create mode 100644 node_modules/ramda/src/sequence.js create mode 100644 node_modules/ramda/src/set.js create mode 100644 node_modules/ramda/src/slice.js create mode 100644 node_modules/ramda/src/sort.js create mode 100644 node_modules/ramda/src/sortBy.js create mode 100644 node_modules/ramda/src/sortWith.js create mode 100644 node_modules/ramda/src/split.js create mode 100644 node_modules/ramda/src/splitAt.js create mode 100644 node_modules/ramda/src/splitEvery.js create mode 100644 node_modules/ramda/src/splitWhen.js create mode 100644 node_modules/ramda/src/startsWith.js create mode 100644 node_modules/ramda/src/subtract.js create mode 100644 node_modules/ramda/src/sum.js create mode 100644 node_modules/ramda/src/symmetricDifference.js create mode 100644 node_modules/ramda/src/symmetricDifferenceWith.js create mode 100644 node_modules/ramda/src/tail.js create mode 100644 node_modules/ramda/src/take.js create mode 100644 node_modules/ramda/src/takeLast.js create mode 100644 node_modules/ramda/src/takeLastWhile.js create mode 100644 node_modules/ramda/src/takeWhile.js create mode 100644 node_modules/ramda/src/tap.js create mode 100644 node_modules/ramda/src/test.js create mode 100644 node_modules/ramda/src/times.js create mode 100644 node_modules/ramda/src/toLower.js create mode 100644 node_modules/ramda/src/toPairs.js create mode 100644 node_modules/ramda/src/toPairsIn.js create mode 100644 node_modules/ramda/src/toString.js create mode 100644 node_modules/ramda/src/toUpper.js create mode 100644 node_modules/ramda/src/transduce.js create mode 100644 node_modules/ramda/src/transpose.js create mode 100644 node_modules/ramda/src/traverse.js create mode 100644 node_modules/ramda/src/trim.js create mode 100644 node_modules/ramda/src/tryCatch.js create mode 100644 node_modules/ramda/src/type.js create mode 100644 node_modules/ramda/src/unapply.js create mode 100644 node_modules/ramda/src/unary.js create mode 100644 node_modules/ramda/src/uncurryN.js create mode 100644 node_modules/ramda/src/unfold.js create mode 100644 node_modules/ramda/src/union.js create mode 100644 node_modules/ramda/src/unionWith.js create mode 100644 node_modules/ramda/src/uniq.js create mode 100644 node_modules/ramda/src/uniqBy.js create mode 100644 node_modules/ramda/src/uniqWith.js create mode 100644 node_modules/ramda/src/unless.js create mode 100644 node_modules/ramda/src/unnest.js create mode 100644 node_modules/ramda/src/until.js create mode 100644 node_modules/ramda/src/update.js create mode 100644 node_modules/ramda/src/useWith.js create mode 100644 node_modules/ramda/src/values.js create mode 100644 node_modules/ramda/src/valuesIn.js create mode 100644 node_modules/ramda/src/view.js create mode 100644 node_modules/ramda/src/when.js create mode 100644 node_modules/ramda/src/where.js create mode 100644 node_modules/ramda/src/whereEq.js create mode 100644 node_modules/ramda/src/without.js create mode 100644 node_modules/ramda/src/xprod.js create mode 100644 node_modules/ramda/src/zip.js create mode 100644 node_modules/ramda/src/zipObj.js create mode 100644 node_modules/ramda/src/zipWith.js create mode 100644 node_modules/readable-stream/.travis.yml create mode 100644 node_modules/readable-stream/CONTRIBUTING.md create mode 100644 node_modules/readable-stream/GOVERNANCE.md create mode 100644 node_modules/readable-stream/LICENSE create mode 100644 node_modules/readable-stream/README.md create mode 100644 node_modules/readable-stream/doc/wg-meetings/2015-01-30.md create mode 100644 node_modules/readable-stream/duplex-browser.js create mode 100644 node_modules/readable-stream/duplex.js create mode 100644 node_modules/readable-stream/lib/_stream_duplex.js create mode 100644 node_modules/readable-stream/lib/_stream_passthrough.js create mode 100644 node_modules/readable-stream/lib/_stream_readable.js create mode 100644 node_modules/readable-stream/lib/_stream_transform.js create mode 100644 node_modules/readable-stream/lib/_stream_writable.js create mode 100644 node_modules/readable-stream/lib/internal/streams/BufferList.js create mode 100644 node_modules/readable-stream/lib/internal/streams/destroy.js create mode 100644 node_modules/readable-stream/lib/internal/streams/stream-browser.js create mode 100644 node_modules/readable-stream/lib/internal/streams/stream.js create mode 100644 node_modules/readable-stream/package.json create mode 100644 node_modules/readable-stream/passthrough.js create mode 100644 node_modules/readable-stream/readable-browser.js create mode 100644 node_modules/readable-stream/readable.js create mode 100644 node_modules/readable-stream/transform.js create mode 100644 node_modules/readable-stream/writable-browser.js create mode 100644 node_modules/readable-stream/writable.js create mode 100644 node_modules/repeating/index.js create mode 100644 node_modules/repeating/license create mode 100644 node_modules/repeating/package.json create mode 100644 node_modules/repeating/readme.md create mode 100644 node_modules/request-progress/.editorconfig create mode 100644 node_modules/request-progress/.jshintrc create mode 100644 node_modules/request-progress/.npmignore create mode 100644 node_modules/request-progress/.travis.yml create mode 100644 node_modules/request-progress/LICENSE create mode 100644 node_modules/request-progress/README.md create mode 100644 node_modules/request-progress/index.js create mode 100644 node_modules/request-progress/package.json create mode 100644 node_modules/request-progress/test/test.js create mode 100644 node_modules/request/CHANGELOG.md create mode 100644 node_modules/request/LICENSE create mode 100644 node_modules/request/README.md create mode 100755 node_modules/request/index.js create mode 100644 node_modules/request/lib/auth.js create mode 100644 node_modules/request/lib/cookies.js create mode 100644 node_modules/request/lib/getProxyFromURI.js create mode 100644 node_modules/request/lib/har.js create mode 100644 node_modules/request/lib/hawk.js create mode 100644 node_modules/request/lib/helpers.js create mode 100644 node_modules/request/lib/multipart.js create mode 100644 node_modules/request/lib/oauth.js create mode 100644 node_modules/request/lib/querystring.js create mode 100644 node_modules/request/lib/redirect.js create mode 100644 node_modules/request/lib/tunnel.js create mode 100644 node_modules/request/package.json create mode 100644 node_modules/request/request.js create mode 100644 node_modules/restore-cursor/index.js create mode 100644 node_modules/restore-cursor/license create mode 100644 node_modules/restore-cursor/package.json create mode 100644 node_modules/restore-cursor/readme.md create mode 100644 node_modules/rimraf/LICENSE create mode 100644 node_modules/rimraf/README.md create mode 100755 node_modules/rimraf/bin.js create mode 100644 node_modules/rimraf/package.json create mode 100644 node_modules/rimraf/rimraf.js create mode 100644 node_modules/rxjs/AsyncSubject.d.ts create mode 100644 node_modules/rxjs/AsyncSubject.js create mode 100644 node_modules/rxjs/AsyncSubject.js.map create mode 100644 node_modules/rxjs/BehaviorSubject.d.ts create mode 100644 node_modules/rxjs/BehaviorSubject.js create mode 100644 node_modules/rxjs/BehaviorSubject.js.map create mode 100644 node_modules/rxjs/InnerSubscriber.d.ts create mode 100644 node_modules/rxjs/InnerSubscriber.js create mode 100644 node_modules/rxjs/InnerSubscriber.js.map create mode 100644 node_modules/rxjs/LICENSE.txt create mode 100644 node_modules/rxjs/Notification.d.ts create mode 100644 node_modules/rxjs/Notification.js create mode 100644 node_modules/rxjs/Notification.js.map create mode 100644 node_modules/rxjs/Observable.d.ts create mode 100644 node_modules/rxjs/Observable.js create mode 100644 node_modules/rxjs/Observable.js.map create mode 100644 node_modules/rxjs/Observer.d.ts create mode 100644 node_modules/rxjs/Observer.js create mode 100644 node_modules/rxjs/Observer.js.map create mode 100644 node_modules/rxjs/Operator.d.ts create mode 100644 node_modules/rxjs/Operator.js create mode 100644 node_modules/rxjs/Operator.js.map create mode 100644 node_modules/rxjs/OuterSubscriber.d.ts create mode 100644 node_modules/rxjs/OuterSubscriber.js create mode 100644 node_modules/rxjs/OuterSubscriber.js.map create mode 100644 node_modules/rxjs/README.md create mode 100644 node_modules/rxjs/ReplaySubject.d.ts create mode 100644 node_modules/rxjs/ReplaySubject.js create mode 100644 node_modules/rxjs/ReplaySubject.js.map create mode 100644 node_modules/rxjs/Rx.d.ts create mode 100644 node_modules/rxjs/Rx.js create mode 100644 node_modules/rxjs/Rx.js.map create mode 100644 node_modules/rxjs/Scheduler.d.ts create mode 100644 node_modules/rxjs/Scheduler.js create mode 100644 node_modules/rxjs/Scheduler.js.map create mode 100644 node_modules/rxjs/Subject.d.ts create mode 100644 node_modules/rxjs/Subject.js create mode 100644 node_modules/rxjs/Subject.js.map create mode 100644 node_modules/rxjs/SubjectSubscription.d.ts create mode 100644 node_modules/rxjs/SubjectSubscription.js create mode 100644 node_modules/rxjs/SubjectSubscription.js.map create mode 100644 node_modules/rxjs/Subscriber.d.ts create mode 100644 node_modules/rxjs/Subscriber.js create mode 100644 node_modules/rxjs/Subscriber.js.map create mode 100644 node_modules/rxjs/Subscription.d.ts create mode 100644 node_modules/rxjs/Subscription.js create mode 100644 node_modules/rxjs/Subscription.js.map create mode 100644 node_modules/rxjs/_esm2015/AsyncSubject.js create mode 100644 node_modules/rxjs/_esm2015/AsyncSubject.js.map create mode 100644 node_modules/rxjs/_esm2015/BehaviorSubject.js create mode 100644 node_modules/rxjs/_esm2015/BehaviorSubject.js.map create mode 100644 node_modules/rxjs/_esm2015/InnerSubscriber.js create mode 100644 node_modules/rxjs/_esm2015/InnerSubscriber.js.map create mode 100644 node_modules/rxjs/_esm2015/LICENSE.txt create mode 100644 node_modules/rxjs/_esm2015/Notification.js create mode 100644 node_modules/rxjs/_esm2015/Notification.js.map create mode 100644 node_modules/rxjs/_esm2015/Observable.js create mode 100644 node_modules/rxjs/_esm2015/Observable.js.map create mode 100644 node_modules/rxjs/_esm2015/Observer.js create mode 100644 node_modules/rxjs/_esm2015/Observer.js.map create mode 100644 node_modules/rxjs/_esm2015/Operator.js create mode 100644 node_modules/rxjs/_esm2015/Operator.js.map create mode 100644 node_modules/rxjs/_esm2015/OuterSubscriber.js create mode 100644 node_modules/rxjs/_esm2015/OuterSubscriber.js.map create mode 100644 node_modules/rxjs/_esm2015/README.md create mode 100644 node_modules/rxjs/_esm2015/ReplaySubject.js create mode 100644 node_modules/rxjs/_esm2015/ReplaySubject.js.map create mode 100644 node_modules/rxjs/_esm2015/Rx.js create mode 100644 node_modules/rxjs/_esm2015/Rx.js.map create mode 100644 node_modules/rxjs/_esm2015/Scheduler.js create mode 100644 node_modules/rxjs/_esm2015/Scheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/Subject.js create mode 100644 node_modules/rxjs/_esm2015/Subject.js.map create mode 100644 node_modules/rxjs/_esm2015/SubjectSubscription.js create mode 100644 node_modules/rxjs/_esm2015/SubjectSubscription.js.map create mode 100644 node_modules/rxjs/_esm2015/Subscriber.js create mode 100644 node_modules/rxjs/_esm2015/Subscriber.js.map create mode 100644 node_modules/rxjs/_esm2015/Subscription.js create mode 100644 node_modules/rxjs/_esm2015/Subscription.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/bindCallback.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/combineLatest.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/concat.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/concat.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/defer.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/defer.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/dom/ajax.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/empty.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/empty.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/forkJoin.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/from.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/from.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromEvent.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromPromise.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/generate.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/generate.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/if.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/if.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/interval.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/interval.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/merge.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/merge.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/never.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/never.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/of.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/of.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/pairs.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/pairs.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/race.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/race.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/range.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/range.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/throw.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/throw.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/timer.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/timer.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/using.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/using.js.map create mode 100644 node_modules/rxjs/_esm2015/add/observable/zip.js create mode 100644 node_modules/rxjs/_esm2015/add/observable/zip.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/audit.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/audit.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/auditTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/auditTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/buffer.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/buffer.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferCount.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferToggle.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferWhen.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/catch.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/catch.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/combineAll.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/combineAll.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/combineLatest.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/concat.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/concat.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatAll.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatAll.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatMap.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatMap.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatMapTo.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/count.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/count.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/debounce.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/debounce.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/debounceTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/delay.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/delay.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/delayWhen.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/dematerialize.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinct.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinct.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/do.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/do.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/elementAt.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/elementAt.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/every.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/every.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/exhaust.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/exhaust.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/exhaustMap.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/expand.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/expand.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/filter.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/filter.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/finally.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/finally.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/find.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/find.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/findIndex.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/findIndex.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/first.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/first.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/groupBy.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/groupBy.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/ignoreElements.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/isEmpty.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/last.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/last.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/let.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/let.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/map.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/map.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/mapTo.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/mapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/materialize.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/materialize.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/max.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/max.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/merge.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/merge.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeAll.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeMap.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeScan.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/min.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/min.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/multicast.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/multicast.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/observeOn.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/observeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/pairwise.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/pairwise.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/partition.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/partition.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/pluck.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/pluck.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/publish.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/publish.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishBehavior.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishLast.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishLast.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishReplay.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/race.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/race.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/reduce.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/reduce.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/repeat.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/repeat.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/repeatWhen.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/retry.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/retry.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/retryWhen.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/sample.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/sample.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/sampleTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/scan.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/scan.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/share.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/share.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/shareReplay.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/single.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/single.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/skip.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/skip.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipLast.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipLast.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipUntil.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipWhile.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/startWith.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/startWith.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/subscribeOn.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/switch.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/switch.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/switchMap.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/switchMap.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/switchMapTo.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/take.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/take.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeLast.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeLast.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeUntil.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeWhile.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/throttle.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/throttle.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/throttleTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeInterval.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeout.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeout.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeoutWith.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/timestamp.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/timestamp.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/toArray.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/toArray.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/toPromise.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/toPromise.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/window.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/window.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowCount.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowCount.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowTime.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowTime.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowToggle.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowWhen.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/zip.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/zip.js.map create mode 100644 node_modules/rxjs/_esm2015/add/operator/zipAll.js create mode 100644 node_modules/rxjs/_esm2015/add/operator/zipAll.js.map create mode 100644 node_modules/rxjs/_esm2015/interfaces.js create mode 100644 node_modules/rxjs/_esm2015/interfaces.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ArrayObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ArrayObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ConnectableObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ConnectableObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/DeferObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/DeferObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/EmptyObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/EmptyObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ErrorObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ErrorObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/FromEventObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/FromEventObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/FromObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/FromObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/GenerateObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/GenerateObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/IfObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/IfObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/IntervalObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/IntervalObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/IteratorObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/IteratorObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/NeverObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/NeverObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/PairsObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/PairsObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/PromiseObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/PromiseObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/RangeObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/RangeObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/ScalarObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/ScalarObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/TimerObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/TimerObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/UsingObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/UsingObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/bindCallback.js create mode 100644 node_modules/rxjs/_esm2015/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/_esm2015/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/combineLatest.js create mode 100644 node_modules/rxjs/_esm2015/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/concat.js create mode 100644 node_modules/rxjs/_esm2015/observable/concat.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/defer.js create mode 100644 node_modules/rxjs/_esm2015/observable/defer.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js create mode 100644 node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js create mode 100644 node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/dom/ajax.js create mode 100644 node_modules/rxjs/_esm2015/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/_esm2015/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/empty.js create mode 100644 node_modules/rxjs/_esm2015/observable/empty.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/forkJoin.js create mode 100644 node_modules/rxjs/_esm2015/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/from.js create mode 100644 node_modules/rxjs/_esm2015/observable/from.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/fromEvent.js create mode 100644 node_modules/rxjs/_esm2015/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/_esm2015/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/fromPromise.js create mode 100644 node_modules/rxjs/_esm2015/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/generate.js create mode 100644 node_modules/rxjs/_esm2015/observable/generate.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/if.js create mode 100644 node_modules/rxjs/_esm2015/observable/if.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/interval.js create mode 100644 node_modules/rxjs/_esm2015/observable/interval.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/merge.js create mode 100644 node_modules/rxjs/_esm2015/observable/merge.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/never.js create mode 100644 node_modules/rxjs/_esm2015/observable/never.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/of.js create mode 100644 node_modules/rxjs/_esm2015/observable/of.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/pairs.js create mode 100644 node_modules/rxjs/_esm2015/observable/pairs.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/race.js create mode 100644 node_modules/rxjs/_esm2015/observable/race.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/range.js create mode 100644 node_modules/rxjs/_esm2015/observable/range.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/throw.js create mode 100644 node_modules/rxjs/_esm2015/observable/throw.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/timer.js create mode 100644 node_modules/rxjs/_esm2015/observable/timer.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/using.js create mode 100644 node_modules/rxjs/_esm2015/observable/using.js.map create mode 100644 node_modules/rxjs/_esm2015/observable/zip.js create mode 100644 node_modules/rxjs/_esm2015/observable/zip.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/audit.js create mode 100644 node_modules/rxjs/_esm2015/operator/audit.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/auditTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/auditTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/buffer.js create mode 100644 node_modules/rxjs/_esm2015/operator/buffer.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/bufferCount.js create mode 100644 node_modules/rxjs/_esm2015/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/bufferTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/bufferToggle.js create mode 100644 node_modules/rxjs/_esm2015/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/bufferWhen.js create mode 100644 node_modules/rxjs/_esm2015/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/catch.js create mode 100644 node_modules/rxjs/_esm2015/operator/catch.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/combineAll.js create mode 100644 node_modules/rxjs/_esm2015/operator/combineAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/combineLatest.js create mode 100644 node_modules/rxjs/_esm2015/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/concat.js create mode 100644 node_modules/rxjs/_esm2015/operator/concat.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/concatAll.js create mode 100644 node_modules/rxjs/_esm2015/operator/concatAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/concatMap.js create mode 100644 node_modules/rxjs/_esm2015/operator/concatMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/concatMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/count.js create mode 100644 node_modules/rxjs/_esm2015/operator/count.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/debounce.js create mode 100644 node_modules/rxjs/_esm2015/operator/debounce.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/debounceTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/delay.js create mode 100644 node_modules/rxjs/_esm2015/operator/delay.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/delayWhen.js create mode 100644 node_modules/rxjs/_esm2015/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/dematerialize.js create mode 100644 node_modules/rxjs/_esm2015/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/distinct.js create mode 100644 node_modules/rxjs/_esm2015/operator/distinct.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/do.js create mode 100644 node_modules/rxjs/_esm2015/operator/do.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/elementAt.js create mode 100644 node_modules/rxjs/_esm2015/operator/elementAt.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/every.js create mode 100644 node_modules/rxjs/_esm2015/operator/every.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/exhaust.js create mode 100644 node_modules/rxjs/_esm2015/operator/exhaust.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/exhaustMap.js create mode 100644 node_modules/rxjs/_esm2015/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/expand.js create mode 100644 node_modules/rxjs/_esm2015/operator/expand.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/filter.js create mode 100644 node_modules/rxjs/_esm2015/operator/filter.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/finally.js create mode 100644 node_modules/rxjs/_esm2015/operator/finally.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/find.js create mode 100644 node_modules/rxjs/_esm2015/operator/find.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/findIndex.js create mode 100644 node_modules/rxjs/_esm2015/operator/findIndex.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/first.js create mode 100644 node_modules/rxjs/_esm2015/operator/first.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/groupBy.js create mode 100644 node_modules/rxjs/_esm2015/operator/groupBy.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/ignoreElements.js create mode 100644 node_modules/rxjs/_esm2015/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/isEmpty.js create mode 100644 node_modules/rxjs/_esm2015/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/last.js create mode 100644 node_modules/rxjs/_esm2015/operator/last.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/let.js create mode 100644 node_modules/rxjs/_esm2015/operator/let.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/map.js create mode 100644 node_modules/rxjs/_esm2015/operator/map.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/mapTo.js create mode 100644 node_modules/rxjs/_esm2015/operator/mapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/materialize.js create mode 100644 node_modules/rxjs/_esm2015/operator/materialize.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/max.js create mode 100644 node_modules/rxjs/_esm2015/operator/max.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/merge.js create mode 100644 node_modules/rxjs/_esm2015/operator/merge.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/mergeAll.js create mode 100644 node_modules/rxjs/_esm2015/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/mergeMap.js create mode 100644 node_modules/rxjs/_esm2015/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/mergeScan.js create mode 100644 node_modules/rxjs/_esm2015/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/min.js create mode 100644 node_modules/rxjs/_esm2015/operator/min.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/multicast.js create mode 100644 node_modules/rxjs/_esm2015/operator/multicast.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/observeOn.js create mode 100644 node_modules/rxjs/_esm2015/operator/observeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/pairwise.js create mode 100644 node_modules/rxjs/_esm2015/operator/pairwise.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/partition.js create mode 100644 node_modules/rxjs/_esm2015/operator/partition.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/pluck.js create mode 100644 node_modules/rxjs/_esm2015/operator/pluck.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/publish.js create mode 100644 node_modules/rxjs/_esm2015/operator/publish.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/publishBehavior.js create mode 100644 node_modules/rxjs/_esm2015/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/publishLast.js create mode 100644 node_modules/rxjs/_esm2015/operator/publishLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/publishReplay.js create mode 100644 node_modules/rxjs/_esm2015/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/race.js create mode 100644 node_modules/rxjs/_esm2015/operator/race.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/reduce.js create mode 100644 node_modules/rxjs/_esm2015/operator/reduce.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/repeat.js create mode 100644 node_modules/rxjs/_esm2015/operator/repeat.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/repeatWhen.js create mode 100644 node_modules/rxjs/_esm2015/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/retry.js create mode 100644 node_modules/rxjs/_esm2015/operator/retry.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/retryWhen.js create mode 100644 node_modules/rxjs/_esm2015/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/sample.js create mode 100644 node_modules/rxjs/_esm2015/operator/sample.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/sampleTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/scan.js create mode 100644 node_modules/rxjs/_esm2015/operator/scan.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm2015/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/share.js create mode 100644 node_modules/rxjs/_esm2015/operator/share.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/shareReplay.js create mode 100644 node_modules/rxjs/_esm2015/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/single.js create mode 100644 node_modules/rxjs/_esm2015/operator/single.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/skip.js create mode 100644 node_modules/rxjs/_esm2015/operator/skip.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/skipLast.js create mode 100644 node_modules/rxjs/_esm2015/operator/skipLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/skipUntil.js create mode 100644 node_modules/rxjs/_esm2015/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/skipWhile.js create mode 100644 node_modules/rxjs/_esm2015/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/startWith.js create mode 100644 node_modules/rxjs/_esm2015/operator/startWith.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/subscribeOn.js create mode 100644 node_modules/rxjs/_esm2015/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/switch.js create mode 100644 node_modules/rxjs/_esm2015/operator/switch.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/switchMap.js create mode 100644 node_modules/rxjs/_esm2015/operator/switchMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/switchMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/take.js create mode 100644 node_modules/rxjs/_esm2015/operator/take.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/takeLast.js create mode 100644 node_modules/rxjs/_esm2015/operator/takeLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/takeUntil.js create mode 100644 node_modules/rxjs/_esm2015/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/takeWhile.js create mode 100644 node_modules/rxjs/_esm2015/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/throttle.js create mode 100644 node_modules/rxjs/_esm2015/operator/throttle.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/throttleTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/timeInterval.js create mode 100644 node_modules/rxjs/_esm2015/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/timeout.js create mode 100644 node_modules/rxjs/_esm2015/operator/timeout.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/timeoutWith.js create mode 100644 node_modules/rxjs/_esm2015/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/timestamp.js create mode 100644 node_modules/rxjs/_esm2015/operator/timestamp.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/toArray.js create mode 100644 node_modules/rxjs/_esm2015/operator/toArray.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/toPromise.js create mode 100644 node_modules/rxjs/_esm2015/operator/toPromise.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/window.js create mode 100644 node_modules/rxjs/_esm2015/operator/window.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/windowCount.js create mode 100644 node_modules/rxjs/_esm2015/operator/windowCount.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/windowTime.js create mode 100644 node_modules/rxjs/_esm2015/operator/windowTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/windowToggle.js create mode 100644 node_modules/rxjs/_esm2015/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/windowWhen.js create mode 100644 node_modules/rxjs/_esm2015/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm2015/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/zip.js create mode 100644 node_modules/rxjs/_esm2015/operator/zip.js.map create mode 100644 node_modules/rxjs/_esm2015/operator/zipAll.js create mode 100644 node_modules/rxjs/_esm2015/operator/zipAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operators.js create mode 100644 node_modules/rxjs/_esm2015/operators.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/audit.js create mode 100644 node_modules/rxjs/_esm2015/operators/audit.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/auditTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/auditTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/buffer.js create mode 100644 node_modules/rxjs/_esm2015/operators/buffer.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/bufferCount.js create mode 100644 node_modules/rxjs/_esm2015/operators/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/bufferTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/bufferToggle.js create mode 100644 node_modules/rxjs/_esm2015/operators/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/bufferWhen.js create mode 100644 node_modules/rxjs/_esm2015/operators/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/catchError.js create mode 100644 node_modules/rxjs/_esm2015/operators/catchError.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/combineAll.js create mode 100644 node_modules/rxjs/_esm2015/operators/combineAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/combineLatest.js create mode 100644 node_modules/rxjs/_esm2015/operators/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/concat.js create mode 100644 node_modules/rxjs/_esm2015/operators/concat.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/concatAll.js create mode 100644 node_modules/rxjs/_esm2015/operators/concatAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/concatMap.js create mode 100644 node_modules/rxjs/_esm2015/operators/concatMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/concatMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operators/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/count.js create mode 100644 node_modules/rxjs/_esm2015/operators/count.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/debounce.js create mode 100644 node_modules/rxjs/_esm2015/operators/debounce.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/debounceTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/delay.js create mode 100644 node_modules/rxjs/_esm2015/operators/delay.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/delayWhen.js create mode 100644 node_modules/rxjs/_esm2015/operators/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/dematerialize.js create mode 100644 node_modules/rxjs/_esm2015/operators/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/distinct.js create mode 100644 node_modules/rxjs/_esm2015/operators/distinct.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/elementAt.js create mode 100644 node_modules/rxjs/_esm2015/operators/elementAt.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/every.js create mode 100644 node_modules/rxjs/_esm2015/operators/every.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/exhaust.js create mode 100644 node_modules/rxjs/_esm2015/operators/exhaust.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/exhaustMap.js create mode 100644 node_modules/rxjs/_esm2015/operators/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/expand.js create mode 100644 node_modules/rxjs/_esm2015/operators/expand.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/filter.js create mode 100644 node_modules/rxjs/_esm2015/operators/filter.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/finalize.js create mode 100644 node_modules/rxjs/_esm2015/operators/finalize.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/find.js create mode 100644 node_modules/rxjs/_esm2015/operators/find.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/findIndex.js create mode 100644 node_modules/rxjs/_esm2015/operators/findIndex.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/first.js create mode 100644 node_modules/rxjs/_esm2015/operators/first.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/groupBy.js create mode 100644 node_modules/rxjs/_esm2015/operators/groupBy.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/ignoreElements.js create mode 100644 node_modules/rxjs/_esm2015/operators/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/isEmpty.js create mode 100644 node_modules/rxjs/_esm2015/operators/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/last.js create mode 100644 node_modules/rxjs/_esm2015/operators/last.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/map.js create mode 100644 node_modules/rxjs/_esm2015/operators/map.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/mapTo.js create mode 100644 node_modules/rxjs/_esm2015/operators/mapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/materialize.js create mode 100644 node_modules/rxjs/_esm2015/operators/materialize.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/max.js create mode 100644 node_modules/rxjs/_esm2015/operators/max.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/merge.js create mode 100644 node_modules/rxjs/_esm2015/operators/merge.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/mergeAll.js create mode 100644 node_modules/rxjs/_esm2015/operators/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/mergeMap.js create mode 100644 node_modules/rxjs/_esm2015/operators/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operators/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/mergeScan.js create mode 100644 node_modules/rxjs/_esm2015/operators/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/min.js create mode 100644 node_modules/rxjs/_esm2015/operators/min.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/multicast.js create mode 100644 node_modules/rxjs/_esm2015/operators/multicast.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/observeOn.js create mode 100644 node_modules/rxjs/_esm2015/operators/observeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/pairwise.js create mode 100644 node_modules/rxjs/_esm2015/operators/pairwise.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/partition.js create mode 100644 node_modules/rxjs/_esm2015/operators/partition.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/pluck.js create mode 100644 node_modules/rxjs/_esm2015/operators/pluck.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/publish.js create mode 100644 node_modules/rxjs/_esm2015/operators/publish.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/publishBehavior.js create mode 100644 node_modules/rxjs/_esm2015/operators/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/publishLast.js create mode 100644 node_modules/rxjs/_esm2015/operators/publishLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/publishReplay.js create mode 100644 node_modules/rxjs/_esm2015/operators/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/race.js create mode 100644 node_modules/rxjs/_esm2015/operators/race.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/reduce.js create mode 100644 node_modules/rxjs/_esm2015/operators/reduce.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/refCount.js create mode 100644 node_modules/rxjs/_esm2015/operators/refCount.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/repeat.js create mode 100644 node_modules/rxjs/_esm2015/operators/repeat.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/repeatWhen.js create mode 100644 node_modules/rxjs/_esm2015/operators/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/retry.js create mode 100644 node_modules/rxjs/_esm2015/operators/retry.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/retryWhen.js create mode 100644 node_modules/rxjs/_esm2015/operators/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/sample.js create mode 100644 node_modules/rxjs/_esm2015/operators/sample.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/sampleTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/scan.js create mode 100644 node_modules/rxjs/_esm2015/operators/scan.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm2015/operators/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/share.js create mode 100644 node_modules/rxjs/_esm2015/operators/share.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/shareReplay.js create mode 100644 node_modules/rxjs/_esm2015/operators/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/single.js create mode 100644 node_modules/rxjs/_esm2015/operators/single.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/skip.js create mode 100644 node_modules/rxjs/_esm2015/operators/skip.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/skipLast.js create mode 100644 node_modules/rxjs/_esm2015/operators/skipLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/skipUntil.js create mode 100644 node_modules/rxjs/_esm2015/operators/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/skipWhile.js create mode 100644 node_modules/rxjs/_esm2015/operators/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/startWith.js create mode 100644 node_modules/rxjs/_esm2015/operators/startWith.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/subscribeOn.js create mode 100644 node_modules/rxjs/_esm2015/operators/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/switchAll.js create mode 100644 node_modules/rxjs/_esm2015/operators/switchAll.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/switchMap.js create mode 100644 node_modules/rxjs/_esm2015/operators/switchMap.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/switchMapTo.js create mode 100644 node_modules/rxjs/_esm2015/operators/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/take.js create mode 100644 node_modules/rxjs/_esm2015/operators/take.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/takeLast.js create mode 100644 node_modules/rxjs/_esm2015/operators/takeLast.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/takeUntil.js create mode 100644 node_modules/rxjs/_esm2015/operators/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/takeWhile.js create mode 100644 node_modules/rxjs/_esm2015/operators/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/tap.js create mode 100644 node_modules/rxjs/_esm2015/operators/tap.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/throttle.js create mode 100644 node_modules/rxjs/_esm2015/operators/throttle.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/throttleTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/timeInterval.js create mode 100644 node_modules/rxjs/_esm2015/operators/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/timeout.js create mode 100644 node_modules/rxjs/_esm2015/operators/timeout.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/timeoutWith.js create mode 100644 node_modules/rxjs/_esm2015/operators/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/timestamp.js create mode 100644 node_modules/rxjs/_esm2015/operators/timestamp.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/toArray.js create mode 100644 node_modules/rxjs/_esm2015/operators/toArray.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/window.js create mode 100644 node_modules/rxjs/_esm2015/operators/window.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/windowCount.js create mode 100644 node_modules/rxjs/_esm2015/operators/windowCount.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/windowTime.js create mode 100644 node_modules/rxjs/_esm2015/operators/windowTime.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/windowToggle.js create mode 100644 node_modules/rxjs/_esm2015/operators/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/windowWhen.js create mode 100644 node_modules/rxjs/_esm2015/operators/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm2015/operators/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/zip.js create mode 100644 node_modules/rxjs/_esm2015/operators/zip.js.map create mode 100644 node_modules/rxjs/_esm2015/operators/zipAll.js create mode 100644 node_modules/rxjs/_esm2015/operators/zipAll.js.map create mode 100644 node_modules/rxjs/_esm2015/path-mapping.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/Action.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/Action.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsapAction.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsapAction.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsyncAction.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsyncAction.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/QueueAction.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/QueueAction.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/animationFrame.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/animationFrame.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/asap.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/asap.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/async.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/async.js.map create mode 100644 node_modules/rxjs/_esm2015/scheduler/queue.js create mode 100644 node_modules/rxjs/_esm2015/scheduler/queue.js.map create mode 100644 node_modules/rxjs/_esm2015/symbol/iterator.js create mode 100644 node_modules/rxjs/_esm2015/symbol/iterator.js.map create mode 100644 node_modules/rxjs/_esm2015/symbol/observable.js create mode 100644 node_modules/rxjs/_esm2015/symbol/observable.js.map create mode 100644 node_modules/rxjs/_esm2015/symbol/rxSubscriber.js create mode 100644 node_modules/rxjs/_esm2015/symbol/rxSubscriber.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/ColdObservable.js create mode 100644 node_modules/rxjs/_esm2015/testing/ColdObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/HotObservable.js create mode 100644 node_modules/rxjs/_esm2015/testing/HotObservable.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/SubscriptionLog.js create mode 100644 node_modules/rxjs/_esm2015/testing/SubscriptionLog.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js create mode 100644 node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/TestMessage.js create mode 100644 node_modules/rxjs/_esm2015/testing/TestMessage.js.map create mode 100644 node_modules/rxjs/_esm2015/testing/TestScheduler.js create mode 100644 node_modules/rxjs/_esm2015/testing/TestScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/util/AnimationFrame.js create mode 100644 node_modules/rxjs/_esm2015/util/AnimationFrame.js.map create mode 100644 node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js create mode 100644 node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js.map create mode 100644 node_modules/rxjs/_esm2015/util/EmptyError.js create mode 100644 node_modules/rxjs/_esm2015/util/EmptyError.js.map create mode 100644 node_modules/rxjs/_esm2015/util/FastMap.js create mode 100644 node_modules/rxjs/_esm2015/util/FastMap.js.map create mode 100644 node_modules/rxjs/_esm2015/util/Immediate.js create mode 100644 node_modules/rxjs/_esm2015/util/Immediate.js.map create mode 100644 node_modules/rxjs/_esm2015/util/Map.js create mode 100644 node_modules/rxjs/_esm2015/util/Map.js.map create mode 100644 node_modules/rxjs/_esm2015/util/MapPolyfill.js create mode 100644 node_modules/rxjs/_esm2015/util/MapPolyfill.js.map create mode 100644 node_modules/rxjs/_esm2015/util/ObjectUnsubscribedError.js create mode 100644 node_modules/rxjs/_esm2015/util/ObjectUnsubscribedError.js.map create mode 100644 node_modules/rxjs/_esm2015/util/Set.js create mode 100644 node_modules/rxjs/_esm2015/util/Set.js.map create mode 100644 node_modules/rxjs/_esm2015/util/TimeoutError.js create mode 100644 node_modules/rxjs/_esm2015/util/TimeoutError.js.map create mode 100644 node_modules/rxjs/_esm2015/util/UnsubscriptionError.js create mode 100644 node_modules/rxjs/_esm2015/util/UnsubscriptionError.js.map create mode 100644 node_modules/rxjs/_esm2015/util/applyMixins.js create mode 100644 node_modules/rxjs/_esm2015/util/applyMixins.js.map create mode 100644 node_modules/rxjs/_esm2015/util/assign.js create mode 100644 node_modules/rxjs/_esm2015/util/assign.js.map create mode 100644 node_modules/rxjs/_esm2015/util/errorObject.js create mode 100644 node_modules/rxjs/_esm2015/util/errorObject.js.map create mode 100644 node_modules/rxjs/_esm2015/util/identity.js create mode 100644 node_modules/rxjs/_esm2015/util/identity.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isArray.js create mode 100644 node_modules/rxjs/_esm2015/util/isArray.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isArrayLike.js create mode 100644 node_modules/rxjs/_esm2015/util/isArrayLike.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isDate.js create mode 100644 node_modules/rxjs/_esm2015/util/isDate.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isFunction.js create mode 100644 node_modules/rxjs/_esm2015/util/isFunction.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isNumeric.js create mode 100644 node_modules/rxjs/_esm2015/util/isNumeric.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isObject.js create mode 100644 node_modules/rxjs/_esm2015/util/isObject.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isPromise.js create mode 100644 node_modules/rxjs/_esm2015/util/isPromise.js.map create mode 100644 node_modules/rxjs/_esm2015/util/isScheduler.js create mode 100644 node_modules/rxjs/_esm2015/util/isScheduler.js.map create mode 100644 node_modules/rxjs/_esm2015/util/noop.js create mode 100644 node_modules/rxjs/_esm2015/util/noop.js.map create mode 100644 node_modules/rxjs/_esm2015/util/not.js create mode 100644 node_modules/rxjs/_esm2015/util/not.js.map create mode 100644 node_modules/rxjs/_esm2015/util/pipe.js create mode 100644 node_modules/rxjs/_esm2015/util/pipe.js.map create mode 100644 node_modules/rxjs/_esm2015/util/root.js create mode 100644 node_modules/rxjs/_esm2015/util/root.js.map create mode 100644 node_modules/rxjs/_esm2015/util/subscribeToResult.js create mode 100644 node_modules/rxjs/_esm2015/util/subscribeToResult.js.map create mode 100644 node_modules/rxjs/_esm2015/util/toSubscriber.js create mode 100644 node_modules/rxjs/_esm2015/util/toSubscriber.js.map create mode 100644 node_modules/rxjs/_esm2015/util/tryCatch.js create mode 100644 node_modules/rxjs/_esm2015/util/tryCatch.js.map create mode 100644 node_modules/rxjs/_esm5/AsyncSubject.js create mode 100644 node_modules/rxjs/_esm5/AsyncSubject.js.map create mode 100644 node_modules/rxjs/_esm5/BehaviorSubject.js create mode 100644 node_modules/rxjs/_esm5/BehaviorSubject.js.map create mode 100644 node_modules/rxjs/_esm5/InnerSubscriber.js create mode 100644 node_modules/rxjs/_esm5/InnerSubscriber.js.map create mode 100644 node_modules/rxjs/_esm5/LICENSE.txt create mode 100644 node_modules/rxjs/_esm5/Notification.js create mode 100644 node_modules/rxjs/_esm5/Notification.js.map create mode 100644 node_modules/rxjs/_esm5/Observable.js create mode 100644 node_modules/rxjs/_esm5/Observable.js.map create mode 100644 node_modules/rxjs/_esm5/Observer.js create mode 100644 node_modules/rxjs/_esm5/Observer.js.map create mode 100644 node_modules/rxjs/_esm5/Operator.js create mode 100644 node_modules/rxjs/_esm5/Operator.js.map create mode 100644 node_modules/rxjs/_esm5/OuterSubscriber.js create mode 100644 node_modules/rxjs/_esm5/OuterSubscriber.js.map create mode 100644 node_modules/rxjs/_esm5/README.md create mode 100644 node_modules/rxjs/_esm5/ReplaySubject.js create mode 100644 node_modules/rxjs/_esm5/ReplaySubject.js.map create mode 100644 node_modules/rxjs/_esm5/Rx.js create mode 100644 node_modules/rxjs/_esm5/Rx.js.map create mode 100644 node_modules/rxjs/_esm5/Scheduler.js create mode 100644 node_modules/rxjs/_esm5/Scheduler.js.map create mode 100644 node_modules/rxjs/_esm5/Subject.js create mode 100644 node_modules/rxjs/_esm5/Subject.js.map create mode 100644 node_modules/rxjs/_esm5/SubjectSubscription.js create mode 100644 node_modules/rxjs/_esm5/SubjectSubscription.js.map create mode 100644 node_modules/rxjs/_esm5/Subscriber.js create mode 100644 node_modules/rxjs/_esm5/Subscriber.js.map create mode 100644 node_modules/rxjs/_esm5/Subscription.js create mode 100644 node_modules/rxjs/_esm5/Subscription.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/bindCallback.js create mode 100644 node_modules/rxjs/_esm5/add/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/_esm5/add/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/combineLatest.js create mode 100644 node_modules/rxjs/_esm5/add/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/concat.js create mode 100644 node_modules/rxjs/_esm5/add/observable/concat.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/defer.js create mode 100644 node_modules/rxjs/_esm5/add/observable/defer.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/dom/ajax.js create mode 100644 node_modules/rxjs/_esm5/add/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/_esm5/add/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/empty.js create mode 100644 node_modules/rxjs/_esm5/add/observable/empty.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/forkJoin.js create mode 100644 node_modules/rxjs/_esm5/add/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/from.js create mode 100644 node_modules/rxjs/_esm5/add/observable/from.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/fromEvent.js create mode 100644 node_modules/rxjs/_esm5/add/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/_esm5/add/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/fromPromise.js create mode 100644 node_modules/rxjs/_esm5/add/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/generate.js create mode 100644 node_modules/rxjs/_esm5/add/observable/generate.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/if.js create mode 100644 node_modules/rxjs/_esm5/add/observable/if.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/interval.js create mode 100644 node_modules/rxjs/_esm5/add/observable/interval.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/merge.js create mode 100644 node_modules/rxjs/_esm5/add/observable/merge.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/never.js create mode 100644 node_modules/rxjs/_esm5/add/observable/never.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/of.js create mode 100644 node_modules/rxjs/_esm5/add/observable/of.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm5/add/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/pairs.js create mode 100644 node_modules/rxjs/_esm5/add/observable/pairs.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/race.js create mode 100644 node_modules/rxjs/_esm5/add/observable/race.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/range.js create mode 100644 node_modules/rxjs/_esm5/add/observable/range.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/throw.js create mode 100644 node_modules/rxjs/_esm5/add/observable/throw.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/timer.js create mode 100644 node_modules/rxjs/_esm5/add/observable/timer.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/using.js create mode 100644 node_modules/rxjs/_esm5/add/observable/using.js.map create mode 100644 node_modules/rxjs/_esm5/add/observable/zip.js create mode 100644 node_modules/rxjs/_esm5/add/observable/zip.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/audit.js create mode 100644 node_modules/rxjs/_esm5/add/operator/audit.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/auditTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/auditTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/buffer.js create mode 100644 node_modules/rxjs/_esm5/add/operator/buffer.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferCount.js create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferToggle.js create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferWhen.js create mode 100644 node_modules/rxjs/_esm5/add/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/catch.js create mode 100644 node_modules/rxjs/_esm5/add/operator/catch.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/combineAll.js create mode 100644 node_modules/rxjs/_esm5/add/operator/combineAll.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/combineLatest.js create mode 100644 node_modules/rxjs/_esm5/add/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/concat.js create mode 100644 node_modules/rxjs/_esm5/add/operator/concat.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/concatAll.js create mode 100644 node_modules/rxjs/_esm5/add/operator/concatAll.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/concatMap.js create mode 100644 node_modules/rxjs/_esm5/add/operator/concatMap.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/concatMapTo.js create mode 100644 node_modules/rxjs/_esm5/add/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/count.js create mode 100644 node_modules/rxjs/_esm5/add/operator/count.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/debounce.js create mode 100644 node_modules/rxjs/_esm5/add/operator/debounce.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/debounceTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm5/add/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/delay.js create mode 100644 node_modules/rxjs/_esm5/add/operator/delay.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/delayWhen.js create mode 100644 node_modules/rxjs/_esm5/add/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/dematerialize.js create mode 100644 node_modules/rxjs/_esm5/add/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/distinct.js create mode 100644 node_modules/rxjs/_esm5/add/operator/distinct.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm5/add/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm5/add/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/do.js create mode 100644 node_modules/rxjs/_esm5/add/operator/do.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/elementAt.js create mode 100644 node_modules/rxjs/_esm5/add/operator/elementAt.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/every.js create mode 100644 node_modules/rxjs/_esm5/add/operator/every.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/exhaust.js create mode 100644 node_modules/rxjs/_esm5/add/operator/exhaust.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/exhaustMap.js create mode 100644 node_modules/rxjs/_esm5/add/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/expand.js create mode 100644 node_modules/rxjs/_esm5/add/operator/expand.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/filter.js create mode 100644 node_modules/rxjs/_esm5/add/operator/filter.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/finally.js create mode 100644 node_modules/rxjs/_esm5/add/operator/finally.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/find.js create mode 100644 node_modules/rxjs/_esm5/add/operator/find.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/findIndex.js create mode 100644 node_modules/rxjs/_esm5/add/operator/findIndex.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/first.js create mode 100644 node_modules/rxjs/_esm5/add/operator/first.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/groupBy.js create mode 100644 node_modules/rxjs/_esm5/add/operator/groupBy.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/ignoreElements.js create mode 100644 node_modules/rxjs/_esm5/add/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/isEmpty.js create mode 100644 node_modules/rxjs/_esm5/add/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/last.js create mode 100644 node_modules/rxjs/_esm5/add/operator/last.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/let.js create mode 100644 node_modules/rxjs/_esm5/add/operator/let.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/map.js create mode 100644 node_modules/rxjs/_esm5/add/operator/map.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/mapTo.js create mode 100644 node_modules/rxjs/_esm5/add/operator/mapTo.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/materialize.js create mode 100644 node_modules/rxjs/_esm5/add/operator/materialize.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/max.js create mode 100644 node_modules/rxjs/_esm5/add/operator/max.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/merge.js create mode 100644 node_modules/rxjs/_esm5/add/operator/merge.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeAll.js create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeMap.js create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeScan.js create mode 100644 node_modules/rxjs/_esm5/add/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/min.js create mode 100644 node_modules/rxjs/_esm5/add/operator/min.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/multicast.js create mode 100644 node_modules/rxjs/_esm5/add/operator/multicast.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/observeOn.js create mode 100644 node_modules/rxjs/_esm5/add/operator/observeOn.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm5/add/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/pairwise.js create mode 100644 node_modules/rxjs/_esm5/add/operator/pairwise.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/partition.js create mode 100644 node_modules/rxjs/_esm5/add/operator/partition.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/pluck.js create mode 100644 node_modules/rxjs/_esm5/add/operator/pluck.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/publish.js create mode 100644 node_modules/rxjs/_esm5/add/operator/publish.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/publishBehavior.js create mode 100644 node_modules/rxjs/_esm5/add/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/publishLast.js create mode 100644 node_modules/rxjs/_esm5/add/operator/publishLast.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/publishReplay.js create mode 100644 node_modules/rxjs/_esm5/add/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/race.js create mode 100644 node_modules/rxjs/_esm5/add/operator/race.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/reduce.js create mode 100644 node_modules/rxjs/_esm5/add/operator/reduce.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/repeat.js create mode 100644 node_modules/rxjs/_esm5/add/operator/repeat.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/repeatWhen.js create mode 100644 node_modules/rxjs/_esm5/add/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/retry.js create mode 100644 node_modules/rxjs/_esm5/add/operator/retry.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/retryWhen.js create mode 100644 node_modules/rxjs/_esm5/add/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/sample.js create mode 100644 node_modules/rxjs/_esm5/add/operator/sample.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/sampleTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/scan.js create mode 100644 node_modules/rxjs/_esm5/add/operator/scan.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm5/add/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/share.js create mode 100644 node_modules/rxjs/_esm5/add/operator/share.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/shareReplay.js create mode 100644 node_modules/rxjs/_esm5/add/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/single.js create mode 100644 node_modules/rxjs/_esm5/add/operator/single.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/skip.js create mode 100644 node_modules/rxjs/_esm5/add/operator/skip.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/skipLast.js create mode 100644 node_modules/rxjs/_esm5/add/operator/skipLast.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/skipUntil.js create mode 100644 node_modules/rxjs/_esm5/add/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/skipWhile.js create mode 100644 node_modules/rxjs/_esm5/add/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/startWith.js create mode 100644 node_modules/rxjs/_esm5/add/operator/startWith.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/subscribeOn.js create mode 100644 node_modules/rxjs/_esm5/add/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/switch.js create mode 100644 node_modules/rxjs/_esm5/add/operator/switch.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/switchMap.js create mode 100644 node_modules/rxjs/_esm5/add/operator/switchMap.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/switchMapTo.js create mode 100644 node_modules/rxjs/_esm5/add/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/take.js create mode 100644 node_modules/rxjs/_esm5/add/operator/take.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/takeLast.js create mode 100644 node_modules/rxjs/_esm5/add/operator/takeLast.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/takeUntil.js create mode 100644 node_modules/rxjs/_esm5/add/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/takeWhile.js create mode 100644 node_modules/rxjs/_esm5/add/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/throttle.js create mode 100644 node_modules/rxjs/_esm5/add/operator/throttle.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/throttleTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/timeInterval.js create mode 100644 node_modules/rxjs/_esm5/add/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/timeout.js create mode 100644 node_modules/rxjs/_esm5/add/operator/timeout.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/timeoutWith.js create mode 100644 node_modules/rxjs/_esm5/add/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/timestamp.js create mode 100644 node_modules/rxjs/_esm5/add/operator/timestamp.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/toArray.js create mode 100644 node_modules/rxjs/_esm5/add/operator/toArray.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/toPromise.js create mode 100644 node_modules/rxjs/_esm5/add/operator/toPromise.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/window.js create mode 100644 node_modules/rxjs/_esm5/add/operator/window.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/windowCount.js create mode 100644 node_modules/rxjs/_esm5/add/operator/windowCount.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/windowTime.js create mode 100644 node_modules/rxjs/_esm5/add/operator/windowTime.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/windowToggle.js create mode 100644 node_modules/rxjs/_esm5/add/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/windowWhen.js create mode 100644 node_modules/rxjs/_esm5/add/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm5/add/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/zip.js create mode 100644 node_modules/rxjs/_esm5/add/operator/zip.js.map create mode 100644 node_modules/rxjs/_esm5/add/operator/zipAll.js create mode 100644 node_modules/rxjs/_esm5/add/operator/zipAll.js.map create mode 100644 node_modules/rxjs/_esm5/interfaces.js create mode 100644 node_modules/rxjs/_esm5/interfaces.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ArrayLikeObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ArrayLikeObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ArrayObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ArrayObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/BoundCallbackObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/BoundCallbackObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/BoundNodeCallbackObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/BoundNodeCallbackObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ConnectableObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ConnectableObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/DeferObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/DeferObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/EmptyObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/EmptyObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ErrorObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ErrorObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ForkJoinObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ForkJoinObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/FromEventObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/FromEventObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/FromObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/FromObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/GenerateObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/GenerateObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/IfObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/IfObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/IntervalObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/IntervalObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/IteratorObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/IteratorObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/NeverObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/NeverObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/PairsObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/PairsObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/PromiseObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/PromiseObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/RangeObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/RangeObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/ScalarObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/ScalarObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/SubscribeOnObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/SubscribeOnObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/TimerObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/TimerObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/UsingObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/UsingObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/bindCallback.js create mode 100644 node_modules/rxjs/_esm5/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/_esm5/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/_esm5/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/_esm5/observable/combineLatest.js create mode 100644 node_modules/rxjs/_esm5/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm5/observable/concat.js create mode 100644 node_modules/rxjs/_esm5/observable/concat.js.map create mode 100644 node_modules/rxjs/_esm5/observable/defer.js create mode 100644 node_modules/rxjs/_esm5/observable/defer.js.map create mode 100644 node_modules/rxjs/_esm5/observable/dom/AjaxObservable.js create mode 100644 node_modules/rxjs/_esm5/observable/dom/AjaxObservable.js.map create mode 100644 node_modules/rxjs/_esm5/observable/dom/WebSocketSubject.js create mode 100644 node_modules/rxjs/_esm5/observable/dom/WebSocketSubject.js.map create mode 100644 node_modules/rxjs/_esm5/observable/dom/ajax.js create mode 100644 node_modules/rxjs/_esm5/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/_esm5/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/_esm5/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/_esm5/observable/empty.js create mode 100644 node_modules/rxjs/_esm5/observable/empty.js.map create mode 100644 node_modules/rxjs/_esm5/observable/forkJoin.js create mode 100644 node_modules/rxjs/_esm5/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/_esm5/observable/from.js create mode 100644 node_modules/rxjs/_esm5/observable/from.js.map create mode 100644 node_modules/rxjs/_esm5/observable/fromEvent.js create mode 100644 node_modules/rxjs/_esm5/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/_esm5/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/_esm5/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/_esm5/observable/fromPromise.js create mode 100644 node_modules/rxjs/_esm5/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/_esm5/observable/generate.js create mode 100644 node_modules/rxjs/_esm5/observable/generate.js.map create mode 100644 node_modules/rxjs/_esm5/observable/if.js create mode 100644 node_modules/rxjs/_esm5/observable/if.js.map create mode 100644 node_modules/rxjs/_esm5/observable/interval.js create mode 100644 node_modules/rxjs/_esm5/observable/interval.js.map create mode 100644 node_modules/rxjs/_esm5/observable/merge.js create mode 100644 node_modules/rxjs/_esm5/observable/merge.js.map create mode 100644 node_modules/rxjs/_esm5/observable/never.js create mode 100644 node_modules/rxjs/_esm5/observable/never.js.map create mode 100644 node_modules/rxjs/_esm5/observable/of.js create mode 100644 node_modules/rxjs/_esm5/observable/of.js.map create mode 100644 node_modules/rxjs/_esm5/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm5/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm5/observable/pairs.js create mode 100644 node_modules/rxjs/_esm5/observable/pairs.js.map create mode 100644 node_modules/rxjs/_esm5/observable/race.js create mode 100644 node_modules/rxjs/_esm5/observable/race.js.map create mode 100644 node_modules/rxjs/_esm5/observable/range.js create mode 100644 node_modules/rxjs/_esm5/observable/range.js.map create mode 100644 node_modules/rxjs/_esm5/observable/throw.js create mode 100644 node_modules/rxjs/_esm5/observable/throw.js.map create mode 100644 node_modules/rxjs/_esm5/observable/timer.js create mode 100644 node_modules/rxjs/_esm5/observable/timer.js.map create mode 100644 node_modules/rxjs/_esm5/observable/using.js create mode 100644 node_modules/rxjs/_esm5/observable/using.js.map create mode 100644 node_modules/rxjs/_esm5/observable/zip.js create mode 100644 node_modules/rxjs/_esm5/observable/zip.js.map create mode 100644 node_modules/rxjs/_esm5/operator/audit.js create mode 100644 node_modules/rxjs/_esm5/operator/audit.js.map create mode 100644 node_modules/rxjs/_esm5/operator/auditTime.js create mode 100644 node_modules/rxjs/_esm5/operator/auditTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/buffer.js create mode 100644 node_modules/rxjs/_esm5/operator/buffer.js.map create mode 100644 node_modules/rxjs/_esm5/operator/bufferCount.js create mode 100644 node_modules/rxjs/_esm5/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm5/operator/bufferTime.js create mode 100644 node_modules/rxjs/_esm5/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/bufferToggle.js create mode 100644 node_modules/rxjs/_esm5/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm5/operator/bufferWhen.js create mode 100644 node_modules/rxjs/_esm5/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operator/catch.js create mode 100644 node_modules/rxjs/_esm5/operator/catch.js.map create mode 100644 node_modules/rxjs/_esm5/operator/combineAll.js create mode 100644 node_modules/rxjs/_esm5/operator/combineAll.js.map create mode 100644 node_modules/rxjs/_esm5/operator/combineLatest.js create mode 100644 node_modules/rxjs/_esm5/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm5/operator/concat.js create mode 100644 node_modules/rxjs/_esm5/operator/concat.js.map create mode 100644 node_modules/rxjs/_esm5/operator/concatAll.js create mode 100644 node_modules/rxjs/_esm5/operator/concatAll.js.map create mode 100644 node_modules/rxjs/_esm5/operator/concatMap.js create mode 100644 node_modules/rxjs/_esm5/operator/concatMap.js.map create mode 100644 node_modules/rxjs/_esm5/operator/concatMapTo.js create mode 100644 node_modules/rxjs/_esm5/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operator/count.js create mode 100644 node_modules/rxjs/_esm5/operator/count.js.map create mode 100644 node_modules/rxjs/_esm5/operator/debounce.js create mode 100644 node_modules/rxjs/_esm5/operator/debounce.js.map create mode 100644 node_modules/rxjs/_esm5/operator/debounceTime.js create mode 100644 node_modules/rxjs/_esm5/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm5/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/operator/delay.js create mode 100644 node_modules/rxjs/_esm5/operator/delay.js.map create mode 100644 node_modules/rxjs/_esm5/operator/delayWhen.js create mode 100644 node_modules/rxjs/_esm5/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operator/dematerialize.js create mode 100644 node_modules/rxjs/_esm5/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm5/operator/distinct.js create mode 100644 node_modules/rxjs/_esm5/operator/distinct.js.map create mode 100644 node_modules/rxjs/_esm5/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm5/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm5/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm5/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm5/operator/do.js create mode 100644 node_modules/rxjs/_esm5/operator/do.js.map create mode 100644 node_modules/rxjs/_esm5/operator/elementAt.js create mode 100644 node_modules/rxjs/_esm5/operator/elementAt.js.map create mode 100644 node_modules/rxjs/_esm5/operator/every.js create mode 100644 node_modules/rxjs/_esm5/operator/every.js.map create mode 100644 node_modules/rxjs/_esm5/operator/exhaust.js create mode 100644 node_modules/rxjs/_esm5/operator/exhaust.js.map create mode 100644 node_modules/rxjs/_esm5/operator/exhaustMap.js create mode 100644 node_modules/rxjs/_esm5/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm5/operator/expand.js create mode 100644 node_modules/rxjs/_esm5/operator/expand.js.map create mode 100644 node_modules/rxjs/_esm5/operator/filter.js create mode 100644 node_modules/rxjs/_esm5/operator/filter.js.map create mode 100644 node_modules/rxjs/_esm5/operator/finally.js create mode 100644 node_modules/rxjs/_esm5/operator/finally.js.map create mode 100644 node_modules/rxjs/_esm5/operator/find.js create mode 100644 node_modules/rxjs/_esm5/operator/find.js.map create mode 100644 node_modules/rxjs/_esm5/operator/findIndex.js create mode 100644 node_modules/rxjs/_esm5/operator/findIndex.js.map create mode 100644 node_modules/rxjs/_esm5/operator/first.js create mode 100644 node_modules/rxjs/_esm5/operator/first.js.map create mode 100644 node_modules/rxjs/_esm5/operator/groupBy.js create mode 100644 node_modules/rxjs/_esm5/operator/groupBy.js.map create mode 100644 node_modules/rxjs/_esm5/operator/ignoreElements.js create mode 100644 node_modules/rxjs/_esm5/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm5/operator/isEmpty.js create mode 100644 node_modules/rxjs/_esm5/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/operator/last.js create mode 100644 node_modules/rxjs/_esm5/operator/last.js.map create mode 100644 node_modules/rxjs/_esm5/operator/let.js create mode 100644 node_modules/rxjs/_esm5/operator/let.js.map create mode 100644 node_modules/rxjs/_esm5/operator/map.js create mode 100644 node_modules/rxjs/_esm5/operator/map.js.map create mode 100644 node_modules/rxjs/_esm5/operator/mapTo.js create mode 100644 node_modules/rxjs/_esm5/operator/mapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operator/materialize.js create mode 100644 node_modules/rxjs/_esm5/operator/materialize.js.map create mode 100644 node_modules/rxjs/_esm5/operator/max.js create mode 100644 node_modules/rxjs/_esm5/operator/max.js.map create mode 100644 node_modules/rxjs/_esm5/operator/merge.js create mode 100644 node_modules/rxjs/_esm5/operator/merge.js.map create mode 100644 node_modules/rxjs/_esm5/operator/mergeAll.js create mode 100644 node_modules/rxjs/_esm5/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm5/operator/mergeMap.js create mode 100644 node_modules/rxjs/_esm5/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm5/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm5/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operator/mergeScan.js create mode 100644 node_modules/rxjs/_esm5/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm5/operator/min.js create mode 100644 node_modules/rxjs/_esm5/operator/min.js.map create mode 100644 node_modules/rxjs/_esm5/operator/multicast.js create mode 100644 node_modules/rxjs/_esm5/operator/multicast.js.map create mode 100644 node_modules/rxjs/_esm5/operator/observeOn.js create mode 100644 node_modules/rxjs/_esm5/operator/observeOn.js.map create mode 100644 node_modules/rxjs/_esm5/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm5/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm5/operator/pairwise.js create mode 100644 node_modules/rxjs/_esm5/operator/pairwise.js.map create mode 100644 node_modules/rxjs/_esm5/operator/partition.js create mode 100644 node_modules/rxjs/_esm5/operator/partition.js.map create mode 100644 node_modules/rxjs/_esm5/operator/pluck.js create mode 100644 node_modules/rxjs/_esm5/operator/pluck.js.map create mode 100644 node_modules/rxjs/_esm5/operator/publish.js create mode 100644 node_modules/rxjs/_esm5/operator/publish.js.map create mode 100644 node_modules/rxjs/_esm5/operator/publishBehavior.js create mode 100644 node_modules/rxjs/_esm5/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm5/operator/publishLast.js create mode 100644 node_modules/rxjs/_esm5/operator/publishLast.js.map create mode 100644 node_modules/rxjs/_esm5/operator/publishReplay.js create mode 100644 node_modules/rxjs/_esm5/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm5/operator/race.js create mode 100644 node_modules/rxjs/_esm5/operator/race.js.map create mode 100644 node_modules/rxjs/_esm5/operator/reduce.js create mode 100644 node_modules/rxjs/_esm5/operator/reduce.js.map create mode 100644 node_modules/rxjs/_esm5/operator/repeat.js create mode 100644 node_modules/rxjs/_esm5/operator/repeat.js.map create mode 100644 node_modules/rxjs/_esm5/operator/repeatWhen.js create mode 100644 node_modules/rxjs/_esm5/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operator/retry.js create mode 100644 node_modules/rxjs/_esm5/operator/retry.js.map create mode 100644 node_modules/rxjs/_esm5/operator/retryWhen.js create mode 100644 node_modules/rxjs/_esm5/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operator/sample.js create mode 100644 node_modules/rxjs/_esm5/operator/sample.js.map create mode 100644 node_modules/rxjs/_esm5/operator/sampleTime.js create mode 100644 node_modules/rxjs/_esm5/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/scan.js create mode 100644 node_modules/rxjs/_esm5/operator/scan.js.map create mode 100644 node_modules/rxjs/_esm5/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm5/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm5/operator/share.js create mode 100644 node_modules/rxjs/_esm5/operator/share.js.map create mode 100644 node_modules/rxjs/_esm5/operator/shareReplay.js create mode 100644 node_modules/rxjs/_esm5/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm5/operator/single.js create mode 100644 node_modules/rxjs/_esm5/operator/single.js.map create mode 100644 node_modules/rxjs/_esm5/operator/skip.js create mode 100644 node_modules/rxjs/_esm5/operator/skip.js.map create mode 100644 node_modules/rxjs/_esm5/operator/skipLast.js create mode 100644 node_modules/rxjs/_esm5/operator/skipLast.js.map create mode 100644 node_modules/rxjs/_esm5/operator/skipUntil.js create mode 100644 node_modules/rxjs/_esm5/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm5/operator/skipWhile.js create mode 100644 node_modules/rxjs/_esm5/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm5/operator/startWith.js create mode 100644 node_modules/rxjs/_esm5/operator/startWith.js.map create mode 100644 node_modules/rxjs/_esm5/operator/subscribeOn.js create mode 100644 node_modules/rxjs/_esm5/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm5/operator/switch.js create mode 100644 node_modules/rxjs/_esm5/operator/switch.js.map create mode 100644 node_modules/rxjs/_esm5/operator/switchMap.js create mode 100644 node_modules/rxjs/_esm5/operator/switchMap.js.map create mode 100644 node_modules/rxjs/_esm5/operator/switchMapTo.js create mode 100644 node_modules/rxjs/_esm5/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operator/take.js create mode 100644 node_modules/rxjs/_esm5/operator/take.js.map create mode 100644 node_modules/rxjs/_esm5/operator/takeLast.js create mode 100644 node_modules/rxjs/_esm5/operator/takeLast.js.map create mode 100644 node_modules/rxjs/_esm5/operator/takeUntil.js create mode 100644 node_modules/rxjs/_esm5/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm5/operator/takeWhile.js create mode 100644 node_modules/rxjs/_esm5/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm5/operator/throttle.js create mode 100644 node_modules/rxjs/_esm5/operator/throttle.js.map create mode 100644 node_modules/rxjs/_esm5/operator/throttleTime.js create mode 100644 node_modules/rxjs/_esm5/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/timeInterval.js create mode 100644 node_modules/rxjs/_esm5/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm5/operator/timeout.js create mode 100644 node_modules/rxjs/_esm5/operator/timeout.js.map create mode 100644 node_modules/rxjs/_esm5/operator/timeoutWith.js create mode 100644 node_modules/rxjs/_esm5/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm5/operator/timestamp.js create mode 100644 node_modules/rxjs/_esm5/operator/timestamp.js.map create mode 100644 node_modules/rxjs/_esm5/operator/toArray.js create mode 100644 node_modules/rxjs/_esm5/operator/toArray.js.map create mode 100644 node_modules/rxjs/_esm5/operator/toPromise.js create mode 100644 node_modules/rxjs/_esm5/operator/toPromise.js.map create mode 100644 node_modules/rxjs/_esm5/operator/window.js create mode 100644 node_modules/rxjs/_esm5/operator/window.js.map create mode 100644 node_modules/rxjs/_esm5/operator/windowCount.js create mode 100644 node_modules/rxjs/_esm5/operator/windowCount.js.map create mode 100644 node_modules/rxjs/_esm5/operator/windowTime.js create mode 100644 node_modules/rxjs/_esm5/operator/windowTime.js.map create mode 100644 node_modules/rxjs/_esm5/operator/windowToggle.js create mode 100644 node_modules/rxjs/_esm5/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm5/operator/windowWhen.js create mode 100644 node_modules/rxjs/_esm5/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm5/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm5/operator/zip.js create mode 100644 node_modules/rxjs/_esm5/operator/zip.js.map create mode 100644 node_modules/rxjs/_esm5/operator/zipAll.js create mode 100644 node_modules/rxjs/_esm5/operator/zipAll.js.map create mode 100644 node_modules/rxjs/_esm5/operators.js create mode 100644 node_modules/rxjs/_esm5/operators.js.map create mode 100644 node_modules/rxjs/_esm5/operators/audit.js create mode 100644 node_modules/rxjs/_esm5/operators/audit.js.map create mode 100644 node_modules/rxjs/_esm5/operators/auditTime.js create mode 100644 node_modules/rxjs/_esm5/operators/auditTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/buffer.js create mode 100644 node_modules/rxjs/_esm5/operators/buffer.js.map create mode 100644 node_modules/rxjs/_esm5/operators/bufferCount.js create mode 100644 node_modules/rxjs/_esm5/operators/bufferCount.js.map create mode 100644 node_modules/rxjs/_esm5/operators/bufferTime.js create mode 100644 node_modules/rxjs/_esm5/operators/bufferTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/bufferToggle.js create mode 100644 node_modules/rxjs/_esm5/operators/bufferToggle.js.map create mode 100644 node_modules/rxjs/_esm5/operators/bufferWhen.js create mode 100644 node_modules/rxjs/_esm5/operators/bufferWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operators/catchError.js create mode 100644 node_modules/rxjs/_esm5/operators/catchError.js.map create mode 100644 node_modules/rxjs/_esm5/operators/combineAll.js create mode 100644 node_modules/rxjs/_esm5/operators/combineAll.js.map create mode 100644 node_modules/rxjs/_esm5/operators/combineLatest.js create mode 100644 node_modules/rxjs/_esm5/operators/combineLatest.js.map create mode 100644 node_modules/rxjs/_esm5/operators/concat.js create mode 100644 node_modules/rxjs/_esm5/operators/concat.js.map create mode 100644 node_modules/rxjs/_esm5/operators/concatAll.js create mode 100644 node_modules/rxjs/_esm5/operators/concatAll.js.map create mode 100644 node_modules/rxjs/_esm5/operators/concatMap.js create mode 100644 node_modules/rxjs/_esm5/operators/concatMap.js.map create mode 100644 node_modules/rxjs/_esm5/operators/concatMapTo.js create mode 100644 node_modules/rxjs/_esm5/operators/concatMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operators/count.js create mode 100644 node_modules/rxjs/_esm5/operators/count.js.map create mode 100644 node_modules/rxjs/_esm5/operators/debounce.js create mode 100644 node_modules/rxjs/_esm5/operators/debounce.js.map create mode 100644 node_modules/rxjs/_esm5/operators/debounceTime.js create mode 100644 node_modules/rxjs/_esm5/operators/debounceTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/defaultIfEmpty.js create mode 100644 node_modules/rxjs/_esm5/operators/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/operators/delay.js create mode 100644 node_modules/rxjs/_esm5/operators/delay.js.map create mode 100644 node_modules/rxjs/_esm5/operators/delayWhen.js create mode 100644 node_modules/rxjs/_esm5/operators/delayWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operators/dematerialize.js create mode 100644 node_modules/rxjs/_esm5/operators/dematerialize.js.map create mode 100644 node_modules/rxjs/_esm5/operators/distinct.js create mode 100644 node_modules/rxjs/_esm5/operators/distinct.js.map create mode 100644 node_modules/rxjs/_esm5/operators/distinctUntilChanged.js create mode 100644 node_modules/rxjs/_esm5/operators/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/_esm5/operators/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/_esm5/operators/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/_esm5/operators/elementAt.js create mode 100644 node_modules/rxjs/_esm5/operators/elementAt.js.map create mode 100644 node_modules/rxjs/_esm5/operators/every.js create mode 100644 node_modules/rxjs/_esm5/operators/every.js.map create mode 100644 node_modules/rxjs/_esm5/operators/exhaust.js create mode 100644 node_modules/rxjs/_esm5/operators/exhaust.js.map create mode 100644 node_modules/rxjs/_esm5/operators/exhaustMap.js create mode 100644 node_modules/rxjs/_esm5/operators/exhaustMap.js.map create mode 100644 node_modules/rxjs/_esm5/operators/expand.js create mode 100644 node_modules/rxjs/_esm5/operators/expand.js.map create mode 100644 node_modules/rxjs/_esm5/operators/filter.js create mode 100644 node_modules/rxjs/_esm5/operators/filter.js.map create mode 100644 node_modules/rxjs/_esm5/operators/finalize.js create mode 100644 node_modules/rxjs/_esm5/operators/finalize.js.map create mode 100644 node_modules/rxjs/_esm5/operators/find.js create mode 100644 node_modules/rxjs/_esm5/operators/find.js.map create mode 100644 node_modules/rxjs/_esm5/operators/findIndex.js create mode 100644 node_modules/rxjs/_esm5/operators/findIndex.js.map create mode 100644 node_modules/rxjs/_esm5/operators/first.js create mode 100644 node_modules/rxjs/_esm5/operators/first.js.map create mode 100644 node_modules/rxjs/_esm5/operators/groupBy.js create mode 100644 node_modules/rxjs/_esm5/operators/groupBy.js.map create mode 100644 node_modules/rxjs/_esm5/operators/ignoreElements.js create mode 100644 node_modules/rxjs/_esm5/operators/ignoreElements.js.map create mode 100644 node_modules/rxjs/_esm5/operators/isEmpty.js create mode 100644 node_modules/rxjs/_esm5/operators/isEmpty.js.map create mode 100644 node_modules/rxjs/_esm5/operators/last.js create mode 100644 node_modules/rxjs/_esm5/operators/last.js.map create mode 100644 node_modules/rxjs/_esm5/operators/map.js create mode 100644 node_modules/rxjs/_esm5/operators/map.js.map create mode 100644 node_modules/rxjs/_esm5/operators/mapTo.js create mode 100644 node_modules/rxjs/_esm5/operators/mapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operators/materialize.js create mode 100644 node_modules/rxjs/_esm5/operators/materialize.js.map create mode 100644 node_modules/rxjs/_esm5/operators/max.js create mode 100644 node_modules/rxjs/_esm5/operators/max.js.map create mode 100644 node_modules/rxjs/_esm5/operators/merge.js create mode 100644 node_modules/rxjs/_esm5/operators/merge.js.map create mode 100644 node_modules/rxjs/_esm5/operators/mergeAll.js create mode 100644 node_modules/rxjs/_esm5/operators/mergeAll.js.map create mode 100644 node_modules/rxjs/_esm5/operators/mergeMap.js create mode 100644 node_modules/rxjs/_esm5/operators/mergeMap.js.map create mode 100644 node_modules/rxjs/_esm5/operators/mergeMapTo.js create mode 100644 node_modules/rxjs/_esm5/operators/mergeMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operators/mergeScan.js create mode 100644 node_modules/rxjs/_esm5/operators/mergeScan.js.map create mode 100644 node_modules/rxjs/_esm5/operators/min.js create mode 100644 node_modules/rxjs/_esm5/operators/min.js.map create mode 100644 node_modules/rxjs/_esm5/operators/multicast.js create mode 100644 node_modules/rxjs/_esm5/operators/multicast.js.map create mode 100644 node_modules/rxjs/_esm5/operators/observeOn.js create mode 100644 node_modules/rxjs/_esm5/operators/observeOn.js.map create mode 100644 node_modules/rxjs/_esm5/operators/onErrorResumeNext.js create mode 100644 node_modules/rxjs/_esm5/operators/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/_esm5/operators/pairwise.js create mode 100644 node_modules/rxjs/_esm5/operators/pairwise.js.map create mode 100644 node_modules/rxjs/_esm5/operators/partition.js create mode 100644 node_modules/rxjs/_esm5/operators/partition.js.map create mode 100644 node_modules/rxjs/_esm5/operators/pluck.js create mode 100644 node_modules/rxjs/_esm5/operators/pluck.js.map create mode 100644 node_modules/rxjs/_esm5/operators/publish.js create mode 100644 node_modules/rxjs/_esm5/operators/publish.js.map create mode 100644 node_modules/rxjs/_esm5/operators/publishBehavior.js create mode 100644 node_modules/rxjs/_esm5/operators/publishBehavior.js.map create mode 100644 node_modules/rxjs/_esm5/operators/publishLast.js create mode 100644 node_modules/rxjs/_esm5/operators/publishLast.js.map create mode 100644 node_modules/rxjs/_esm5/operators/publishReplay.js create mode 100644 node_modules/rxjs/_esm5/operators/publishReplay.js.map create mode 100644 node_modules/rxjs/_esm5/operators/race.js create mode 100644 node_modules/rxjs/_esm5/operators/race.js.map create mode 100644 node_modules/rxjs/_esm5/operators/reduce.js create mode 100644 node_modules/rxjs/_esm5/operators/reduce.js.map create mode 100644 node_modules/rxjs/_esm5/operators/refCount.js create mode 100644 node_modules/rxjs/_esm5/operators/refCount.js.map create mode 100644 node_modules/rxjs/_esm5/operators/repeat.js create mode 100644 node_modules/rxjs/_esm5/operators/repeat.js.map create mode 100644 node_modules/rxjs/_esm5/operators/repeatWhen.js create mode 100644 node_modules/rxjs/_esm5/operators/repeatWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operators/retry.js create mode 100644 node_modules/rxjs/_esm5/operators/retry.js.map create mode 100644 node_modules/rxjs/_esm5/operators/retryWhen.js create mode 100644 node_modules/rxjs/_esm5/operators/retryWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operators/sample.js create mode 100644 node_modules/rxjs/_esm5/operators/sample.js.map create mode 100644 node_modules/rxjs/_esm5/operators/sampleTime.js create mode 100644 node_modules/rxjs/_esm5/operators/sampleTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/scan.js create mode 100644 node_modules/rxjs/_esm5/operators/scan.js.map create mode 100644 node_modules/rxjs/_esm5/operators/sequenceEqual.js create mode 100644 node_modules/rxjs/_esm5/operators/sequenceEqual.js.map create mode 100644 node_modules/rxjs/_esm5/operators/share.js create mode 100644 node_modules/rxjs/_esm5/operators/share.js.map create mode 100644 node_modules/rxjs/_esm5/operators/shareReplay.js create mode 100644 node_modules/rxjs/_esm5/operators/shareReplay.js.map create mode 100644 node_modules/rxjs/_esm5/operators/single.js create mode 100644 node_modules/rxjs/_esm5/operators/single.js.map create mode 100644 node_modules/rxjs/_esm5/operators/skip.js create mode 100644 node_modules/rxjs/_esm5/operators/skip.js.map create mode 100644 node_modules/rxjs/_esm5/operators/skipLast.js create mode 100644 node_modules/rxjs/_esm5/operators/skipLast.js.map create mode 100644 node_modules/rxjs/_esm5/operators/skipUntil.js create mode 100644 node_modules/rxjs/_esm5/operators/skipUntil.js.map create mode 100644 node_modules/rxjs/_esm5/operators/skipWhile.js create mode 100644 node_modules/rxjs/_esm5/operators/skipWhile.js.map create mode 100644 node_modules/rxjs/_esm5/operators/startWith.js create mode 100644 node_modules/rxjs/_esm5/operators/startWith.js.map create mode 100644 node_modules/rxjs/_esm5/operators/subscribeOn.js create mode 100644 node_modules/rxjs/_esm5/operators/subscribeOn.js.map create mode 100644 node_modules/rxjs/_esm5/operators/switchAll.js create mode 100644 node_modules/rxjs/_esm5/operators/switchAll.js.map create mode 100644 node_modules/rxjs/_esm5/operators/switchMap.js create mode 100644 node_modules/rxjs/_esm5/operators/switchMap.js.map create mode 100644 node_modules/rxjs/_esm5/operators/switchMapTo.js create mode 100644 node_modules/rxjs/_esm5/operators/switchMapTo.js.map create mode 100644 node_modules/rxjs/_esm5/operators/take.js create mode 100644 node_modules/rxjs/_esm5/operators/take.js.map create mode 100644 node_modules/rxjs/_esm5/operators/takeLast.js create mode 100644 node_modules/rxjs/_esm5/operators/takeLast.js.map create mode 100644 node_modules/rxjs/_esm5/operators/takeUntil.js create mode 100644 node_modules/rxjs/_esm5/operators/takeUntil.js.map create mode 100644 node_modules/rxjs/_esm5/operators/takeWhile.js create mode 100644 node_modules/rxjs/_esm5/operators/takeWhile.js.map create mode 100644 node_modules/rxjs/_esm5/operators/tap.js create mode 100644 node_modules/rxjs/_esm5/operators/tap.js.map create mode 100644 node_modules/rxjs/_esm5/operators/throttle.js create mode 100644 node_modules/rxjs/_esm5/operators/throttle.js.map create mode 100644 node_modules/rxjs/_esm5/operators/throttleTime.js create mode 100644 node_modules/rxjs/_esm5/operators/throttleTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/timeInterval.js create mode 100644 node_modules/rxjs/_esm5/operators/timeInterval.js.map create mode 100644 node_modules/rxjs/_esm5/operators/timeout.js create mode 100644 node_modules/rxjs/_esm5/operators/timeout.js.map create mode 100644 node_modules/rxjs/_esm5/operators/timeoutWith.js create mode 100644 node_modules/rxjs/_esm5/operators/timeoutWith.js.map create mode 100644 node_modules/rxjs/_esm5/operators/timestamp.js create mode 100644 node_modules/rxjs/_esm5/operators/timestamp.js.map create mode 100644 node_modules/rxjs/_esm5/operators/toArray.js create mode 100644 node_modules/rxjs/_esm5/operators/toArray.js.map create mode 100644 node_modules/rxjs/_esm5/operators/window.js create mode 100644 node_modules/rxjs/_esm5/operators/window.js.map create mode 100644 node_modules/rxjs/_esm5/operators/windowCount.js create mode 100644 node_modules/rxjs/_esm5/operators/windowCount.js.map create mode 100644 node_modules/rxjs/_esm5/operators/windowTime.js create mode 100644 node_modules/rxjs/_esm5/operators/windowTime.js.map create mode 100644 node_modules/rxjs/_esm5/operators/windowToggle.js create mode 100644 node_modules/rxjs/_esm5/operators/windowToggle.js.map create mode 100644 node_modules/rxjs/_esm5/operators/windowWhen.js create mode 100644 node_modules/rxjs/_esm5/operators/windowWhen.js.map create mode 100644 node_modules/rxjs/_esm5/operators/withLatestFrom.js create mode 100644 node_modules/rxjs/_esm5/operators/withLatestFrom.js.map create mode 100644 node_modules/rxjs/_esm5/operators/zip.js create mode 100644 node_modules/rxjs/_esm5/operators/zip.js.map create mode 100644 node_modules/rxjs/_esm5/operators/zipAll.js create mode 100644 node_modules/rxjs/_esm5/operators/zipAll.js.map create mode 100644 node_modules/rxjs/_esm5/path-mapping.js create mode 100644 node_modules/rxjs/_esm5/scheduler/Action.js create mode 100644 node_modules/rxjs/_esm5/scheduler/Action.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AnimationFrameAction.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AnimationFrameAction.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AnimationFrameScheduler.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AnimationFrameScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AsapAction.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AsapAction.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AsapScheduler.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AsapScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AsyncAction.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AsyncAction.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/AsyncScheduler.js create mode 100644 node_modules/rxjs/_esm5/scheduler/AsyncScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/QueueAction.js create mode 100644 node_modules/rxjs/_esm5/scheduler/QueueAction.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/QueueScheduler.js create mode 100644 node_modules/rxjs/_esm5/scheduler/QueueScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/VirtualTimeScheduler.js create mode 100644 node_modules/rxjs/_esm5/scheduler/VirtualTimeScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/animationFrame.js create mode 100644 node_modules/rxjs/_esm5/scheduler/animationFrame.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/asap.js create mode 100644 node_modules/rxjs/_esm5/scheduler/asap.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/async.js create mode 100644 node_modules/rxjs/_esm5/scheduler/async.js.map create mode 100644 node_modules/rxjs/_esm5/scheduler/queue.js create mode 100644 node_modules/rxjs/_esm5/scheduler/queue.js.map create mode 100644 node_modules/rxjs/_esm5/symbol/iterator.js create mode 100644 node_modules/rxjs/_esm5/symbol/iterator.js.map create mode 100644 node_modules/rxjs/_esm5/symbol/observable.js create mode 100644 node_modules/rxjs/_esm5/symbol/observable.js.map create mode 100644 node_modules/rxjs/_esm5/symbol/rxSubscriber.js create mode 100644 node_modules/rxjs/_esm5/symbol/rxSubscriber.js.map create mode 100644 node_modules/rxjs/_esm5/testing/ColdObservable.js create mode 100644 node_modules/rxjs/_esm5/testing/ColdObservable.js.map create mode 100644 node_modules/rxjs/_esm5/testing/HotObservable.js create mode 100644 node_modules/rxjs/_esm5/testing/HotObservable.js.map create mode 100644 node_modules/rxjs/_esm5/testing/SubscriptionLog.js create mode 100644 node_modules/rxjs/_esm5/testing/SubscriptionLog.js.map create mode 100644 node_modules/rxjs/_esm5/testing/SubscriptionLoggable.js create mode 100644 node_modules/rxjs/_esm5/testing/SubscriptionLoggable.js.map create mode 100644 node_modules/rxjs/_esm5/testing/TestMessage.js create mode 100644 node_modules/rxjs/_esm5/testing/TestMessage.js.map create mode 100644 node_modules/rxjs/_esm5/testing/TestScheduler.js create mode 100644 node_modules/rxjs/_esm5/testing/TestScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/util/AnimationFrame.js create mode 100644 node_modules/rxjs/_esm5/util/AnimationFrame.js.map create mode 100644 node_modules/rxjs/_esm5/util/ArgumentOutOfRangeError.js create mode 100644 node_modules/rxjs/_esm5/util/ArgumentOutOfRangeError.js.map create mode 100644 node_modules/rxjs/_esm5/util/EmptyError.js create mode 100644 node_modules/rxjs/_esm5/util/EmptyError.js.map create mode 100644 node_modules/rxjs/_esm5/util/FastMap.js create mode 100644 node_modules/rxjs/_esm5/util/FastMap.js.map create mode 100644 node_modules/rxjs/_esm5/util/Immediate.js create mode 100644 node_modules/rxjs/_esm5/util/Immediate.js.map create mode 100644 node_modules/rxjs/_esm5/util/Map.js create mode 100644 node_modules/rxjs/_esm5/util/Map.js.map create mode 100644 node_modules/rxjs/_esm5/util/MapPolyfill.js create mode 100644 node_modules/rxjs/_esm5/util/MapPolyfill.js.map create mode 100644 node_modules/rxjs/_esm5/util/ObjectUnsubscribedError.js create mode 100644 node_modules/rxjs/_esm5/util/ObjectUnsubscribedError.js.map create mode 100644 node_modules/rxjs/_esm5/util/Set.js create mode 100644 node_modules/rxjs/_esm5/util/Set.js.map create mode 100644 node_modules/rxjs/_esm5/util/TimeoutError.js create mode 100644 node_modules/rxjs/_esm5/util/TimeoutError.js.map create mode 100644 node_modules/rxjs/_esm5/util/UnsubscriptionError.js create mode 100644 node_modules/rxjs/_esm5/util/UnsubscriptionError.js.map create mode 100644 node_modules/rxjs/_esm5/util/applyMixins.js create mode 100644 node_modules/rxjs/_esm5/util/applyMixins.js.map create mode 100644 node_modules/rxjs/_esm5/util/assign.js create mode 100644 node_modules/rxjs/_esm5/util/assign.js.map create mode 100644 node_modules/rxjs/_esm5/util/errorObject.js create mode 100644 node_modules/rxjs/_esm5/util/errorObject.js.map create mode 100644 node_modules/rxjs/_esm5/util/identity.js create mode 100644 node_modules/rxjs/_esm5/util/identity.js.map create mode 100644 node_modules/rxjs/_esm5/util/isArray.js create mode 100644 node_modules/rxjs/_esm5/util/isArray.js.map create mode 100644 node_modules/rxjs/_esm5/util/isArrayLike.js create mode 100644 node_modules/rxjs/_esm5/util/isArrayLike.js.map create mode 100644 node_modules/rxjs/_esm5/util/isDate.js create mode 100644 node_modules/rxjs/_esm5/util/isDate.js.map create mode 100644 node_modules/rxjs/_esm5/util/isFunction.js create mode 100644 node_modules/rxjs/_esm5/util/isFunction.js.map create mode 100644 node_modules/rxjs/_esm5/util/isNumeric.js create mode 100644 node_modules/rxjs/_esm5/util/isNumeric.js.map create mode 100644 node_modules/rxjs/_esm5/util/isObject.js create mode 100644 node_modules/rxjs/_esm5/util/isObject.js.map create mode 100644 node_modules/rxjs/_esm5/util/isPromise.js create mode 100644 node_modules/rxjs/_esm5/util/isPromise.js.map create mode 100644 node_modules/rxjs/_esm5/util/isScheduler.js create mode 100644 node_modules/rxjs/_esm5/util/isScheduler.js.map create mode 100644 node_modules/rxjs/_esm5/util/noop.js create mode 100644 node_modules/rxjs/_esm5/util/noop.js.map create mode 100644 node_modules/rxjs/_esm5/util/not.js create mode 100644 node_modules/rxjs/_esm5/util/not.js.map create mode 100644 node_modules/rxjs/_esm5/util/pipe.js create mode 100644 node_modules/rxjs/_esm5/util/pipe.js.map create mode 100644 node_modules/rxjs/_esm5/util/root.js create mode 100644 node_modules/rxjs/_esm5/util/root.js.map create mode 100644 node_modules/rxjs/_esm5/util/subscribeToResult.js create mode 100644 node_modules/rxjs/_esm5/util/subscribeToResult.js.map create mode 100644 node_modules/rxjs/_esm5/util/toSubscriber.js create mode 100644 node_modules/rxjs/_esm5/util/toSubscriber.js.map create mode 100644 node_modules/rxjs/_esm5/util/tryCatch.js create mode 100644 node_modules/rxjs/_esm5/util/tryCatch.js.map create mode 100644 node_modules/rxjs/add/observable/bindCallback.d.ts create mode 100644 node_modules/rxjs/add/observable/bindCallback.js create mode 100644 node_modules/rxjs/add/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/add/observable/bindNodeCallback.d.ts create mode 100644 node_modules/rxjs/add/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/add/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/add/observable/combineLatest.d.ts create mode 100644 node_modules/rxjs/add/observable/combineLatest.js create mode 100644 node_modules/rxjs/add/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/add/observable/concat.d.ts create mode 100644 node_modules/rxjs/add/observable/concat.js create mode 100644 node_modules/rxjs/add/observable/concat.js.map create mode 100644 node_modules/rxjs/add/observable/defer.d.ts create mode 100644 node_modules/rxjs/add/observable/defer.js create mode 100644 node_modules/rxjs/add/observable/defer.js.map create mode 100644 node_modules/rxjs/add/observable/dom/ajax.d.ts create mode 100644 node_modules/rxjs/add/observable/dom/ajax.js create mode 100644 node_modules/rxjs/add/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/add/observable/dom/webSocket.d.ts create mode 100644 node_modules/rxjs/add/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/add/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/add/observable/empty.d.ts create mode 100644 node_modules/rxjs/add/observable/empty.js create mode 100644 node_modules/rxjs/add/observable/empty.js.map create mode 100644 node_modules/rxjs/add/observable/forkJoin.d.ts create mode 100644 node_modules/rxjs/add/observable/forkJoin.js create mode 100644 node_modules/rxjs/add/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/add/observable/from.d.ts create mode 100644 node_modules/rxjs/add/observable/from.js create mode 100644 node_modules/rxjs/add/observable/from.js.map create mode 100644 node_modules/rxjs/add/observable/fromEvent.d.ts create mode 100644 node_modules/rxjs/add/observable/fromEvent.js create mode 100644 node_modules/rxjs/add/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/add/observable/fromEventPattern.d.ts create mode 100644 node_modules/rxjs/add/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/add/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/add/observable/fromPromise.d.ts create mode 100644 node_modules/rxjs/add/observable/fromPromise.js create mode 100644 node_modules/rxjs/add/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/add/observable/generate.d.ts create mode 100644 node_modules/rxjs/add/observable/generate.js create mode 100644 node_modules/rxjs/add/observable/generate.js.map create mode 100644 node_modules/rxjs/add/observable/if.d.ts create mode 100644 node_modules/rxjs/add/observable/if.js create mode 100644 node_modules/rxjs/add/observable/if.js.map create mode 100644 node_modules/rxjs/add/observable/interval.d.ts create mode 100644 node_modules/rxjs/add/observable/interval.js create mode 100644 node_modules/rxjs/add/observable/interval.js.map create mode 100644 node_modules/rxjs/add/observable/merge.d.ts create mode 100644 node_modules/rxjs/add/observable/merge.js create mode 100644 node_modules/rxjs/add/observable/merge.js.map create mode 100644 node_modules/rxjs/add/observable/never.d.ts create mode 100644 node_modules/rxjs/add/observable/never.js create mode 100644 node_modules/rxjs/add/observable/never.js.map create mode 100644 node_modules/rxjs/add/observable/of.d.ts create mode 100644 node_modules/rxjs/add/observable/of.js create mode 100644 node_modules/rxjs/add/observable/of.js.map create mode 100644 node_modules/rxjs/add/observable/onErrorResumeNext.d.ts create mode 100644 node_modules/rxjs/add/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/add/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/add/observable/pairs.d.ts create mode 100644 node_modules/rxjs/add/observable/pairs.js create mode 100644 node_modules/rxjs/add/observable/pairs.js.map create mode 100644 node_modules/rxjs/add/observable/race.d.ts create mode 100644 node_modules/rxjs/add/observable/race.js create mode 100644 node_modules/rxjs/add/observable/race.js.map create mode 100644 node_modules/rxjs/add/observable/range.d.ts create mode 100644 node_modules/rxjs/add/observable/range.js create mode 100644 node_modules/rxjs/add/observable/range.js.map create mode 100644 node_modules/rxjs/add/observable/throw.d.ts create mode 100644 node_modules/rxjs/add/observable/throw.js create mode 100644 node_modules/rxjs/add/observable/throw.js.map create mode 100644 node_modules/rxjs/add/observable/timer.d.ts create mode 100644 node_modules/rxjs/add/observable/timer.js create mode 100644 node_modules/rxjs/add/observable/timer.js.map create mode 100644 node_modules/rxjs/add/observable/using.d.ts create mode 100644 node_modules/rxjs/add/observable/using.js create mode 100644 node_modules/rxjs/add/observable/using.js.map create mode 100644 node_modules/rxjs/add/observable/zip.d.ts create mode 100644 node_modules/rxjs/add/observable/zip.js create mode 100644 node_modules/rxjs/add/observable/zip.js.map create mode 100644 node_modules/rxjs/add/operator/audit.d.ts create mode 100644 node_modules/rxjs/add/operator/audit.js create mode 100644 node_modules/rxjs/add/operator/audit.js.map create mode 100644 node_modules/rxjs/add/operator/auditTime.d.ts create mode 100644 node_modules/rxjs/add/operator/auditTime.js create mode 100644 node_modules/rxjs/add/operator/auditTime.js.map create mode 100644 node_modules/rxjs/add/operator/buffer.d.ts create mode 100644 node_modules/rxjs/add/operator/buffer.js create mode 100644 node_modules/rxjs/add/operator/buffer.js.map create mode 100644 node_modules/rxjs/add/operator/bufferCount.d.ts create mode 100644 node_modules/rxjs/add/operator/bufferCount.js create mode 100644 node_modules/rxjs/add/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/add/operator/bufferTime.d.ts create mode 100644 node_modules/rxjs/add/operator/bufferTime.js create mode 100644 node_modules/rxjs/add/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/add/operator/bufferToggle.d.ts create mode 100644 node_modules/rxjs/add/operator/bufferToggle.js create mode 100644 node_modules/rxjs/add/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/add/operator/bufferWhen.d.ts create mode 100644 node_modules/rxjs/add/operator/bufferWhen.js create mode 100644 node_modules/rxjs/add/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/add/operator/catch.d.ts create mode 100644 node_modules/rxjs/add/operator/catch.js create mode 100644 node_modules/rxjs/add/operator/catch.js.map create mode 100644 node_modules/rxjs/add/operator/combineAll.d.ts create mode 100644 node_modules/rxjs/add/operator/combineAll.js create mode 100644 node_modules/rxjs/add/operator/combineAll.js.map create mode 100644 node_modules/rxjs/add/operator/combineLatest.d.ts create mode 100644 node_modules/rxjs/add/operator/combineLatest.js create mode 100644 node_modules/rxjs/add/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/add/operator/concat.d.ts create mode 100644 node_modules/rxjs/add/operator/concat.js create mode 100644 node_modules/rxjs/add/operator/concat.js.map create mode 100644 node_modules/rxjs/add/operator/concatAll.d.ts create mode 100644 node_modules/rxjs/add/operator/concatAll.js create mode 100644 node_modules/rxjs/add/operator/concatAll.js.map create mode 100644 node_modules/rxjs/add/operator/concatMap.d.ts create mode 100644 node_modules/rxjs/add/operator/concatMap.js create mode 100644 node_modules/rxjs/add/operator/concatMap.js.map create mode 100644 node_modules/rxjs/add/operator/concatMapTo.d.ts create mode 100644 node_modules/rxjs/add/operator/concatMapTo.js create mode 100644 node_modules/rxjs/add/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/add/operator/count.d.ts create mode 100644 node_modules/rxjs/add/operator/count.js create mode 100644 node_modules/rxjs/add/operator/count.js.map create mode 100644 node_modules/rxjs/add/operator/debounce.d.ts create mode 100644 node_modules/rxjs/add/operator/debounce.js create mode 100644 node_modules/rxjs/add/operator/debounce.js.map create mode 100644 node_modules/rxjs/add/operator/debounceTime.d.ts create mode 100644 node_modules/rxjs/add/operator/debounceTime.js create mode 100644 node_modules/rxjs/add/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/add/operator/defaultIfEmpty.d.ts create mode 100644 node_modules/rxjs/add/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/add/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/add/operator/delay.d.ts create mode 100644 node_modules/rxjs/add/operator/delay.js create mode 100644 node_modules/rxjs/add/operator/delay.js.map create mode 100644 node_modules/rxjs/add/operator/delayWhen.d.ts create mode 100644 node_modules/rxjs/add/operator/delayWhen.js create mode 100644 node_modules/rxjs/add/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/add/operator/dematerialize.d.ts create mode 100644 node_modules/rxjs/add/operator/dematerialize.js create mode 100644 node_modules/rxjs/add/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/add/operator/distinct.d.ts create mode 100644 node_modules/rxjs/add/operator/distinct.js create mode 100644 node_modules/rxjs/add/operator/distinct.js.map create mode 100644 node_modules/rxjs/add/operator/distinctUntilChanged.d.ts create mode 100644 node_modules/rxjs/add/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/add/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/add/operator/distinctUntilKeyChanged.d.ts create mode 100644 node_modules/rxjs/add/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/add/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/add/operator/do.d.ts create mode 100644 node_modules/rxjs/add/operator/do.js create mode 100644 node_modules/rxjs/add/operator/do.js.map create mode 100644 node_modules/rxjs/add/operator/elementAt.d.ts create mode 100644 node_modules/rxjs/add/operator/elementAt.js create mode 100644 node_modules/rxjs/add/operator/elementAt.js.map create mode 100644 node_modules/rxjs/add/operator/every.d.ts create mode 100644 node_modules/rxjs/add/operator/every.js create mode 100644 node_modules/rxjs/add/operator/every.js.map create mode 100644 node_modules/rxjs/add/operator/exhaust.d.ts create mode 100644 node_modules/rxjs/add/operator/exhaust.js create mode 100644 node_modules/rxjs/add/operator/exhaust.js.map create mode 100644 node_modules/rxjs/add/operator/exhaustMap.d.ts create mode 100644 node_modules/rxjs/add/operator/exhaustMap.js create mode 100644 node_modules/rxjs/add/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/add/operator/expand.d.ts create mode 100644 node_modules/rxjs/add/operator/expand.js create mode 100644 node_modules/rxjs/add/operator/expand.js.map create mode 100644 node_modules/rxjs/add/operator/filter.d.ts create mode 100644 node_modules/rxjs/add/operator/filter.js create mode 100644 node_modules/rxjs/add/operator/filter.js.map create mode 100644 node_modules/rxjs/add/operator/finally.d.ts create mode 100644 node_modules/rxjs/add/operator/finally.js create mode 100644 node_modules/rxjs/add/operator/finally.js.map create mode 100644 node_modules/rxjs/add/operator/find.d.ts create mode 100644 node_modules/rxjs/add/operator/find.js create mode 100644 node_modules/rxjs/add/operator/find.js.map create mode 100644 node_modules/rxjs/add/operator/findIndex.d.ts create mode 100644 node_modules/rxjs/add/operator/findIndex.js create mode 100644 node_modules/rxjs/add/operator/findIndex.js.map create mode 100644 node_modules/rxjs/add/operator/first.d.ts create mode 100644 node_modules/rxjs/add/operator/first.js create mode 100644 node_modules/rxjs/add/operator/first.js.map create mode 100644 node_modules/rxjs/add/operator/groupBy.d.ts create mode 100644 node_modules/rxjs/add/operator/groupBy.js create mode 100644 node_modules/rxjs/add/operator/groupBy.js.map create mode 100644 node_modules/rxjs/add/operator/ignoreElements.d.ts create mode 100644 node_modules/rxjs/add/operator/ignoreElements.js create mode 100644 node_modules/rxjs/add/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/add/operator/isEmpty.d.ts create mode 100644 node_modules/rxjs/add/operator/isEmpty.js create mode 100644 node_modules/rxjs/add/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/add/operator/last.d.ts create mode 100644 node_modules/rxjs/add/operator/last.js create mode 100644 node_modules/rxjs/add/operator/last.js.map create mode 100644 node_modules/rxjs/add/operator/let.d.ts create mode 100644 node_modules/rxjs/add/operator/let.js create mode 100644 node_modules/rxjs/add/operator/let.js.map create mode 100644 node_modules/rxjs/add/operator/map.d.ts create mode 100644 node_modules/rxjs/add/operator/map.js create mode 100644 node_modules/rxjs/add/operator/map.js.map create mode 100644 node_modules/rxjs/add/operator/mapTo.d.ts create mode 100644 node_modules/rxjs/add/operator/mapTo.js create mode 100644 node_modules/rxjs/add/operator/mapTo.js.map create mode 100644 node_modules/rxjs/add/operator/materialize.d.ts create mode 100644 node_modules/rxjs/add/operator/materialize.js create mode 100644 node_modules/rxjs/add/operator/materialize.js.map create mode 100644 node_modules/rxjs/add/operator/max.d.ts create mode 100644 node_modules/rxjs/add/operator/max.js create mode 100644 node_modules/rxjs/add/operator/max.js.map create mode 100644 node_modules/rxjs/add/operator/merge.d.ts create mode 100644 node_modules/rxjs/add/operator/merge.js create mode 100644 node_modules/rxjs/add/operator/merge.js.map create mode 100644 node_modules/rxjs/add/operator/mergeAll.d.ts create mode 100644 node_modules/rxjs/add/operator/mergeAll.js create mode 100644 node_modules/rxjs/add/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/add/operator/mergeMap.d.ts create mode 100644 node_modules/rxjs/add/operator/mergeMap.js create mode 100644 node_modules/rxjs/add/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/add/operator/mergeMapTo.d.ts create mode 100644 node_modules/rxjs/add/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/add/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/add/operator/mergeScan.d.ts create mode 100644 node_modules/rxjs/add/operator/mergeScan.js create mode 100644 node_modules/rxjs/add/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/add/operator/min.d.ts create mode 100644 node_modules/rxjs/add/operator/min.js create mode 100644 node_modules/rxjs/add/operator/min.js.map create mode 100644 node_modules/rxjs/add/operator/multicast.d.ts create mode 100644 node_modules/rxjs/add/operator/multicast.js create mode 100644 node_modules/rxjs/add/operator/multicast.js.map create mode 100644 node_modules/rxjs/add/operator/observeOn.d.ts create mode 100644 node_modules/rxjs/add/operator/observeOn.js create mode 100644 node_modules/rxjs/add/operator/observeOn.js.map create mode 100644 node_modules/rxjs/add/operator/onErrorResumeNext.d.ts create mode 100644 node_modules/rxjs/add/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/add/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/add/operator/pairwise.d.ts create mode 100644 node_modules/rxjs/add/operator/pairwise.js create mode 100644 node_modules/rxjs/add/operator/pairwise.js.map create mode 100644 node_modules/rxjs/add/operator/partition.d.ts create mode 100644 node_modules/rxjs/add/operator/partition.js create mode 100644 node_modules/rxjs/add/operator/partition.js.map create mode 100644 node_modules/rxjs/add/operator/pluck.d.ts create mode 100644 node_modules/rxjs/add/operator/pluck.js create mode 100644 node_modules/rxjs/add/operator/pluck.js.map create mode 100644 node_modules/rxjs/add/operator/publish.d.ts create mode 100644 node_modules/rxjs/add/operator/publish.js create mode 100644 node_modules/rxjs/add/operator/publish.js.map create mode 100644 node_modules/rxjs/add/operator/publishBehavior.d.ts create mode 100644 node_modules/rxjs/add/operator/publishBehavior.js create mode 100644 node_modules/rxjs/add/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/add/operator/publishLast.d.ts create mode 100644 node_modules/rxjs/add/operator/publishLast.js create mode 100644 node_modules/rxjs/add/operator/publishLast.js.map create mode 100644 node_modules/rxjs/add/operator/publishReplay.d.ts create mode 100644 node_modules/rxjs/add/operator/publishReplay.js create mode 100644 node_modules/rxjs/add/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/add/operator/race.d.ts create mode 100644 node_modules/rxjs/add/operator/race.js create mode 100644 node_modules/rxjs/add/operator/race.js.map create mode 100644 node_modules/rxjs/add/operator/reduce.d.ts create mode 100644 node_modules/rxjs/add/operator/reduce.js create mode 100644 node_modules/rxjs/add/operator/reduce.js.map create mode 100644 node_modules/rxjs/add/operator/repeat.d.ts create mode 100644 node_modules/rxjs/add/operator/repeat.js create mode 100644 node_modules/rxjs/add/operator/repeat.js.map create mode 100644 node_modules/rxjs/add/operator/repeatWhen.d.ts create mode 100644 node_modules/rxjs/add/operator/repeatWhen.js create mode 100644 node_modules/rxjs/add/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/add/operator/retry.d.ts create mode 100644 node_modules/rxjs/add/operator/retry.js create mode 100644 node_modules/rxjs/add/operator/retry.js.map create mode 100644 node_modules/rxjs/add/operator/retryWhen.d.ts create mode 100644 node_modules/rxjs/add/operator/retryWhen.js create mode 100644 node_modules/rxjs/add/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/add/operator/sample.d.ts create mode 100644 node_modules/rxjs/add/operator/sample.js create mode 100644 node_modules/rxjs/add/operator/sample.js.map create mode 100644 node_modules/rxjs/add/operator/sampleTime.d.ts create mode 100644 node_modules/rxjs/add/operator/sampleTime.js create mode 100644 node_modules/rxjs/add/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/add/operator/scan.d.ts create mode 100644 node_modules/rxjs/add/operator/scan.js create mode 100644 node_modules/rxjs/add/operator/scan.js.map create mode 100644 node_modules/rxjs/add/operator/sequenceEqual.d.ts create mode 100644 node_modules/rxjs/add/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/add/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/add/operator/share.d.ts create mode 100644 node_modules/rxjs/add/operator/share.js create mode 100644 node_modules/rxjs/add/operator/share.js.map create mode 100644 node_modules/rxjs/add/operator/shareReplay.d.ts create mode 100644 node_modules/rxjs/add/operator/shareReplay.js create mode 100644 node_modules/rxjs/add/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/add/operator/single.d.ts create mode 100644 node_modules/rxjs/add/operator/single.js create mode 100644 node_modules/rxjs/add/operator/single.js.map create mode 100644 node_modules/rxjs/add/operator/skip.d.ts create mode 100644 node_modules/rxjs/add/operator/skip.js create mode 100644 node_modules/rxjs/add/operator/skip.js.map create mode 100644 node_modules/rxjs/add/operator/skipLast.d.ts create mode 100644 node_modules/rxjs/add/operator/skipLast.js create mode 100644 node_modules/rxjs/add/operator/skipLast.js.map create mode 100644 node_modules/rxjs/add/operator/skipUntil.d.ts create mode 100644 node_modules/rxjs/add/operator/skipUntil.js create mode 100644 node_modules/rxjs/add/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/add/operator/skipWhile.d.ts create mode 100644 node_modules/rxjs/add/operator/skipWhile.js create mode 100644 node_modules/rxjs/add/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/add/operator/startWith.d.ts create mode 100644 node_modules/rxjs/add/operator/startWith.js create mode 100644 node_modules/rxjs/add/operator/startWith.js.map create mode 100644 node_modules/rxjs/add/operator/subscribeOn.d.ts create mode 100644 node_modules/rxjs/add/operator/subscribeOn.js create mode 100644 node_modules/rxjs/add/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/add/operator/switch.d.ts create mode 100644 node_modules/rxjs/add/operator/switch.js create mode 100644 node_modules/rxjs/add/operator/switch.js.map create mode 100644 node_modules/rxjs/add/operator/switchMap.d.ts create mode 100644 node_modules/rxjs/add/operator/switchMap.js create mode 100644 node_modules/rxjs/add/operator/switchMap.js.map create mode 100644 node_modules/rxjs/add/operator/switchMapTo.d.ts create mode 100644 node_modules/rxjs/add/operator/switchMapTo.js create mode 100644 node_modules/rxjs/add/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/add/operator/take.d.ts create mode 100644 node_modules/rxjs/add/operator/take.js create mode 100644 node_modules/rxjs/add/operator/take.js.map create mode 100644 node_modules/rxjs/add/operator/takeLast.d.ts create mode 100644 node_modules/rxjs/add/operator/takeLast.js create mode 100644 node_modules/rxjs/add/operator/takeLast.js.map create mode 100644 node_modules/rxjs/add/operator/takeUntil.d.ts create mode 100644 node_modules/rxjs/add/operator/takeUntil.js create mode 100644 node_modules/rxjs/add/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/add/operator/takeWhile.d.ts create mode 100644 node_modules/rxjs/add/operator/takeWhile.js create mode 100644 node_modules/rxjs/add/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/add/operator/throttle.d.ts create mode 100644 node_modules/rxjs/add/operator/throttle.js create mode 100644 node_modules/rxjs/add/operator/throttle.js.map create mode 100644 node_modules/rxjs/add/operator/throttleTime.d.ts create mode 100644 node_modules/rxjs/add/operator/throttleTime.js create mode 100644 node_modules/rxjs/add/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/add/operator/timeInterval.d.ts create mode 100644 node_modules/rxjs/add/operator/timeInterval.js create mode 100644 node_modules/rxjs/add/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/add/operator/timeout.d.ts create mode 100644 node_modules/rxjs/add/operator/timeout.js create mode 100644 node_modules/rxjs/add/operator/timeout.js.map create mode 100644 node_modules/rxjs/add/operator/timeoutWith.d.ts create mode 100644 node_modules/rxjs/add/operator/timeoutWith.js create mode 100644 node_modules/rxjs/add/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/add/operator/timestamp.d.ts create mode 100644 node_modules/rxjs/add/operator/timestamp.js create mode 100644 node_modules/rxjs/add/operator/timestamp.js.map create mode 100644 node_modules/rxjs/add/operator/toArray.d.ts create mode 100644 node_modules/rxjs/add/operator/toArray.js create mode 100644 node_modules/rxjs/add/operator/toArray.js.map create mode 100644 node_modules/rxjs/add/operator/toPromise.d.ts create mode 100644 node_modules/rxjs/add/operator/toPromise.js create mode 100644 node_modules/rxjs/add/operator/toPromise.js.map create mode 100644 node_modules/rxjs/add/operator/window.d.ts create mode 100644 node_modules/rxjs/add/operator/window.js create mode 100644 node_modules/rxjs/add/operator/window.js.map create mode 100644 node_modules/rxjs/add/operator/windowCount.d.ts create mode 100644 node_modules/rxjs/add/operator/windowCount.js create mode 100644 node_modules/rxjs/add/operator/windowCount.js.map create mode 100644 node_modules/rxjs/add/operator/windowTime.d.ts create mode 100644 node_modules/rxjs/add/operator/windowTime.js create mode 100644 node_modules/rxjs/add/operator/windowTime.js.map create mode 100644 node_modules/rxjs/add/operator/windowToggle.d.ts create mode 100644 node_modules/rxjs/add/operator/windowToggle.js create mode 100644 node_modules/rxjs/add/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/add/operator/windowWhen.d.ts create mode 100644 node_modules/rxjs/add/operator/windowWhen.js create mode 100644 node_modules/rxjs/add/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/add/operator/withLatestFrom.d.ts create mode 100644 node_modules/rxjs/add/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/add/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/add/operator/zip.d.ts create mode 100644 node_modules/rxjs/add/operator/zip.js create mode 100644 node_modules/rxjs/add/operator/zip.js.map create mode 100644 node_modules/rxjs/add/operator/zipAll.d.ts create mode 100644 node_modules/rxjs/add/operator/zipAll.js create mode 100644 node_modules/rxjs/add/operator/zipAll.js.map create mode 100644 node_modules/rxjs/bundles/Rx.js create mode 100644 node_modules/rxjs/bundles/Rx.js.map create mode 100644 node_modules/rxjs/bundles/Rx.min.js create mode 100644 node_modules/rxjs/bundles/Rx.min.js.map create mode 100644 node_modules/rxjs/interfaces.d.ts create mode 100644 node_modules/rxjs/interfaces.js create mode 100644 node_modules/rxjs/interfaces.js.map create mode 100644 node_modules/rxjs/observable/ArrayLikeObservable.d.ts create mode 100644 node_modules/rxjs/observable/ArrayLikeObservable.js create mode 100644 node_modules/rxjs/observable/ArrayLikeObservable.js.map create mode 100644 node_modules/rxjs/observable/ArrayObservable.d.ts create mode 100644 node_modules/rxjs/observable/ArrayObservable.js create mode 100644 node_modules/rxjs/observable/ArrayObservable.js.map create mode 100644 node_modules/rxjs/observable/BoundCallbackObservable.d.ts create mode 100644 node_modules/rxjs/observable/BoundCallbackObservable.js create mode 100644 node_modules/rxjs/observable/BoundCallbackObservable.js.map create mode 100644 node_modules/rxjs/observable/BoundNodeCallbackObservable.d.ts create mode 100644 node_modules/rxjs/observable/BoundNodeCallbackObservable.js create mode 100644 node_modules/rxjs/observable/BoundNodeCallbackObservable.js.map create mode 100644 node_modules/rxjs/observable/ConnectableObservable.d.ts create mode 100644 node_modules/rxjs/observable/ConnectableObservable.js create mode 100644 node_modules/rxjs/observable/ConnectableObservable.js.map create mode 100644 node_modules/rxjs/observable/DeferObservable.d.ts create mode 100644 node_modules/rxjs/observable/DeferObservable.js create mode 100644 node_modules/rxjs/observable/DeferObservable.js.map create mode 100644 node_modules/rxjs/observable/EmptyObservable.d.ts create mode 100644 node_modules/rxjs/observable/EmptyObservable.js create mode 100644 node_modules/rxjs/observable/EmptyObservable.js.map create mode 100644 node_modules/rxjs/observable/ErrorObservable.d.ts create mode 100644 node_modules/rxjs/observable/ErrorObservable.js create mode 100644 node_modules/rxjs/observable/ErrorObservable.js.map create mode 100644 node_modules/rxjs/observable/ForkJoinObservable.d.ts create mode 100644 node_modules/rxjs/observable/ForkJoinObservable.js create mode 100644 node_modules/rxjs/observable/ForkJoinObservable.js.map create mode 100644 node_modules/rxjs/observable/FromEventObservable.d.ts create mode 100644 node_modules/rxjs/observable/FromEventObservable.js create mode 100644 node_modules/rxjs/observable/FromEventObservable.js.map create mode 100644 node_modules/rxjs/observable/FromEventPatternObservable.d.ts create mode 100644 node_modules/rxjs/observable/FromEventPatternObservable.js create mode 100644 node_modules/rxjs/observable/FromEventPatternObservable.js.map create mode 100644 node_modules/rxjs/observable/FromObservable.d.ts create mode 100644 node_modules/rxjs/observable/FromObservable.js create mode 100644 node_modules/rxjs/observable/FromObservable.js.map create mode 100644 node_modules/rxjs/observable/GenerateObservable.d.ts create mode 100644 node_modules/rxjs/observable/GenerateObservable.js create mode 100644 node_modules/rxjs/observable/GenerateObservable.js.map create mode 100644 node_modules/rxjs/observable/IfObservable.d.ts create mode 100644 node_modules/rxjs/observable/IfObservable.js create mode 100644 node_modules/rxjs/observable/IfObservable.js.map create mode 100644 node_modules/rxjs/observable/IntervalObservable.d.ts create mode 100644 node_modules/rxjs/observable/IntervalObservable.js create mode 100644 node_modules/rxjs/observable/IntervalObservable.js.map create mode 100644 node_modules/rxjs/observable/IteratorObservable.d.ts create mode 100644 node_modules/rxjs/observable/IteratorObservable.js create mode 100644 node_modules/rxjs/observable/IteratorObservable.js.map create mode 100644 node_modules/rxjs/observable/NeverObservable.d.ts create mode 100644 node_modules/rxjs/observable/NeverObservable.js create mode 100644 node_modules/rxjs/observable/NeverObservable.js.map create mode 100644 node_modules/rxjs/observable/PairsObservable.d.ts create mode 100644 node_modules/rxjs/observable/PairsObservable.js create mode 100644 node_modules/rxjs/observable/PairsObservable.js.map create mode 100644 node_modules/rxjs/observable/PromiseObservable.d.ts create mode 100644 node_modules/rxjs/observable/PromiseObservable.js create mode 100644 node_modules/rxjs/observable/PromiseObservable.js.map create mode 100644 node_modules/rxjs/observable/RangeObservable.d.ts create mode 100644 node_modules/rxjs/observable/RangeObservable.js create mode 100644 node_modules/rxjs/observable/RangeObservable.js.map create mode 100644 node_modules/rxjs/observable/ScalarObservable.d.ts create mode 100644 node_modules/rxjs/observable/ScalarObservable.js create mode 100644 node_modules/rxjs/observable/ScalarObservable.js.map create mode 100644 node_modules/rxjs/observable/SubscribeOnObservable.d.ts create mode 100644 node_modules/rxjs/observable/SubscribeOnObservable.js create mode 100644 node_modules/rxjs/observable/SubscribeOnObservable.js.map create mode 100644 node_modules/rxjs/observable/TimerObservable.d.ts create mode 100644 node_modules/rxjs/observable/TimerObservable.js create mode 100644 node_modules/rxjs/observable/TimerObservable.js.map create mode 100644 node_modules/rxjs/observable/UsingObservable.d.ts create mode 100644 node_modules/rxjs/observable/UsingObservable.js create mode 100644 node_modules/rxjs/observable/UsingObservable.js.map create mode 100644 node_modules/rxjs/observable/bindCallback.d.ts create mode 100644 node_modules/rxjs/observable/bindCallback.js create mode 100644 node_modules/rxjs/observable/bindCallback.js.map create mode 100644 node_modules/rxjs/observable/bindNodeCallback.d.ts create mode 100644 node_modules/rxjs/observable/bindNodeCallback.js create mode 100644 node_modules/rxjs/observable/bindNodeCallback.js.map create mode 100644 node_modules/rxjs/observable/combineLatest.d.ts create mode 100644 node_modules/rxjs/observable/combineLatest.js create mode 100644 node_modules/rxjs/observable/combineLatest.js.map create mode 100644 node_modules/rxjs/observable/concat.d.ts create mode 100644 node_modules/rxjs/observable/concat.js create mode 100644 node_modules/rxjs/observable/concat.js.map create mode 100644 node_modules/rxjs/observable/defer.d.ts create mode 100644 node_modules/rxjs/observable/defer.js create mode 100644 node_modules/rxjs/observable/defer.js.map create mode 100644 node_modules/rxjs/observable/dom/AjaxObservable.d.ts create mode 100644 node_modules/rxjs/observable/dom/AjaxObservable.js create mode 100644 node_modules/rxjs/observable/dom/AjaxObservable.js.map create mode 100644 node_modules/rxjs/observable/dom/WebSocketSubject.d.ts create mode 100644 node_modules/rxjs/observable/dom/WebSocketSubject.js create mode 100644 node_modules/rxjs/observable/dom/WebSocketSubject.js.map create mode 100644 node_modules/rxjs/observable/dom/ajax.d.ts create mode 100644 node_modules/rxjs/observable/dom/ajax.js create mode 100644 node_modules/rxjs/observable/dom/ajax.js.map create mode 100644 node_modules/rxjs/observable/dom/webSocket.d.ts create mode 100644 node_modules/rxjs/observable/dom/webSocket.js create mode 100644 node_modules/rxjs/observable/dom/webSocket.js.map create mode 100644 node_modules/rxjs/observable/empty.d.ts create mode 100644 node_modules/rxjs/observable/empty.js create mode 100644 node_modules/rxjs/observable/empty.js.map create mode 100644 node_modules/rxjs/observable/forkJoin.d.ts create mode 100644 node_modules/rxjs/observable/forkJoin.js create mode 100644 node_modules/rxjs/observable/forkJoin.js.map create mode 100644 node_modules/rxjs/observable/from.d.ts create mode 100644 node_modules/rxjs/observable/from.js create mode 100644 node_modules/rxjs/observable/from.js.map create mode 100644 node_modules/rxjs/observable/fromEvent.d.ts create mode 100644 node_modules/rxjs/observable/fromEvent.js create mode 100644 node_modules/rxjs/observable/fromEvent.js.map create mode 100644 node_modules/rxjs/observable/fromEventPattern.d.ts create mode 100644 node_modules/rxjs/observable/fromEventPattern.js create mode 100644 node_modules/rxjs/observable/fromEventPattern.js.map create mode 100644 node_modules/rxjs/observable/fromPromise.d.ts create mode 100644 node_modules/rxjs/observable/fromPromise.js create mode 100644 node_modules/rxjs/observable/fromPromise.js.map create mode 100644 node_modules/rxjs/observable/generate.d.ts create mode 100644 node_modules/rxjs/observable/generate.js create mode 100644 node_modules/rxjs/observable/generate.js.map create mode 100644 node_modules/rxjs/observable/if.d.ts create mode 100644 node_modules/rxjs/observable/if.js create mode 100644 node_modules/rxjs/observable/if.js.map create mode 100644 node_modules/rxjs/observable/interval.d.ts create mode 100644 node_modules/rxjs/observable/interval.js create mode 100644 node_modules/rxjs/observable/interval.js.map create mode 100644 node_modules/rxjs/observable/merge.d.ts create mode 100644 node_modules/rxjs/observable/merge.js create mode 100644 node_modules/rxjs/observable/merge.js.map create mode 100644 node_modules/rxjs/observable/never.d.ts create mode 100644 node_modules/rxjs/observable/never.js create mode 100644 node_modules/rxjs/observable/never.js.map create mode 100644 node_modules/rxjs/observable/of.d.ts create mode 100644 node_modules/rxjs/observable/of.js create mode 100644 node_modules/rxjs/observable/of.js.map create mode 100644 node_modules/rxjs/observable/onErrorResumeNext.d.ts create mode 100644 node_modules/rxjs/observable/onErrorResumeNext.js create mode 100644 node_modules/rxjs/observable/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/observable/pairs.d.ts create mode 100644 node_modules/rxjs/observable/pairs.js create mode 100644 node_modules/rxjs/observable/pairs.js.map create mode 100644 node_modules/rxjs/observable/race.d.ts create mode 100644 node_modules/rxjs/observable/race.js create mode 100644 node_modules/rxjs/observable/race.js.map create mode 100644 node_modules/rxjs/observable/range.d.ts create mode 100644 node_modules/rxjs/observable/range.js create mode 100644 node_modules/rxjs/observable/range.js.map create mode 100644 node_modules/rxjs/observable/throw.d.ts create mode 100644 node_modules/rxjs/observable/throw.js create mode 100644 node_modules/rxjs/observable/throw.js.map create mode 100644 node_modules/rxjs/observable/timer.d.ts create mode 100644 node_modules/rxjs/observable/timer.js create mode 100644 node_modules/rxjs/observable/timer.js.map create mode 100644 node_modules/rxjs/observable/using.d.ts create mode 100644 node_modules/rxjs/observable/using.js create mode 100644 node_modules/rxjs/observable/using.js.map create mode 100644 node_modules/rxjs/observable/zip.d.ts create mode 100644 node_modules/rxjs/observable/zip.js create mode 100644 node_modules/rxjs/observable/zip.js.map create mode 100644 node_modules/rxjs/operator/audit.d.ts create mode 100644 node_modules/rxjs/operator/audit.js create mode 100644 node_modules/rxjs/operator/audit.js.map create mode 100644 node_modules/rxjs/operator/auditTime.d.ts create mode 100644 node_modules/rxjs/operator/auditTime.js create mode 100644 node_modules/rxjs/operator/auditTime.js.map create mode 100644 node_modules/rxjs/operator/buffer.d.ts create mode 100644 node_modules/rxjs/operator/buffer.js create mode 100644 node_modules/rxjs/operator/buffer.js.map create mode 100644 node_modules/rxjs/operator/bufferCount.d.ts create mode 100644 node_modules/rxjs/operator/bufferCount.js create mode 100644 node_modules/rxjs/operator/bufferCount.js.map create mode 100644 node_modules/rxjs/operator/bufferTime.d.ts create mode 100644 node_modules/rxjs/operator/bufferTime.js create mode 100644 node_modules/rxjs/operator/bufferTime.js.map create mode 100644 node_modules/rxjs/operator/bufferToggle.d.ts create mode 100644 node_modules/rxjs/operator/bufferToggle.js create mode 100644 node_modules/rxjs/operator/bufferToggle.js.map create mode 100644 node_modules/rxjs/operator/bufferWhen.d.ts create mode 100644 node_modules/rxjs/operator/bufferWhen.js create mode 100644 node_modules/rxjs/operator/bufferWhen.js.map create mode 100644 node_modules/rxjs/operator/catch.d.ts create mode 100644 node_modules/rxjs/operator/catch.js create mode 100644 node_modules/rxjs/operator/catch.js.map create mode 100644 node_modules/rxjs/operator/combineAll.d.ts create mode 100644 node_modules/rxjs/operator/combineAll.js create mode 100644 node_modules/rxjs/operator/combineAll.js.map create mode 100644 node_modules/rxjs/operator/combineLatest.d.ts create mode 100644 node_modules/rxjs/operator/combineLatest.js create mode 100644 node_modules/rxjs/operator/combineLatest.js.map create mode 100644 node_modules/rxjs/operator/concat.d.ts create mode 100644 node_modules/rxjs/operator/concat.js create mode 100644 node_modules/rxjs/operator/concat.js.map create mode 100644 node_modules/rxjs/operator/concatAll.d.ts create mode 100644 node_modules/rxjs/operator/concatAll.js create mode 100644 node_modules/rxjs/operator/concatAll.js.map create mode 100644 node_modules/rxjs/operator/concatMap.d.ts create mode 100644 node_modules/rxjs/operator/concatMap.js create mode 100644 node_modules/rxjs/operator/concatMap.js.map create mode 100644 node_modules/rxjs/operator/concatMapTo.d.ts create mode 100644 node_modules/rxjs/operator/concatMapTo.js create mode 100644 node_modules/rxjs/operator/concatMapTo.js.map create mode 100644 node_modules/rxjs/operator/count.d.ts create mode 100644 node_modules/rxjs/operator/count.js create mode 100644 node_modules/rxjs/operator/count.js.map create mode 100644 node_modules/rxjs/operator/debounce.d.ts create mode 100644 node_modules/rxjs/operator/debounce.js create mode 100644 node_modules/rxjs/operator/debounce.js.map create mode 100644 node_modules/rxjs/operator/debounceTime.d.ts create mode 100644 node_modules/rxjs/operator/debounceTime.js create mode 100644 node_modules/rxjs/operator/debounceTime.js.map create mode 100644 node_modules/rxjs/operator/defaultIfEmpty.d.ts create mode 100644 node_modules/rxjs/operator/defaultIfEmpty.js create mode 100644 node_modules/rxjs/operator/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/operator/delay.d.ts create mode 100644 node_modules/rxjs/operator/delay.js create mode 100644 node_modules/rxjs/operator/delay.js.map create mode 100644 node_modules/rxjs/operator/delayWhen.d.ts create mode 100644 node_modules/rxjs/operator/delayWhen.js create mode 100644 node_modules/rxjs/operator/delayWhen.js.map create mode 100644 node_modules/rxjs/operator/dematerialize.d.ts create mode 100644 node_modules/rxjs/operator/dematerialize.js create mode 100644 node_modules/rxjs/operator/dematerialize.js.map create mode 100644 node_modules/rxjs/operator/distinct.d.ts create mode 100644 node_modules/rxjs/operator/distinct.js create mode 100644 node_modules/rxjs/operator/distinct.js.map create mode 100644 node_modules/rxjs/operator/distinctUntilChanged.d.ts create mode 100644 node_modules/rxjs/operator/distinctUntilChanged.js create mode 100644 node_modules/rxjs/operator/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/operator/distinctUntilKeyChanged.d.ts create mode 100644 node_modules/rxjs/operator/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/operator/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/operator/do.d.ts create mode 100644 node_modules/rxjs/operator/do.js create mode 100644 node_modules/rxjs/operator/do.js.map create mode 100644 node_modules/rxjs/operator/elementAt.d.ts create mode 100644 node_modules/rxjs/operator/elementAt.js create mode 100644 node_modules/rxjs/operator/elementAt.js.map create mode 100644 node_modules/rxjs/operator/every.d.ts create mode 100644 node_modules/rxjs/operator/every.js create mode 100644 node_modules/rxjs/operator/every.js.map create mode 100644 node_modules/rxjs/operator/exhaust.d.ts create mode 100644 node_modules/rxjs/operator/exhaust.js create mode 100644 node_modules/rxjs/operator/exhaust.js.map create mode 100644 node_modules/rxjs/operator/exhaustMap.d.ts create mode 100644 node_modules/rxjs/operator/exhaustMap.js create mode 100644 node_modules/rxjs/operator/exhaustMap.js.map create mode 100644 node_modules/rxjs/operator/expand.d.ts create mode 100644 node_modules/rxjs/operator/expand.js create mode 100644 node_modules/rxjs/operator/expand.js.map create mode 100644 node_modules/rxjs/operator/filter.d.ts create mode 100644 node_modules/rxjs/operator/filter.js create mode 100644 node_modules/rxjs/operator/filter.js.map create mode 100644 node_modules/rxjs/operator/finally.d.ts create mode 100644 node_modules/rxjs/operator/finally.js create mode 100644 node_modules/rxjs/operator/finally.js.map create mode 100644 node_modules/rxjs/operator/find.d.ts create mode 100644 node_modules/rxjs/operator/find.js create mode 100644 node_modules/rxjs/operator/find.js.map create mode 100644 node_modules/rxjs/operator/findIndex.d.ts create mode 100644 node_modules/rxjs/operator/findIndex.js create mode 100644 node_modules/rxjs/operator/findIndex.js.map create mode 100644 node_modules/rxjs/operator/first.d.ts create mode 100644 node_modules/rxjs/operator/first.js create mode 100644 node_modules/rxjs/operator/first.js.map create mode 100644 node_modules/rxjs/operator/groupBy.d.ts create mode 100644 node_modules/rxjs/operator/groupBy.js create mode 100644 node_modules/rxjs/operator/groupBy.js.map create mode 100644 node_modules/rxjs/operator/ignoreElements.d.ts create mode 100644 node_modules/rxjs/operator/ignoreElements.js create mode 100644 node_modules/rxjs/operator/ignoreElements.js.map create mode 100644 node_modules/rxjs/operator/isEmpty.d.ts create mode 100644 node_modules/rxjs/operator/isEmpty.js create mode 100644 node_modules/rxjs/operator/isEmpty.js.map create mode 100644 node_modules/rxjs/operator/last.d.ts create mode 100644 node_modules/rxjs/operator/last.js create mode 100644 node_modules/rxjs/operator/last.js.map create mode 100644 node_modules/rxjs/operator/let.d.ts create mode 100644 node_modules/rxjs/operator/let.js create mode 100644 node_modules/rxjs/operator/let.js.map create mode 100644 node_modules/rxjs/operator/map.d.ts create mode 100644 node_modules/rxjs/operator/map.js create mode 100644 node_modules/rxjs/operator/map.js.map create mode 100644 node_modules/rxjs/operator/mapTo.d.ts create mode 100644 node_modules/rxjs/operator/mapTo.js create mode 100644 node_modules/rxjs/operator/mapTo.js.map create mode 100644 node_modules/rxjs/operator/materialize.d.ts create mode 100644 node_modules/rxjs/operator/materialize.js create mode 100644 node_modules/rxjs/operator/materialize.js.map create mode 100644 node_modules/rxjs/operator/max.d.ts create mode 100644 node_modules/rxjs/operator/max.js create mode 100644 node_modules/rxjs/operator/max.js.map create mode 100644 node_modules/rxjs/operator/merge.d.ts create mode 100644 node_modules/rxjs/operator/merge.js create mode 100644 node_modules/rxjs/operator/merge.js.map create mode 100644 node_modules/rxjs/operator/mergeAll.d.ts create mode 100644 node_modules/rxjs/operator/mergeAll.js create mode 100644 node_modules/rxjs/operator/mergeAll.js.map create mode 100644 node_modules/rxjs/operator/mergeMap.d.ts create mode 100644 node_modules/rxjs/operator/mergeMap.js create mode 100644 node_modules/rxjs/operator/mergeMap.js.map create mode 100644 node_modules/rxjs/operator/mergeMapTo.d.ts create mode 100644 node_modules/rxjs/operator/mergeMapTo.js create mode 100644 node_modules/rxjs/operator/mergeMapTo.js.map create mode 100644 node_modules/rxjs/operator/mergeScan.d.ts create mode 100644 node_modules/rxjs/operator/mergeScan.js create mode 100644 node_modules/rxjs/operator/mergeScan.js.map create mode 100644 node_modules/rxjs/operator/min.d.ts create mode 100644 node_modules/rxjs/operator/min.js create mode 100644 node_modules/rxjs/operator/min.js.map create mode 100644 node_modules/rxjs/operator/multicast.d.ts create mode 100644 node_modules/rxjs/operator/multicast.js create mode 100644 node_modules/rxjs/operator/multicast.js.map create mode 100644 node_modules/rxjs/operator/observeOn.d.ts create mode 100644 node_modules/rxjs/operator/observeOn.js create mode 100644 node_modules/rxjs/operator/observeOn.js.map create mode 100644 node_modules/rxjs/operator/onErrorResumeNext.d.ts create mode 100644 node_modules/rxjs/operator/onErrorResumeNext.js create mode 100644 node_modules/rxjs/operator/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/operator/pairwise.d.ts create mode 100644 node_modules/rxjs/operator/pairwise.js create mode 100644 node_modules/rxjs/operator/pairwise.js.map create mode 100644 node_modules/rxjs/operator/partition.d.ts create mode 100644 node_modules/rxjs/operator/partition.js create mode 100644 node_modules/rxjs/operator/partition.js.map create mode 100644 node_modules/rxjs/operator/pluck.d.ts create mode 100644 node_modules/rxjs/operator/pluck.js create mode 100644 node_modules/rxjs/operator/pluck.js.map create mode 100644 node_modules/rxjs/operator/publish.d.ts create mode 100644 node_modules/rxjs/operator/publish.js create mode 100644 node_modules/rxjs/operator/publish.js.map create mode 100644 node_modules/rxjs/operator/publishBehavior.d.ts create mode 100644 node_modules/rxjs/operator/publishBehavior.js create mode 100644 node_modules/rxjs/operator/publishBehavior.js.map create mode 100644 node_modules/rxjs/operator/publishLast.d.ts create mode 100644 node_modules/rxjs/operator/publishLast.js create mode 100644 node_modules/rxjs/operator/publishLast.js.map create mode 100644 node_modules/rxjs/operator/publishReplay.d.ts create mode 100644 node_modules/rxjs/operator/publishReplay.js create mode 100644 node_modules/rxjs/operator/publishReplay.js.map create mode 100644 node_modules/rxjs/operator/race.d.ts create mode 100644 node_modules/rxjs/operator/race.js create mode 100644 node_modules/rxjs/operator/race.js.map create mode 100644 node_modules/rxjs/operator/reduce.d.ts create mode 100644 node_modules/rxjs/operator/reduce.js create mode 100644 node_modules/rxjs/operator/reduce.js.map create mode 100644 node_modules/rxjs/operator/repeat.d.ts create mode 100644 node_modules/rxjs/operator/repeat.js create mode 100644 node_modules/rxjs/operator/repeat.js.map create mode 100644 node_modules/rxjs/operator/repeatWhen.d.ts create mode 100644 node_modules/rxjs/operator/repeatWhen.js create mode 100644 node_modules/rxjs/operator/repeatWhen.js.map create mode 100644 node_modules/rxjs/operator/retry.d.ts create mode 100644 node_modules/rxjs/operator/retry.js create mode 100644 node_modules/rxjs/operator/retry.js.map create mode 100644 node_modules/rxjs/operator/retryWhen.d.ts create mode 100644 node_modules/rxjs/operator/retryWhen.js create mode 100644 node_modules/rxjs/operator/retryWhen.js.map create mode 100644 node_modules/rxjs/operator/sample.d.ts create mode 100644 node_modules/rxjs/operator/sample.js create mode 100644 node_modules/rxjs/operator/sample.js.map create mode 100644 node_modules/rxjs/operator/sampleTime.d.ts create mode 100644 node_modules/rxjs/operator/sampleTime.js create mode 100644 node_modules/rxjs/operator/sampleTime.js.map create mode 100644 node_modules/rxjs/operator/scan.d.ts create mode 100644 node_modules/rxjs/operator/scan.js create mode 100644 node_modules/rxjs/operator/scan.js.map create mode 100644 node_modules/rxjs/operator/sequenceEqual.d.ts create mode 100644 node_modules/rxjs/operator/sequenceEqual.js create mode 100644 node_modules/rxjs/operator/sequenceEqual.js.map create mode 100644 node_modules/rxjs/operator/share.d.ts create mode 100644 node_modules/rxjs/operator/share.js create mode 100644 node_modules/rxjs/operator/share.js.map create mode 100644 node_modules/rxjs/operator/shareReplay.d.ts create mode 100644 node_modules/rxjs/operator/shareReplay.js create mode 100644 node_modules/rxjs/operator/shareReplay.js.map create mode 100644 node_modules/rxjs/operator/single.d.ts create mode 100644 node_modules/rxjs/operator/single.js create mode 100644 node_modules/rxjs/operator/single.js.map create mode 100644 node_modules/rxjs/operator/skip.d.ts create mode 100644 node_modules/rxjs/operator/skip.js create mode 100644 node_modules/rxjs/operator/skip.js.map create mode 100644 node_modules/rxjs/operator/skipLast.d.ts create mode 100644 node_modules/rxjs/operator/skipLast.js create mode 100644 node_modules/rxjs/operator/skipLast.js.map create mode 100644 node_modules/rxjs/operator/skipUntil.d.ts create mode 100644 node_modules/rxjs/operator/skipUntil.js create mode 100644 node_modules/rxjs/operator/skipUntil.js.map create mode 100644 node_modules/rxjs/operator/skipWhile.d.ts create mode 100644 node_modules/rxjs/operator/skipWhile.js create mode 100644 node_modules/rxjs/operator/skipWhile.js.map create mode 100644 node_modules/rxjs/operator/startWith.d.ts create mode 100644 node_modules/rxjs/operator/startWith.js create mode 100644 node_modules/rxjs/operator/startWith.js.map create mode 100644 node_modules/rxjs/operator/subscribeOn.d.ts create mode 100644 node_modules/rxjs/operator/subscribeOn.js create mode 100644 node_modules/rxjs/operator/subscribeOn.js.map create mode 100644 node_modules/rxjs/operator/switch.d.ts create mode 100644 node_modules/rxjs/operator/switch.js create mode 100644 node_modules/rxjs/operator/switch.js.map create mode 100644 node_modules/rxjs/operator/switchMap.d.ts create mode 100644 node_modules/rxjs/operator/switchMap.js create mode 100644 node_modules/rxjs/operator/switchMap.js.map create mode 100644 node_modules/rxjs/operator/switchMapTo.d.ts create mode 100644 node_modules/rxjs/operator/switchMapTo.js create mode 100644 node_modules/rxjs/operator/switchMapTo.js.map create mode 100644 node_modules/rxjs/operator/take.d.ts create mode 100644 node_modules/rxjs/operator/take.js create mode 100644 node_modules/rxjs/operator/take.js.map create mode 100644 node_modules/rxjs/operator/takeLast.d.ts create mode 100644 node_modules/rxjs/operator/takeLast.js create mode 100644 node_modules/rxjs/operator/takeLast.js.map create mode 100644 node_modules/rxjs/operator/takeUntil.d.ts create mode 100644 node_modules/rxjs/operator/takeUntil.js create mode 100644 node_modules/rxjs/operator/takeUntil.js.map create mode 100644 node_modules/rxjs/operator/takeWhile.d.ts create mode 100644 node_modules/rxjs/operator/takeWhile.js create mode 100644 node_modules/rxjs/operator/takeWhile.js.map create mode 100644 node_modules/rxjs/operator/throttle.d.ts create mode 100644 node_modules/rxjs/operator/throttle.js create mode 100644 node_modules/rxjs/operator/throttle.js.map create mode 100644 node_modules/rxjs/operator/throttleTime.d.ts create mode 100644 node_modules/rxjs/operator/throttleTime.js create mode 100644 node_modules/rxjs/operator/throttleTime.js.map create mode 100644 node_modules/rxjs/operator/timeInterval.d.ts create mode 100644 node_modules/rxjs/operator/timeInterval.js create mode 100644 node_modules/rxjs/operator/timeInterval.js.map create mode 100644 node_modules/rxjs/operator/timeout.d.ts create mode 100644 node_modules/rxjs/operator/timeout.js create mode 100644 node_modules/rxjs/operator/timeout.js.map create mode 100644 node_modules/rxjs/operator/timeoutWith.d.ts create mode 100644 node_modules/rxjs/operator/timeoutWith.js create mode 100644 node_modules/rxjs/operator/timeoutWith.js.map create mode 100644 node_modules/rxjs/operator/timestamp.d.ts create mode 100644 node_modules/rxjs/operator/timestamp.js create mode 100644 node_modules/rxjs/operator/timestamp.js.map create mode 100644 node_modules/rxjs/operator/toArray.d.ts create mode 100644 node_modules/rxjs/operator/toArray.js create mode 100644 node_modules/rxjs/operator/toArray.js.map create mode 100644 node_modules/rxjs/operator/toPromise.d.ts create mode 100644 node_modules/rxjs/operator/toPromise.js create mode 100644 node_modules/rxjs/operator/toPromise.js.map create mode 100644 node_modules/rxjs/operator/window.d.ts create mode 100644 node_modules/rxjs/operator/window.js create mode 100644 node_modules/rxjs/operator/window.js.map create mode 100644 node_modules/rxjs/operator/windowCount.d.ts create mode 100644 node_modules/rxjs/operator/windowCount.js create mode 100644 node_modules/rxjs/operator/windowCount.js.map create mode 100644 node_modules/rxjs/operator/windowTime.d.ts create mode 100644 node_modules/rxjs/operator/windowTime.js create mode 100644 node_modules/rxjs/operator/windowTime.js.map create mode 100644 node_modules/rxjs/operator/windowToggle.d.ts create mode 100644 node_modules/rxjs/operator/windowToggle.js create mode 100644 node_modules/rxjs/operator/windowToggle.js.map create mode 100644 node_modules/rxjs/operator/windowWhen.d.ts create mode 100644 node_modules/rxjs/operator/windowWhen.js create mode 100644 node_modules/rxjs/operator/windowWhen.js.map create mode 100644 node_modules/rxjs/operator/withLatestFrom.d.ts create mode 100644 node_modules/rxjs/operator/withLatestFrom.js create mode 100644 node_modules/rxjs/operator/withLatestFrom.js.map create mode 100644 node_modules/rxjs/operator/zip.d.ts create mode 100644 node_modules/rxjs/operator/zip.js create mode 100644 node_modules/rxjs/operator/zip.js.map create mode 100644 node_modules/rxjs/operator/zipAll.d.ts create mode 100644 node_modules/rxjs/operator/zipAll.js create mode 100644 node_modules/rxjs/operator/zipAll.js.map create mode 100644 node_modules/rxjs/operators.d.ts create mode 100644 node_modules/rxjs/operators.js create mode 100644 node_modules/rxjs/operators.js.map create mode 100644 node_modules/rxjs/operators/audit.d.ts create mode 100644 node_modules/rxjs/operators/audit.js create mode 100644 node_modules/rxjs/operators/audit.js.map create mode 100644 node_modules/rxjs/operators/auditTime.d.ts create mode 100644 node_modules/rxjs/operators/auditTime.js create mode 100644 node_modules/rxjs/operators/auditTime.js.map create mode 100644 node_modules/rxjs/operators/buffer.d.ts create mode 100644 node_modules/rxjs/operators/buffer.js create mode 100644 node_modules/rxjs/operators/buffer.js.map create mode 100644 node_modules/rxjs/operators/bufferCount.d.ts create mode 100644 node_modules/rxjs/operators/bufferCount.js create mode 100644 node_modules/rxjs/operators/bufferCount.js.map create mode 100644 node_modules/rxjs/operators/bufferTime.d.ts create mode 100644 node_modules/rxjs/operators/bufferTime.js create mode 100644 node_modules/rxjs/operators/bufferTime.js.map create mode 100644 node_modules/rxjs/operators/bufferToggle.d.ts create mode 100644 node_modules/rxjs/operators/bufferToggle.js create mode 100644 node_modules/rxjs/operators/bufferToggle.js.map create mode 100644 node_modules/rxjs/operators/bufferWhen.d.ts create mode 100644 node_modules/rxjs/operators/bufferWhen.js create mode 100644 node_modules/rxjs/operators/bufferWhen.js.map create mode 100644 node_modules/rxjs/operators/catchError.d.ts create mode 100644 node_modules/rxjs/operators/catchError.js create mode 100644 node_modules/rxjs/operators/catchError.js.map create mode 100644 node_modules/rxjs/operators/combineAll.d.ts create mode 100644 node_modules/rxjs/operators/combineAll.js create mode 100644 node_modules/rxjs/operators/combineAll.js.map create mode 100644 node_modules/rxjs/operators/combineLatest.d.ts create mode 100644 node_modules/rxjs/operators/combineLatest.js create mode 100644 node_modules/rxjs/operators/combineLatest.js.map create mode 100644 node_modules/rxjs/operators/concat.d.ts create mode 100644 node_modules/rxjs/operators/concat.js create mode 100644 node_modules/rxjs/operators/concat.js.map create mode 100644 node_modules/rxjs/operators/concatAll.d.ts create mode 100644 node_modules/rxjs/operators/concatAll.js create mode 100644 node_modules/rxjs/operators/concatAll.js.map create mode 100644 node_modules/rxjs/operators/concatMap.d.ts create mode 100644 node_modules/rxjs/operators/concatMap.js create mode 100644 node_modules/rxjs/operators/concatMap.js.map create mode 100644 node_modules/rxjs/operators/concatMapTo.d.ts create mode 100644 node_modules/rxjs/operators/concatMapTo.js create mode 100644 node_modules/rxjs/operators/concatMapTo.js.map create mode 100644 node_modules/rxjs/operators/count.d.ts create mode 100644 node_modules/rxjs/operators/count.js create mode 100644 node_modules/rxjs/operators/count.js.map create mode 100644 node_modules/rxjs/operators/debounce.d.ts create mode 100644 node_modules/rxjs/operators/debounce.js create mode 100644 node_modules/rxjs/operators/debounce.js.map create mode 100644 node_modules/rxjs/operators/debounceTime.d.ts create mode 100644 node_modules/rxjs/operators/debounceTime.js create mode 100644 node_modules/rxjs/operators/debounceTime.js.map create mode 100644 node_modules/rxjs/operators/defaultIfEmpty.d.ts create mode 100644 node_modules/rxjs/operators/defaultIfEmpty.js create mode 100644 node_modules/rxjs/operators/defaultIfEmpty.js.map create mode 100644 node_modules/rxjs/operators/delay.d.ts create mode 100644 node_modules/rxjs/operators/delay.js create mode 100644 node_modules/rxjs/operators/delay.js.map create mode 100644 node_modules/rxjs/operators/delayWhen.d.ts create mode 100644 node_modules/rxjs/operators/delayWhen.js create mode 100644 node_modules/rxjs/operators/delayWhen.js.map create mode 100644 node_modules/rxjs/operators/dematerialize.d.ts create mode 100644 node_modules/rxjs/operators/dematerialize.js create mode 100644 node_modules/rxjs/operators/dematerialize.js.map create mode 100644 node_modules/rxjs/operators/distinct.d.ts create mode 100644 node_modules/rxjs/operators/distinct.js create mode 100644 node_modules/rxjs/operators/distinct.js.map create mode 100644 node_modules/rxjs/operators/distinctUntilChanged.d.ts create mode 100644 node_modules/rxjs/operators/distinctUntilChanged.js create mode 100644 node_modules/rxjs/operators/distinctUntilChanged.js.map create mode 100644 node_modules/rxjs/operators/distinctUntilKeyChanged.d.ts create mode 100644 node_modules/rxjs/operators/distinctUntilKeyChanged.js create mode 100644 node_modules/rxjs/operators/distinctUntilKeyChanged.js.map create mode 100644 node_modules/rxjs/operators/elementAt.d.ts create mode 100644 node_modules/rxjs/operators/elementAt.js create mode 100644 node_modules/rxjs/operators/elementAt.js.map create mode 100644 node_modules/rxjs/operators/every.d.ts create mode 100644 node_modules/rxjs/operators/every.js create mode 100644 node_modules/rxjs/operators/every.js.map create mode 100644 node_modules/rxjs/operators/exhaust.d.ts create mode 100644 node_modules/rxjs/operators/exhaust.js create mode 100644 node_modules/rxjs/operators/exhaust.js.map create mode 100644 node_modules/rxjs/operators/exhaustMap.d.ts create mode 100644 node_modules/rxjs/operators/exhaustMap.js create mode 100644 node_modules/rxjs/operators/exhaustMap.js.map create mode 100644 node_modules/rxjs/operators/expand.d.ts create mode 100644 node_modules/rxjs/operators/expand.js create mode 100644 node_modules/rxjs/operators/expand.js.map create mode 100644 node_modules/rxjs/operators/filter.d.ts create mode 100644 node_modules/rxjs/operators/filter.js create mode 100644 node_modules/rxjs/operators/filter.js.map create mode 100644 node_modules/rxjs/operators/finalize.d.ts create mode 100644 node_modules/rxjs/operators/finalize.js create mode 100644 node_modules/rxjs/operators/finalize.js.map create mode 100644 node_modules/rxjs/operators/find.d.ts create mode 100644 node_modules/rxjs/operators/find.js create mode 100644 node_modules/rxjs/operators/find.js.map create mode 100644 node_modules/rxjs/operators/findIndex.d.ts create mode 100644 node_modules/rxjs/operators/findIndex.js create mode 100644 node_modules/rxjs/operators/findIndex.js.map create mode 100644 node_modules/rxjs/operators/first.d.ts create mode 100644 node_modules/rxjs/operators/first.js create mode 100644 node_modules/rxjs/operators/first.js.map create mode 100644 node_modules/rxjs/operators/groupBy.d.ts create mode 100644 node_modules/rxjs/operators/groupBy.js create mode 100644 node_modules/rxjs/operators/groupBy.js.map create mode 100644 node_modules/rxjs/operators/ignoreElements.d.ts create mode 100644 node_modules/rxjs/operators/ignoreElements.js create mode 100644 node_modules/rxjs/operators/ignoreElements.js.map create mode 100644 node_modules/rxjs/operators/isEmpty.d.ts create mode 100644 node_modules/rxjs/operators/isEmpty.js create mode 100644 node_modules/rxjs/operators/isEmpty.js.map create mode 100644 node_modules/rxjs/operators/last.d.ts create mode 100644 node_modules/rxjs/operators/last.js create mode 100644 node_modules/rxjs/operators/last.js.map create mode 100644 node_modules/rxjs/operators/map.d.ts create mode 100644 node_modules/rxjs/operators/map.js create mode 100644 node_modules/rxjs/operators/map.js.map create mode 100644 node_modules/rxjs/operators/mapTo.d.ts create mode 100644 node_modules/rxjs/operators/mapTo.js create mode 100644 node_modules/rxjs/operators/mapTo.js.map create mode 100644 node_modules/rxjs/operators/materialize.d.ts create mode 100644 node_modules/rxjs/operators/materialize.js create mode 100644 node_modules/rxjs/operators/materialize.js.map create mode 100644 node_modules/rxjs/operators/max.d.ts create mode 100644 node_modules/rxjs/operators/max.js create mode 100644 node_modules/rxjs/operators/max.js.map create mode 100644 node_modules/rxjs/operators/merge.d.ts create mode 100644 node_modules/rxjs/operators/merge.js create mode 100644 node_modules/rxjs/operators/merge.js.map create mode 100644 node_modules/rxjs/operators/mergeAll.d.ts create mode 100644 node_modules/rxjs/operators/mergeAll.js create mode 100644 node_modules/rxjs/operators/mergeAll.js.map create mode 100644 node_modules/rxjs/operators/mergeMap.d.ts create mode 100644 node_modules/rxjs/operators/mergeMap.js create mode 100644 node_modules/rxjs/operators/mergeMap.js.map create mode 100644 node_modules/rxjs/operators/mergeMapTo.d.ts create mode 100644 node_modules/rxjs/operators/mergeMapTo.js create mode 100644 node_modules/rxjs/operators/mergeMapTo.js.map create mode 100644 node_modules/rxjs/operators/mergeScan.d.ts create mode 100644 node_modules/rxjs/operators/mergeScan.js create mode 100644 node_modules/rxjs/operators/mergeScan.js.map create mode 100644 node_modules/rxjs/operators/min.d.ts create mode 100644 node_modules/rxjs/operators/min.js create mode 100644 node_modules/rxjs/operators/min.js.map create mode 100644 node_modules/rxjs/operators/multicast.d.ts create mode 100644 node_modules/rxjs/operators/multicast.js create mode 100644 node_modules/rxjs/operators/multicast.js.map create mode 100644 node_modules/rxjs/operators/observeOn.d.ts create mode 100644 node_modules/rxjs/operators/observeOn.js create mode 100644 node_modules/rxjs/operators/observeOn.js.map create mode 100644 node_modules/rxjs/operators/onErrorResumeNext.d.ts create mode 100644 node_modules/rxjs/operators/onErrorResumeNext.js create mode 100644 node_modules/rxjs/operators/onErrorResumeNext.js.map create mode 100644 node_modules/rxjs/operators/pairwise.d.ts create mode 100644 node_modules/rxjs/operators/pairwise.js create mode 100644 node_modules/rxjs/operators/pairwise.js.map create mode 100644 node_modules/rxjs/operators/partition.d.ts create mode 100644 node_modules/rxjs/operators/partition.js create mode 100644 node_modules/rxjs/operators/partition.js.map create mode 100644 node_modules/rxjs/operators/pluck.d.ts create mode 100644 node_modules/rxjs/operators/pluck.js create mode 100644 node_modules/rxjs/operators/pluck.js.map create mode 100644 node_modules/rxjs/operators/publish.d.ts create mode 100644 node_modules/rxjs/operators/publish.js create mode 100644 node_modules/rxjs/operators/publish.js.map create mode 100644 node_modules/rxjs/operators/publishBehavior.d.ts create mode 100644 node_modules/rxjs/operators/publishBehavior.js create mode 100644 node_modules/rxjs/operators/publishBehavior.js.map create mode 100644 node_modules/rxjs/operators/publishLast.d.ts create mode 100644 node_modules/rxjs/operators/publishLast.js create mode 100644 node_modules/rxjs/operators/publishLast.js.map create mode 100644 node_modules/rxjs/operators/publishReplay.d.ts create mode 100644 node_modules/rxjs/operators/publishReplay.js create mode 100644 node_modules/rxjs/operators/publishReplay.js.map create mode 100644 node_modules/rxjs/operators/race.d.ts create mode 100644 node_modules/rxjs/operators/race.js create mode 100644 node_modules/rxjs/operators/race.js.map create mode 100644 node_modules/rxjs/operators/reduce.d.ts create mode 100644 node_modules/rxjs/operators/reduce.js create mode 100644 node_modules/rxjs/operators/reduce.js.map create mode 100644 node_modules/rxjs/operators/refCount.d.ts create mode 100644 node_modules/rxjs/operators/refCount.js create mode 100644 node_modules/rxjs/operators/refCount.js.map create mode 100644 node_modules/rxjs/operators/repeat.d.ts create mode 100644 node_modules/rxjs/operators/repeat.js create mode 100644 node_modules/rxjs/operators/repeat.js.map create mode 100644 node_modules/rxjs/operators/repeatWhen.d.ts create mode 100644 node_modules/rxjs/operators/repeatWhen.js create mode 100644 node_modules/rxjs/operators/repeatWhen.js.map create mode 100644 node_modules/rxjs/operators/retry.d.ts create mode 100644 node_modules/rxjs/operators/retry.js create mode 100644 node_modules/rxjs/operators/retry.js.map create mode 100644 node_modules/rxjs/operators/retryWhen.d.ts create mode 100644 node_modules/rxjs/operators/retryWhen.js create mode 100644 node_modules/rxjs/operators/retryWhen.js.map create mode 100644 node_modules/rxjs/operators/sample.d.ts create mode 100644 node_modules/rxjs/operators/sample.js create mode 100644 node_modules/rxjs/operators/sample.js.map create mode 100644 node_modules/rxjs/operators/sampleTime.d.ts create mode 100644 node_modules/rxjs/operators/sampleTime.js create mode 100644 node_modules/rxjs/operators/sampleTime.js.map create mode 100644 node_modules/rxjs/operators/scan.d.ts create mode 100644 node_modules/rxjs/operators/scan.js create mode 100644 node_modules/rxjs/operators/scan.js.map create mode 100644 node_modules/rxjs/operators/sequenceEqual.d.ts create mode 100644 node_modules/rxjs/operators/sequenceEqual.js create mode 100644 node_modules/rxjs/operators/sequenceEqual.js.map create mode 100644 node_modules/rxjs/operators/share.d.ts create mode 100644 node_modules/rxjs/operators/share.js create mode 100644 node_modules/rxjs/operators/share.js.map create mode 100644 node_modules/rxjs/operators/shareReplay.d.ts create mode 100644 node_modules/rxjs/operators/shareReplay.js create mode 100644 node_modules/rxjs/operators/shareReplay.js.map create mode 100644 node_modules/rxjs/operators/single.d.ts create mode 100644 node_modules/rxjs/operators/single.js create mode 100644 node_modules/rxjs/operators/single.js.map create mode 100644 node_modules/rxjs/operators/skip.d.ts create mode 100644 node_modules/rxjs/operators/skip.js create mode 100644 node_modules/rxjs/operators/skip.js.map create mode 100644 node_modules/rxjs/operators/skipLast.d.ts create mode 100644 node_modules/rxjs/operators/skipLast.js create mode 100644 node_modules/rxjs/operators/skipLast.js.map create mode 100644 node_modules/rxjs/operators/skipUntil.d.ts create mode 100644 node_modules/rxjs/operators/skipUntil.js create mode 100644 node_modules/rxjs/operators/skipUntil.js.map create mode 100644 node_modules/rxjs/operators/skipWhile.d.ts create mode 100644 node_modules/rxjs/operators/skipWhile.js create mode 100644 node_modules/rxjs/operators/skipWhile.js.map create mode 100644 node_modules/rxjs/operators/startWith.d.ts create mode 100644 node_modules/rxjs/operators/startWith.js create mode 100644 node_modules/rxjs/operators/startWith.js.map create mode 100644 node_modules/rxjs/operators/subscribeOn.d.ts create mode 100644 node_modules/rxjs/operators/subscribeOn.js create mode 100644 node_modules/rxjs/operators/subscribeOn.js.map create mode 100644 node_modules/rxjs/operators/switchAll.d.ts create mode 100644 node_modules/rxjs/operators/switchAll.js create mode 100644 node_modules/rxjs/operators/switchAll.js.map create mode 100644 node_modules/rxjs/operators/switchMap.d.ts create mode 100644 node_modules/rxjs/operators/switchMap.js create mode 100644 node_modules/rxjs/operators/switchMap.js.map create mode 100644 node_modules/rxjs/operators/switchMapTo.d.ts create mode 100644 node_modules/rxjs/operators/switchMapTo.js create mode 100644 node_modules/rxjs/operators/switchMapTo.js.map create mode 100644 node_modules/rxjs/operators/take.d.ts create mode 100644 node_modules/rxjs/operators/take.js create mode 100644 node_modules/rxjs/operators/take.js.map create mode 100644 node_modules/rxjs/operators/takeLast.d.ts create mode 100644 node_modules/rxjs/operators/takeLast.js create mode 100644 node_modules/rxjs/operators/takeLast.js.map create mode 100644 node_modules/rxjs/operators/takeUntil.d.ts create mode 100644 node_modules/rxjs/operators/takeUntil.js create mode 100644 node_modules/rxjs/operators/takeUntil.js.map create mode 100644 node_modules/rxjs/operators/takeWhile.d.ts create mode 100644 node_modules/rxjs/operators/takeWhile.js create mode 100644 node_modules/rxjs/operators/takeWhile.js.map create mode 100644 node_modules/rxjs/operators/tap.d.ts create mode 100644 node_modules/rxjs/operators/tap.js create mode 100644 node_modules/rxjs/operators/tap.js.map create mode 100644 node_modules/rxjs/operators/throttle.d.ts create mode 100644 node_modules/rxjs/operators/throttle.js create mode 100644 node_modules/rxjs/operators/throttle.js.map create mode 100644 node_modules/rxjs/operators/throttleTime.d.ts create mode 100644 node_modules/rxjs/operators/throttleTime.js create mode 100644 node_modules/rxjs/operators/throttleTime.js.map create mode 100644 node_modules/rxjs/operators/timeInterval.d.ts create mode 100644 node_modules/rxjs/operators/timeInterval.js create mode 100644 node_modules/rxjs/operators/timeInterval.js.map create mode 100644 node_modules/rxjs/operators/timeout.d.ts create mode 100644 node_modules/rxjs/operators/timeout.js create mode 100644 node_modules/rxjs/operators/timeout.js.map create mode 100644 node_modules/rxjs/operators/timeoutWith.d.ts create mode 100644 node_modules/rxjs/operators/timeoutWith.js create mode 100644 node_modules/rxjs/operators/timeoutWith.js.map create mode 100644 node_modules/rxjs/operators/timestamp.d.ts create mode 100644 node_modules/rxjs/operators/timestamp.js create mode 100644 node_modules/rxjs/operators/timestamp.js.map create mode 100644 node_modules/rxjs/operators/toArray.d.ts create mode 100644 node_modules/rxjs/operators/toArray.js create mode 100644 node_modules/rxjs/operators/toArray.js.map create mode 100644 node_modules/rxjs/operators/window.d.ts create mode 100644 node_modules/rxjs/operators/window.js create mode 100644 node_modules/rxjs/operators/window.js.map create mode 100644 node_modules/rxjs/operators/windowCount.d.ts create mode 100644 node_modules/rxjs/operators/windowCount.js create mode 100644 node_modules/rxjs/operators/windowCount.js.map create mode 100644 node_modules/rxjs/operators/windowTime.d.ts create mode 100644 node_modules/rxjs/operators/windowTime.js create mode 100644 node_modules/rxjs/operators/windowTime.js.map create mode 100644 node_modules/rxjs/operators/windowToggle.d.ts create mode 100644 node_modules/rxjs/operators/windowToggle.js create mode 100644 node_modules/rxjs/operators/windowToggle.js.map create mode 100644 node_modules/rxjs/operators/windowWhen.d.ts create mode 100644 node_modules/rxjs/operators/windowWhen.js create mode 100644 node_modules/rxjs/operators/windowWhen.js.map create mode 100644 node_modules/rxjs/operators/withLatestFrom.d.ts create mode 100644 node_modules/rxjs/operators/withLatestFrom.js create mode 100644 node_modules/rxjs/operators/withLatestFrom.js.map create mode 100644 node_modules/rxjs/operators/zip.d.ts create mode 100644 node_modules/rxjs/operators/zip.js create mode 100644 node_modules/rxjs/operators/zip.js.map create mode 100644 node_modules/rxjs/operators/zipAll.d.ts create mode 100644 node_modules/rxjs/operators/zipAll.js create mode 100644 node_modules/rxjs/operators/zipAll.js.map create mode 100644 node_modules/rxjs/package.json create mode 100644 node_modules/rxjs/scheduler/Action.d.ts create mode 100644 node_modules/rxjs/scheduler/Action.js create mode 100644 node_modules/rxjs/scheduler/Action.js.map create mode 100644 node_modules/rxjs/scheduler/AnimationFrameAction.d.ts create mode 100644 node_modules/rxjs/scheduler/AnimationFrameAction.js create mode 100644 node_modules/rxjs/scheduler/AnimationFrameAction.js.map create mode 100644 node_modules/rxjs/scheduler/AnimationFrameScheduler.d.ts create mode 100644 node_modules/rxjs/scheduler/AnimationFrameScheduler.js create mode 100644 node_modules/rxjs/scheduler/AnimationFrameScheduler.js.map create mode 100644 node_modules/rxjs/scheduler/AsapAction.d.ts create mode 100644 node_modules/rxjs/scheduler/AsapAction.js create mode 100644 node_modules/rxjs/scheduler/AsapAction.js.map create mode 100644 node_modules/rxjs/scheduler/AsapScheduler.d.ts create mode 100644 node_modules/rxjs/scheduler/AsapScheduler.js create mode 100644 node_modules/rxjs/scheduler/AsapScheduler.js.map create mode 100644 node_modules/rxjs/scheduler/AsyncAction.d.ts create mode 100644 node_modules/rxjs/scheduler/AsyncAction.js create mode 100644 node_modules/rxjs/scheduler/AsyncAction.js.map create mode 100644 node_modules/rxjs/scheduler/AsyncScheduler.d.ts create mode 100644 node_modules/rxjs/scheduler/AsyncScheduler.js create mode 100644 node_modules/rxjs/scheduler/AsyncScheduler.js.map create mode 100644 node_modules/rxjs/scheduler/QueueAction.d.ts create mode 100644 node_modules/rxjs/scheduler/QueueAction.js create mode 100644 node_modules/rxjs/scheduler/QueueAction.js.map create mode 100644 node_modules/rxjs/scheduler/QueueScheduler.d.ts create mode 100644 node_modules/rxjs/scheduler/QueueScheduler.js create mode 100644 node_modules/rxjs/scheduler/QueueScheduler.js.map create mode 100644 node_modules/rxjs/scheduler/VirtualTimeScheduler.d.ts create mode 100644 node_modules/rxjs/scheduler/VirtualTimeScheduler.js create mode 100644 node_modules/rxjs/scheduler/VirtualTimeScheduler.js.map create mode 100644 node_modules/rxjs/scheduler/animationFrame.d.ts create mode 100644 node_modules/rxjs/scheduler/animationFrame.js create mode 100644 node_modules/rxjs/scheduler/animationFrame.js.map create mode 100644 node_modules/rxjs/scheduler/asap.d.ts create mode 100644 node_modules/rxjs/scheduler/asap.js create mode 100644 node_modules/rxjs/scheduler/asap.js.map create mode 100644 node_modules/rxjs/scheduler/async.d.ts create mode 100644 node_modules/rxjs/scheduler/async.js create mode 100644 node_modules/rxjs/scheduler/async.js.map create mode 100644 node_modules/rxjs/scheduler/queue.d.ts create mode 100644 node_modules/rxjs/scheduler/queue.js create mode 100644 node_modules/rxjs/scheduler/queue.js.map create mode 100644 node_modules/rxjs/src/AsyncSubject.ts create mode 100644 node_modules/rxjs/src/BUILD.bazel create mode 100644 node_modules/rxjs/src/BehaviorSubject.ts create mode 100644 node_modules/rxjs/src/InnerSubscriber.ts create mode 100644 node_modules/rxjs/src/LICENSE.txt create mode 100644 node_modules/rxjs/src/MiscJSDoc.ts create mode 100644 node_modules/rxjs/src/Notification.ts create mode 100644 node_modules/rxjs/src/Observable.ts create mode 100644 node_modules/rxjs/src/Observer.ts create mode 100644 node_modules/rxjs/src/Operator.ts create mode 100644 node_modules/rxjs/src/OuterSubscriber.ts create mode 100644 node_modules/rxjs/src/README.md create mode 100644 node_modules/rxjs/src/ReplaySubject.ts create mode 100644 node_modules/rxjs/src/Rx.global.js create mode 100644 node_modules/rxjs/src/Rx.ts create mode 100644 node_modules/rxjs/src/Scheduler.ts create mode 100644 node_modules/rxjs/src/Subject.ts create mode 100644 node_modules/rxjs/src/SubjectSubscription.ts create mode 100644 node_modules/rxjs/src/Subscriber.ts create mode 100644 node_modules/rxjs/src/Subscription.ts create mode 100644 node_modules/rxjs/src/WORKSPACE create mode 100644 node_modules/rxjs/src/add/observable/bindCallback.ts create mode 100644 node_modules/rxjs/src/add/observable/bindNodeCallback.ts create mode 100644 node_modules/rxjs/src/add/observable/combineLatest.ts create mode 100644 node_modules/rxjs/src/add/observable/concat.ts create mode 100644 node_modules/rxjs/src/add/observable/defer.ts create mode 100644 node_modules/rxjs/src/add/observable/dom/ajax.ts create mode 100644 node_modules/rxjs/src/add/observable/dom/webSocket.ts create mode 100644 node_modules/rxjs/src/add/observable/empty.ts create mode 100644 node_modules/rxjs/src/add/observable/forkJoin.ts create mode 100644 node_modules/rxjs/src/add/observable/from.ts create mode 100644 node_modules/rxjs/src/add/observable/fromEvent.ts create mode 100644 node_modules/rxjs/src/add/observable/fromEventPattern.ts create mode 100644 node_modules/rxjs/src/add/observable/fromPromise.ts create mode 100644 node_modules/rxjs/src/add/observable/generate.ts create mode 100644 node_modules/rxjs/src/add/observable/if.ts create mode 100644 node_modules/rxjs/src/add/observable/interval.ts create mode 100644 node_modules/rxjs/src/add/observable/merge.ts create mode 100644 node_modules/rxjs/src/add/observable/never.ts create mode 100644 node_modules/rxjs/src/add/observable/of.ts create mode 100644 node_modules/rxjs/src/add/observable/onErrorResumeNext.ts create mode 100644 node_modules/rxjs/src/add/observable/pairs.ts create mode 100644 node_modules/rxjs/src/add/observable/race.ts create mode 100644 node_modules/rxjs/src/add/observable/range.ts create mode 100644 node_modules/rxjs/src/add/observable/throw.ts create mode 100644 node_modules/rxjs/src/add/observable/timer.ts create mode 100644 node_modules/rxjs/src/add/observable/using.ts create mode 100644 node_modules/rxjs/src/add/observable/zip.ts create mode 100644 node_modules/rxjs/src/add/operator/audit.ts create mode 100644 node_modules/rxjs/src/add/operator/auditTime.ts create mode 100644 node_modules/rxjs/src/add/operator/buffer.ts create mode 100644 node_modules/rxjs/src/add/operator/bufferCount.ts create mode 100644 node_modules/rxjs/src/add/operator/bufferTime.ts create mode 100644 node_modules/rxjs/src/add/operator/bufferToggle.ts create mode 100644 node_modules/rxjs/src/add/operator/bufferWhen.ts create mode 100644 node_modules/rxjs/src/add/operator/catch.ts create mode 100644 node_modules/rxjs/src/add/operator/combineAll.ts create mode 100644 node_modules/rxjs/src/add/operator/combineLatest.ts create mode 100644 node_modules/rxjs/src/add/operator/concat.ts create mode 100644 node_modules/rxjs/src/add/operator/concatAll.ts create mode 100644 node_modules/rxjs/src/add/operator/concatMap.ts create mode 100644 node_modules/rxjs/src/add/operator/concatMapTo.ts create mode 100644 node_modules/rxjs/src/add/operator/count.ts create mode 100644 node_modules/rxjs/src/add/operator/debounce.ts create mode 100644 node_modules/rxjs/src/add/operator/debounceTime.ts create mode 100644 node_modules/rxjs/src/add/operator/defaultIfEmpty.ts create mode 100644 node_modules/rxjs/src/add/operator/delay.ts create mode 100644 node_modules/rxjs/src/add/operator/delayWhen.ts create mode 100644 node_modules/rxjs/src/add/operator/dematerialize.ts create mode 100644 node_modules/rxjs/src/add/operator/distinct.ts create mode 100644 node_modules/rxjs/src/add/operator/distinctUntilChanged.ts create mode 100644 node_modules/rxjs/src/add/operator/distinctUntilKeyChanged.ts create mode 100644 node_modules/rxjs/src/add/operator/do.ts create mode 100644 node_modules/rxjs/src/add/operator/elementAt.ts create mode 100644 node_modules/rxjs/src/add/operator/every.ts create mode 100644 node_modules/rxjs/src/add/operator/exhaust.ts create mode 100644 node_modules/rxjs/src/add/operator/exhaustMap.ts create mode 100644 node_modules/rxjs/src/add/operator/expand.ts create mode 100644 node_modules/rxjs/src/add/operator/filter.ts create mode 100644 node_modules/rxjs/src/add/operator/finally.ts create mode 100644 node_modules/rxjs/src/add/operator/find.ts create mode 100644 node_modules/rxjs/src/add/operator/findIndex.ts create mode 100644 node_modules/rxjs/src/add/operator/first.ts create mode 100644 node_modules/rxjs/src/add/operator/groupBy.ts create mode 100644 node_modules/rxjs/src/add/operator/ignoreElements.ts create mode 100644 node_modules/rxjs/src/add/operator/isEmpty.ts create mode 100644 node_modules/rxjs/src/add/operator/last.ts create mode 100644 node_modules/rxjs/src/add/operator/let.ts create mode 100644 node_modules/rxjs/src/add/operator/map.ts create mode 100644 node_modules/rxjs/src/add/operator/mapTo.ts create mode 100644 node_modules/rxjs/src/add/operator/materialize.ts create mode 100644 node_modules/rxjs/src/add/operator/max.ts create mode 100644 node_modules/rxjs/src/add/operator/merge.ts create mode 100644 node_modules/rxjs/src/add/operator/mergeAll.ts create mode 100644 node_modules/rxjs/src/add/operator/mergeMap.ts create mode 100644 node_modules/rxjs/src/add/operator/mergeMapTo.ts create mode 100644 node_modules/rxjs/src/add/operator/mergeScan.ts create mode 100644 node_modules/rxjs/src/add/operator/min.ts create mode 100644 node_modules/rxjs/src/add/operator/multicast.ts create mode 100644 node_modules/rxjs/src/add/operator/observeOn.ts create mode 100644 node_modules/rxjs/src/add/operator/onErrorResumeNext.ts create mode 100644 node_modules/rxjs/src/add/operator/pairwise.ts create mode 100644 node_modules/rxjs/src/add/operator/partition.ts create mode 100644 node_modules/rxjs/src/add/operator/pluck.ts create mode 100644 node_modules/rxjs/src/add/operator/publish.ts create mode 100644 node_modules/rxjs/src/add/operator/publishBehavior.ts create mode 100644 node_modules/rxjs/src/add/operator/publishLast.ts create mode 100644 node_modules/rxjs/src/add/operator/publishReplay.ts create mode 100644 node_modules/rxjs/src/add/operator/race.ts create mode 100644 node_modules/rxjs/src/add/operator/reduce.ts create mode 100644 node_modules/rxjs/src/add/operator/repeat.ts create mode 100644 node_modules/rxjs/src/add/operator/repeatWhen.ts create mode 100644 node_modules/rxjs/src/add/operator/retry.ts create mode 100644 node_modules/rxjs/src/add/operator/retryWhen.ts create mode 100644 node_modules/rxjs/src/add/operator/sample.ts create mode 100644 node_modules/rxjs/src/add/operator/sampleTime.ts create mode 100644 node_modules/rxjs/src/add/operator/scan.ts create mode 100644 node_modules/rxjs/src/add/operator/sequenceEqual.ts create mode 100644 node_modules/rxjs/src/add/operator/share.ts create mode 100644 node_modules/rxjs/src/add/operator/shareReplay.ts create mode 100644 node_modules/rxjs/src/add/operator/single.ts create mode 100644 node_modules/rxjs/src/add/operator/skip.ts create mode 100644 node_modules/rxjs/src/add/operator/skipLast.ts create mode 100644 node_modules/rxjs/src/add/operator/skipUntil.ts create mode 100644 node_modules/rxjs/src/add/operator/skipWhile.ts create mode 100644 node_modules/rxjs/src/add/operator/startWith.ts create mode 100644 node_modules/rxjs/src/add/operator/subscribeOn.ts create mode 100644 node_modules/rxjs/src/add/operator/switch.ts create mode 100644 node_modules/rxjs/src/add/operator/switchMap.ts create mode 100644 node_modules/rxjs/src/add/operator/switchMapTo.ts create mode 100644 node_modules/rxjs/src/add/operator/take.ts create mode 100644 node_modules/rxjs/src/add/operator/takeLast.ts create mode 100644 node_modules/rxjs/src/add/operator/takeUntil.ts create mode 100644 node_modules/rxjs/src/add/operator/takeWhile.ts create mode 100644 node_modules/rxjs/src/add/operator/throttle.ts create mode 100644 node_modules/rxjs/src/add/operator/throttleTime.ts create mode 100644 node_modules/rxjs/src/add/operator/timeInterval.ts create mode 100644 node_modules/rxjs/src/add/operator/timeout.ts create mode 100644 node_modules/rxjs/src/add/operator/timeoutWith.ts create mode 100644 node_modules/rxjs/src/add/operator/timestamp.ts create mode 100644 node_modules/rxjs/src/add/operator/toArray.ts create mode 100644 node_modules/rxjs/src/add/operator/toPromise.ts create mode 100644 node_modules/rxjs/src/add/operator/window.ts create mode 100644 node_modules/rxjs/src/add/operator/windowCount.ts create mode 100644 node_modules/rxjs/src/add/operator/windowTime.ts create mode 100644 node_modules/rxjs/src/add/operator/windowToggle.ts create mode 100644 node_modules/rxjs/src/add/operator/windowWhen.ts create mode 100644 node_modules/rxjs/src/add/operator/withLatestFrom.ts create mode 100644 node_modules/rxjs/src/add/operator/zip.ts create mode 100644 node_modules/rxjs/src/add/operator/zipAll.ts create mode 100644 node_modules/rxjs/src/interfaces.ts create mode 100644 node_modules/rxjs/src/observable/ArrayLikeObservable.ts create mode 100644 node_modules/rxjs/src/observable/ArrayObservable.ts create mode 100644 node_modules/rxjs/src/observable/BoundCallbackObservable.ts create mode 100644 node_modules/rxjs/src/observable/BoundNodeCallbackObservable.ts create mode 100644 node_modules/rxjs/src/observable/ConnectableObservable.ts create mode 100644 node_modules/rxjs/src/observable/DeferObservable.ts create mode 100644 node_modules/rxjs/src/observable/EmptyObservable.ts create mode 100644 node_modules/rxjs/src/observable/ErrorObservable.ts create mode 100644 node_modules/rxjs/src/observable/ForkJoinObservable.ts create mode 100644 node_modules/rxjs/src/observable/FromEventObservable.ts create mode 100644 node_modules/rxjs/src/observable/FromEventPatternObservable.ts create mode 100644 node_modules/rxjs/src/observable/FromObservable.ts create mode 100644 node_modules/rxjs/src/observable/GenerateObservable.ts create mode 100644 node_modules/rxjs/src/observable/IfObservable.ts create mode 100644 node_modules/rxjs/src/observable/IntervalObservable.ts create mode 100644 node_modules/rxjs/src/observable/IteratorObservable.ts create mode 100644 node_modules/rxjs/src/observable/NeverObservable.ts create mode 100644 node_modules/rxjs/src/observable/PairsObservable.ts create mode 100644 node_modules/rxjs/src/observable/PromiseObservable.ts create mode 100644 node_modules/rxjs/src/observable/RangeObservable.ts create mode 100644 node_modules/rxjs/src/observable/ScalarObservable.ts create mode 100644 node_modules/rxjs/src/observable/SubscribeOnObservable.ts create mode 100644 node_modules/rxjs/src/observable/TimerObservable.ts create mode 100644 node_modules/rxjs/src/observable/UsingObservable.ts create mode 100644 node_modules/rxjs/src/observable/bindCallback.ts create mode 100644 node_modules/rxjs/src/observable/bindNodeCallback.ts create mode 100644 node_modules/rxjs/src/observable/combineLatest.ts create mode 100644 node_modules/rxjs/src/observable/concat.ts create mode 100644 node_modules/rxjs/src/observable/defer.ts create mode 100644 node_modules/rxjs/src/observable/dom/AjaxObservable.ts create mode 100644 node_modules/rxjs/src/observable/dom/MiscJSDoc.ts create mode 100644 node_modules/rxjs/src/observable/dom/WebSocketSubject.ts create mode 100644 node_modules/rxjs/src/observable/dom/ajax.ts create mode 100644 node_modules/rxjs/src/observable/dom/webSocket.ts create mode 100644 node_modules/rxjs/src/observable/empty.ts create mode 100644 node_modules/rxjs/src/observable/forkJoin.ts create mode 100644 node_modules/rxjs/src/observable/from.ts create mode 100644 node_modules/rxjs/src/observable/fromEvent.ts create mode 100644 node_modules/rxjs/src/observable/fromEventPattern.ts create mode 100644 node_modules/rxjs/src/observable/fromPromise.ts create mode 100644 node_modules/rxjs/src/observable/generate.ts create mode 100644 node_modules/rxjs/src/observable/if.ts create mode 100644 node_modules/rxjs/src/observable/interval.ts create mode 100644 node_modules/rxjs/src/observable/merge.ts create mode 100644 node_modules/rxjs/src/observable/never.ts create mode 100644 node_modules/rxjs/src/observable/of.ts create mode 100644 node_modules/rxjs/src/observable/onErrorResumeNext.ts create mode 100644 node_modules/rxjs/src/observable/pairs.ts create mode 100644 node_modules/rxjs/src/observable/race.ts create mode 100644 node_modules/rxjs/src/observable/range.ts create mode 100644 node_modules/rxjs/src/observable/throw.ts create mode 100644 node_modules/rxjs/src/observable/timer.ts create mode 100644 node_modules/rxjs/src/observable/using.ts create mode 100644 node_modules/rxjs/src/observable/zip.ts create mode 100644 node_modules/rxjs/src/operator/audit.ts create mode 100644 node_modules/rxjs/src/operator/auditTime.ts create mode 100644 node_modules/rxjs/src/operator/buffer.ts create mode 100644 node_modules/rxjs/src/operator/bufferCount.ts create mode 100644 node_modules/rxjs/src/operator/bufferTime.ts create mode 100644 node_modules/rxjs/src/operator/bufferToggle.ts create mode 100644 node_modules/rxjs/src/operator/bufferWhen.ts create mode 100644 node_modules/rxjs/src/operator/catch.ts create mode 100644 node_modules/rxjs/src/operator/combineAll.ts create mode 100644 node_modules/rxjs/src/operator/combineLatest.ts create mode 100644 node_modules/rxjs/src/operator/concat.ts create mode 100644 node_modules/rxjs/src/operator/concatAll.ts create mode 100644 node_modules/rxjs/src/operator/concatMap.ts create mode 100644 node_modules/rxjs/src/operator/concatMapTo.ts create mode 100644 node_modules/rxjs/src/operator/count.ts create mode 100644 node_modules/rxjs/src/operator/debounce.ts create mode 100644 node_modules/rxjs/src/operator/debounceTime.ts create mode 100644 node_modules/rxjs/src/operator/defaultIfEmpty.ts create mode 100644 node_modules/rxjs/src/operator/delay.ts create mode 100644 node_modules/rxjs/src/operator/delayWhen.ts create mode 100644 node_modules/rxjs/src/operator/dematerialize.ts create mode 100644 node_modules/rxjs/src/operator/distinct.ts create mode 100644 node_modules/rxjs/src/operator/distinctUntilChanged.ts create mode 100644 node_modules/rxjs/src/operator/distinctUntilKeyChanged.ts create mode 100644 node_modules/rxjs/src/operator/do.ts create mode 100644 node_modules/rxjs/src/operator/elementAt.ts create mode 100644 node_modules/rxjs/src/operator/every.ts create mode 100644 node_modules/rxjs/src/operator/exhaust.ts create mode 100644 node_modules/rxjs/src/operator/exhaustMap.ts create mode 100644 node_modules/rxjs/src/operator/expand.ts create mode 100644 node_modules/rxjs/src/operator/filter.ts create mode 100644 node_modules/rxjs/src/operator/finally.ts create mode 100644 node_modules/rxjs/src/operator/find.ts create mode 100644 node_modules/rxjs/src/operator/findIndex.ts create mode 100644 node_modules/rxjs/src/operator/first.ts create mode 100644 node_modules/rxjs/src/operator/groupBy.ts create mode 100644 node_modules/rxjs/src/operator/ignoreElements.ts create mode 100644 node_modules/rxjs/src/operator/isEmpty.ts create mode 100644 node_modules/rxjs/src/operator/last.ts create mode 100644 node_modules/rxjs/src/operator/let.ts create mode 100644 node_modules/rxjs/src/operator/map.ts create mode 100644 node_modules/rxjs/src/operator/mapTo.ts create mode 100644 node_modules/rxjs/src/operator/materialize.ts create mode 100644 node_modules/rxjs/src/operator/max.ts create mode 100644 node_modules/rxjs/src/operator/merge.ts create mode 100644 node_modules/rxjs/src/operator/mergeAll.ts create mode 100644 node_modules/rxjs/src/operator/mergeMap.ts create mode 100644 node_modules/rxjs/src/operator/mergeMapTo.ts create mode 100644 node_modules/rxjs/src/operator/mergeScan.ts create mode 100644 node_modules/rxjs/src/operator/min.ts create mode 100644 node_modules/rxjs/src/operator/multicast.ts create mode 100644 node_modules/rxjs/src/operator/observeOn.ts create mode 100644 node_modules/rxjs/src/operator/onErrorResumeNext.ts create mode 100644 node_modules/rxjs/src/operator/pairwise.ts create mode 100644 node_modules/rxjs/src/operator/partition.ts create mode 100644 node_modules/rxjs/src/operator/pluck.ts create mode 100644 node_modules/rxjs/src/operator/publish.ts create mode 100644 node_modules/rxjs/src/operator/publishBehavior.ts create mode 100644 node_modules/rxjs/src/operator/publishLast.ts create mode 100644 node_modules/rxjs/src/operator/publishReplay.ts create mode 100644 node_modules/rxjs/src/operator/race.ts create mode 100644 node_modules/rxjs/src/operator/reduce.ts create mode 100644 node_modules/rxjs/src/operator/repeat.ts create mode 100644 node_modules/rxjs/src/operator/repeatWhen.ts create mode 100644 node_modules/rxjs/src/operator/retry.ts create mode 100644 node_modules/rxjs/src/operator/retryWhen.ts create mode 100644 node_modules/rxjs/src/operator/sample.ts create mode 100644 node_modules/rxjs/src/operator/sampleTime.ts create mode 100644 node_modules/rxjs/src/operator/scan.ts create mode 100644 node_modules/rxjs/src/operator/sequenceEqual.ts create mode 100644 node_modules/rxjs/src/operator/share.ts create mode 100644 node_modules/rxjs/src/operator/shareReplay.ts create mode 100644 node_modules/rxjs/src/operator/single.ts create mode 100644 node_modules/rxjs/src/operator/skip.ts create mode 100644 node_modules/rxjs/src/operator/skipLast.ts create mode 100644 node_modules/rxjs/src/operator/skipUntil.ts create mode 100644 node_modules/rxjs/src/operator/skipWhile.ts create mode 100644 node_modules/rxjs/src/operator/startWith.ts create mode 100644 node_modules/rxjs/src/operator/subscribeOn.ts create mode 100644 node_modules/rxjs/src/operator/switch.ts create mode 100644 node_modules/rxjs/src/operator/switchMap.ts create mode 100644 node_modules/rxjs/src/operator/switchMapTo.ts create mode 100644 node_modules/rxjs/src/operator/take.ts create mode 100644 node_modules/rxjs/src/operator/takeLast.ts create mode 100644 node_modules/rxjs/src/operator/takeUntil.ts create mode 100644 node_modules/rxjs/src/operator/takeWhile.ts create mode 100644 node_modules/rxjs/src/operator/throttle.ts create mode 100644 node_modules/rxjs/src/operator/throttleTime.ts create mode 100644 node_modules/rxjs/src/operator/timeInterval.ts create mode 100644 node_modules/rxjs/src/operator/timeout.ts create mode 100644 node_modules/rxjs/src/operator/timeoutWith.ts create mode 100644 node_modules/rxjs/src/operator/timestamp.ts create mode 100644 node_modules/rxjs/src/operator/toArray.ts create mode 100644 node_modules/rxjs/src/operator/toPromise.ts create mode 100644 node_modules/rxjs/src/operator/window.ts create mode 100644 node_modules/rxjs/src/operator/windowCount.ts create mode 100644 node_modules/rxjs/src/operator/windowTime.ts create mode 100644 node_modules/rxjs/src/operator/windowToggle.ts create mode 100644 node_modules/rxjs/src/operator/windowWhen.ts create mode 100644 node_modules/rxjs/src/operator/withLatestFrom.ts create mode 100644 node_modules/rxjs/src/operator/zip.ts create mode 100644 node_modules/rxjs/src/operator/zipAll.ts create mode 100644 node_modules/rxjs/src/operators.ts create mode 100644 node_modules/rxjs/src/operators/audit.ts create mode 100644 node_modules/rxjs/src/operators/auditTime.ts create mode 100644 node_modules/rxjs/src/operators/buffer.ts create mode 100644 node_modules/rxjs/src/operators/bufferCount.ts create mode 100644 node_modules/rxjs/src/operators/bufferTime.ts create mode 100644 node_modules/rxjs/src/operators/bufferToggle.ts create mode 100644 node_modules/rxjs/src/operators/bufferWhen.ts create mode 100644 node_modules/rxjs/src/operators/catchError.ts create mode 100644 node_modules/rxjs/src/operators/combineAll.ts create mode 100644 node_modules/rxjs/src/operators/combineLatest.ts create mode 100644 node_modules/rxjs/src/operators/concat.ts create mode 100644 node_modules/rxjs/src/operators/concatAll.ts create mode 100644 node_modules/rxjs/src/operators/concatMap.ts create mode 100644 node_modules/rxjs/src/operators/concatMapTo.ts create mode 100644 node_modules/rxjs/src/operators/count.ts create mode 100644 node_modules/rxjs/src/operators/debounce.ts create mode 100644 node_modules/rxjs/src/operators/debounceTime.ts create mode 100644 node_modules/rxjs/src/operators/defaultIfEmpty.ts create mode 100644 node_modules/rxjs/src/operators/delay.ts create mode 100644 node_modules/rxjs/src/operators/delayWhen.ts create mode 100644 node_modules/rxjs/src/operators/dematerialize.ts create mode 100644 node_modules/rxjs/src/operators/distinct.ts create mode 100644 node_modules/rxjs/src/operators/distinctUntilChanged.ts create mode 100644 node_modules/rxjs/src/operators/distinctUntilKeyChanged.ts create mode 100644 node_modules/rxjs/src/operators/elementAt.ts create mode 100644 node_modules/rxjs/src/operators/every.ts create mode 100644 node_modules/rxjs/src/operators/exhaust.ts create mode 100644 node_modules/rxjs/src/operators/exhaustMap.ts create mode 100644 node_modules/rxjs/src/operators/expand.ts create mode 100644 node_modules/rxjs/src/operators/filter.ts create mode 100644 node_modules/rxjs/src/operators/finalize.ts create mode 100644 node_modules/rxjs/src/operators/find.ts create mode 100644 node_modules/rxjs/src/operators/findIndex.ts create mode 100644 node_modules/rxjs/src/operators/first.ts create mode 100644 node_modules/rxjs/src/operators/groupBy.ts create mode 100644 node_modules/rxjs/src/operators/ignoreElements.ts create mode 100644 node_modules/rxjs/src/operators/isEmpty.ts create mode 100644 node_modules/rxjs/src/operators/last.ts create mode 100644 node_modules/rxjs/src/operators/map.ts create mode 100644 node_modules/rxjs/src/operators/mapTo.ts create mode 100644 node_modules/rxjs/src/operators/materialize.ts create mode 100644 node_modules/rxjs/src/operators/max.ts create mode 100644 node_modules/rxjs/src/operators/merge.ts create mode 100644 node_modules/rxjs/src/operators/mergeAll.ts create mode 100644 node_modules/rxjs/src/operators/mergeMap.ts create mode 100644 node_modules/rxjs/src/operators/mergeMapTo.ts create mode 100644 node_modules/rxjs/src/operators/mergeScan.ts create mode 100644 node_modules/rxjs/src/operators/min.ts create mode 100644 node_modules/rxjs/src/operators/multicast.ts create mode 100644 node_modules/rxjs/src/operators/observeOn.ts create mode 100644 node_modules/rxjs/src/operators/onErrorResumeNext.ts create mode 100644 node_modules/rxjs/src/operators/pairwise.ts create mode 100644 node_modules/rxjs/src/operators/partition.ts create mode 100644 node_modules/rxjs/src/operators/pluck.ts create mode 100644 node_modules/rxjs/src/operators/publish.ts create mode 100644 node_modules/rxjs/src/operators/publishBehavior.ts create mode 100644 node_modules/rxjs/src/operators/publishLast.ts create mode 100644 node_modules/rxjs/src/operators/publishReplay.ts create mode 100644 node_modules/rxjs/src/operators/race.ts create mode 100644 node_modules/rxjs/src/operators/reduce.ts create mode 100644 node_modules/rxjs/src/operators/refCount.ts create mode 100644 node_modules/rxjs/src/operators/repeat.ts create mode 100644 node_modules/rxjs/src/operators/repeatWhen.ts create mode 100644 node_modules/rxjs/src/operators/retry.ts create mode 100644 node_modules/rxjs/src/operators/retryWhen.ts create mode 100644 node_modules/rxjs/src/operators/sample.ts create mode 100644 node_modules/rxjs/src/operators/sampleTime.ts create mode 100644 node_modules/rxjs/src/operators/scan.ts create mode 100644 node_modules/rxjs/src/operators/sequenceEqual.ts create mode 100644 node_modules/rxjs/src/operators/share.ts create mode 100644 node_modules/rxjs/src/operators/shareReplay.ts create mode 100644 node_modules/rxjs/src/operators/single.ts create mode 100644 node_modules/rxjs/src/operators/skip.ts create mode 100644 node_modules/rxjs/src/operators/skipLast.ts create mode 100644 node_modules/rxjs/src/operators/skipUntil.ts create mode 100644 node_modules/rxjs/src/operators/skipWhile.ts create mode 100644 node_modules/rxjs/src/operators/startWith.ts create mode 100644 node_modules/rxjs/src/operators/subscribeOn.ts create mode 100644 node_modules/rxjs/src/operators/switchAll.ts create mode 100644 node_modules/rxjs/src/operators/switchMap.ts create mode 100644 node_modules/rxjs/src/operators/switchMapTo.ts create mode 100644 node_modules/rxjs/src/operators/take.ts create mode 100644 node_modules/rxjs/src/operators/takeLast.ts create mode 100644 node_modules/rxjs/src/operators/takeUntil.ts create mode 100644 node_modules/rxjs/src/operators/takeWhile.ts create mode 100644 node_modules/rxjs/src/operators/tap.ts create mode 100644 node_modules/rxjs/src/operators/throttle.ts create mode 100644 node_modules/rxjs/src/operators/throttleTime.ts create mode 100644 node_modules/rxjs/src/operators/timeInterval.ts create mode 100644 node_modules/rxjs/src/operators/timeout.ts create mode 100644 node_modules/rxjs/src/operators/timeoutWith.ts create mode 100644 node_modules/rxjs/src/operators/timestamp.ts create mode 100644 node_modules/rxjs/src/operators/toArray.ts create mode 100644 node_modules/rxjs/src/operators/window.ts create mode 100644 node_modules/rxjs/src/operators/windowCount.ts create mode 100644 node_modules/rxjs/src/operators/windowTime.ts create mode 100644 node_modules/rxjs/src/operators/windowToggle.ts create mode 100644 node_modules/rxjs/src/operators/windowWhen.ts create mode 100644 node_modules/rxjs/src/operators/withLatestFrom.ts create mode 100644 node_modules/rxjs/src/operators/zip.ts create mode 100644 node_modules/rxjs/src/operators/zipAll.ts create mode 100644 node_modules/rxjs/src/scheduler/Action.ts create mode 100644 node_modules/rxjs/src/scheduler/AnimationFrameAction.ts create mode 100644 node_modules/rxjs/src/scheduler/AnimationFrameScheduler.ts create mode 100644 node_modules/rxjs/src/scheduler/AsapAction.ts create mode 100644 node_modules/rxjs/src/scheduler/AsapScheduler.ts create mode 100644 node_modules/rxjs/src/scheduler/AsyncAction.ts create mode 100644 node_modules/rxjs/src/scheduler/AsyncScheduler.ts create mode 100644 node_modules/rxjs/src/scheduler/QueueAction.ts create mode 100644 node_modules/rxjs/src/scheduler/QueueScheduler.ts create mode 100644 node_modules/rxjs/src/scheduler/VirtualTimeScheduler.ts create mode 100644 node_modules/rxjs/src/scheduler/animationFrame.ts create mode 100644 node_modules/rxjs/src/scheduler/asap.ts create mode 100644 node_modules/rxjs/src/scheduler/async.ts create mode 100644 node_modules/rxjs/src/scheduler/queue.ts create mode 100644 node_modules/rxjs/src/symbol/iterator.ts create mode 100644 node_modules/rxjs/src/symbol/observable.ts create mode 100644 node_modules/rxjs/src/symbol/rxSubscriber.ts create mode 100644 node_modules/rxjs/src/testing/ColdObservable.ts create mode 100644 node_modules/rxjs/src/testing/HotObservable.ts create mode 100644 node_modules/rxjs/src/testing/SubscriptionLog.ts create mode 100644 node_modules/rxjs/src/testing/SubscriptionLoggable.ts create mode 100644 node_modules/rxjs/src/testing/TestMessage.ts create mode 100644 node_modules/rxjs/src/testing/TestScheduler.ts create mode 100644 node_modules/rxjs/src/tsconfig.json create mode 100644 node_modules/rxjs/src/util/AnimationFrame.ts create mode 100644 node_modules/rxjs/src/util/ArgumentOutOfRangeError.ts create mode 100644 node_modules/rxjs/src/util/EmptyError.ts create mode 100644 node_modules/rxjs/src/util/FastMap.ts create mode 100644 node_modules/rxjs/src/util/Immediate.ts create mode 100644 node_modules/rxjs/src/util/Map.ts create mode 100644 node_modules/rxjs/src/util/MapPolyfill.ts create mode 100644 node_modules/rxjs/src/util/ObjectUnsubscribedError.ts create mode 100644 node_modules/rxjs/src/util/Set.ts create mode 100644 node_modules/rxjs/src/util/TimeoutError.ts create mode 100644 node_modules/rxjs/src/util/UnsubscriptionError.ts create mode 100644 node_modules/rxjs/src/util/applyMixins.ts create mode 100644 node_modules/rxjs/src/util/assign.ts create mode 100644 node_modules/rxjs/src/util/errorObject.ts create mode 100644 node_modules/rxjs/src/util/identity.ts create mode 100644 node_modules/rxjs/src/util/isArray.ts create mode 100644 node_modules/rxjs/src/util/isArrayLike.ts create mode 100644 node_modules/rxjs/src/util/isDate.ts create mode 100644 node_modules/rxjs/src/util/isFunction.ts create mode 100644 node_modules/rxjs/src/util/isNumeric.ts create mode 100644 node_modules/rxjs/src/util/isObject.ts create mode 100644 node_modules/rxjs/src/util/isPromise.ts create mode 100644 node_modules/rxjs/src/util/isScheduler.ts create mode 100644 node_modules/rxjs/src/util/noop.ts create mode 100644 node_modules/rxjs/src/util/not.ts create mode 100644 node_modules/rxjs/src/util/pipe.ts create mode 100644 node_modules/rxjs/src/util/root.ts create mode 100644 node_modules/rxjs/src/util/subscribeToResult.ts create mode 100644 node_modules/rxjs/src/util/toSubscriber.ts create mode 100644 node_modules/rxjs/src/util/tryCatch.ts create mode 100644 node_modules/rxjs/symbol/iterator.d.ts create mode 100644 node_modules/rxjs/symbol/iterator.js create mode 100644 node_modules/rxjs/symbol/iterator.js.map create mode 100644 node_modules/rxjs/symbol/observable.d.ts create mode 100644 node_modules/rxjs/symbol/observable.js create mode 100644 node_modules/rxjs/symbol/observable.js.map create mode 100644 node_modules/rxjs/symbol/rxSubscriber.d.ts create mode 100644 node_modules/rxjs/symbol/rxSubscriber.js create mode 100644 node_modules/rxjs/symbol/rxSubscriber.js.map create mode 100644 node_modules/rxjs/testing/ColdObservable.d.ts create mode 100644 node_modules/rxjs/testing/ColdObservable.js create mode 100644 node_modules/rxjs/testing/ColdObservable.js.map create mode 100644 node_modules/rxjs/testing/HotObservable.d.ts create mode 100644 node_modules/rxjs/testing/HotObservable.js create mode 100644 node_modules/rxjs/testing/HotObservable.js.map create mode 100644 node_modules/rxjs/testing/SubscriptionLog.d.ts create mode 100644 node_modules/rxjs/testing/SubscriptionLog.js create mode 100644 node_modules/rxjs/testing/SubscriptionLog.js.map create mode 100644 node_modules/rxjs/testing/SubscriptionLoggable.d.ts create mode 100644 node_modules/rxjs/testing/SubscriptionLoggable.js create mode 100644 node_modules/rxjs/testing/SubscriptionLoggable.js.map create mode 100644 node_modules/rxjs/testing/TestMessage.d.ts create mode 100644 node_modules/rxjs/testing/TestMessage.js create mode 100644 node_modules/rxjs/testing/TestMessage.js.map create mode 100644 node_modules/rxjs/testing/TestScheduler.d.ts create mode 100644 node_modules/rxjs/testing/TestScheduler.js create mode 100644 node_modules/rxjs/testing/TestScheduler.js.map create mode 100644 node_modules/rxjs/util/AnimationFrame.d.ts create mode 100644 node_modules/rxjs/util/AnimationFrame.js create mode 100644 node_modules/rxjs/util/AnimationFrame.js.map create mode 100644 node_modules/rxjs/util/ArgumentOutOfRangeError.d.ts create mode 100644 node_modules/rxjs/util/ArgumentOutOfRangeError.js create mode 100644 node_modules/rxjs/util/ArgumentOutOfRangeError.js.map create mode 100644 node_modules/rxjs/util/EmptyError.d.ts create mode 100644 node_modules/rxjs/util/EmptyError.js create mode 100644 node_modules/rxjs/util/EmptyError.js.map create mode 100644 node_modules/rxjs/util/FastMap.d.ts create mode 100644 node_modules/rxjs/util/FastMap.js create mode 100644 node_modules/rxjs/util/FastMap.js.map create mode 100644 node_modules/rxjs/util/Immediate.d.ts create mode 100644 node_modules/rxjs/util/Immediate.js create mode 100644 node_modules/rxjs/util/Immediate.js.map create mode 100644 node_modules/rxjs/util/Map.d.ts create mode 100644 node_modules/rxjs/util/Map.js create mode 100644 node_modules/rxjs/util/Map.js.map create mode 100644 node_modules/rxjs/util/MapPolyfill.d.ts create mode 100644 node_modules/rxjs/util/MapPolyfill.js create mode 100644 node_modules/rxjs/util/MapPolyfill.js.map create mode 100644 node_modules/rxjs/util/ObjectUnsubscribedError.d.ts create mode 100644 node_modules/rxjs/util/ObjectUnsubscribedError.js create mode 100644 node_modules/rxjs/util/ObjectUnsubscribedError.js.map create mode 100644 node_modules/rxjs/util/Set.d.ts create mode 100644 node_modules/rxjs/util/Set.js create mode 100644 node_modules/rxjs/util/Set.js.map create mode 100644 node_modules/rxjs/util/TimeoutError.d.ts create mode 100644 node_modules/rxjs/util/TimeoutError.js create mode 100644 node_modules/rxjs/util/TimeoutError.js.map create mode 100644 node_modules/rxjs/util/UnsubscriptionError.d.ts create mode 100644 node_modules/rxjs/util/UnsubscriptionError.js create mode 100644 node_modules/rxjs/util/UnsubscriptionError.js.map create mode 100644 node_modules/rxjs/util/applyMixins.d.ts create mode 100644 node_modules/rxjs/util/applyMixins.js create mode 100644 node_modules/rxjs/util/applyMixins.js.map create mode 100644 node_modules/rxjs/util/assign.d.ts create mode 100644 node_modules/rxjs/util/assign.js create mode 100644 node_modules/rxjs/util/assign.js.map create mode 100644 node_modules/rxjs/util/errorObject.d.ts create mode 100644 node_modules/rxjs/util/errorObject.js create mode 100644 node_modules/rxjs/util/errorObject.js.map create mode 100644 node_modules/rxjs/util/identity.d.ts create mode 100644 node_modules/rxjs/util/identity.js create mode 100644 node_modules/rxjs/util/identity.js.map create mode 100644 node_modules/rxjs/util/isArray.d.ts create mode 100644 node_modules/rxjs/util/isArray.js create mode 100644 node_modules/rxjs/util/isArray.js.map create mode 100644 node_modules/rxjs/util/isArrayLike.d.ts create mode 100644 node_modules/rxjs/util/isArrayLike.js create mode 100644 node_modules/rxjs/util/isArrayLike.js.map create mode 100644 node_modules/rxjs/util/isDate.d.ts create mode 100644 node_modules/rxjs/util/isDate.js create mode 100644 node_modules/rxjs/util/isDate.js.map create mode 100644 node_modules/rxjs/util/isFunction.d.ts create mode 100644 node_modules/rxjs/util/isFunction.js create mode 100644 node_modules/rxjs/util/isFunction.js.map create mode 100644 node_modules/rxjs/util/isNumeric.d.ts create mode 100644 node_modules/rxjs/util/isNumeric.js create mode 100644 node_modules/rxjs/util/isNumeric.js.map create mode 100644 node_modules/rxjs/util/isObject.d.ts create mode 100644 node_modules/rxjs/util/isObject.js create mode 100644 node_modules/rxjs/util/isObject.js.map create mode 100644 node_modules/rxjs/util/isPromise.d.ts create mode 100644 node_modules/rxjs/util/isPromise.js create mode 100644 node_modules/rxjs/util/isPromise.js.map create mode 100644 node_modules/rxjs/util/isScheduler.d.ts create mode 100644 node_modules/rxjs/util/isScheduler.js create mode 100644 node_modules/rxjs/util/isScheduler.js.map create mode 100644 node_modules/rxjs/util/noop.d.ts create mode 100644 node_modules/rxjs/util/noop.js create mode 100644 node_modules/rxjs/util/noop.js.map create mode 100644 node_modules/rxjs/util/not.d.ts create mode 100644 node_modules/rxjs/util/not.js create mode 100644 node_modules/rxjs/util/not.js.map create mode 100644 node_modules/rxjs/util/pipe.d.ts create mode 100644 node_modules/rxjs/util/pipe.js create mode 100644 node_modules/rxjs/util/pipe.js.map create mode 100644 node_modules/rxjs/util/root.d.ts create mode 100644 node_modules/rxjs/util/root.js create mode 100644 node_modules/rxjs/util/root.js.map create mode 100644 node_modules/rxjs/util/subscribeToResult.d.ts create mode 100644 node_modules/rxjs/util/subscribeToResult.js create mode 100644 node_modules/rxjs/util/subscribeToResult.js.map create mode 100644 node_modules/rxjs/util/toSubscriber.d.ts create mode 100644 node_modules/rxjs/util/toSubscriber.js create mode 100644 node_modules/rxjs/util/toSubscriber.js.map create mode 100644 node_modules/rxjs/util/tryCatch.d.ts create mode 100644 node_modules/rxjs/util/tryCatch.js create mode 100644 node_modules/rxjs/util/tryCatch.js.map create mode 100644 node_modules/safe-buffer/LICENSE create mode 100644 node_modules/safe-buffer/README.md create mode 100644 node_modules/safe-buffer/index.d.ts create mode 100644 node_modules/safe-buffer/index.js create mode 100644 node_modules/safe-buffer/package.json create mode 100644 node_modules/safer-buffer/LICENSE create mode 100644 node_modules/safer-buffer/Porting-Buffer.md create mode 100644 node_modules/safer-buffer/Readme.md create mode 100644 node_modules/safer-buffer/dangerous.js create mode 100644 node_modules/safer-buffer/package.json create mode 100644 node_modules/safer-buffer/safer.js create mode 100644 node_modules/safer-buffer/tests.js create mode 100644 node_modules/semver/CHANGELOG.md create mode 100644 node_modules/semver/LICENSE create mode 100644 node_modules/semver/README.md create mode 100755 node_modules/semver/bin/semver create mode 100644 node_modules/semver/package.json create mode 100644 node_modules/semver/range.bnf create mode 100644 node_modules/semver/semver.js create mode 100644 node_modules/shebang-command/index.js create mode 100644 node_modules/shebang-command/license create mode 100644 node_modules/shebang-command/package.json create mode 100644 node_modules/shebang-command/readme.md create mode 100644 node_modules/shebang-regex/index.js create mode 100644 node_modules/shebang-regex/license create mode 100644 node_modules/shebang-regex/package.json create mode 100644 node_modules/shebang-regex/readme.md create mode 100644 node_modules/signal-exit/CHANGELOG.md create mode 100644 node_modules/signal-exit/LICENSE.txt create mode 100644 node_modules/signal-exit/README.md create mode 100644 node_modules/signal-exit/index.js create mode 100644 node_modules/signal-exit/package.json create mode 100644 node_modules/signal-exit/signals.js create mode 100755 node_modules/slice-ansi/index.js create mode 100755 node_modules/slice-ansi/license create mode 100644 node_modules/slice-ansi/package.json create mode 100755 node_modules/slice-ansi/readme.md create mode 100644 node_modules/sshpk/.npmignore create mode 100644 node_modules/sshpk/.travis.yml create mode 100644 node_modules/sshpk/LICENSE create mode 100644 node_modules/sshpk/README.md create mode 100755 node_modules/sshpk/bin/sshpk-conv create mode 100755 node_modules/sshpk/bin/sshpk-sign create mode 100755 node_modules/sshpk/bin/sshpk-verify create mode 100644 node_modules/sshpk/lib/algs.js create mode 100644 node_modules/sshpk/lib/certificate.js create mode 100644 node_modules/sshpk/lib/dhe.js create mode 100644 node_modules/sshpk/lib/ed-compat.js create mode 100644 node_modules/sshpk/lib/errors.js create mode 100644 node_modules/sshpk/lib/fingerprint.js create mode 100644 node_modules/sshpk/lib/formats/auto.js create mode 100644 node_modules/sshpk/lib/formats/dnssec.js create mode 100644 node_modules/sshpk/lib/formats/openssh-cert.js create mode 100644 node_modules/sshpk/lib/formats/pem.js create mode 100644 node_modules/sshpk/lib/formats/pkcs1.js create mode 100644 node_modules/sshpk/lib/formats/pkcs8.js create mode 100644 node_modules/sshpk/lib/formats/putty.js create mode 100644 node_modules/sshpk/lib/formats/rfc4253.js create mode 100644 node_modules/sshpk/lib/formats/ssh-private.js create mode 100644 node_modules/sshpk/lib/formats/ssh.js create mode 100644 node_modules/sshpk/lib/formats/x509-pem.js create mode 100644 node_modules/sshpk/lib/formats/x509.js create mode 100644 node_modules/sshpk/lib/identity.js create mode 100644 node_modules/sshpk/lib/index.js create mode 100644 node_modules/sshpk/lib/key.js create mode 100644 node_modules/sshpk/lib/private-key.js create mode 100644 node_modules/sshpk/lib/signature.js create mode 100644 node_modules/sshpk/lib/ssh-buffer.js create mode 100644 node_modules/sshpk/lib/utils.js create mode 100644 node_modules/sshpk/man/man1/sshpk-conv.1 create mode 100644 node_modules/sshpk/man/man1/sshpk-sign.1 create mode 100644 node_modules/sshpk/man/man1/sshpk-verify.1 create mode 100644 node_modules/sshpk/package.json create mode 100644 node_modules/stream-to-observable/index.js create mode 100644 node_modules/stream-to-observable/license create mode 100644 node_modules/stream-to-observable/package.json create mode 100644 node_modules/stream-to-observable/readme.md create mode 100644 node_modules/stream-to-observable/rxjs-all.js create mode 100644 node_modules/stream-to-observable/rxjs.js create mode 100644 node_modules/stream-to-observable/zen.js create mode 100644 node_modules/string-width/index.js create mode 100644 node_modules/string-width/license create mode 100644 node_modules/string-width/package.json create mode 100644 node_modules/string-width/readme.md create mode 100644 node_modules/string_decoder/.travis.yml create mode 100644 node_modules/string_decoder/LICENSE create mode 100644 node_modules/string_decoder/README.md create mode 100644 node_modules/string_decoder/lib/string_decoder.js create mode 100644 node_modules/string_decoder/package.json create mode 100644 node_modules/strip-ansi/index.js create mode 100644 node_modules/strip-ansi/license create mode 100644 node_modules/strip-ansi/package.json create mode 100644 node_modules/strip-ansi/readme.md create mode 100644 node_modules/strip-eof/index.js create mode 100644 node_modules/strip-eof/license create mode 100644 node_modules/strip-eof/package.json create mode 100644 node_modules/strip-eof/readme.md create mode 100644 node_modules/supports-color/browser.js create mode 100644 node_modules/supports-color/index.js create mode 100644 node_modules/supports-color/license create mode 100644 node_modules/supports-color/package.json create mode 100644 node_modules/supports-color/readme.md create mode 100644 node_modules/symbol-observable/CHANGELOG.md create mode 100644 node_modules/symbol-observable/es/index.js create mode 100644 node_modules/symbol-observable/es/ponyfill.js create mode 100644 node_modules/symbol-observable/index.d.ts create mode 100644 node_modules/symbol-observable/index.js create mode 100644 node_modules/symbol-observable/lib/index.js create mode 100644 node_modules/symbol-observable/lib/ponyfill.js create mode 100644 node_modules/symbol-observable/license create mode 100644 node_modules/symbol-observable/package.json create mode 100644 node_modules/symbol-observable/readme.md create mode 100644 node_modules/throttleit/.npmignore create mode 100644 node_modules/throttleit/History.md create mode 100644 node_modules/throttleit/Makefile create mode 100644 node_modules/throttleit/Readme.md create mode 100644 node_modules/throttleit/component.json create mode 100644 node_modules/throttleit/example.js create mode 100644 node_modules/throttleit/index.js create mode 100644 node_modules/throttleit/package.json create mode 100644 node_modules/throttleit/test.js create mode 100644 node_modules/tmp/LICENSE create mode 100644 node_modules/tmp/README.md create mode 100644 node_modules/tmp/lib/tmp.js create mode 100644 node_modules/tmp/package.json create mode 100644 node_modules/tough-cookie/LICENSE create mode 100644 node_modules/tough-cookie/README.md create mode 100644 node_modules/tough-cookie/lib/cookie.js create mode 100644 node_modules/tough-cookie/lib/memstore.js create mode 100644 node_modules/tough-cookie/lib/pathMatch.js create mode 100644 node_modules/tough-cookie/lib/permuteDomain.js create mode 100644 node_modules/tough-cookie/lib/pubsuffix-psl.js create mode 100644 node_modules/tough-cookie/lib/store.js create mode 100644 node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt create mode 100644 node_modules/tough-cookie/node_modules/punycode/README.md create mode 100644 node_modules/tough-cookie/node_modules/punycode/package.json create mode 100644 node_modules/tough-cookie/node_modules/punycode/punycode.js create mode 100644 node_modules/tough-cookie/package.json create mode 100644 node_modules/tunnel-agent/LICENSE create mode 100644 node_modules/tunnel-agent/README.md create mode 100644 node_modules/tunnel-agent/index.js create mode 100644 node_modules/tunnel-agent/package.json create mode 100644 node_modules/tweetnacl/.npmignore create mode 100644 node_modules/tweetnacl/AUTHORS.md create mode 100644 node_modules/tweetnacl/CHANGELOG.md create mode 100644 node_modules/tweetnacl/LICENSE create mode 100644 node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md create mode 100644 node_modules/tweetnacl/README.md create mode 100644 node_modules/tweetnacl/nacl-fast.js create mode 100644 node_modules/tweetnacl/nacl-fast.min.js create mode 100644 node_modules/tweetnacl/nacl.d.ts create mode 100644 node_modules/tweetnacl/nacl.js create mode 100644 node_modules/tweetnacl/nacl.min.js create mode 100644 node_modules/tweetnacl/package.json create mode 100644 node_modules/typedarray/.travis.yml create mode 100644 node_modules/typedarray/LICENSE create mode 100644 node_modules/typedarray/example/tarray.js create mode 100644 node_modules/typedarray/index.js create mode 100644 node_modules/typedarray/package.json create mode 100644 node_modules/typedarray/readme.markdown create mode 100644 node_modules/typedarray/test/server/undef_globals.js create mode 100644 node_modules/typedarray/test/tarray.js create mode 100644 node_modules/universalify/LICENSE create mode 100644 node_modules/universalify/README.md create mode 100644 node_modules/universalify/index.js create mode 100644 node_modules/universalify/package.json create mode 100644 node_modules/uri-js/README.md create mode 100644 node_modules/uri-js/bower.json create mode 100644 node_modules/uri-js/dist/es5/uri.all.d.ts create mode 100644 node_modules/uri-js/dist/es5/uri.all.js create mode 100644 node_modules/uri-js/dist/es5/uri.all.js.map create mode 100644 node_modules/uri-js/dist/es5/uri.all.min.d.ts create mode 100644 node_modules/uri-js/dist/es5/uri.all.min.js create mode 100644 node_modules/uri-js/dist/es5/uri.all.min.js.map create mode 100644 node_modules/uri-js/dist/esnext/index.d.ts create mode 100644 node_modules/uri-js/dist/esnext/index.js create mode 100644 node_modules/uri-js/dist/esnext/index.js.map create mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.d.ts create mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.js create mode 100644 node_modules/uri-js/dist/esnext/regexps-iri.js.map create mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.d.ts create mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.js create mode 100644 node_modules/uri-js/dist/esnext/regexps-uri.js.map create mode 100644 node_modules/uri-js/dist/esnext/schemes/http.d.ts create mode 100644 node_modules/uri-js/dist/esnext/schemes/http.js create mode 100644 node_modules/uri-js/dist/esnext/schemes/http.js.map create mode 100644 node_modules/uri-js/dist/esnext/schemes/https.d.ts create mode 100644 node_modules/uri-js/dist/esnext/schemes/https.js create mode 100644 node_modules/uri-js/dist/esnext/schemes/https.js.map create mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.d.ts create mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js create mode 100644 node_modules/uri-js/dist/esnext/schemes/mailto.js.map create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.d.ts create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.js create mode 100644 node_modules/uri-js/dist/esnext/schemes/urn.js.map create mode 100644 node_modules/uri-js/dist/esnext/uri.d.ts create mode 100644 node_modules/uri-js/dist/esnext/uri.js create mode 100644 node_modules/uri-js/dist/esnext/uri.js.map create mode 100644 node_modules/uri-js/dist/esnext/util.d.ts create mode 100644 node_modules/uri-js/dist/esnext/util.js create mode 100644 node_modules/uri-js/dist/esnext/util.js.map create mode 100644 node_modules/uri-js/package.json create mode 100644 node_modules/uri-js/rollup.config.js create mode 100644 node_modules/uri-js/src/index.ts create mode 100644 node_modules/uri-js/src/punycode.d.ts create mode 100644 node_modules/uri-js/src/regexps-iri.ts create mode 100644 node_modules/uri-js/src/regexps-uri.ts create mode 100644 node_modules/uri-js/src/schemes/http.ts create mode 100644 node_modules/uri-js/src/schemes/https.ts create mode 100644 node_modules/uri-js/src/schemes/mailto.ts create mode 100644 node_modules/uri-js/src/schemes/urn-uuid.ts create mode 100644 node_modules/uri-js/src/schemes/urn.ts create mode 100644 node_modules/uri-js/src/uri.ts create mode 100644 node_modules/uri-js/src/util.ts create mode 100644 node_modules/uri-js/tests/qunit.css create mode 100644 node_modules/uri-js/tests/qunit.js create mode 100644 node_modules/uri-js/tests/test-es5-min.html create mode 100644 node_modules/uri-js/tests/test-es5.html create mode 100644 node_modules/uri-js/tests/tests.js create mode 100644 node_modules/uri-js/tsconfig.json create mode 100644 node_modules/uri-js/yarn.lock create mode 100644 node_modules/url/.npmignore create mode 100644 node_modules/url/.travis.yml create mode 100644 node_modules/url/.zuul.yml create mode 100644 node_modules/url/LICENSE create mode 100644 node_modules/url/README.md create mode 100644 node_modules/url/node_modules/punycode/LICENSE-MIT.txt create mode 100644 node_modules/url/node_modules/punycode/README.md create mode 100644 node_modules/url/node_modules/punycode/package.json create mode 100644 node_modules/url/node_modules/punycode/punycode.js create mode 100644 node_modules/url/package.json create mode 100644 node_modules/url/test.js create mode 100644 node_modules/url/url.js create mode 100644 node_modules/url/util.js create mode 100644 node_modules/util-deprecate/History.md create mode 100644 node_modules/util-deprecate/LICENSE create mode 100644 node_modules/util-deprecate/README.md create mode 100644 node_modules/util-deprecate/browser.js create mode 100644 node_modules/util-deprecate/node.js create mode 100644 node_modules/util-deprecate/package.json create mode 100644 node_modules/uuid/.eslintrc.json create mode 100644 node_modules/uuid/AUTHORS create mode 100644 node_modules/uuid/CHANGELOG.md create mode 100644 node_modules/uuid/LICENSE.md create mode 100644 node_modules/uuid/README.md create mode 100644 node_modules/uuid/README_js.md create mode 100755 node_modules/uuid/bin/uuid create mode 100644 node_modules/uuid/index.js create mode 100644 node_modules/uuid/lib/bytesToUuid.js create mode 100644 node_modules/uuid/lib/md5-browser.js create mode 100644 node_modules/uuid/lib/md5.js create mode 100644 node_modules/uuid/lib/rng-browser.js create mode 100644 node_modules/uuid/lib/rng.js create mode 100644 node_modules/uuid/lib/sha1-browser.js create mode 100644 node_modules/uuid/lib/sha1.js create mode 100644 node_modules/uuid/lib/v35.js create mode 100644 node_modules/uuid/package.json create mode 100644 node_modules/uuid/v1.js create mode 100644 node_modules/uuid/v3.js create mode 100644 node_modules/uuid/v4.js create mode 100644 node_modules/uuid/v5.js create mode 100644 node_modules/verror/.npmignore create mode 100644 node_modules/verror/CHANGES.md create mode 100644 node_modules/verror/CONTRIBUTING.md create mode 100644 node_modules/verror/LICENSE create mode 100644 node_modules/verror/README.md create mode 100644 node_modules/verror/lib/verror.js create mode 100644 node_modules/verror/package.json create mode 100644 node_modules/which/CHANGELOG.md create mode 100644 node_modules/which/LICENSE create mode 100644 node_modules/which/README.md create mode 100755 node_modules/which/bin/which create mode 100644 node_modules/which/package.json create mode 100644 node_modules/which/which.js create mode 100644 node_modules/wrappy/LICENSE create mode 100644 node_modules/wrappy/README.md create mode 100644 node_modules/wrappy/package.json create mode 100644 node_modules/wrappy/wrappy.js create mode 100644 node_modules/yauzl/LICENSE create mode 100644 node_modules/yauzl/README.md create mode 100644 node_modules/yauzl/index.js create mode 100644 node_modules/yauzl/node_modules/fd-slicer/.npmignore create mode 100644 node_modules/yauzl/node_modules/fd-slicer/.travis.yml create mode 100644 node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md create mode 100644 node_modules/yauzl/node_modules/fd-slicer/LICENSE create mode 100644 node_modules/yauzl/node_modules/fd-slicer/README.md create mode 100644 node_modules/yauzl/node_modules/fd-slicer/index.js create mode 100644 node_modules/yauzl/node_modules/fd-slicer/package.json create mode 100644 node_modules/yauzl/node_modules/fd-slicer/test/test.js create mode 100644 node_modules/yauzl/package.json create mode 100644 package-lock.json diff --git a/node_modules/.bin/cypress b/node_modules/.bin/cypress new file mode 120000 index 0000000..cc8300a --- /dev/null +++ b/node_modules/.bin/cypress @@ -0,0 +1 @@ +../cypress/bin/cypress \ No newline at end of file diff --git a/node_modules/.bin/extract-zip b/node_modules/.bin/extract-zip new file mode 120000 index 0000000..af9b561 --- /dev/null +++ b/node_modules/.bin/extract-zip @@ -0,0 +1 @@ +../extract-zip/cli.js \ No newline at end of file diff --git a/node_modules/.bin/is-ci b/node_modules/.bin/is-ci new file mode 120000 index 0000000..fe6aca6 --- /dev/null +++ b/node_modules/.bin/is-ci @@ -0,0 +1 @@ +../is-ci/bin.js \ No newline at end of file diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp new file mode 120000 index 0000000..017896c --- /dev/null +++ b/node_modules/.bin/mkdirp @@ -0,0 +1 @@ +../mkdirp/bin/cmd.js \ No newline at end of file diff --git a/node_modules/.bin/rimraf b/node_modules/.bin/rimraf new file mode 120000 index 0000000..4cd49a4 --- /dev/null +++ b/node_modules/.bin/rimraf @@ -0,0 +1 @@ +../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 120000 index 0000000..317eb29 --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1 @@ +../semver/bin/semver \ No newline at end of file diff --git a/node_modules/.bin/sshpk-conv b/node_modules/.bin/sshpk-conv new file mode 120000 index 0000000..a2a295c --- /dev/null +++ b/node_modules/.bin/sshpk-conv @@ -0,0 +1 @@ +../sshpk/bin/sshpk-conv \ No newline at end of file diff --git a/node_modules/.bin/sshpk-sign b/node_modules/.bin/sshpk-sign new file mode 120000 index 0000000..766b9b3 --- /dev/null +++ b/node_modules/.bin/sshpk-sign @@ -0,0 +1 @@ +../sshpk/bin/sshpk-sign \ No newline at end of file diff --git a/node_modules/.bin/sshpk-verify b/node_modules/.bin/sshpk-verify new file mode 120000 index 0000000..bfd7e3a --- /dev/null +++ b/node_modules/.bin/sshpk-verify @@ -0,0 +1 @@ +../sshpk/bin/sshpk-verify \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid new file mode 120000 index 0000000..b3e45bc --- /dev/null +++ b/node_modules/.bin/uuid @@ -0,0 +1 @@ +../uuid/bin/uuid \ No newline at end of file diff --git a/node_modules/.bin/which b/node_modules/.bin/which new file mode 120000 index 0000000..f62471c --- /dev/null +++ b/node_modules/.bin/which @@ -0,0 +1 @@ +../which/bin/which \ No newline at end of file diff --git a/node_modules/@cypress/listr-verbose-renderer/index.js b/node_modules/@cypress/listr-verbose-renderer/index.js new file mode 100644 index 0000000..a8955d8 --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/index.js @@ -0,0 +1,66 @@ +'use strict'; +const figures = require('figures'); +const cliCursor = require('cli-cursor'); +const utils = require('./lib/utils'); + +const renderHelper = (task, event, options) => { + const log = utils.log.bind(undefined, options); + + if (event.type === 'STATE') { + const message = task.isPending() ? 'started' : task.state; + + log(`${task.title} [${message}]`); + + if (task.isSkipped() && task.output) { + log(`${figures.arrowRight} ${task.output}`); + } + } else if (event.type === 'DATA') { + // dont log anything on data events + // log(`${figures.arrowRight} ${event.data}`); + } else if (event.type === 'TITLE') { + log(`${task.title} [title changed]`); + } +}; + +const render = (tasks, options) => { + for (const task of tasks) { + task.subscribe( + event => { + if (event.type === 'SUBTASKS') { + render(task.subtasks, options); + return; + } + + renderHelper(task, event, options); + }, + err => { + console.log(err); + } + ); + } +}; + +class VerboseRenderer { + + constructor(tasks, options) { + this._tasks = tasks; + this._options = Object.assign({ + dateFormat: 'HH:mm:ss' + }, options); + } + + static get nonTTY() { + return true; + } + + render() { + cliCursor.hide(); + render(this._tasks, this._options); + } + + end() { + cliCursor.show(); + } +} + +module.exports = VerboseRenderer; diff --git a/node_modules/@cypress/listr-verbose-renderer/lib/utils.js b/node_modules/@cypress/listr-verbose-renderer/lib/utils.js new file mode 100644 index 0000000..af1e90a --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/lib/utils.js @@ -0,0 +1,9 @@ +'use strict'; +const chalk = require('chalk'); +const format = require('date-fns/format'); + +exports.log = (options, output) => { + const timestamp = format(new Date(), options.dateFormat); + + console.log(chalk.dim(`[${timestamp}]`) + ` ${output}`); +}; diff --git a/node_modules/@cypress/listr-verbose-renderer/license b/node_modules/@cypress/listr-verbose-renderer/license new file mode 100644 index 0000000..78b0855 --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sam Verschueren (github.com/SamVerschueren) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/index.js b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/index.js new file mode 100644 index 0000000..2d85a91 --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/index.js @@ -0,0 +1,116 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +module.exports = new Chalk(); +module.exports.styles = ansiStyles; +module.exports.hasColor = hasAnsi; +module.exports.stripColor = stripAnsi; +module.exports.supportsColor = supportsColor; diff --git a/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/license b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/package.json b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/package.json new file mode 100644 index 0000000..56f7045 --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/package.json @@ -0,0 +1,114 @@ +{ + "_from": "chalk@^1.1.3", + "_id": "chalk@1.1.3", + "_inBundle": false, + "_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "_location": "/@cypress/listr-verbose-renderer/chalk", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "chalk@^1.1.3", + "name": "chalk", + "escapedName": "chalk", + "rawSpec": "^1.1.3", + "saveSpec": null, + "fetchSpec": "^1.1.3" + }, + "_requiredBy": [ + "/@cypress/listr-verbose-renderer" + ], + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98", + "_spec": "chalk@^1.1.3", + "_where": "/home/peter/www/prive/cypress-test/node_modules/@cypress/listr-verbose-renderer", + "bugs": { + "url": "https://github.com/chalk/chalk/issues" + }, + "bundleDependencies": false, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "deprecated": false, + "description": "Terminal string styling done right. Much color.", + "devDependencies": { + "coveralls": "^2.11.2", + "matcha": "^0.6.0", + "mocha": "*", + "nyc": "^3.0.0", + "require-uncached": "^1.0.2", + "resolve-from": "^1.0.0", + "semver": "^4.3.3", + "xo": "*" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/chalk/chalk#readme", + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "license": "MIT", + "maintainers": [ + { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + { + "name": "Joshua Appelman", + "email": "jappelman@xebia.com", + "url": "jbnicolai.com" + }, + { + "name": "JD Ballard", + "email": "i.am.qix@gmail.com", + "url": "github.com/qix-" + } + ], + "name": "chalk", + "repository": { + "type": "git", + "url": "git+https://github.com/chalk/chalk.git" + }, + "scripts": { + "bench": "matcha benchmark.js", + "coverage": "nyc npm test && nyc report", + "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls", + "test": "xo && mocha" + }, + "version": "1.1.3", + "xo": { + "envs": [ + "node", + "mocha" + ] + } +} diff --git a/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/readme.md b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/readme.md new file mode 100644 index 0000000..5cf111e --- /dev/null +++ b/node_modules/@cypress/listr-verbose-renderer/node_modules/chalk/readme.md @@ -0,0 +1,213 @@ +

+
+
+ chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) +[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master) +[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) + + +[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png) + + +## Why + +- Highly performant +- Doesn't extend `String.prototype` +- Expressive API +- Ability to nest styles +- Clean and focused +- Auto-detects color support +- Actively maintained +- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015 + + +## Install + +``` +$ npm install --save chalk +``` + + +## Usage + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +chalk.blue('Hello world!'); + +// combine styled and normal strings +chalk.blue('Hello') + 'World' + chalk.red('!'); + +// compose multiple styles using the chainable API +chalk.blue.bgRed.bold('Hello world!'); + +// pass in multiple arguments +chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'); + +// nest styles +chalk.red('Hello', chalk.underline.bgBlue('world') + '!'); + +// nest styles of the same type even (color, underline, background) +chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +); +``` + +Easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + +Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). + +```js +var name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> Hello Sindre +``` + + +## API + +### chalk.` + + +

lazy-ass

+

Simple assertions with as many arguments as needed and intelligent serialization

+ + + + + + diff --git a/node_modules/lazy-ass/index.js b/node_modules/lazy-ass/index.js new file mode 100644 index 0000000..fbdf6e2 --- /dev/null +++ b/node_modules/lazy-ass/index.js @@ -0,0 +1,169 @@ +(function initLazyAss() { + + function isArrayLike(a) { + return a && typeof a.length === 'number'; + } + + function toStringArray(arr) { + return 'array with ' + arr.length + ' items.\n[' + + arr.map(toString).join(',') + ']\n'; + } + + function isPrimitive(arg) { + return typeof arg === 'string' || + typeof arg === 'number' || + typeof arg === 'boolean'; + } + + function isError(e) { + return e instanceof Error; + } + + /* + custom JSON.stringify replacer to make sure we do not + hide properties that have value "undefined" + var o = { + foo: 42, + bar: undefined + } + // standard JSON.stringify returns '{"foo": 42}' + // this replacer returns '{"foo": 42, "bar": null}' + */ + function replacer(key, value) { + if (value === undefined) { + return null; + } + return value; + } + + function toString(arg, k) { + if (isPrimitive(arg)) { + return JSON.stringify(arg); + } + if (arg instanceof Error) { + return arg.name + ' ' + arg.message; + } + + if (Array.isArray(arg)) { + return toStringArray(arg); + } + if (isArrayLike(arg)) { + return toStringArray(Array.prototype.slice.call(arg, 0)); + } + var argString; + try { + argString = JSON.stringify(arg, replacer, 2); + } catch (err) { + argString = '{ cannot stringify arg ' + k + ', it has type "' + typeof arg + '"'; + if (typeof arg === 'object') { + argString += ' with keys ' + Object.keys(arg).join(', ') + ' }'; + } else { + argString += ' }'; + } + } + return argString; + } + + function endsWithNewLine(s) { + return /\n$/.test(s); + } + + function formMessage(args) { + var msg = args.reduce(function (total, arg, k) { + if (k && !endsWithNewLine(total)) { + total += ' '; + } + if (typeof arg === 'string') { + return total + arg; + } + if (typeof arg === 'function') { + var fnResult; + try { + fnResult = arg(); + } catch (err) { + // ignore the error + fnResult = '[function ' + arg.name + ' threw error!]'; + } + return total + fnResult; + } + var argString = toString(arg, k); + return total + argString; + }, ''); + return msg; + } + + function lazyAssLogic(condition) { + if (isError(condition)) { + return condition; + } + + var fn = typeof condition === 'function' ? condition : null; + + if (fn) { + condition = fn(); + } + if (!condition) { + var args = [].slice.call(arguments, 1); + if (fn) { + args.unshift(fn.toString()); + } + return new Error(formMessage(args)); + } + } + + var lazyAss = function lazyAss() { + var err = lazyAssLogic.apply(null, arguments); + if (err) { + throw err; + } + }; + + var lazyAssync = function lazyAssync() { + var err = lazyAssLogic.apply(null, arguments); + if (err) { + setTimeout(function () { + throw err; + }, 0); + } + }; + + lazyAss.async = lazyAssync; + + function isNode() { + return typeof global === 'object'; + } + + function isBrowser() { + return typeof window === 'object'; + } + + function isCommonJS() { + return typeof module === 'object'; + } + + function globalRegister() { + if (isNode()) { + /* global global */ + register(global, lazyAss, 'lazyAss', 'la'); + register(global, lazyAssync, 'lazyAssync', 'lac'); + } + } + + function register(root, value, name, alias) { + root[name] = root[alias] = value; + } + + lazyAss.globalRegister = globalRegister; + + if (isBrowser()) { + /* global window */ + register(window, lazyAss, 'lazyAss', 'la'); + register(window, lazyAssync, 'lazyAssync', 'lac'); + } + + if (isCommonJS()) { + /* global module */ + module.exports = lazyAss; + } + +}()); diff --git a/node_modules/lazy-ass/package.json b/node_modules/lazy-ass/package.json new file mode 100644 index 0000000..a9554e9 --- /dev/null +++ b/node_modules/lazy-ass/package.json @@ -0,0 +1,141 @@ +{ + "_from": "lazy-ass@1.6.0", + "_id": "lazy-ass@1.6.0", + "_inBundle": false, + "_integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "_location": "/lazy-ass", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "lazy-ass@1.6.0", + "name": "lazy-ass", + "escapedName": "lazy-ass", + "rawSpec": "1.6.0", + "saveSpec": null, + "fetchSpec": "1.6.0" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "_shasum": "7999655e8646c17f089fdd187d150d3324d54513", + "_spec": "lazy-ass@1.6.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "author": { + "name": "Gleb Bahmutov", + "email": "gleb.bahmutov@gmail.com" + }, + "bugs": { + "url": "https://github.com/bahmutov/lazy-ass/issues" + }, + "bundleDependencies": false, + "config": { + "pre-git": { + "commit-msg": "simple", + "pre-commit": [ + "npm test" + ], + "pre-push": [ + "npm run size" + ], + "post-commit": [], + "post-merge": [] + } + }, + "contributors": [], + "dependencies": {}, + "deprecated": false, + "description": "Lazy assertions without performance penalty", + "devDependencies": { + "@semantic-release/condition-travis": "4.1.4", + "bad-line": "0.1.1", + "condition-node-version": "1.2.0", + "coveralls": "2.11.6", + "expect.js": "0.3.1", + "git-issues": "1.2.0", + "grunt": "0.4.5", + "grunt-banner": "0.6.0", + "grunt-clean-console": "0.1.1", + "grunt-cli": "1.0.0-rc1", + "grunt-contrib-concat": "0.5.1", + "grunt-contrib-copy": "0.8.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "0.11.1", + "grunt-contrib-watch": "0.6.1", + "grunt-deps-ok": "0.9.0", + "grunt-gh-pages": "1.0.0", + "grunt-karma": "0.10.1", + "grunt-mocha-test": "0.12.7", + "grunt-nice-package": "0.10.3", + "grunt-npm2bower-sync": "0.9.1", + "jshint-stylish": "2.1.0", + "karma": "0.12.32", + "karma-chrome-launcher": "0.2.2", + "karma-coverage": "0.5.3", + "karma-mocha": "0.2.2", + "karma-phantomjs-launcher": "1.0.0", + "matchdep": "1.0.1", + "mocha": "2.4.5", + "phantomjs": "2.1.3", + "phantomjs-prebuilt": "2.1.12", + "pkgfiles": "2.3.2", + "pre-git": "3.4.0", + "semantic-release": "6.3.6", + "time-grunt": "1.4.0" + }, + "engines": { + "node": "> 0.8" + }, + "files": [ + "index.js", + "index.html", + "bower.json", + "test/demo.js", + "index.d.ts" + ], + "homepage": "https://github.com/bahmutov/lazy-ass", + "keywords": [ + "assertion", + "assertions", + "browser", + "debugging", + "defensive", + "lazy", + "node" + ], + "license": "MIT", + "main": "index.js", + "name": "lazy-ass", + "release": { + "verifyConditions": [ + { + "path": "@semantic-release/condition-travis" + }, + { + "path": "condition-node-version", + "node": "4.2.2" + } + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bahmutov/lazy-ass.git" + }, + "scripts": { + "build": "grunt", + "commit": "git-issues && commit-wizard", + "coveralls": "cat coverage/PhantomJS*/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "demo": "grunt gh-pages", + "dont-break": "dont-break --timeout 30", + "issues": "git-issues", + "mocha": "mocha test/*.spec.js", + "pkgfiles": "pkgfiles", + "semantic-release": "semantic-release pre && npm publish && semantic-release post", + "size": "tarball=\"$(npm pack .)\"; wc -c \"${tarball}\"; tar tvf \"${tarball}\"; rm \"${tarball}\";", + "test": "grunt test", + "watch": "grunt watch" + }, + "types": "index.d.ts", + "version": "1.6.0" +} diff --git a/node_modules/lazy-ass/test/demo.js b/node_modules/lazy-ass/test/demo.js new file mode 100644 index 0000000..56f90dc --- /dev/null +++ b/node_modules/lazy-ass/test/demo.js @@ -0,0 +1,5 @@ +var lazyAss = require('..'); +function bad(foo, bar) { + lazyAss(false, 'this fails on purpose, foo =', foo, 'bar =', bar); +} +bad('foo', 'bar'); diff --git a/node_modules/listr-silent-renderer/index.js b/node_modules/listr-silent-renderer/index.js new file mode 100644 index 0000000..b58304f --- /dev/null +++ b/node_modules/listr-silent-renderer/index.js @@ -0,0 +1,10 @@ +'use strict'; +class SilentRenderer { + static get nonTTY() { + return true; + } + render() { } + end() { } +} + +module.exports = SilentRenderer; diff --git a/node_modules/listr-silent-renderer/license b/node_modules/listr-silent-renderer/license new file mode 100644 index 0000000..78b0855 --- /dev/null +++ b/node_modules/listr-silent-renderer/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sam Verschueren (github.com/SamVerschueren) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/listr-silent-renderer/package.json b/node_modules/listr-silent-renderer/package.json new file mode 100644 index 0000000..c61d370 --- /dev/null +++ b/node_modules/listr-silent-renderer/package.json @@ -0,0 +1,68 @@ +{ + "_from": "listr-silent-renderer@^1.1.1", + "_id": "listr-silent-renderer@1.1.1", + "_inBundle": false, + "_integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "_location": "/listr-silent-renderer", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "listr-silent-renderer@^1.1.1", + "name": "listr-silent-renderer", + "escapedName": "listr-silent-renderer", + "rawSpec": "^1.1.1", + "saveSpec": null, + "fetchSpec": "^1.1.1" + }, + "_requiredBy": [ + "/listr" + ], + "_resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "_shasum": "924b5a3757153770bf1a8e3fbf74b8bbf3f9242e", + "_spec": "listr-silent-renderer@^1.1.1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/listr", + "author": { + "name": "Sam Verschueren", + "email": "sam.verschueren@gmail.com", + "url": "github.com/SamVerschueren" + }, + "bugs": { + "url": "https://github.com/SamVerschueren/listr-silent-renderer/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "Supress Listr rendering output", + "devDependencies": { + "xo": "*" + }, + "engines": { + "node": ">=4" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/SamVerschueren/listr-silent-renderer#readme", + "keywords": [ + "listr", + "silent", + "renderer", + "render", + "supress", + "nooutput" + ], + "license": "MIT", + "name": "listr-silent-renderer", + "repository": { + "type": "git", + "url": "git+https://github.com/SamVerschueren/listr-silent-renderer.git" + }, + "scripts": { + "test": "xo" + }, + "version": "1.1.1", + "xo": { + "esnext": true + } +} diff --git a/node_modules/listr-silent-renderer/readme.md b/node_modules/listr-silent-renderer/readme.md new file mode 100644 index 0000000..948e7c1 --- /dev/null +++ b/node_modules/listr-silent-renderer/readme.md @@ -0,0 +1,41 @@ +# listr-silent-renderer [![Build Status](https://travis-ci.org/SamVerschueren/listr-silent-renderer.svg?branch=master)](https://travis-ci.org/SamVerschueren/listr-silent-renderer) + +> Suppress [Listr](https://github.com/SamVerschueren/listr) rendering output + + +## Install + +``` +$ npm install --save listr-silent-renderer +``` + + +## Usage + +```js +const SilentRenderer = require('listr-silent-renderer'); +const Listr = require('listr'); + +const list = new Listr([ + { + title: 'foo', + task: () => Promise.resolve('bar') + } +], { + renderer: SilentRenderer +}); + +list.run(); +``` + + +## Related + +- [listr](https://github.com/SamVerschueren/listr) - Terminal task list +- [listr-update-renderer](https://github.com/SamVerschueren/listr-update-renderer) - Listr update renderer +- [listr-verbose-renderer](https://github.com/SamVerschueren/listr-verbose-renderer) - Listr verbose renderer + + +## License + +MIT © [Sam Verschueren](https://github.com/SamVerschueren) diff --git a/node_modules/listr-update-renderer/index.js b/node_modules/listr-update-renderer/index.js new file mode 100644 index 0000000..48d12ad --- /dev/null +++ b/node_modules/listr-update-renderer/index.js @@ -0,0 +1,83 @@ +'use strict'; +const logUpdate = require('log-update'); +const chalk = require('chalk'); +const figures = require('figures'); +const indentString = require('indent-string'); +const cliTruncate = require('cli-truncate'); +const stripAnsi = require('strip-ansi'); +const utils = require('./lib/utils'); + +const renderHelper = (tasks, options, level) => { + level = level || 0; + + let output = []; + + for (const task of tasks) { + if (task.isEnabled()) { + const skipped = task.isSkipped() ? ` ${chalk.dim('[skipped]')}` : ''; + + output.push(indentString(` ${utils.getSymbol(task, options)} ${task.title}${skipped}`, level, ' ')); + + if ((task.isPending() || task.isSkipped() || task.hasFailed()) && utils.isDefined(task.output)) { + let data = task.output; + + if (typeof data === 'string') { + data = stripAnsi(data.trim().split('\n').filter(Boolean).pop()); + + if (data === '') { + data = undefined; + } + } + + if (utils.isDefined(data)) { + const out = indentString(`${figures.arrowRight} ${data}`, level, ' '); + output.push(` ${chalk.gray(cliTruncate(out, process.stdout.columns - 3))}`); + } + } + + if ((task.isPending() || task.hasFailed() || options.collapse === false) && (task.hasFailed() || options.showSubtasks !== false) && task.subtasks.length > 0) { + output = output.concat(renderHelper(task.subtasks, options, level + 1)); + } + } + } + + return output.join('\n'); +}; + +const render = (tasks, options) => { + logUpdate(renderHelper(tasks, options)); +}; + +class UpdateRenderer { + + constructor(tasks, options) { + this._tasks = tasks; + this._options = Object.assign({ + showSubtasks: true, + collapse: true + }, options); + } + + render() { + if (this._id) { + // Do not render if we are already rendering + return; + } + + this._id = setInterval(() => { + render(this._tasks, this._options); + }, 100); + } + + end() { + if (this._id) { + clearInterval(this._id); + this._id = undefined; + } + + render(this._tasks, this._options); + logUpdate.done(); + } +} + +module.exports = UpdateRenderer; diff --git a/node_modules/listr-update-renderer/lib/utils.js b/node_modules/listr-update-renderer/lib/utils.js new file mode 100644 index 0000000..a7eee8e --- /dev/null +++ b/node_modules/listr-update-renderer/lib/utils.js @@ -0,0 +1,34 @@ +'use strict'; +const chalk = require('chalk'); +const logSymbols = require('log-symbols'); +const figures = require('figures'); +const elegantSpinner = require('elegant-spinner'); + +const pointer = chalk.yellow(figures.pointer); +const skipped = chalk.yellow(figures.arrowDown); + +exports.isDefined = x => x !== null && x !== undefined; + +exports.getSymbol = (task, options) => { + if (!task.spinner) { + task.spinner = elegantSpinner(); + } + + if (task.isPending()) { + return options.showSubtasks !== false && task.subtasks.length > 0 ? pointer : chalk.yellow(task.spinner()); + } + + if (task.isCompleted()) { + return logSymbols.success; + } + + if (task.hasFailed()) { + return task.subtasks.length > 0 ? pointer : logSymbols.error; + } + + if (task.isSkipped()) { + return skipped; + } + + return ' '; +}; diff --git a/node_modules/listr-update-renderer/license b/node_modules/listr-update-renderer/license new file mode 100644 index 0000000..78b0855 --- /dev/null +++ b/node_modules/listr-update-renderer/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sam Verschueren (github.com/SamVerschueren) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/listr-update-renderer/node_modules/chalk/index.js b/node_modules/listr-update-renderer/node_modules/chalk/index.js new file mode 100644 index 0000000..2d85a91 --- /dev/null +++ b/node_modules/listr-update-renderer/node_modules/chalk/index.js @@ -0,0 +1,116 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +module.exports = new Chalk(); +module.exports.styles = ansiStyles; +module.exports.hasColor = hasAnsi; +module.exports.stripColor = stripAnsi; +module.exports.supportsColor = supportsColor; diff --git a/node_modules/listr-update-renderer/node_modules/chalk/license b/node_modules/listr-update-renderer/node_modules/chalk/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/listr-update-renderer/node_modules/chalk/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/listr-update-renderer/node_modules/chalk/package.json b/node_modules/listr-update-renderer/node_modules/chalk/package.json new file mode 100644 index 0000000..9818262 --- /dev/null +++ b/node_modules/listr-update-renderer/node_modules/chalk/package.json @@ -0,0 +1,115 @@ +{ + "_from": "chalk@^1.1.3", + "_id": "chalk@1.1.3", + "_inBundle": false, + "_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "_location": "/listr-update-renderer/chalk", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "chalk@^1.1.3", + "name": "chalk", + "escapedName": "chalk", + "rawSpec": "^1.1.3", + "saveSpec": null, + "fetchSpec": "^1.1.3" + }, + "_requiredBy": [ + "/listr-update-renderer", + "/listr-update-renderer/log-symbols" + ], + "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98", + "_spec": "chalk@^1.1.3", + "_where": "/home/peter/www/prive/cypress-test/node_modules/listr-update-renderer", + "bugs": { + "url": "https://github.com/chalk/chalk/issues" + }, + "bundleDependencies": false, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "deprecated": false, + "description": "Terminal string styling done right. Much color.", + "devDependencies": { + "coveralls": "^2.11.2", + "matcha": "^0.6.0", + "mocha": "*", + "nyc": "^3.0.0", + "require-uncached": "^1.0.2", + "resolve-from": "^1.0.0", + "semver": "^4.3.3", + "xo": "*" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/chalk/chalk#readme", + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "license": "MIT", + "maintainers": [ + { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + { + "name": "Joshua Appelman", + "email": "jappelman@xebia.com", + "url": "jbnicolai.com" + }, + { + "name": "JD Ballard", + "email": "i.am.qix@gmail.com", + "url": "github.com/qix-" + } + ], + "name": "chalk", + "repository": { + "type": "git", + "url": "git+https://github.com/chalk/chalk.git" + }, + "scripts": { + "bench": "matcha benchmark.js", + "coverage": "nyc npm test && nyc report", + "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls", + "test": "xo && mocha" + }, + "version": "1.1.3", + "xo": { + "envs": [ + "node", + "mocha" + ] + } +} diff --git a/node_modules/listr-update-renderer/node_modules/chalk/readme.md b/node_modules/listr-update-renderer/node_modules/chalk/readme.md new file mode 100644 index 0000000..5cf111e --- /dev/null +++ b/node_modules/listr-update-renderer/node_modules/chalk/readme.md @@ -0,0 +1,213 @@ +

+
+
+ chalk +
+
+
+

+ +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) +[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master) +[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) + + +[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png) + + +## Why + +- Highly performant +- Doesn't extend `String.prototype` +- Expressive API +- Ability to nest styles +- Clean and focused +- Auto-detects color support +- Actively maintained +- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015 + + +## Install + +``` +$ npm install --save chalk +``` + + +## Usage + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +chalk.blue('Hello world!'); + +// combine styled and normal strings +chalk.blue('Hello') + 'World' + chalk.red('!'); + +// compose multiple styles using the chainable API +chalk.blue.bgRed.bold('Hello world!'); + +// pass in multiple arguments +chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'); + +// nest styles +chalk.red('Hello', chalk.underline.bgBlue('world') + '!'); + +// nest styles of the same type even (color, underline, background) +chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +); +``` + +Easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + +Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). + +```js +var name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> Hello Sindre +``` + + +## API + +### chalk.` +Browserstack-logo-white + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/node_modules/psl/data/rules.json b/node_modules/psl/data/rules.json new file mode 100644 index 0000000..fd98685 --- /dev/null +++ b/node_modules/psl/data/rules.json @@ -0,0 +1,8795 @@ +[ +"ac", +"com.ac", +"edu.ac", +"gov.ac", +"net.ac", +"mil.ac", +"org.ac", +"ad", +"nom.ad", +"ae", +"co.ae", +"net.ae", +"org.ae", +"sch.ae", +"ac.ae", +"gov.ae", +"mil.ae", +"aero", +"accident-investigation.aero", +"accident-prevention.aero", +"aerobatic.aero", +"aeroclub.aero", +"aerodrome.aero", +"agents.aero", +"aircraft.aero", +"airline.aero", +"airport.aero", +"air-surveillance.aero", +"airtraffic.aero", +"air-traffic-control.aero", +"ambulance.aero", +"amusement.aero", +"association.aero", +"author.aero", +"ballooning.aero", +"broker.aero", +"caa.aero", +"cargo.aero", +"catering.aero", +"certification.aero", +"championship.aero", +"charter.aero", +"civilaviation.aero", +"club.aero", +"conference.aero", +"consultant.aero", +"consulting.aero", +"control.aero", +"council.aero", +"crew.aero", +"design.aero", +"dgca.aero", +"educator.aero", +"emergency.aero", +"engine.aero", +"engineer.aero", +"entertainment.aero", +"equipment.aero", +"exchange.aero", +"express.aero", +"federation.aero", +"flight.aero", +"freight.aero", +"fuel.aero", +"gliding.aero", +"government.aero", +"groundhandling.aero", +"group.aero", +"hanggliding.aero", +"homebuilt.aero", +"insurance.aero", +"journal.aero", +"journalist.aero", +"leasing.aero", +"logistics.aero", +"magazine.aero", +"maintenance.aero", +"media.aero", +"microlight.aero", +"modelling.aero", +"navigation.aero", +"parachuting.aero", +"paragliding.aero", +"passenger-association.aero", +"pilot.aero", +"press.aero", +"production.aero", +"recreation.aero", +"repbody.aero", +"res.aero", +"research.aero", +"rotorcraft.aero", +"safety.aero", +"scientist.aero", +"services.aero", +"show.aero", +"skydiving.aero", +"software.aero", +"student.aero", +"trader.aero", +"trading.aero", +"trainer.aero", +"union.aero", +"workinggroup.aero", +"works.aero", +"af", +"gov.af", +"com.af", +"org.af", +"net.af", +"edu.af", +"ag", +"com.ag", +"org.ag", +"net.ag", +"co.ag", +"nom.ag", +"ai", +"off.ai", +"com.ai", +"net.ai", +"org.ai", +"al", +"com.al", +"edu.al", +"gov.al", +"mil.al", +"net.al", +"org.al", +"am", +"co.am", +"com.am", +"commune.am", +"net.am", +"org.am", +"ao", +"ed.ao", +"gv.ao", +"og.ao", +"co.ao", +"pb.ao", +"it.ao", +"aq", +"ar", +"com.ar", +"edu.ar", +"gob.ar", +"gov.ar", +"int.ar", +"mil.ar", +"musica.ar", +"net.ar", +"org.ar", +"tur.ar", +"arpa", +"e164.arpa", +"in-addr.arpa", +"ip6.arpa", +"iris.arpa", +"uri.arpa", +"urn.arpa", +"as", +"gov.as", +"asia", +"at", +"ac.at", +"co.at", +"gv.at", +"or.at", +"au", +"com.au", +"net.au", +"org.au", +"edu.au", +"gov.au", +"asn.au", +"id.au", +"info.au", +"conf.au", +"oz.au", +"act.au", +"nsw.au", +"nt.au", +"qld.au", +"sa.au", +"tas.au", +"vic.au", +"wa.au", +"act.edu.au", +"catholic.edu.au", +"eq.edu.au", +"nsw.edu.au", +"nt.edu.au", +"qld.edu.au", +"sa.edu.au", +"tas.edu.au", +"vic.edu.au", +"wa.edu.au", +"qld.gov.au", +"sa.gov.au", +"tas.gov.au", +"vic.gov.au", +"wa.gov.au", +"education.tas.edu.au", +"schools.nsw.edu.au", +"aw", +"com.aw", +"ax", +"az", +"com.az", +"net.az", +"int.az", +"gov.az", +"org.az", +"edu.az", +"info.az", +"pp.az", +"mil.az", +"name.az", +"pro.az", +"biz.az", +"ba", +"com.ba", +"edu.ba", +"gov.ba", +"mil.ba", +"net.ba", +"org.ba", +"bb", +"biz.bb", +"co.bb", +"com.bb", +"edu.bb", +"gov.bb", +"info.bb", +"net.bb", +"org.bb", +"store.bb", +"tv.bb", +"*.bd", +"be", +"ac.be", +"bf", +"gov.bf", +"bg", +"a.bg", +"b.bg", +"c.bg", +"d.bg", +"e.bg", +"f.bg", +"g.bg", +"h.bg", +"i.bg", +"j.bg", +"k.bg", +"l.bg", +"m.bg", +"n.bg", +"o.bg", +"p.bg", +"q.bg", +"r.bg", +"s.bg", +"t.bg", +"u.bg", +"v.bg", +"w.bg", +"x.bg", +"y.bg", +"z.bg", +"0.bg", +"1.bg", +"2.bg", +"3.bg", +"4.bg", +"5.bg", +"6.bg", +"7.bg", +"8.bg", +"9.bg", +"bh", +"com.bh", +"edu.bh", +"net.bh", +"org.bh", +"gov.bh", +"bi", +"co.bi", +"com.bi", +"edu.bi", +"or.bi", +"org.bi", +"biz", +"bj", +"asso.bj", +"barreau.bj", +"gouv.bj", +"bm", +"com.bm", +"edu.bm", +"gov.bm", +"net.bm", +"org.bm", +"bn", +"com.bn", +"edu.bn", +"gov.bn", +"net.bn", +"org.bn", +"bo", +"com.bo", +"edu.bo", +"gob.bo", +"int.bo", +"org.bo", +"net.bo", +"mil.bo", +"tv.bo", +"web.bo", +"academia.bo", +"agro.bo", +"arte.bo", +"blog.bo", +"bolivia.bo", +"ciencia.bo", +"cooperativa.bo", +"democracia.bo", +"deporte.bo", +"ecologia.bo", +"economia.bo", +"empresa.bo", +"indigena.bo", +"industria.bo", +"info.bo", +"medicina.bo", +"movimiento.bo", +"musica.bo", +"natural.bo", +"nombre.bo", +"noticias.bo", +"patria.bo", +"politica.bo", +"profesional.bo", +"plurinacional.bo", +"pueblo.bo", +"revista.bo", +"salud.bo", +"tecnologia.bo", +"tksat.bo", +"transporte.bo", +"wiki.bo", +"br", +"9guacu.br", +"abc.br", +"adm.br", +"adv.br", +"agr.br", +"aju.br", +"am.br", +"anani.br", +"aparecida.br", +"arq.br", +"art.br", +"ato.br", +"b.br", +"barueri.br", +"belem.br", +"bhz.br", +"bio.br", +"blog.br", +"bmd.br", +"boavista.br", +"bsb.br", +"campinagrande.br", +"campinas.br", +"caxias.br", +"cim.br", +"cng.br", +"cnt.br", +"com.br", +"contagem.br", +"coop.br", +"cri.br", +"cuiaba.br", +"curitiba.br", +"def.br", +"ecn.br", +"eco.br", +"edu.br", +"emp.br", +"eng.br", +"esp.br", +"etc.br", +"eti.br", +"far.br", +"feira.br", +"flog.br", +"floripa.br", +"fm.br", +"fnd.br", +"fortal.br", +"fot.br", +"foz.br", +"fst.br", +"g12.br", +"ggf.br", +"goiania.br", +"gov.br", +"ac.gov.br", +"al.gov.br", +"am.gov.br", +"ap.gov.br", +"ba.gov.br", +"ce.gov.br", +"df.gov.br", +"es.gov.br", +"go.gov.br", +"ma.gov.br", +"mg.gov.br", +"ms.gov.br", +"mt.gov.br", +"pa.gov.br", +"pb.gov.br", +"pe.gov.br", +"pi.gov.br", +"pr.gov.br", +"rj.gov.br", +"rn.gov.br", +"ro.gov.br", +"rr.gov.br", +"rs.gov.br", +"sc.gov.br", +"se.gov.br", +"sp.gov.br", +"to.gov.br", +"gru.br", +"imb.br", +"ind.br", +"inf.br", +"jab.br", +"jampa.br", +"jdf.br", +"joinville.br", +"jor.br", +"jus.br", +"leg.br", +"lel.br", +"londrina.br", +"macapa.br", +"maceio.br", +"manaus.br", +"maringa.br", +"mat.br", +"med.br", +"mil.br", +"morena.br", +"mp.br", +"mus.br", +"natal.br", +"net.br", +"niteroi.br", +"*.nom.br", +"not.br", +"ntr.br", +"odo.br", +"ong.br", +"org.br", +"osasco.br", +"palmas.br", +"poa.br", +"ppg.br", +"pro.br", +"psc.br", +"psi.br", +"pvh.br", +"qsl.br", +"radio.br", +"rec.br", +"recife.br", +"ribeirao.br", +"rio.br", +"riobranco.br", +"riopreto.br", +"salvador.br", +"sampa.br", +"santamaria.br", +"santoandre.br", +"saobernardo.br", +"saogonca.br", +"sjc.br", +"slg.br", +"slz.br", +"sorocaba.br", +"srv.br", +"taxi.br", +"tc.br", +"teo.br", +"the.br", +"tmp.br", +"trd.br", +"tur.br", +"tv.br", +"udi.br", +"vet.br", +"vix.br", +"vlog.br", +"wiki.br", +"zlg.br", +"bs", +"com.bs", +"net.bs", +"org.bs", +"edu.bs", +"gov.bs", +"bt", +"com.bt", +"edu.bt", +"gov.bt", +"net.bt", +"org.bt", +"bv", +"bw", +"co.bw", +"org.bw", +"by", +"gov.by", +"mil.by", +"com.by", +"of.by", +"bz", +"com.bz", +"net.bz", +"org.bz", +"edu.bz", +"gov.bz", +"ca", +"ab.ca", +"bc.ca", +"mb.ca", +"nb.ca", +"nf.ca", +"nl.ca", +"ns.ca", +"nt.ca", +"nu.ca", +"on.ca", +"pe.ca", +"qc.ca", +"sk.ca", +"yk.ca", +"gc.ca", +"cat", +"cc", +"cd", +"gov.cd", +"cf", +"cg", +"ch", +"ci", +"org.ci", +"or.ci", +"com.ci", +"co.ci", +"edu.ci", +"ed.ci", +"ac.ci", +"net.ci", +"go.ci", +"asso.ci", +"aéroport.ci", +"int.ci", +"presse.ci", +"md.ci", +"gouv.ci", +"*.ck", +"!www.ck", +"cl", +"gov.cl", +"gob.cl", +"co.cl", +"mil.cl", +"cm", +"co.cm", +"com.cm", +"gov.cm", +"net.cm", +"cn", +"ac.cn", +"com.cn", +"edu.cn", +"gov.cn", +"net.cn", +"org.cn", +"mil.cn", +"公司.cn", +"网络.cn", +"網絡.cn", +"ah.cn", +"bj.cn", +"cq.cn", +"fj.cn", +"gd.cn", +"gs.cn", +"gz.cn", +"gx.cn", +"ha.cn", +"hb.cn", +"he.cn", +"hi.cn", +"hl.cn", +"hn.cn", +"jl.cn", +"js.cn", +"jx.cn", +"ln.cn", +"nm.cn", +"nx.cn", +"qh.cn", +"sc.cn", +"sd.cn", +"sh.cn", +"sn.cn", +"sx.cn", +"tj.cn", +"xj.cn", +"xz.cn", +"yn.cn", +"zj.cn", +"hk.cn", +"mo.cn", +"tw.cn", +"co", +"arts.co", +"com.co", +"edu.co", +"firm.co", +"gov.co", +"info.co", +"int.co", +"mil.co", +"net.co", +"nom.co", +"org.co", +"rec.co", +"web.co", +"com", +"coop", +"cr", +"ac.cr", +"co.cr", +"ed.cr", +"fi.cr", +"go.cr", +"or.cr", +"sa.cr", +"cu", +"com.cu", +"edu.cu", +"org.cu", +"net.cu", +"gov.cu", +"inf.cu", +"cv", +"cw", +"com.cw", +"edu.cw", +"net.cw", +"org.cw", +"cx", +"gov.cx", +"cy", +"ac.cy", +"biz.cy", +"com.cy", +"ekloges.cy", +"gov.cy", +"ltd.cy", +"name.cy", +"net.cy", +"org.cy", +"parliament.cy", +"press.cy", +"pro.cy", +"tm.cy", +"cz", +"de", +"dj", +"dk", +"dm", +"com.dm", +"net.dm", +"org.dm", +"edu.dm", +"gov.dm", +"do", +"art.do", +"com.do", +"edu.do", +"gob.do", +"gov.do", +"mil.do", +"net.do", +"org.do", +"sld.do", +"web.do", +"dz", +"com.dz", +"org.dz", +"net.dz", +"gov.dz", +"edu.dz", +"asso.dz", +"pol.dz", +"art.dz", +"ec", +"com.ec", +"info.ec", +"net.ec", +"fin.ec", +"k12.ec", +"med.ec", +"pro.ec", +"org.ec", +"edu.ec", +"gov.ec", +"gob.ec", +"mil.ec", +"edu", +"ee", +"edu.ee", +"gov.ee", +"riik.ee", +"lib.ee", +"med.ee", +"com.ee", +"pri.ee", +"aip.ee", +"org.ee", +"fie.ee", +"eg", +"com.eg", +"edu.eg", +"eun.eg", +"gov.eg", +"mil.eg", +"name.eg", +"net.eg", +"org.eg", +"sci.eg", +"*.er", +"es", +"com.es", +"nom.es", +"org.es", +"gob.es", +"edu.es", +"et", +"com.et", +"gov.et", +"org.et", +"edu.et", +"biz.et", +"name.et", +"info.et", +"net.et", +"eu", +"fi", +"aland.fi", +"*.fj", +"*.fk", +"fm", +"fo", +"fr", +"asso.fr", +"com.fr", +"gouv.fr", +"nom.fr", +"prd.fr", +"tm.fr", +"aeroport.fr", +"avocat.fr", +"avoues.fr", +"cci.fr", +"chambagri.fr", +"chirurgiens-dentistes.fr", +"experts-comptables.fr", +"geometre-expert.fr", +"greta.fr", +"huissier-justice.fr", +"medecin.fr", +"notaires.fr", +"pharmacien.fr", +"port.fr", +"veterinaire.fr", +"ga", +"gb", +"gd", +"ge", +"com.ge", +"edu.ge", +"gov.ge", +"org.ge", +"mil.ge", +"net.ge", +"pvt.ge", +"gf", +"gg", +"co.gg", +"net.gg", +"org.gg", +"gh", +"com.gh", +"edu.gh", +"gov.gh", +"org.gh", +"mil.gh", +"gi", +"com.gi", +"ltd.gi", +"gov.gi", +"mod.gi", +"edu.gi", +"org.gi", +"gl", +"co.gl", +"com.gl", +"edu.gl", +"net.gl", +"org.gl", +"gm", +"gn", +"ac.gn", +"com.gn", +"edu.gn", +"gov.gn", +"org.gn", +"net.gn", +"gov", +"gp", +"com.gp", +"net.gp", +"mobi.gp", +"edu.gp", +"org.gp", +"asso.gp", +"gq", +"gr", +"com.gr", +"edu.gr", +"net.gr", +"org.gr", +"gov.gr", +"gs", +"gt", +"com.gt", +"edu.gt", +"gob.gt", +"ind.gt", +"mil.gt", +"net.gt", +"org.gt", +"gu", +"com.gu", +"edu.gu", +"gov.gu", +"guam.gu", +"info.gu", +"net.gu", +"org.gu", +"web.gu", +"gw", +"gy", +"co.gy", +"com.gy", +"edu.gy", +"gov.gy", +"net.gy", +"org.gy", +"hk", +"com.hk", +"edu.hk", +"gov.hk", +"idv.hk", +"net.hk", +"org.hk", +"公司.hk", +"教育.hk", +"敎育.hk", +"政府.hk", +"個人.hk", +"个人.hk", +"箇人.hk", +"網络.hk", +"网络.hk", +"组織.hk", +"網絡.hk", +"网絡.hk", +"组织.hk", +"組織.hk", +"組织.hk", +"hm", +"hn", +"com.hn", +"edu.hn", +"org.hn", +"net.hn", +"mil.hn", +"gob.hn", +"hr", +"iz.hr", +"from.hr", +"name.hr", +"com.hr", +"ht", +"com.ht", +"shop.ht", +"firm.ht", +"info.ht", +"adult.ht", +"net.ht", +"pro.ht", +"org.ht", +"med.ht", +"art.ht", +"coop.ht", +"pol.ht", +"asso.ht", +"edu.ht", +"rel.ht", +"gouv.ht", +"perso.ht", +"hu", +"co.hu", +"info.hu", +"org.hu", +"priv.hu", +"sport.hu", +"tm.hu", +"2000.hu", +"agrar.hu", +"bolt.hu", +"casino.hu", +"city.hu", +"erotica.hu", +"erotika.hu", +"film.hu", +"forum.hu", +"games.hu", +"hotel.hu", +"ingatlan.hu", +"jogasz.hu", +"konyvelo.hu", +"lakas.hu", +"media.hu", +"news.hu", +"reklam.hu", +"sex.hu", +"shop.hu", +"suli.hu", +"szex.hu", +"tozsde.hu", +"utazas.hu", +"video.hu", +"id", +"ac.id", +"biz.id", +"co.id", +"desa.id", +"go.id", +"mil.id", +"my.id", +"net.id", +"or.id", +"ponpes.id", +"sch.id", +"web.id", +"ie", +"gov.ie", +"il", +"ac.il", +"co.il", +"gov.il", +"idf.il", +"k12.il", +"muni.il", +"net.il", +"org.il", +"im", +"ac.im", +"co.im", +"com.im", +"ltd.co.im", +"net.im", +"org.im", +"plc.co.im", +"tt.im", +"tv.im", +"in", +"co.in", +"firm.in", +"net.in", +"org.in", +"gen.in", +"ind.in", +"nic.in", +"ac.in", +"edu.in", +"res.in", +"gov.in", +"mil.in", +"info", +"int", +"eu.int", +"io", +"com.io", +"iq", +"gov.iq", +"edu.iq", +"mil.iq", +"com.iq", +"org.iq", +"net.iq", +"ir", +"ac.ir", +"co.ir", +"gov.ir", +"id.ir", +"net.ir", +"org.ir", +"sch.ir", +"ایران.ir", +"ايران.ir", +"is", +"net.is", +"com.is", +"edu.is", +"gov.is", +"org.is", +"int.is", +"it", +"gov.it", +"edu.it", +"abr.it", +"abruzzo.it", +"aosta-valley.it", +"aostavalley.it", +"bas.it", +"basilicata.it", +"cal.it", +"calabria.it", +"cam.it", +"campania.it", +"emilia-romagna.it", +"emiliaromagna.it", +"emr.it", +"friuli-v-giulia.it", +"friuli-ve-giulia.it", +"friuli-vegiulia.it", +"friuli-venezia-giulia.it", +"friuli-veneziagiulia.it", +"friuli-vgiulia.it", +"friuliv-giulia.it", +"friulive-giulia.it", +"friulivegiulia.it", +"friulivenezia-giulia.it", +"friuliveneziagiulia.it", +"friulivgiulia.it", +"fvg.it", +"laz.it", +"lazio.it", +"lig.it", +"liguria.it", +"lom.it", +"lombardia.it", +"lombardy.it", +"lucania.it", +"mar.it", +"marche.it", +"mol.it", +"molise.it", +"piedmont.it", +"piemonte.it", +"pmn.it", +"pug.it", +"puglia.it", +"sar.it", +"sardegna.it", +"sardinia.it", +"sic.it", +"sicilia.it", +"sicily.it", +"taa.it", +"tos.it", +"toscana.it", +"trentin-sud-tirol.it", +"trentin-süd-tirol.it", +"trentin-sudtirol.it", +"trentin-südtirol.it", +"trentin-sued-tirol.it", +"trentin-suedtirol.it", +"trentino-a-adige.it", +"trentino-aadige.it", +"trentino-alto-adige.it", +"trentino-altoadige.it", +"trentino-s-tirol.it", +"trentino-stirol.it", +"trentino-sud-tirol.it", +"trentino-süd-tirol.it", +"trentino-sudtirol.it", +"trentino-südtirol.it", +"trentino-sued-tirol.it", +"trentino-suedtirol.it", +"trentino.it", +"trentinoa-adige.it", +"trentinoaadige.it", +"trentinoalto-adige.it", +"trentinoaltoadige.it", +"trentinos-tirol.it", +"trentinostirol.it", +"trentinosud-tirol.it", +"trentinosüd-tirol.it", +"trentinosudtirol.it", +"trentinosüdtirol.it", +"trentinosued-tirol.it", +"trentinosuedtirol.it", +"trentinsud-tirol.it", +"trentinsüd-tirol.it", +"trentinsudtirol.it", +"trentinsüdtirol.it", +"trentinsued-tirol.it", +"trentinsuedtirol.it", +"tuscany.it", +"umb.it", +"umbria.it", +"val-d-aosta.it", +"val-daosta.it", +"vald-aosta.it", +"valdaosta.it", +"valle-aosta.it", +"valle-d-aosta.it", +"valle-daosta.it", +"valleaosta.it", +"valled-aosta.it", +"valledaosta.it", +"vallee-aoste.it", +"vallée-aoste.it", +"vallee-d-aoste.it", +"vallée-d-aoste.it", +"valleeaoste.it", +"valléeaoste.it", +"valleedaoste.it", +"valléedaoste.it", +"vao.it", +"vda.it", +"ven.it", +"veneto.it", +"ag.it", +"agrigento.it", +"al.it", +"alessandria.it", +"alto-adige.it", +"altoadige.it", +"an.it", +"ancona.it", +"andria-barletta-trani.it", +"andria-trani-barletta.it", +"andriabarlettatrani.it", +"andriatranibarletta.it", +"ao.it", +"aosta.it", +"aoste.it", +"ap.it", +"aq.it", +"aquila.it", +"ar.it", +"arezzo.it", +"ascoli-piceno.it", +"ascolipiceno.it", +"asti.it", +"at.it", +"av.it", +"avellino.it", +"ba.it", +"balsan-sudtirol.it", +"balsan-südtirol.it", +"balsan-suedtirol.it", +"balsan.it", +"bari.it", +"barletta-trani-andria.it", +"barlettatraniandria.it", +"belluno.it", +"benevento.it", +"bergamo.it", +"bg.it", +"bi.it", +"biella.it", +"bl.it", +"bn.it", +"bo.it", +"bologna.it", +"bolzano-altoadige.it", +"bolzano.it", +"bozen-sudtirol.it", +"bozen-südtirol.it", +"bozen-suedtirol.it", +"bozen.it", +"br.it", +"brescia.it", +"brindisi.it", +"bs.it", +"bt.it", +"bulsan-sudtirol.it", +"bulsan-südtirol.it", +"bulsan-suedtirol.it", +"bulsan.it", +"bz.it", +"ca.it", +"cagliari.it", +"caltanissetta.it", +"campidano-medio.it", +"campidanomedio.it", +"campobasso.it", +"carbonia-iglesias.it", +"carboniaiglesias.it", +"carrara-massa.it", +"carraramassa.it", +"caserta.it", +"catania.it", +"catanzaro.it", +"cb.it", +"ce.it", +"cesena-forli.it", +"cesena-forlì.it", +"cesenaforli.it", +"cesenaforlì.it", +"ch.it", +"chieti.it", +"ci.it", +"cl.it", +"cn.it", +"co.it", +"como.it", +"cosenza.it", +"cr.it", +"cremona.it", +"crotone.it", +"cs.it", +"ct.it", +"cuneo.it", +"cz.it", +"dell-ogliastra.it", +"dellogliastra.it", +"en.it", +"enna.it", +"fc.it", +"fe.it", +"fermo.it", +"ferrara.it", +"fg.it", +"fi.it", +"firenze.it", +"florence.it", +"fm.it", +"foggia.it", +"forli-cesena.it", +"forlì-cesena.it", +"forlicesena.it", +"forlìcesena.it", +"fr.it", +"frosinone.it", +"ge.it", +"genoa.it", +"genova.it", +"go.it", +"gorizia.it", +"gr.it", +"grosseto.it", +"iglesias-carbonia.it", +"iglesiascarbonia.it", +"im.it", +"imperia.it", +"is.it", +"isernia.it", +"kr.it", +"la-spezia.it", +"laquila.it", +"laspezia.it", +"latina.it", +"lc.it", +"le.it", +"lecce.it", +"lecco.it", +"li.it", +"livorno.it", +"lo.it", +"lodi.it", +"lt.it", +"lu.it", +"lucca.it", +"macerata.it", +"mantova.it", +"massa-carrara.it", +"massacarrara.it", +"matera.it", +"mb.it", +"mc.it", +"me.it", +"medio-campidano.it", +"mediocampidano.it", +"messina.it", +"mi.it", +"milan.it", +"milano.it", +"mn.it", +"mo.it", +"modena.it", +"monza-brianza.it", +"monza-e-della-brianza.it", +"monza.it", +"monzabrianza.it", +"monzaebrianza.it", +"monzaedellabrianza.it", +"ms.it", +"mt.it", +"na.it", +"naples.it", +"napoli.it", +"no.it", +"novara.it", +"nu.it", +"nuoro.it", +"og.it", +"ogliastra.it", +"olbia-tempio.it", +"olbiatempio.it", +"or.it", +"oristano.it", +"ot.it", +"pa.it", +"padova.it", +"padua.it", +"palermo.it", +"parma.it", +"pavia.it", +"pc.it", +"pd.it", +"pe.it", +"perugia.it", +"pesaro-urbino.it", +"pesarourbino.it", +"pescara.it", +"pg.it", +"pi.it", +"piacenza.it", +"pisa.it", +"pistoia.it", +"pn.it", +"po.it", +"pordenone.it", +"potenza.it", +"pr.it", +"prato.it", +"pt.it", +"pu.it", +"pv.it", +"pz.it", +"ra.it", +"ragusa.it", +"ravenna.it", +"rc.it", +"re.it", +"reggio-calabria.it", +"reggio-emilia.it", +"reggiocalabria.it", +"reggioemilia.it", +"rg.it", +"ri.it", +"rieti.it", +"rimini.it", +"rm.it", +"rn.it", +"ro.it", +"roma.it", +"rome.it", +"rovigo.it", +"sa.it", +"salerno.it", +"sassari.it", +"savona.it", +"si.it", +"siena.it", +"siracusa.it", +"so.it", +"sondrio.it", +"sp.it", +"sr.it", +"ss.it", +"suedtirol.it", +"südtirol.it", +"sv.it", +"ta.it", +"taranto.it", +"te.it", +"tempio-olbia.it", +"tempioolbia.it", +"teramo.it", +"terni.it", +"tn.it", +"to.it", +"torino.it", +"tp.it", +"tr.it", +"trani-andria-barletta.it", +"trani-barletta-andria.it", +"traniandriabarletta.it", +"tranibarlettaandria.it", +"trapani.it", +"trento.it", +"treviso.it", +"trieste.it", +"ts.it", +"turin.it", +"tv.it", +"ud.it", +"udine.it", +"urbino-pesaro.it", +"urbinopesaro.it", +"va.it", +"varese.it", +"vb.it", +"vc.it", +"ve.it", +"venezia.it", +"venice.it", +"verbania.it", +"vercelli.it", +"verona.it", +"vi.it", +"vibo-valentia.it", +"vibovalentia.it", +"vicenza.it", +"viterbo.it", +"vr.it", +"vs.it", +"vt.it", +"vv.it", +"je", +"co.je", +"net.je", +"org.je", +"*.jm", +"jo", +"com.jo", +"org.jo", +"net.jo", +"edu.jo", +"sch.jo", +"gov.jo", +"mil.jo", +"name.jo", +"jobs", +"jp", +"ac.jp", +"ad.jp", +"co.jp", +"ed.jp", +"go.jp", +"gr.jp", +"lg.jp", +"ne.jp", +"or.jp", +"aichi.jp", +"akita.jp", +"aomori.jp", +"chiba.jp", +"ehime.jp", +"fukui.jp", +"fukuoka.jp", +"fukushima.jp", +"gifu.jp", +"gunma.jp", +"hiroshima.jp", +"hokkaido.jp", +"hyogo.jp", +"ibaraki.jp", +"ishikawa.jp", +"iwate.jp", +"kagawa.jp", +"kagoshima.jp", +"kanagawa.jp", +"kochi.jp", +"kumamoto.jp", +"kyoto.jp", +"mie.jp", +"miyagi.jp", +"miyazaki.jp", +"nagano.jp", +"nagasaki.jp", +"nara.jp", +"niigata.jp", +"oita.jp", +"okayama.jp", +"okinawa.jp", +"osaka.jp", +"saga.jp", +"saitama.jp", +"shiga.jp", +"shimane.jp", +"shizuoka.jp", +"tochigi.jp", +"tokushima.jp", +"tokyo.jp", +"tottori.jp", +"toyama.jp", +"wakayama.jp", +"yamagata.jp", +"yamaguchi.jp", +"yamanashi.jp", +"栃木.jp", +"愛知.jp", +"愛媛.jp", +"兵庫.jp", +"熊本.jp", +"茨城.jp", +"北海道.jp", +"千葉.jp", +"和歌山.jp", +"長崎.jp", +"長野.jp", +"新潟.jp", +"青森.jp", +"静岡.jp", +"東京.jp", +"石川.jp", +"埼玉.jp", +"三重.jp", +"京都.jp", +"佐賀.jp", +"大分.jp", +"大阪.jp", +"奈良.jp", +"宮城.jp", +"宮崎.jp", +"富山.jp", +"山口.jp", +"山形.jp", +"山梨.jp", +"岩手.jp", +"岐阜.jp", +"岡山.jp", +"島根.jp", +"広島.jp", +"徳島.jp", +"沖縄.jp", +"滋賀.jp", +"神奈川.jp", +"福井.jp", +"福岡.jp", +"福島.jp", +"秋田.jp", +"群馬.jp", +"香川.jp", +"高知.jp", +"鳥取.jp", +"鹿児島.jp", +"*.kawasaki.jp", +"*.kitakyushu.jp", +"*.kobe.jp", +"*.nagoya.jp", +"*.sapporo.jp", +"*.sendai.jp", +"*.yokohama.jp", +"!city.kawasaki.jp", +"!city.kitakyushu.jp", +"!city.kobe.jp", +"!city.nagoya.jp", +"!city.sapporo.jp", +"!city.sendai.jp", +"!city.yokohama.jp", +"aisai.aichi.jp", +"ama.aichi.jp", +"anjo.aichi.jp", +"asuke.aichi.jp", +"chiryu.aichi.jp", +"chita.aichi.jp", +"fuso.aichi.jp", +"gamagori.aichi.jp", +"handa.aichi.jp", +"hazu.aichi.jp", +"hekinan.aichi.jp", +"higashiura.aichi.jp", +"ichinomiya.aichi.jp", +"inazawa.aichi.jp", +"inuyama.aichi.jp", +"isshiki.aichi.jp", +"iwakura.aichi.jp", +"kanie.aichi.jp", +"kariya.aichi.jp", +"kasugai.aichi.jp", +"kira.aichi.jp", +"kiyosu.aichi.jp", +"komaki.aichi.jp", +"konan.aichi.jp", +"kota.aichi.jp", +"mihama.aichi.jp", +"miyoshi.aichi.jp", +"nishio.aichi.jp", +"nisshin.aichi.jp", +"obu.aichi.jp", +"oguchi.aichi.jp", +"oharu.aichi.jp", +"okazaki.aichi.jp", +"owariasahi.aichi.jp", +"seto.aichi.jp", +"shikatsu.aichi.jp", +"shinshiro.aichi.jp", +"shitara.aichi.jp", +"tahara.aichi.jp", +"takahama.aichi.jp", +"tobishima.aichi.jp", +"toei.aichi.jp", +"togo.aichi.jp", +"tokai.aichi.jp", +"tokoname.aichi.jp", +"toyoake.aichi.jp", +"toyohashi.aichi.jp", +"toyokawa.aichi.jp", +"toyone.aichi.jp", +"toyota.aichi.jp", +"tsushima.aichi.jp", +"yatomi.aichi.jp", +"akita.akita.jp", +"daisen.akita.jp", +"fujisato.akita.jp", +"gojome.akita.jp", +"hachirogata.akita.jp", +"happou.akita.jp", +"higashinaruse.akita.jp", +"honjo.akita.jp", +"honjyo.akita.jp", +"ikawa.akita.jp", +"kamikoani.akita.jp", +"kamioka.akita.jp", +"katagami.akita.jp", +"kazuno.akita.jp", +"kitaakita.akita.jp", +"kosaka.akita.jp", +"kyowa.akita.jp", +"misato.akita.jp", +"mitane.akita.jp", +"moriyoshi.akita.jp", +"nikaho.akita.jp", +"noshiro.akita.jp", +"odate.akita.jp", +"oga.akita.jp", +"ogata.akita.jp", +"semboku.akita.jp", +"yokote.akita.jp", +"yurihonjo.akita.jp", +"aomori.aomori.jp", +"gonohe.aomori.jp", +"hachinohe.aomori.jp", +"hashikami.aomori.jp", +"hiranai.aomori.jp", +"hirosaki.aomori.jp", +"itayanagi.aomori.jp", +"kuroishi.aomori.jp", +"misawa.aomori.jp", +"mutsu.aomori.jp", +"nakadomari.aomori.jp", +"noheji.aomori.jp", +"oirase.aomori.jp", +"owani.aomori.jp", +"rokunohe.aomori.jp", +"sannohe.aomori.jp", +"shichinohe.aomori.jp", +"shingo.aomori.jp", +"takko.aomori.jp", +"towada.aomori.jp", +"tsugaru.aomori.jp", +"tsuruta.aomori.jp", +"abiko.chiba.jp", +"asahi.chiba.jp", +"chonan.chiba.jp", +"chosei.chiba.jp", +"choshi.chiba.jp", +"chuo.chiba.jp", +"funabashi.chiba.jp", +"futtsu.chiba.jp", +"hanamigawa.chiba.jp", +"ichihara.chiba.jp", +"ichikawa.chiba.jp", +"ichinomiya.chiba.jp", +"inzai.chiba.jp", +"isumi.chiba.jp", +"kamagaya.chiba.jp", +"kamogawa.chiba.jp", +"kashiwa.chiba.jp", +"katori.chiba.jp", +"katsuura.chiba.jp", +"kimitsu.chiba.jp", +"kisarazu.chiba.jp", +"kozaki.chiba.jp", +"kujukuri.chiba.jp", +"kyonan.chiba.jp", +"matsudo.chiba.jp", +"midori.chiba.jp", +"mihama.chiba.jp", +"minamiboso.chiba.jp", +"mobara.chiba.jp", +"mutsuzawa.chiba.jp", +"nagara.chiba.jp", +"nagareyama.chiba.jp", +"narashino.chiba.jp", +"narita.chiba.jp", +"noda.chiba.jp", +"oamishirasato.chiba.jp", +"omigawa.chiba.jp", +"onjuku.chiba.jp", +"otaki.chiba.jp", +"sakae.chiba.jp", +"sakura.chiba.jp", +"shimofusa.chiba.jp", +"shirako.chiba.jp", +"shiroi.chiba.jp", +"shisui.chiba.jp", +"sodegaura.chiba.jp", +"sosa.chiba.jp", +"tako.chiba.jp", +"tateyama.chiba.jp", +"togane.chiba.jp", +"tohnosho.chiba.jp", +"tomisato.chiba.jp", +"urayasu.chiba.jp", +"yachimata.chiba.jp", +"yachiyo.chiba.jp", +"yokaichiba.chiba.jp", +"yokoshibahikari.chiba.jp", +"yotsukaido.chiba.jp", +"ainan.ehime.jp", +"honai.ehime.jp", +"ikata.ehime.jp", +"imabari.ehime.jp", +"iyo.ehime.jp", +"kamijima.ehime.jp", +"kihoku.ehime.jp", +"kumakogen.ehime.jp", +"masaki.ehime.jp", +"matsuno.ehime.jp", +"matsuyama.ehime.jp", +"namikata.ehime.jp", +"niihama.ehime.jp", +"ozu.ehime.jp", +"saijo.ehime.jp", +"seiyo.ehime.jp", +"shikokuchuo.ehime.jp", +"tobe.ehime.jp", +"toon.ehime.jp", +"uchiko.ehime.jp", +"uwajima.ehime.jp", +"yawatahama.ehime.jp", +"echizen.fukui.jp", +"eiheiji.fukui.jp", +"fukui.fukui.jp", +"ikeda.fukui.jp", +"katsuyama.fukui.jp", +"mihama.fukui.jp", +"minamiechizen.fukui.jp", +"obama.fukui.jp", +"ohi.fukui.jp", +"ono.fukui.jp", +"sabae.fukui.jp", +"sakai.fukui.jp", +"takahama.fukui.jp", +"tsuruga.fukui.jp", +"wakasa.fukui.jp", +"ashiya.fukuoka.jp", +"buzen.fukuoka.jp", +"chikugo.fukuoka.jp", +"chikuho.fukuoka.jp", +"chikujo.fukuoka.jp", +"chikushino.fukuoka.jp", +"chikuzen.fukuoka.jp", +"chuo.fukuoka.jp", +"dazaifu.fukuoka.jp", +"fukuchi.fukuoka.jp", +"hakata.fukuoka.jp", +"higashi.fukuoka.jp", +"hirokawa.fukuoka.jp", +"hisayama.fukuoka.jp", +"iizuka.fukuoka.jp", +"inatsuki.fukuoka.jp", +"kaho.fukuoka.jp", +"kasuga.fukuoka.jp", +"kasuya.fukuoka.jp", +"kawara.fukuoka.jp", +"keisen.fukuoka.jp", +"koga.fukuoka.jp", +"kurate.fukuoka.jp", +"kurogi.fukuoka.jp", +"kurume.fukuoka.jp", +"minami.fukuoka.jp", +"miyako.fukuoka.jp", +"miyama.fukuoka.jp", +"miyawaka.fukuoka.jp", +"mizumaki.fukuoka.jp", +"munakata.fukuoka.jp", +"nakagawa.fukuoka.jp", +"nakama.fukuoka.jp", +"nishi.fukuoka.jp", +"nogata.fukuoka.jp", +"ogori.fukuoka.jp", +"okagaki.fukuoka.jp", +"okawa.fukuoka.jp", +"oki.fukuoka.jp", +"omuta.fukuoka.jp", +"onga.fukuoka.jp", +"onojo.fukuoka.jp", +"oto.fukuoka.jp", +"saigawa.fukuoka.jp", +"sasaguri.fukuoka.jp", +"shingu.fukuoka.jp", +"shinyoshitomi.fukuoka.jp", +"shonai.fukuoka.jp", +"soeda.fukuoka.jp", +"sue.fukuoka.jp", +"tachiarai.fukuoka.jp", +"tagawa.fukuoka.jp", +"takata.fukuoka.jp", +"toho.fukuoka.jp", +"toyotsu.fukuoka.jp", +"tsuiki.fukuoka.jp", +"ukiha.fukuoka.jp", +"umi.fukuoka.jp", +"usui.fukuoka.jp", +"yamada.fukuoka.jp", +"yame.fukuoka.jp", +"yanagawa.fukuoka.jp", +"yukuhashi.fukuoka.jp", +"aizubange.fukushima.jp", +"aizumisato.fukushima.jp", +"aizuwakamatsu.fukushima.jp", +"asakawa.fukushima.jp", +"bandai.fukushima.jp", +"date.fukushima.jp", +"fukushima.fukushima.jp", +"furudono.fukushima.jp", +"futaba.fukushima.jp", +"hanawa.fukushima.jp", +"higashi.fukushima.jp", +"hirata.fukushima.jp", +"hirono.fukushima.jp", +"iitate.fukushima.jp", +"inawashiro.fukushima.jp", +"ishikawa.fukushima.jp", +"iwaki.fukushima.jp", +"izumizaki.fukushima.jp", +"kagamiishi.fukushima.jp", +"kaneyama.fukushima.jp", +"kawamata.fukushima.jp", +"kitakata.fukushima.jp", +"kitashiobara.fukushima.jp", +"koori.fukushima.jp", +"koriyama.fukushima.jp", +"kunimi.fukushima.jp", +"miharu.fukushima.jp", +"mishima.fukushima.jp", +"namie.fukushima.jp", +"nango.fukushima.jp", +"nishiaizu.fukushima.jp", +"nishigo.fukushima.jp", +"okuma.fukushima.jp", +"omotego.fukushima.jp", +"ono.fukushima.jp", +"otama.fukushima.jp", +"samegawa.fukushima.jp", +"shimogo.fukushima.jp", +"shirakawa.fukushima.jp", +"showa.fukushima.jp", +"soma.fukushima.jp", +"sukagawa.fukushima.jp", +"taishin.fukushima.jp", +"tamakawa.fukushima.jp", +"tanagura.fukushima.jp", +"tenei.fukushima.jp", +"yabuki.fukushima.jp", +"yamato.fukushima.jp", +"yamatsuri.fukushima.jp", +"yanaizu.fukushima.jp", +"yugawa.fukushima.jp", +"anpachi.gifu.jp", +"ena.gifu.jp", +"gifu.gifu.jp", +"ginan.gifu.jp", +"godo.gifu.jp", +"gujo.gifu.jp", +"hashima.gifu.jp", +"hichiso.gifu.jp", +"hida.gifu.jp", +"higashishirakawa.gifu.jp", +"ibigawa.gifu.jp", +"ikeda.gifu.jp", +"kakamigahara.gifu.jp", +"kani.gifu.jp", +"kasahara.gifu.jp", +"kasamatsu.gifu.jp", +"kawaue.gifu.jp", +"kitagata.gifu.jp", +"mino.gifu.jp", +"minokamo.gifu.jp", +"mitake.gifu.jp", +"mizunami.gifu.jp", +"motosu.gifu.jp", +"nakatsugawa.gifu.jp", +"ogaki.gifu.jp", +"sakahogi.gifu.jp", +"seki.gifu.jp", +"sekigahara.gifu.jp", +"shirakawa.gifu.jp", +"tajimi.gifu.jp", +"takayama.gifu.jp", +"tarui.gifu.jp", +"toki.gifu.jp", +"tomika.gifu.jp", +"wanouchi.gifu.jp", +"yamagata.gifu.jp", +"yaotsu.gifu.jp", +"yoro.gifu.jp", +"annaka.gunma.jp", +"chiyoda.gunma.jp", +"fujioka.gunma.jp", +"higashiagatsuma.gunma.jp", +"isesaki.gunma.jp", +"itakura.gunma.jp", +"kanna.gunma.jp", +"kanra.gunma.jp", +"katashina.gunma.jp", +"kawaba.gunma.jp", +"kiryu.gunma.jp", +"kusatsu.gunma.jp", +"maebashi.gunma.jp", +"meiwa.gunma.jp", +"midori.gunma.jp", +"minakami.gunma.jp", +"naganohara.gunma.jp", +"nakanojo.gunma.jp", +"nanmoku.gunma.jp", +"numata.gunma.jp", +"oizumi.gunma.jp", +"ora.gunma.jp", +"ota.gunma.jp", +"shibukawa.gunma.jp", +"shimonita.gunma.jp", +"shinto.gunma.jp", +"showa.gunma.jp", +"takasaki.gunma.jp", +"takayama.gunma.jp", +"tamamura.gunma.jp", +"tatebayashi.gunma.jp", +"tomioka.gunma.jp", +"tsukiyono.gunma.jp", +"tsumagoi.gunma.jp", +"ueno.gunma.jp", +"yoshioka.gunma.jp", +"asaminami.hiroshima.jp", +"daiwa.hiroshima.jp", +"etajima.hiroshima.jp", +"fuchu.hiroshima.jp", +"fukuyama.hiroshima.jp", +"hatsukaichi.hiroshima.jp", +"higashihiroshima.hiroshima.jp", +"hongo.hiroshima.jp", +"jinsekikogen.hiroshima.jp", +"kaita.hiroshima.jp", +"kui.hiroshima.jp", +"kumano.hiroshima.jp", +"kure.hiroshima.jp", +"mihara.hiroshima.jp", +"miyoshi.hiroshima.jp", +"naka.hiroshima.jp", +"onomichi.hiroshima.jp", +"osakikamijima.hiroshima.jp", +"otake.hiroshima.jp", +"saka.hiroshima.jp", +"sera.hiroshima.jp", +"seranishi.hiroshima.jp", +"shinichi.hiroshima.jp", +"shobara.hiroshima.jp", +"takehara.hiroshima.jp", +"abashiri.hokkaido.jp", +"abira.hokkaido.jp", +"aibetsu.hokkaido.jp", +"akabira.hokkaido.jp", +"akkeshi.hokkaido.jp", +"asahikawa.hokkaido.jp", +"ashibetsu.hokkaido.jp", +"ashoro.hokkaido.jp", +"assabu.hokkaido.jp", +"atsuma.hokkaido.jp", +"bibai.hokkaido.jp", +"biei.hokkaido.jp", +"bifuka.hokkaido.jp", +"bihoro.hokkaido.jp", +"biratori.hokkaido.jp", +"chippubetsu.hokkaido.jp", +"chitose.hokkaido.jp", +"date.hokkaido.jp", +"ebetsu.hokkaido.jp", +"embetsu.hokkaido.jp", +"eniwa.hokkaido.jp", +"erimo.hokkaido.jp", +"esan.hokkaido.jp", +"esashi.hokkaido.jp", +"fukagawa.hokkaido.jp", +"fukushima.hokkaido.jp", +"furano.hokkaido.jp", +"furubira.hokkaido.jp", +"haboro.hokkaido.jp", +"hakodate.hokkaido.jp", +"hamatonbetsu.hokkaido.jp", +"hidaka.hokkaido.jp", +"higashikagura.hokkaido.jp", +"higashikawa.hokkaido.jp", +"hiroo.hokkaido.jp", +"hokuryu.hokkaido.jp", +"hokuto.hokkaido.jp", +"honbetsu.hokkaido.jp", +"horokanai.hokkaido.jp", +"horonobe.hokkaido.jp", +"ikeda.hokkaido.jp", +"imakane.hokkaido.jp", +"ishikari.hokkaido.jp", +"iwamizawa.hokkaido.jp", +"iwanai.hokkaido.jp", +"kamifurano.hokkaido.jp", +"kamikawa.hokkaido.jp", +"kamishihoro.hokkaido.jp", +"kamisunagawa.hokkaido.jp", +"kamoenai.hokkaido.jp", +"kayabe.hokkaido.jp", +"kembuchi.hokkaido.jp", +"kikonai.hokkaido.jp", +"kimobetsu.hokkaido.jp", +"kitahiroshima.hokkaido.jp", +"kitami.hokkaido.jp", +"kiyosato.hokkaido.jp", +"koshimizu.hokkaido.jp", +"kunneppu.hokkaido.jp", +"kuriyama.hokkaido.jp", +"kuromatsunai.hokkaido.jp", +"kushiro.hokkaido.jp", +"kutchan.hokkaido.jp", +"kyowa.hokkaido.jp", +"mashike.hokkaido.jp", +"matsumae.hokkaido.jp", +"mikasa.hokkaido.jp", +"minamifurano.hokkaido.jp", +"mombetsu.hokkaido.jp", +"moseushi.hokkaido.jp", +"mukawa.hokkaido.jp", +"muroran.hokkaido.jp", +"naie.hokkaido.jp", +"nakagawa.hokkaido.jp", +"nakasatsunai.hokkaido.jp", +"nakatombetsu.hokkaido.jp", +"nanae.hokkaido.jp", +"nanporo.hokkaido.jp", +"nayoro.hokkaido.jp", +"nemuro.hokkaido.jp", +"niikappu.hokkaido.jp", +"niki.hokkaido.jp", +"nishiokoppe.hokkaido.jp", +"noboribetsu.hokkaido.jp", +"numata.hokkaido.jp", +"obihiro.hokkaido.jp", +"obira.hokkaido.jp", +"oketo.hokkaido.jp", +"okoppe.hokkaido.jp", +"otaru.hokkaido.jp", +"otobe.hokkaido.jp", +"otofuke.hokkaido.jp", +"otoineppu.hokkaido.jp", +"oumu.hokkaido.jp", +"ozora.hokkaido.jp", +"pippu.hokkaido.jp", +"rankoshi.hokkaido.jp", +"rebun.hokkaido.jp", +"rikubetsu.hokkaido.jp", +"rishiri.hokkaido.jp", +"rishirifuji.hokkaido.jp", +"saroma.hokkaido.jp", +"sarufutsu.hokkaido.jp", +"shakotan.hokkaido.jp", +"shari.hokkaido.jp", +"shibecha.hokkaido.jp", +"shibetsu.hokkaido.jp", +"shikabe.hokkaido.jp", +"shikaoi.hokkaido.jp", +"shimamaki.hokkaido.jp", +"shimizu.hokkaido.jp", +"shimokawa.hokkaido.jp", +"shinshinotsu.hokkaido.jp", +"shintoku.hokkaido.jp", +"shiranuka.hokkaido.jp", +"shiraoi.hokkaido.jp", +"shiriuchi.hokkaido.jp", +"sobetsu.hokkaido.jp", +"sunagawa.hokkaido.jp", +"taiki.hokkaido.jp", +"takasu.hokkaido.jp", +"takikawa.hokkaido.jp", +"takinoue.hokkaido.jp", +"teshikaga.hokkaido.jp", +"tobetsu.hokkaido.jp", +"tohma.hokkaido.jp", +"tomakomai.hokkaido.jp", +"tomari.hokkaido.jp", +"toya.hokkaido.jp", +"toyako.hokkaido.jp", +"toyotomi.hokkaido.jp", +"toyoura.hokkaido.jp", +"tsubetsu.hokkaido.jp", +"tsukigata.hokkaido.jp", +"urakawa.hokkaido.jp", +"urausu.hokkaido.jp", +"uryu.hokkaido.jp", +"utashinai.hokkaido.jp", +"wakkanai.hokkaido.jp", +"wassamu.hokkaido.jp", +"yakumo.hokkaido.jp", +"yoichi.hokkaido.jp", +"aioi.hyogo.jp", +"akashi.hyogo.jp", +"ako.hyogo.jp", +"amagasaki.hyogo.jp", +"aogaki.hyogo.jp", +"asago.hyogo.jp", +"ashiya.hyogo.jp", +"awaji.hyogo.jp", +"fukusaki.hyogo.jp", +"goshiki.hyogo.jp", +"harima.hyogo.jp", +"himeji.hyogo.jp", +"ichikawa.hyogo.jp", +"inagawa.hyogo.jp", +"itami.hyogo.jp", +"kakogawa.hyogo.jp", +"kamigori.hyogo.jp", +"kamikawa.hyogo.jp", +"kasai.hyogo.jp", +"kasuga.hyogo.jp", +"kawanishi.hyogo.jp", +"miki.hyogo.jp", +"minamiawaji.hyogo.jp", +"nishinomiya.hyogo.jp", +"nishiwaki.hyogo.jp", +"ono.hyogo.jp", +"sanda.hyogo.jp", +"sannan.hyogo.jp", +"sasayama.hyogo.jp", +"sayo.hyogo.jp", +"shingu.hyogo.jp", +"shinonsen.hyogo.jp", +"shiso.hyogo.jp", +"sumoto.hyogo.jp", +"taishi.hyogo.jp", +"taka.hyogo.jp", +"takarazuka.hyogo.jp", +"takasago.hyogo.jp", +"takino.hyogo.jp", +"tamba.hyogo.jp", +"tatsuno.hyogo.jp", +"toyooka.hyogo.jp", +"yabu.hyogo.jp", +"yashiro.hyogo.jp", +"yoka.hyogo.jp", +"yokawa.hyogo.jp", +"ami.ibaraki.jp", +"asahi.ibaraki.jp", +"bando.ibaraki.jp", +"chikusei.ibaraki.jp", +"daigo.ibaraki.jp", +"fujishiro.ibaraki.jp", +"hitachi.ibaraki.jp", +"hitachinaka.ibaraki.jp", +"hitachiomiya.ibaraki.jp", +"hitachiota.ibaraki.jp", +"ibaraki.ibaraki.jp", +"ina.ibaraki.jp", +"inashiki.ibaraki.jp", +"itako.ibaraki.jp", +"iwama.ibaraki.jp", +"joso.ibaraki.jp", +"kamisu.ibaraki.jp", +"kasama.ibaraki.jp", +"kashima.ibaraki.jp", +"kasumigaura.ibaraki.jp", +"koga.ibaraki.jp", +"miho.ibaraki.jp", +"mito.ibaraki.jp", +"moriya.ibaraki.jp", +"naka.ibaraki.jp", +"namegata.ibaraki.jp", +"oarai.ibaraki.jp", +"ogawa.ibaraki.jp", +"omitama.ibaraki.jp", +"ryugasaki.ibaraki.jp", +"sakai.ibaraki.jp", +"sakuragawa.ibaraki.jp", +"shimodate.ibaraki.jp", +"shimotsuma.ibaraki.jp", +"shirosato.ibaraki.jp", +"sowa.ibaraki.jp", +"suifu.ibaraki.jp", +"takahagi.ibaraki.jp", +"tamatsukuri.ibaraki.jp", +"tokai.ibaraki.jp", +"tomobe.ibaraki.jp", +"tone.ibaraki.jp", +"toride.ibaraki.jp", +"tsuchiura.ibaraki.jp", +"tsukuba.ibaraki.jp", +"uchihara.ibaraki.jp", +"ushiku.ibaraki.jp", +"yachiyo.ibaraki.jp", +"yamagata.ibaraki.jp", +"yawara.ibaraki.jp", +"yuki.ibaraki.jp", +"anamizu.ishikawa.jp", +"hakui.ishikawa.jp", +"hakusan.ishikawa.jp", +"kaga.ishikawa.jp", +"kahoku.ishikawa.jp", +"kanazawa.ishikawa.jp", +"kawakita.ishikawa.jp", +"komatsu.ishikawa.jp", +"nakanoto.ishikawa.jp", +"nanao.ishikawa.jp", +"nomi.ishikawa.jp", +"nonoichi.ishikawa.jp", +"noto.ishikawa.jp", +"shika.ishikawa.jp", +"suzu.ishikawa.jp", +"tsubata.ishikawa.jp", +"tsurugi.ishikawa.jp", +"uchinada.ishikawa.jp", +"wajima.ishikawa.jp", +"fudai.iwate.jp", +"fujisawa.iwate.jp", +"hanamaki.iwate.jp", +"hiraizumi.iwate.jp", +"hirono.iwate.jp", +"ichinohe.iwate.jp", +"ichinoseki.iwate.jp", +"iwaizumi.iwate.jp", +"iwate.iwate.jp", +"joboji.iwate.jp", +"kamaishi.iwate.jp", +"kanegasaki.iwate.jp", +"karumai.iwate.jp", +"kawai.iwate.jp", +"kitakami.iwate.jp", +"kuji.iwate.jp", +"kunohe.iwate.jp", +"kuzumaki.iwate.jp", +"miyako.iwate.jp", +"mizusawa.iwate.jp", +"morioka.iwate.jp", +"ninohe.iwate.jp", +"noda.iwate.jp", +"ofunato.iwate.jp", +"oshu.iwate.jp", +"otsuchi.iwate.jp", +"rikuzentakata.iwate.jp", +"shiwa.iwate.jp", +"shizukuishi.iwate.jp", +"sumita.iwate.jp", +"tanohata.iwate.jp", +"tono.iwate.jp", +"yahaba.iwate.jp", +"yamada.iwate.jp", +"ayagawa.kagawa.jp", +"higashikagawa.kagawa.jp", +"kanonji.kagawa.jp", +"kotohira.kagawa.jp", +"manno.kagawa.jp", +"marugame.kagawa.jp", +"mitoyo.kagawa.jp", +"naoshima.kagawa.jp", +"sanuki.kagawa.jp", +"tadotsu.kagawa.jp", +"takamatsu.kagawa.jp", +"tonosho.kagawa.jp", +"uchinomi.kagawa.jp", +"utazu.kagawa.jp", +"zentsuji.kagawa.jp", +"akune.kagoshima.jp", +"amami.kagoshima.jp", +"hioki.kagoshima.jp", +"isa.kagoshima.jp", +"isen.kagoshima.jp", +"izumi.kagoshima.jp", +"kagoshima.kagoshima.jp", +"kanoya.kagoshima.jp", +"kawanabe.kagoshima.jp", +"kinko.kagoshima.jp", +"kouyama.kagoshima.jp", +"makurazaki.kagoshima.jp", +"matsumoto.kagoshima.jp", +"minamitane.kagoshima.jp", +"nakatane.kagoshima.jp", +"nishinoomote.kagoshima.jp", +"satsumasendai.kagoshima.jp", +"soo.kagoshima.jp", +"tarumizu.kagoshima.jp", +"yusui.kagoshima.jp", +"aikawa.kanagawa.jp", +"atsugi.kanagawa.jp", +"ayase.kanagawa.jp", +"chigasaki.kanagawa.jp", +"ebina.kanagawa.jp", +"fujisawa.kanagawa.jp", +"hadano.kanagawa.jp", +"hakone.kanagawa.jp", +"hiratsuka.kanagawa.jp", +"isehara.kanagawa.jp", +"kaisei.kanagawa.jp", +"kamakura.kanagawa.jp", +"kiyokawa.kanagawa.jp", +"matsuda.kanagawa.jp", +"minamiashigara.kanagawa.jp", +"miura.kanagawa.jp", +"nakai.kanagawa.jp", +"ninomiya.kanagawa.jp", +"odawara.kanagawa.jp", +"oi.kanagawa.jp", +"oiso.kanagawa.jp", +"sagamihara.kanagawa.jp", +"samukawa.kanagawa.jp", +"tsukui.kanagawa.jp", +"yamakita.kanagawa.jp", +"yamato.kanagawa.jp", +"yokosuka.kanagawa.jp", +"yugawara.kanagawa.jp", +"zama.kanagawa.jp", +"zushi.kanagawa.jp", +"aki.kochi.jp", +"geisei.kochi.jp", +"hidaka.kochi.jp", +"higashitsuno.kochi.jp", +"ino.kochi.jp", +"kagami.kochi.jp", +"kami.kochi.jp", +"kitagawa.kochi.jp", +"kochi.kochi.jp", +"mihara.kochi.jp", +"motoyama.kochi.jp", +"muroto.kochi.jp", +"nahari.kochi.jp", +"nakamura.kochi.jp", +"nankoku.kochi.jp", +"nishitosa.kochi.jp", +"niyodogawa.kochi.jp", +"ochi.kochi.jp", +"okawa.kochi.jp", +"otoyo.kochi.jp", +"otsuki.kochi.jp", +"sakawa.kochi.jp", +"sukumo.kochi.jp", +"susaki.kochi.jp", +"tosa.kochi.jp", +"tosashimizu.kochi.jp", +"toyo.kochi.jp", +"tsuno.kochi.jp", +"umaji.kochi.jp", +"yasuda.kochi.jp", +"yusuhara.kochi.jp", +"amakusa.kumamoto.jp", +"arao.kumamoto.jp", +"aso.kumamoto.jp", +"choyo.kumamoto.jp", +"gyokuto.kumamoto.jp", +"kamiamakusa.kumamoto.jp", +"kikuchi.kumamoto.jp", +"kumamoto.kumamoto.jp", +"mashiki.kumamoto.jp", +"mifune.kumamoto.jp", +"minamata.kumamoto.jp", +"minamioguni.kumamoto.jp", +"nagasu.kumamoto.jp", +"nishihara.kumamoto.jp", +"oguni.kumamoto.jp", +"ozu.kumamoto.jp", +"sumoto.kumamoto.jp", +"takamori.kumamoto.jp", +"uki.kumamoto.jp", +"uto.kumamoto.jp", +"yamaga.kumamoto.jp", +"yamato.kumamoto.jp", +"yatsushiro.kumamoto.jp", +"ayabe.kyoto.jp", +"fukuchiyama.kyoto.jp", +"higashiyama.kyoto.jp", +"ide.kyoto.jp", +"ine.kyoto.jp", +"joyo.kyoto.jp", +"kameoka.kyoto.jp", +"kamo.kyoto.jp", +"kita.kyoto.jp", +"kizu.kyoto.jp", +"kumiyama.kyoto.jp", +"kyotamba.kyoto.jp", +"kyotanabe.kyoto.jp", +"kyotango.kyoto.jp", +"maizuru.kyoto.jp", +"minami.kyoto.jp", +"minamiyamashiro.kyoto.jp", +"miyazu.kyoto.jp", +"muko.kyoto.jp", +"nagaokakyo.kyoto.jp", +"nakagyo.kyoto.jp", +"nantan.kyoto.jp", +"oyamazaki.kyoto.jp", +"sakyo.kyoto.jp", +"seika.kyoto.jp", +"tanabe.kyoto.jp", +"uji.kyoto.jp", +"ujitawara.kyoto.jp", +"wazuka.kyoto.jp", +"yamashina.kyoto.jp", +"yawata.kyoto.jp", +"asahi.mie.jp", +"inabe.mie.jp", +"ise.mie.jp", +"kameyama.mie.jp", +"kawagoe.mie.jp", +"kiho.mie.jp", +"kisosaki.mie.jp", +"kiwa.mie.jp", +"komono.mie.jp", +"kumano.mie.jp", +"kuwana.mie.jp", +"matsusaka.mie.jp", +"meiwa.mie.jp", +"mihama.mie.jp", +"minamiise.mie.jp", +"misugi.mie.jp", +"miyama.mie.jp", +"nabari.mie.jp", +"shima.mie.jp", +"suzuka.mie.jp", +"tado.mie.jp", +"taiki.mie.jp", +"taki.mie.jp", +"tamaki.mie.jp", +"toba.mie.jp", +"tsu.mie.jp", +"udono.mie.jp", +"ureshino.mie.jp", +"watarai.mie.jp", +"yokkaichi.mie.jp", +"furukawa.miyagi.jp", +"higashimatsushima.miyagi.jp", +"ishinomaki.miyagi.jp", +"iwanuma.miyagi.jp", +"kakuda.miyagi.jp", +"kami.miyagi.jp", +"kawasaki.miyagi.jp", +"marumori.miyagi.jp", +"matsushima.miyagi.jp", +"minamisanriku.miyagi.jp", +"misato.miyagi.jp", +"murata.miyagi.jp", +"natori.miyagi.jp", +"ogawara.miyagi.jp", +"ohira.miyagi.jp", +"onagawa.miyagi.jp", +"osaki.miyagi.jp", +"rifu.miyagi.jp", +"semine.miyagi.jp", +"shibata.miyagi.jp", +"shichikashuku.miyagi.jp", +"shikama.miyagi.jp", +"shiogama.miyagi.jp", +"shiroishi.miyagi.jp", +"tagajo.miyagi.jp", +"taiwa.miyagi.jp", +"tome.miyagi.jp", +"tomiya.miyagi.jp", +"wakuya.miyagi.jp", +"watari.miyagi.jp", +"yamamoto.miyagi.jp", +"zao.miyagi.jp", +"aya.miyazaki.jp", +"ebino.miyazaki.jp", +"gokase.miyazaki.jp", +"hyuga.miyazaki.jp", +"kadogawa.miyazaki.jp", +"kawaminami.miyazaki.jp", +"kijo.miyazaki.jp", +"kitagawa.miyazaki.jp", +"kitakata.miyazaki.jp", +"kitaura.miyazaki.jp", +"kobayashi.miyazaki.jp", +"kunitomi.miyazaki.jp", +"kushima.miyazaki.jp", +"mimata.miyazaki.jp", +"miyakonojo.miyazaki.jp", +"miyazaki.miyazaki.jp", +"morotsuka.miyazaki.jp", +"nichinan.miyazaki.jp", +"nishimera.miyazaki.jp", +"nobeoka.miyazaki.jp", +"saito.miyazaki.jp", +"shiiba.miyazaki.jp", +"shintomi.miyazaki.jp", +"takaharu.miyazaki.jp", +"takanabe.miyazaki.jp", +"takazaki.miyazaki.jp", +"tsuno.miyazaki.jp", +"achi.nagano.jp", +"agematsu.nagano.jp", +"anan.nagano.jp", +"aoki.nagano.jp", +"asahi.nagano.jp", +"azumino.nagano.jp", +"chikuhoku.nagano.jp", +"chikuma.nagano.jp", +"chino.nagano.jp", +"fujimi.nagano.jp", +"hakuba.nagano.jp", +"hara.nagano.jp", +"hiraya.nagano.jp", +"iida.nagano.jp", +"iijima.nagano.jp", +"iiyama.nagano.jp", +"iizuna.nagano.jp", +"ikeda.nagano.jp", +"ikusaka.nagano.jp", +"ina.nagano.jp", +"karuizawa.nagano.jp", +"kawakami.nagano.jp", +"kiso.nagano.jp", +"kisofukushima.nagano.jp", +"kitaaiki.nagano.jp", +"komagane.nagano.jp", +"komoro.nagano.jp", +"matsukawa.nagano.jp", +"matsumoto.nagano.jp", +"miasa.nagano.jp", +"minamiaiki.nagano.jp", +"minamimaki.nagano.jp", +"minamiminowa.nagano.jp", +"minowa.nagano.jp", +"miyada.nagano.jp", +"miyota.nagano.jp", +"mochizuki.nagano.jp", +"nagano.nagano.jp", +"nagawa.nagano.jp", +"nagiso.nagano.jp", +"nakagawa.nagano.jp", +"nakano.nagano.jp", +"nozawaonsen.nagano.jp", +"obuse.nagano.jp", +"ogawa.nagano.jp", +"okaya.nagano.jp", +"omachi.nagano.jp", +"omi.nagano.jp", +"ookuwa.nagano.jp", +"ooshika.nagano.jp", +"otaki.nagano.jp", +"otari.nagano.jp", +"sakae.nagano.jp", +"sakaki.nagano.jp", +"saku.nagano.jp", +"sakuho.nagano.jp", +"shimosuwa.nagano.jp", +"shinanomachi.nagano.jp", +"shiojiri.nagano.jp", +"suwa.nagano.jp", +"suzaka.nagano.jp", +"takagi.nagano.jp", +"takamori.nagano.jp", +"takayama.nagano.jp", +"tateshina.nagano.jp", +"tatsuno.nagano.jp", +"togakushi.nagano.jp", +"togura.nagano.jp", +"tomi.nagano.jp", +"ueda.nagano.jp", +"wada.nagano.jp", +"yamagata.nagano.jp", +"yamanouchi.nagano.jp", +"yasaka.nagano.jp", +"yasuoka.nagano.jp", +"chijiwa.nagasaki.jp", +"futsu.nagasaki.jp", +"goto.nagasaki.jp", +"hasami.nagasaki.jp", +"hirado.nagasaki.jp", +"iki.nagasaki.jp", +"isahaya.nagasaki.jp", +"kawatana.nagasaki.jp", +"kuchinotsu.nagasaki.jp", +"matsuura.nagasaki.jp", +"nagasaki.nagasaki.jp", +"obama.nagasaki.jp", +"omura.nagasaki.jp", +"oseto.nagasaki.jp", +"saikai.nagasaki.jp", +"sasebo.nagasaki.jp", +"seihi.nagasaki.jp", +"shimabara.nagasaki.jp", +"shinkamigoto.nagasaki.jp", +"togitsu.nagasaki.jp", +"tsushima.nagasaki.jp", +"unzen.nagasaki.jp", +"ando.nara.jp", +"gose.nara.jp", +"heguri.nara.jp", +"higashiyoshino.nara.jp", +"ikaruga.nara.jp", +"ikoma.nara.jp", +"kamikitayama.nara.jp", +"kanmaki.nara.jp", +"kashiba.nara.jp", +"kashihara.nara.jp", +"katsuragi.nara.jp", +"kawai.nara.jp", +"kawakami.nara.jp", +"kawanishi.nara.jp", +"koryo.nara.jp", +"kurotaki.nara.jp", +"mitsue.nara.jp", +"miyake.nara.jp", +"nara.nara.jp", +"nosegawa.nara.jp", +"oji.nara.jp", +"ouda.nara.jp", +"oyodo.nara.jp", +"sakurai.nara.jp", +"sango.nara.jp", +"shimoichi.nara.jp", +"shimokitayama.nara.jp", +"shinjo.nara.jp", +"soni.nara.jp", +"takatori.nara.jp", +"tawaramoto.nara.jp", +"tenkawa.nara.jp", +"tenri.nara.jp", +"uda.nara.jp", +"yamatokoriyama.nara.jp", +"yamatotakada.nara.jp", +"yamazoe.nara.jp", +"yoshino.nara.jp", +"aga.niigata.jp", +"agano.niigata.jp", +"gosen.niigata.jp", +"itoigawa.niigata.jp", +"izumozaki.niigata.jp", +"joetsu.niigata.jp", +"kamo.niigata.jp", +"kariwa.niigata.jp", +"kashiwazaki.niigata.jp", +"minamiuonuma.niigata.jp", +"mitsuke.niigata.jp", +"muika.niigata.jp", +"murakami.niigata.jp", +"myoko.niigata.jp", +"nagaoka.niigata.jp", +"niigata.niigata.jp", +"ojiya.niigata.jp", +"omi.niigata.jp", +"sado.niigata.jp", +"sanjo.niigata.jp", +"seiro.niigata.jp", +"seirou.niigata.jp", +"sekikawa.niigata.jp", +"shibata.niigata.jp", +"tagami.niigata.jp", +"tainai.niigata.jp", +"tochio.niigata.jp", +"tokamachi.niigata.jp", +"tsubame.niigata.jp", +"tsunan.niigata.jp", +"uonuma.niigata.jp", +"yahiko.niigata.jp", +"yoita.niigata.jp", +"yuzawa.niigata.jp", +"beppu.oita.jp", +"bungoono.oita.jp", +"bungotakada.oita.jp", +"hasama.oita.jp", +"hiji.oita.jp", +"himeshima.oita.jp", +"hita.oita.jp", +"kamitsue.oita.jp", +"kokonoe.oita.jp", +"kuju.oita.jp", +"kunisaki.oita.jp", +"kusu.oita.jp", +"oita.oita.jp", +"saiki.oita.jp", +"taketa.oita.jp", +"tsukumi.oita.jp", +"usa.oita.jp", +"usuki.oita.jp", +"yufu.oita.jp", +"akaiwa.okayama.jp", +"asakuchi.okayama.jp", +"bizen.okayama.jp", +"hayashima.okayama.jp", +"ibara.okayama.jp", +"kagamino.okayama.jp", +"kasaoka.okayama.jp", +"kibichuo.okayama.jp", +"kumenan.okayama.jp", +"kurashiki.okayama.jp", +"maniwa.okayama.jp", +"misaki.okayama.jp", +"nagi.okayama.jp", +"niimi.okayama.jp", +"nishiawakura.okayama.jp", +"okayama.okayama.jp", +"satosho.okayama.jp", +"setouchi.okayama.jp", +"shinjo.okayama.jp", +"shoo.okayama.jp", +"soja.okayama.jp", +"takahashi.okayama.jp", +"tamano.okayama.jp", +"tsuyama.okayama.jp", +"wake.okayama.jp", +"yakage.okayama.jp", +"aguni.okinawa.jp", +"ginowan.okinawa.jp", +"ginoza.okinawa.jp", +"gushikami.okinawa.jp", +"haebaru.okinawa.jp", +"higashi.okinawa.jp", +"hirara.okinawa.jp", +"iheya.okinawa.jp", +"ishigaki.okinawa.jp", +"ishikawa.okinawa.jp", +"itoman.okinawa.jp", +"izena.okinawa.jp", +"kadena.okinawa.jp", +"kin.okinawa.jp", +"kitadaito.okinawa.jp", +"kitanakagusuku.okinawa.jp", +"kumejima.okinawa.jp", +"kunigami.okinawa.jp", +"minamidaito.okinawa.jp", +"motobu.okinawa.jp", +"nago.okinawa.jp", +"naha.okinawa.jp", +"nakagusuku.okinawa.jp", +"nakijin.okinawa.jp", +"nanjo.okinawa.jp", +"nishihara.okinawa.jp", +"ogimi.okinawa.jp", +"okinawa.okinawa.jp", +"onna.okinawa.jp", +"shimoji.okinawa.jp", +"taketomi.okinawa.jp", +"tarama.okinawa.jp", +"tokashiki.okinawa.jp", +"tomigusuku.okinawa.jp", +"tonaki.okinawa.jp", +"urasoe.okinawa.jp", +"uruma.okinawa.jp", +"yaese.okinawa.jp", +"yomitan.okinawa.jp", +"yonabaru.okinawa.jp", +"yonaguni.okinawa.jp", +"zamami.okinawa.jp", +"abeno.osaka.jp", +"chihayaakasaka.osaka.jp", +"chuo.osaka.jp", +"daito.osaka.jp", +"fujiidera.osaka.jp", +"habikino.osaka.jp", +"hannan.osaka.jp", +"higashiosaka.osaka.jp", +"higashisumiyoshi.osaka.jp", +"higashiyodogawa.osaka.jp", +"hirakata.osaka.jp", +"ibaraki.osaka.jp", +"ikeda.osaka.jp", +"izumi.osaka.jp", +"izumiotsu.osaka.jp", +"izumisano.osaka.jp", +"kadoma.osaka.jp", +"kaizuka.osaka.jp", +"kanan.osaka.jp", +"kashiwara.osaka.jp", +"katano.osaka.jp", +"kawachinagano.osaka.jp", +"kishiwada.osaka.jp", +"kita.osaka.jp", +"kumatori.osaka.jp", +"matsubara.osaka.jp", +"minato.osaka.jp", +"minoh.osaka.jp", +"misaki.osaka.jp", +"moriguchi.osaka.jp", +"neyagawa.osaka.jp", +"nishi.osaka.jp", +"nose.osaka.jp", +"osakasayama.osaka.jp", +"sakai.osaka.jp", +"sayama.osaka.jp", +"sennan.osaka.jp", +"settsu.osaka.jp", +"shijonawate.osaka.jp", +"shimamoto.osaka.jp", +"suita.osaka.jp", +"tadaoka.osaka.jp", +"taishi.osaka.jp", +"tajiri.osaka.jp", +"takaishi.osaka.jp", +"takatsuki.osaka.jp", +"tondabayashi.osaka.jp", +"toyonaka.osaka.jp", +"toyono.osaka.jp", +"yao.osaka.jp", +"ariake.saga.jp", +"arita.saga.jp", +"fukudomi.saga.jp", +"genkai.saga.jp", +"hamatama.saga.jp", +"hizen.saga.jp", +"imari.saga.jp", +"kamimine.saga.jp", +"kanzaki.saga.jp", +"karatsu.saga.jp", +"kashima.saga.jp", +"kitagata.saga.jp", +"kitahata.saga.jp", +"kiyama.saga.jp", +"kouhoku.saga.jp", +"kyuragi.saga.jp", +"nishiarita.saga.jp", +"ogi.saga.jp", +"omachi.saga.jp", +"ouchi.saga.jp", +"saga.saga.jp", +"shiroishi.saga.jp", +"taku.saga.jp", +"tara.saga.jp", +"tosu.saga.jp", +"yoshinogari.saga.jp", +"arakawa.saitama.jp", +"asaka.saitama.jp", +"chichibu.saitama.jp", +"fujimi.saitama.jp", +"fujimino.saitama.jp", +"fukaya.saitama.jp", +"hanno.saitama.jp", +"hanyu.saitama.jp", +"hasuda.saitama.jp", +"hatogaya.saitama.jp", +"hatoyama.saitama.jp", +"hidaka.saitama.jp", +"higashichichibu.saitama.jp", +"higashimatsuyama.saitama.jp", +"honjo.saitama.jp", +"ina.saitama.jp", +"iruma.saitama.jp", +"iwatsuki.saitama.jp", +"kamiizumi.saitama.jp", +"kamikawa.saitama.jp", +"kamisato.saitama.jp", +"kasukabe.saitama.jp", +"kawagoe.saitama.jp", +"kawaguchi.saitama.jp", +"kawajima.saitama.jp", +"kazo.saitama.jp", +"kitamoto.saitama.jp", +"koshigaya.saitama.jp", +"kounosu.saitama.jp", +"kuki.saitama.jp", +"kumagaya.saitama.jp", +"matsubushi.saitama.jp", +"minano.saitama.jp", +"misato.saitama.jp", +"miyashiro.saitama.jp", +"miyoshi.saitama.jp", +"moroyama.saitama.jp", +"nagatoro.saitama.jp", +"namegawa.saitama.jp", +"niiza.saitama.jp", +"ogano.saitama.jp", +"ogawa.saitama.jp", +"ogose.saitama.jp", +"okegawa.saitama.jp", +"omiya.saitama.jp", +"otaki.saitama.jp", +"ranzan.saitama.jp", +"ryokami.saitama.jp", +"saitama.saitama.jp", +"sakado.saitama.jp", +"satte.saitama.jp", +"sayama.saitama.jp", +"shiki.saitama.jp", +"shiraoka.saitama.jp", +"soka.saitama.jp", +"sugito.saitama.jp", +"toda.saitama.jp", +"tokigawa.saitama.jp", +"tokorozawa.saitama.jp", +"tsurugashima.saitama.jp", +"urawa.saitama.jp", +"warabi.saitama.jp", +"yashio.saitama.jp", +"yokoze.saitama.jp", +"yono.saitama.jp", +"yorii.saitama.jp", +"yoshida.saitama.jp", +"yoshikawa.saitama.jp", +"yoshimi.saitama.jp", +"aisho.shiga.jp", +"gamo.shiga.jp", +"higashiomi.shiga.jp", +"hikone.shiga.jp", +"koka.shiga.jp", +"konan.shiga.jp", +"kosei.shiga.jp", +"koto.shiga.jp", +"kusatsu.shiga.jp", +"maibara.shiga.jp", +"moriyama.shiga.jp", +"nagahama.shiga.jp", +"nishiazai.shiga.jp", +"notogawa.shiga.jp", +"omihachiman.shiga.jp", +"otsu.shiga.jp", +"ritto.shiga.jp", +"ryuoh.shiga.jp", +"takashima.shiga.jp", +"takatsuki.shiga.jp", +"torahime.shiga.jp", +"toyosato.shiga.jp", +"yasu.shiga.jp", +"akagi.shimane.jp", +"ama.shimane.jp", +"gotsu.shimane.jp", +"hamada.shimane.jp", +"higashiizumo.shimane.jp", +"hikawa.shimane.jp", +"hikimi.shimane.jp", +"izumo.shimane.jp", +"kakinoki.shimane.jp", +"masuda.shimane.jp", +"matsue.shimane.jp", +"misato.shimane.jp", +"nishinoshima.shimane.jp", +"ohda.shimane.jp", +"okinoshima.shimane.jp", +"okuizumo.shimane.jp", +"shimane.shimane.jp", +"tamayu.shimane.jp", +"tsuwano.shimane.jp", +"unnan.shimane.jp", +"yakumo.shimane.jp", +"yasugi.shimane.jp", +"yatsuka.shimane.jp", +"arai.shizuoka.jp", +"atami.shizuoka.jp", +"fuji.shizuoka.jp", +"fujieda.shizuoka.jp", +"fujikawa.shizuoka.jp", +"fujinomiya.shizuoka.jp", +"fukuroi.shizuoka.jp", +"gotemba.shizuoka.jp", +"haibara.shizuoka.jp", +"hamamatsu.shizuoka.jp", +"higashiizu.shizuoka.jp", +"ito.shizuoka.jp", +"iwata.shizuoka.jp", +"izu.shizuoka.jp", +"izunokuni.shizuoka.jp", +"kakegawa.shizuoka.jp", +"kannami.shizuoka.jp", +"kawanehon.shizuoka.jp", +"kawazu.shizuoka.jp", +"kikugawa.shizuoka.jp", +"kosai.shizuoka.jp", +"makinohara.shizuoka.jp", +"matsuzaki.shizuoka.jp", +"minamiizu.shizuoka.jp", +"mishima.shizuoka.jp", +"morimachi.shizuoka.jp", +"nishiizu.shizuoka.jp", +"numazu.shizuoka.jp", +"omaezaki.shizuoka.jp", +"shimada.shizuoka.jp", +"shimizu.shizuoka.jp", +"shimoda.shizuoka.jp", +"shizuoka.shizuoka.jp", +"susono.shizuoka.jp", +"yaizu.shizuoka.jp", +"yoshida.shizuoka.jp", +"ashikaga.tochigi.jp", +"bato.tochigi.jp", +"haga.tochigi.jp", +"ichikai.tochigi.jp", +"iwafune.tochigi.jp", +"kaminokawa.tochigi.jp", +"kanuma.tochigi.jp", +"karasuyama.tochigi.jp", +"kuroiso.tochigi.jp", +"mashiko.tochigi.jp", +"mibu.tochigi.jp", +"moka.tochigi.jp", +"motegi.tochigi.jp", +"nasu.tochigi.jp", +"nasushiobara.tochigi.jp", +"nikko.tochigi.jp", +"nishikata.tochigi.jp", +"nogi.tochigi.jp", +"ohira.tochigi.jp", +"ohtawara.tochigi.jp", +"oyama.tochigi.jp", +"sakura.tochigi.jp", +"sano.tochigi.jp", +"shimotsuke.tochigi.jp", +"shioya.tochigi.jp", +"takanezawa.tochigi.jp", +"tochigi.tochigi.jp", +"tsuga.tochigi.jp", +"ujiie.tochigi.jp", +"utsunomiya.tochigi.jp", +"yaita.tochigi.jp", +"aizumi.tokushima.jp", +"anan.tokushima.jp", +"ichiba.tokushima.jp", +"itano.tokushima.jp", +"kainan.tokushima.jp", +"komatsushima.tokushima.jp", +"matsushige.tokushima.jp", +"mima.tokushima.jp", +"minami.tokushima.jp", +"miyoshi.tokushima.jp", +"mugi.tokushima.jp", +"nakagawa.tokushima.jp", +"naruto.tokushima.jp", +"sanagochi.tokushima.jp", +"shishikui.tokushima.jp", +"tokushima.tokushima.jp", +"wajiki.tokushima.jp", +"adachi.tokyo.jp", +"akiruno.tokyo.jp", +"akishima.tokyo.jp", +"aogashima.tokyo.jp", +"arakawa.tokyo.jp", +"bunkyo.tokyo.jp", +"chiyoda.tokyo.jp", +"chofu.tokyo.jp", +"chuo.tokyo.jp", +"edogawa.tokyo.jp", +"fuchu.tokyo.jp", +"fussa.tokyo.jp", +"hachijo.tokyo.jp", +"hachioji.tokyo.jp", +"hamura.tokyo.jp", +"higashikurume.tokyo.jp", +"higashimurayama.tokyo.jp", +"higashiyamato.tokyo.jp", +"hino.tokyo.jp", +"hinode.tokyo.jp", +"hinohara.tokyo.jp", +"inagi.tokyo.jp", +"itabashi.tokyo.jp", +"katsushika.tokyo.jp", +"kita.tokyo.jp", +"kiyose.tokyo.jp", +"kodaira.tokyo.jp", +"koganei.tokyo.jp", +"kokubunji.tokyo.jp", +"komae.tokyo.jp", +"koto.tokyo.jp", +"kouzushima.tokyo.jp", +"kunitachi.tokyo.jp", +"machida.tokyo.jp", +"meguro.tokyo.jp", +"minato.tokyo.jp", +"mitaka.tokyo.jp", +"mizuho.tokyo.jp", +"musashimurayama.tokyo.jp", +"musashino.tokyo.jp", +"nakano.tokyo.jp", +"nerima.tokyo.jp", +"ogasawara.tokyo.jp", +"okutama.tokyo.jp", +"ome.tokyo.jp", +"oshima.tokyo.jp", +"ota.tokyo.jp", +"setagaya.tokyo.jp", +"shibuya.tokyo.jp", +"shinagawa.tokyo.jp", +"shinjuku.tokyo.jp", +"suginami.tokyo.jp", +"sumida.tokyo.jp", +"tachikawa.tokyo.jp", +"taito.tokyo.jp", +"tama.tokyo.jp", +"toshima.tokyo.jp", +"chizu.tottori.jp", +"hino.tottori.jp", +"kawahara.tottori.jp", +"koge.tottori.jp", +"kotoura.tottori.jp", +"misasa.tottori.jp", +"nanbu.tottori.jp", +"nichinan.tottori.jp", +"sakaiminato.tottori.jp", +"tottori.tottori.jp", +"wakasa.tottori.jp", +"yazu.tottori.jp", +"yonago.tottori.jp", +"asahi.toyama.jp", +"fuchu.toyama.jp", +"fukumitsu.toyama.jp", +"funahashi.toyama.jp", +"himi.toyama.jp", +"imizu.toyama.jp", +"inami.toyama.jp", +"johana.toyama.jp", +"kamiichi.toyama.jp", +"kurobe.toyama.jp", +"nakaniikawa.toyama.jp", +"namerikawa.toyama.jp", +"nanto.toyama.jp", +"nyuzen.toyama.jp", +"oyabe.toyama.jp", +"taira.toyama.jp", +"takaoka.toyama.jp", +"tateyama.toyama.jp", +"toga.toyama.jp", +"tonami.toyama.jp", +"toyama.toyama.jp", +"unazuki.toyama.jp", +"uozu.toyama.jp", +"yamada.toyama.jp", +"arida.wakayama.jp", +"aridagawa.wakayama.jp", +"gobo.wakayama.jp", +"hashimoto.wakayama.jp", +"hidaka.wakayama.jp", +"hirogawa.wakayama.jp", +"inami.wakayama.jp", +"iwade.wakayama.jp", +"kainan.wakayama.jp", +"kamitonda.wakayama.jp", +"katsuragi.wakayama.jp", +"kimino.wakayama.jp", +"kinokawa.wakayama.jp", +"kitayama.wakayama.jp", +"koya.wakayama.jp", +"koza.wakayama.jp", +"kozagawa.wakayama.jp", +"kudoyama.wakayama.jp", +"kushimoto.wakayama.jp", +"mihama.wakayama.jp", +"misato.wakayama.jp", +"nachikatsuura.wakayama.jp", +"shingu.wakayama.jp", +"shirahama.wakayama.jp", +"taiji.wakayama.jp", +"tanabe.wakayama.jp", +"wakayama.wakayama.jp", +"yuasa.wakayama.jp", +"yura.wakayama.jp", +"asahi.yamagata.jp", +"funagata.yamagata.jp", +"higashine.yamagata.jp", +"iide.yamagata.jp", +"kahoku.yamagata.jp", +"kaminoyama.yamagata.jp", +"kaneyama.yamagata.jp", +"kawanishi.yamagata.jp", +"mamurogawa.yamagata.jp", +"mikawa.yamagata.jp", +"murayama.yamagata.jp", +"nagai.yamagata.jp", +"nakayama.yamagata.jp", +"nanyo.yamagata.jp", +"nishikawa.yamagata.jp", +"obanazawa.yamagata.jp", +"oe.yamagata.jp", +"oguni.yamagata.jp", +"ohkura.yamagata.jp", +"oishida.yamagata.jp", +"sagae.yamagata.jp", +"sakata.yamagata.jp", +"sakegawa.yamagata.jp", +"shinjo.yamagata.jp", +"shirataka.yamagata.jp", +"shonai.yamagata.jp", +"takahata.yamagata.jp", +"tendo.yamagata.jp", +"tozawa.yamagata.jp", +"tsuruoka.yamagata.jp", +"yamagata.yamagata.jp", +"yamanobe.yamagata.jp", +"yonezawa.yamagata.jp", +"yuza.yamagata.jp", +"abu.yamaguchi.jp", +"hagi.yamaguchi.jp", +"hikari.yamaguchi.jp", +"hofu.yamaguchi.jp", +"iwakuni.yamaguchi.jp", +"kudamatsu.yamaguchi.jp", +"mitou.yamaguchi.jp", +"nagato.yamaguchi.jp", +"oshima.yamaguchi.jp", +"shimonoseki.yamaguchi.jp", +"shunan.yamaguchi.jp", +"tabuse.yamaguchi.jp", +"tokuyama.yamaguchi.jp", +"toyota.yamaguchi.jp", +"ube.yamaguchi.jp", +"yuu.yamaguchi.jp", +"chuo.yamanashi.jp", +"doshi.yamanashi.jp", +"fuefuki.yamanashi.jp", +"fujikawa.yamanashi.jp", +"fujikawaguchiko.yamanashi.jp", +"fujiyoshida.yamanashi.jp", +"hayakawa.yamanashi.jp", +"hokuto.yamanashi.jp", +"ichikawamisato.yamanashi.jp", +"kai.yamanashi.jp", +"kofu.yamanashi.jp", +"koshu.yamanashi.jp", +"kosuge.yamanashi.jp", +"minami-alps.yamanashi.jp", +"minobu.yamanashi.jp", +"nakamichi.yamanashi.jp", +"nanbu.yamanashi.jp", +"narusawa.yamanashi.jp", +"nirasaki.yamanashi.jp", +"nishikatsura.yamanashi.jp", +"oshino.yamanashi.jp", +"otsuki.yamanashi.jp", +"showa.yamanashi.jp", +"tabayama.yamanashi.jp", +"tsuru.yamanashi.jp", +"uenohara.yamanashi.jp", +"yamanakako.yamanashi.jp", +"yamanashi.yamanashi.jp", +"ke", +"ac.ke", +"co.ke", +"go.ke", +"info.ke", +"me.ke", +"mobi.ke", +"ne.ke", +"or.ke", +"sc.ke", +"kg", +"org.kg", +"net.kg", +"com.kg", +"edu.kg", +"gov.kg", +"mil.kg", +"*.kh", +"ki", +"edu.ki", +"biz.ki", +"net.ki", +"org.ki", +"gov.ki", +"info.ki", +"com.ki", +"km", +"org.km", +"nom.km", +"gov.km", +"prd.km", +"tm.km", +"edu.km", +"mil.km", +"ass.km", +"com.km", +"coop.km", +"asso.km", +"presse.km", +"medecin.km", +"notaires.km", +"pharmaciens.km", +"veterinaire.km", +"gouv.km", +"kn", +"net.kn", +"org.kn", +"edu.kn", +"gov.kn", +"kp", +"com.kp", +"edu.kp", +"gov.kp", +"org.kp", +"rep.kp", +"tra.kp", +"kr", +"ac.kr", +"co.kr", +"es.kr", +"go.kr", +"hs.kr", +"kg.kr", +"mil.kr", +"ms.kr", +"ne.kr", +"or.kr", +"pe.kr", +"re.kr", +"sc.kr", +"busan.kr", +"chungbuk.kr", +"chungnam.kr", +"daegu.kr", +"daejeon.kr", +"gangwon.kr", +"gwangju.kr", +"gyeongbuk.kr", +"gyeonggi.kr", +"gyeongnam.kr", +"incheon.kr", +"jeju.kr", +"jeonbuk.kr", +"jeonnam.kr", +"seoul.kr", +"ulsan.kr", +"kw", +"com.kw", +"edu.kw", +"emb.kw", +"gov.kw", +"ind.kw", +"net.kw", +"org.kw", +"ky", +"edu.ky", +"gov.ky", +"com.ky", +"org.ky", +"net.ky", +"kz", +"org.kz", +"edu.kz", +"net.kz", +"gov.kz", +"mil.kz", +"com.kz", +"la", +"int.la", +"net.la", +"info.la", +"edu.la", +"gov.la", +"per.la", +"com.la", +"org.la", +"lb", +"com.lb", +"edu.lb", +"gov.lb", +"net.lb", +"org.lb", +"lc", +"com.lc", +"net.lc", +"co.lc", +"org.lc", +"edu.lc", +"gov.lc", +"li", +"lk", +"gov.lk", +"sch.lk", +"net.lk", +"int.lk", +"com.lk", +"org.lk", +"edu.lk", +"ngo.lk", +"soc.lk", +"web.lk", +"ltd.lk", +"assn.lk", +"grp.lk", +"hotel.lk", +"ac.lk", +"lr", +"com.lr", +"edu.lr", +"gov.lr", +"org.lr", +"net.lr", +"ls", +"ac.ls", +"biz.ls", +"co.ls", +"edu.ls", +"gov.ls", +"info.ls", +"net.ls", +"org.ls", +"sc.ls", +"lt", +"gov.lt", +"lu", +"lv", +"com.lv", +"edu.lv", +"gov.lv", +"org.lv", +"mil.lv", +"id.lv", +"net.lv", +"asn.lv", +"conf.lv", +"ly", +"com.ly", +"net.ly", +"gov.ly", +"plc.ly", +"edu.ly", +"sch.ly", +"med.ly", +"org.ly", +"id.ly", +"ma", +"co.ma", +"net.ma", +"gov.ma", +"org.ma", +"ac.ma", +"press.ma", +"mc", +"tm.mc", +"asso.mc", +"md", +"me", +"co.me", +"net.me", +"org.me", +"edu.me", +"ac.me", +"gov.me", +"its.me", +"priv.me", +"mg", +"org.mg", +"nom.mg", +"gov.mg", +"prd.mg", +"tm.mg", +"edu.mg", +"mil.mg", +"com.mg", +"co.mg", +"mh", +"mil", +"mk", +"com.mk", +"org.mk", +"net.mk", +"edu.mk", +"gov.mk", +"inf.mk", +"name.mk", +"ml", +"com.ml", +"edu.ml", +"gouv.ml", +"gov.ml", +"net.ml", +"org.ml", +"presse.ml", +"*.mm", +"mn", +"gov.mn", +"edu.mn", +"org.mn", +"mo", +"com.mo", +"net.mo", +"org.mo", +"edu.mo", +"gov.mo", +"mobi", +"mp", +"mq", +"mr", +"gov.mr", +"ms", +"com.ms", +"edu.ms", +"gov.ms", +"net.ms", +"org.ms", +"mt", +"com.mt", +"edu.mt", +"net.mt", +"org.mt", +"mu", +"com.mu", +"net.mu", +"org.mu", +"gov.mu", +"ac.mu", +"co.mu", +"or.mu", +"museum", +"academy.museum", +"agriculture.museum", +"air.museum", +"airguard.museum", +"alabama.museum", +"alaska.museum", +"amber.museum", +"ambulance.museum", +"american.museum", +"americana.museum", +"americanantiques.museum", +"americanart.museum", +"amsterdam.museum", +"and.museum", +"annefrank.museum", +"anthro.museum", +"anthropology.museum", +"antiques.museum", +"aquarium.museum", +"arboretum.museum", +"archaeological.museum", +"archaeology.museum", +"architecture.museum", +"art.museum", +"artanddesign.museum", +"artcenter.museum", +"artdeco.museum", +"arteducation.museum", +"artgallery.museum", +"arts.museum", +"artsandcrafts.museum", +"asmatart.museum", +"assassination.museum", +"assisi.museum", +"association.museum", +"astronomy.museum", +"atlanta.museum", +"austin.museum", +"australia.museum", +"automotive.museum", +"aviation.museum", +"axis.museum", +"badajoz.museum", +"baghdad.museum", +"bahn.museum", +"bale.museum", +"baltimore.museum", +"barcelona.museum", +"baseball.museum", +"basel.museum", +"baths.museum", +"bauern.museum", +"beauxarts.museum", +"beeldengeluid.museum", +"bellevue.museum", +"bergbau.museum", +"berkeley.museum", +"berlin.museum", +"bern.museum", +"bible.museum", +"bilbao.museum", +"bill.museum", +"birdart.museum", +"birthplace.museum", +"bonn.museum", +"boston.museum", +"botanical.museum", +"botanicalgarden.museum", +"botanicgarden.museum", +"botany.museum", +"brandywinevalley.museum", +"brasil.museum", +"bristol.museum", +"british.museum", +"britishcolumbia.museum", +"broadcast.museum", +"brunel.museum", +"brussel.museum", +"brussels.museum", +"bruxelles.museum", +"building.museum", +"burghof.museum", +"bus.museum", +"bushey.museum", +"cadaques.museum", +"california.museum", +"cambridge.museum", +"can.museum", +"canada.museum", +"capebreton.museum", +"carrier.museum", +"cartoonart.museum", +"casadelamoneda.museum", +"castle.museum", +"castres.museum", +"celtic.museum", +"center.museum", +"chattanooga.museum", +"cheltenham.museum", +"chesapeakebay.museum", +"chicago.museum", +"children.museum", +"childrens.museum", +"childrensgarden.museum", +"chiropractic.museum", +"chocolate.museum", +"christiansburg.museum", +"cincinnati.museum", +"cinema.museum", +"circus.museum", +"civilisation.museum", +"civilization.museum", +"civilwar.museum", +"clinton.museum", +"clock.museum", +"coal.museum", +"coastaldefence.museum", +"cody.museum", +"coldwar.museum", +"collection.museum", +"colonialwilliamsburg.museum", +"coloradoplateau.museum", +"columbia.museum", +"columbus.museum", +"communication.museum", +"communications.museum", +"community.museum", +"computer.museum", +"computerhistory.museum", +"comunicações.museum", +"contemporary.museum", +"contemporaryart.museum", +"convent.museum", +"copenhagen.museum", +"corporation.museum", +"correios-e-telecomunicações.museum", +"corvette.museum", +"costume.museum", +"countryestate.museum", +"county.museum", +"crafts.museum", +"cranbrook.museum", +"creation.museum", +"cultural.museum", +"culturalcenter.museum", +"culture.museum", +"cyber.museum", +"cymru.museum", +"dali.museum", +"dallas.museum", +"database.museum", +"ddr.museum", +"decorativearts.museum", +"delaware.museum", +"delmenhorst.museum", +"denmark.museum", +"depot.museum", +"design.museum", +"detroit.museum", +"dinosaur.museum", +"discovery.museum", +"dolls.museum", +"donostia.museum", +"durham.museum", +"eastafrica.museum", +"eastcoast.museum", +"education.museum", +"educational.museum", +"egyptian.museum", +"eisenbahn.museum", +"elburg.museum", +"elvendrell.museum", +"embroidery.museum", +"encyclopedic.museum", +"england.museum", +"entomology.museum", +"environment.museum", +"environmentalconservation.museum", +"epilepsy.museum", +"essex.museum", +"estate.museum", +"ethnology.museum", +"exeter.museum", +"exhibition.museum", +"family.museum", +"farm.museum", +"farmequipment.museum", +"farmers.museum", +"farmstead.museum", +"field.museum", +"figueres.museum", +"filatelia.museum", +"film.museum", +"fineart.museum", +"finearts.museum", +"finland.museum", +"flanders.museum", +"florida.museum", +"force.museum", +"fortmissoula.museum", +"fortworth.museum", +"foundation.museum", +"francaise.museum", +"frankfurt.museum", +"franziskaner.museum", +"freemasonry.museum", +"freiburg.museum", +"fribourg.museum", +"frog.museum", +"fundacio.museum", +"furniture.museum", +"gallery.museum", +"garden.museum", +"gateway.museum", +"geelvinck.museum", +"gemological.museum", +"geology.museum", +"georgia.museum", +"giessen.museum", +"glas.museum", +"glass.museum", +"gorge.museum", +"grandrapids.museum", +"graz.museum", +"guernsey.museum", +"halloffame.museum", +"hamburg.museum", +"handson.museum", +"harvestcelebration.museum", +"hawaii.museum", +"health.museum", +"heimatunduhren.museum", +"hellas.museum", +"helsinki.museum", +"hembygdsforbund.museum", +"heritage.museum", +"histoire.museum", +"historical.museum", +"historicalsociety.museum", +"historichouses.museum", +"historisch.museum", +"historisches.museum", +"history.museum", +"historyofscience.museum", +"horology.museum", +"house.museum", +"humanities.museum", +"illustration.museum", +"imageandsound.museum", +"indian.museum", +"indiana.museum", +"indianapolis.museum", +"indianmarket.museum", +"intelligence.museum", +"interactive.museum", +"iraq.museum", +"iron.museum", +"isleofman.museum", +"jamison.museum", +"jefferson.museum", +"jerusalem.museum", +"jewelry.museum", +"jewish.museum", +"jewishart.museum", +"jfk.museum", +"journalism.museum", +"judaica.museum", +"judygarland.museum", +"juedisches.museum", +"juif.museum", +"karate.museum", +"karikatur.museum", +"kids.museum", +"koebenhavn.museum", +"koeln.museum", +"kunst.museum", +"kunstsammlung.museum", +"kunstunddesign.museum", +"labor.museum", +"labour.museum", +"lajolla.museum", +"lancashire.museum", +"landes.museum", +"lans.museum", +"läns.museum", +"larsson.museum", +"lewismiller.museum", +"lincoln.museum", +"linz.museum", +"living.museum", +"livinghistory.museum", +"localhistory.museum", +"london.museum", +"losangeles.museum", +"louvre.museum", +"loyalist.museum", +"lucerne.museum", +"luxembourg.museum", +"luzern.museum", +"mad.museum", +"madrid.museum", +"mallorca.museum", +"manchester.museum", +"mansion.museum", +"mansions.museum", +"manx.museum", +"marburg.museum", +"maritime.museum", +"maritimo.museum", +"maryland.museum", +"marylhurst.museum", +"media.museum", +"medical.museum", +"medizinhistorisches.museum", +"meeres.museum", +"memorial.museum", +"mesaverde.museum", +"michigan.museum", +"midatlantic.museum", +"military.museum", +"mill.museum", +"miners.museum", +"mining.museum", +"minnesota.museum", +"missile.museum", +"missoula.museum", +"modern.museum", +"moma.museum", +"money.museum", +"monmouth.museum", +"monticello.museum", +"montreal.museum", +"moscow.museum", +"motorcycle.museum", +"muenchen.museum", +"muenster.museum", +"mulhouse.museum", +"muncie.museum", +"museet.museum", +"museumcenter.museum", +"museumvereniging.museum", +"music.museum", +"national.museum", +"nationalfirearms.museum", +"nationalheritage.museum", +"nativeamerican.museum", +"naturalhistory.museum", +"naturalhistorymuseum.museum", +"naturalsciences.museum", +"nature.museum", +"naturhistorisches.museum", +"natuurwetenschappen.museum", +"naumburg.museum", +"naval.museum", +"nebraska.museum", +"neues.museum", +"newhampshire.museum", +"newjersey.museum", +"newmexico.museum", +"newport.museum", +"newspaper.museum", +"newyork.museum", +"niepce.museum", +"norfolk.museum", +"north.museum", +"nrw.museum", +"nuernberg.museum", +"nuremberg.museum", +"nyc.museum", +"nyny.museum", +"oceanographic.museum", +"oceanographique.museum", +"omaha.museum", +"online.museum", +"ontario.museum", +"openair.museum", +"oregon.museum", +"oregontrail.museum", +"otago.museum", +"oxford.museum", +"pacific.museum", +"paderborn.museum", +"palace.museum", +"paleo.museum", +"palmsprings.museum", +"panama.museum", +"paris.museum", +"pasadena.museum", +"pharmacy.museum", +"philadelphia.museum", +"philadelphiaarea.museum", +"philately.museum", +"phoenix.museum", +"photography.museum", +"pilots.museum", +"pittsburgh.museum", +"planetarium.museum", +"plantation.museum", +"plants.museum", +"plaza.museum", +"portal.museum", +"portland.museum", +"portlligat.museum", +"posts-and-telecommunications.museum", +"preservation.museum", +"presidio.museum", +"press.museum", +"project.museum", +"public.museum", +"pubol.museum", +"quebec.museum", +"railroad.museum", +"railway.museum", +"research.museum", +"resistance.museum", +"riodejaneiro.museum", +"rochester.museum", +"rockart.museum", +"roma.museum", +"russia.museum", +"saintlouis.museum", +"salem.museum", +"salvadordali.museum", +"salzburg.museum", +"sandiego.museum", +"sanfrancisco.museum", +"santabarbara.museum", +"santacruz.museum", +"santafe.museum", +"saskatchewan.museum", +"satx.museum", +"savannahga.museum", +"schlesisches.museum", +"schoenbrunn.museum", +"schokoladen.museum", +"school.museum", +"schweiz.museum", +"science.museum", +"scienceandhistory.museum", +"scienceandindustry.museum", +"sciencecenter.museum", +"sciencecenters.museum", +"science-fiction.museum", +"sciencehistory.museum", +"sciences.museum", +"sciencesnaturelles.museum", +"scotland.museum", +"seaport.museum", +"settlement.museum", +"settlers.museum", +"shell.museum", +"sherbrooke.museum", +"sibenik.museum", +"silk.museum", +"ski.museum", +"skole.museum", +"society.museum", +"sologne.museum", +"soundandvision.museum", +"southcarolina.museum", +"southwest.museum", +"space.museum", +"spy.museum", +"square.museum", +"stadt.museum", +"stalbans.museum", +"starnberg.museum", +"state.museum", +"stateofdelaware.museum", +"station.museum", +"steam.museum", +"steiermark.museum", +"stjohn.museum", +"stockholm.museum", +"stpetersburg.museum", +"stuttgart.museum", +"suisse.museum", +"surgeonshall.museum", +"surrey.museum", +"svizzera.museum", +"sweden.museum", +"sydney.museum", +"tank.museum", +"tcm.museum", +"technology.museum", +"telekommunikation.museum", +"television.museum", +"texas.museum", +"textile.museum", +"theater.museum", +"time.museum", +"timekeeping.museum", +"topology.museum", +"torino.museum", +"touch.museum", +"town.museum", +"transport.museum", +"tree.museum", +"trolley.museum", +"trust.museum", +"trustee.museum", +"uhren.museum", +"ulm.museum", +"undersea.museum", +"university.museum", +"usa.museum", +"usantiques.museum", +"usarts.museum", +"uscountryestate.museum", +"usculture.museum", +"usdecorativearts.museum", +"usgarden.museum", +"ushistory.museum", +"ushuaia.museum", +"uslivinghistory.museum", +"utah.museum", +"uvic.museum", +"valley.museum", +"vantaa.museum", +"versailles.museum", +"viking.museum", +"village.museum", +"virginia.museum", +"virtual.museum", +"virtuel.museum", +"vlaanderen.museum", +"volkenkunde.museum", +"wales.museum", +"wallonie.museum", +"war.museum", +"washingtondc.museum", +"watchandclock.museum", +"watch-and-clock.museum", +"western.museum", +"westfalen.museum", +"whaling.museum", +"wildlife.museum", +"williamsburg.museum", +"windmill.museum", +"workshop.museum", +"york.museum", +"yorkshire.museum", +"yosemite.museum", +"youth.museum", +"zoological.museum", +"zoology.museum", +"ירושלים.museum", +"иком.museum", +"mv", +"aero.mv", +"biz.mv", +"com.mv", +"coop.mv", +"edu.mv", +"gov.mv", +"info.mv", +"int.mv", +"mil.mv", +"museum.mv", +"name.mv", +"net.mv", +"org.mv", +"pro.mv", +"mw", +"ac.mw", +"biz.mw", +"co.mw", +"com.mw", +"coop.mw", +"edu.mw", +"gov.mw", +"int.mw", +"museum.mw", +"net.mw", +"org.mw", +"mx", +"com.mx", +"org.mx", +"gob.mx", +"edu.mx", +"net.mx", +"my", +"com.my", +"net.my", +"org.my", +"gov.my", +"edu.my", +"mil.my", +"name.my", +"mz", +"ac.mz", +"adv.mz", +"co.mz", +"edu.mz", +"gov.mz", +"mil.mz", +"net.mz", +"org.mz", +"na", +"info.na", +"pro.na", +"name.na", +"school.na", +"or.na", +"dr.na", +"us.na", +"mx.na", +"ca.na", +"in.na", +"cc.na", +"tv.na", +"ws.na", +"mobi.na", +"co.na", +"com.na", +"org.na", +"name", +"nc", +"asso.nc", +"nom.nc", +"ne", +"net", +"nf", +"com.nf", +"net.nf", +"per.nf", +"rec.nf", +"web.nf", +"arts.nf", +"firm.nf", +"info.nf", +"other.nf", +"store.nf", +"ng", +"com.ng", +"edu.ng", +"gov.ng", +"i.ng", +"mil.ng", +"mobi.ng", +"name.ng", +"net.ng", +"org.ng", +"sch.ng", +"ni", +"ac.ni", +"biz.ni", +"co.ni", +"com.ni", +"edu.ni", +"gob.ni", +"in.ni", +"info.ni", +"int.ni", +"mil.ni", +"net.ni", +"nom.ni", +"org.ni", +"web.ni", +"nl", +"no", +"fhs.no", +"vgs.no", +"fylkesbibl.no", +"folkebibl.no", +"museum.no", +"idrett.no", +"priv.no", +"mil.no", +"stat.no", +"dep.no", +"kommune.no", +"herad.no", +"aa.no", +"ah.no", +"bu.no", +"fm.no", +"hl.no", +"hm.no", +"jan-mayen.no", +"mr.no", +"nl.no", +"nt.no", +"of.no", +"ol.no", +"oslo.no", +"rl.no", +"sf.no", +"st.no", +"svalbard.no", +"tm.no", +"tr.no", +"va.no", +"vf.no", +"gs.aa.no", +"gs.ah.no", +"gs.bu.no", +"gs.fm.no", +"gs.hl.no", +"gs.hm.no", +"gs.jan-mayen.no", +"gs.mr.no", +"gs.nl.no", +"gs.nt.no", +"gs.of.no", +"gs.ol.no", +"gs.oslo.no", +"gs.rl.no", +"gs.sf.no", +"gs.st.no", +"gs.svalbard.no", +"gs.tm.no", +"gs.tr.no", +"gs.va.no", +"gs.vf.no", +"akrehamn.no", +"åkrehamn.no", +"algard.no", +"ålgård.no", +"arna.no", +"brumunddal.no", +"bryne.no", +"bronnoysund.no", +"brønnøysund.no", +"drobak.no", +"drøbak.no", +"egersund.no", +"fetsund.no", +"floro.no", +"florø.no", +"fredrikstad.no", +"hokksund.no", +"honefoss.no", +"hønefoss.no", +"jessheim.no", +"jorpeland.no", +"jørpeland.no", +"kirkenes.no", +"kopervik.no", +"krokstadelva.no", +"langevag.no", +"langevåg.no", +"leirvik.no", +"mjondalen.no", +"mjøndalen.no", +"mo-i-rana.no", +"mosjoen.no", +"mosjøen.no", +"nesoddtangen.no", +"orkanger.no", +"osoyro.no", +"osøyro.no", +"raholt.no", +"råholt.no", +"sandnessjoen.no", +"sandnessjøen.no", +"skedsmokorset.no", +"slattum.no", +"spjelkavik.no", +"stathelle.no", +"stavern.no", +"stjordalshalsen.no", +"stjørdalshalsen.no", +"tananger.no", +"tranby.no", +"vossevangen.no", +"afjord.no", +"åfjord.no", +"agdenes.no", +"al.no", +"ål.no", +"alesund.no", +"ålesund.no", +"alstahaug.no", +"alta.no", +"áltá.no", +"alaheadju.no", +"álaheadju.no", +"alvdal.no", +"amli.no", +"åmli.no", +"amot.no", +"åmot.no", +"andebu.no", +"andoy.no", +"andøy.no", +"andasuolo.no", +"ardal.no", +"årdal.no", +"aremark.no", +"arendal.no", +"ås.no", +"aseral.no", +"åseral.no", +"asker.no", +"askim.no", +"askvoll.no", +"askoy.no", +"askøy.no", +"asnes.no", +"åsnes.no", +"audnedaln.no", +"aukra.no", +"aure.no", +"aurland.no", +"aurskog-holand.no", +"aurskog-høland.no", +"austevoll.no", +"austrheim.no", +"averoy.no", +"averøy.no", +"balestrand.no", +"ballangen.no", +"balat.no", +"bálát.no", +"balsfjord.no", +"bahccavuotna.no", +"báhccavuotna.no", +"bamble.no", +"bardu.no", +"beardu.no", +"beiarn.no", +"bajddar.no", +"bájddar.no", +"baidar.no", +"báidár.no", +"berg.no", +"bergen.no", +"berlevag.no", +"berlevåg.no", +"bearalvahki.no", +"bearalváhki.no", +"bindal.no", +"birkenes.no", +"bjarkoy.no", +"bjarkøy.no", +"bjerkreim.no", +"bjugn.no", +"bodo.no", +"bodø.no", +"badaddja.no", +"bådåddjå.no", +"budejju.no", +"bokn.no", +"bremanger.no", +"bronnoy.no", +"brønnøy.no", +"bygland.no", +"bykle.no", +"barum.no", +"bærum.no", +"bo.telemark.no", +"bø.telemark.no", +"bo.nordland.no", +"bø.nordland.no", +"bievat.no", +"bievát.no", +"bomlo.no", +"bømlo.no", +"batsfjord.no", +"båtsfjord.no", +"bahcavuotna.no", +"báhcavuotna.no", +"dovre.no", +"drammen.no", +"drangedal.no", +"dyroy.no", +"dyrøy.no", +"donna.no", +"dønna.no", +"eid.no", +"eidfjord.no", +"eidsberg.no", +"eidskog.no", +"eidsvoll.no", +"eigersund.no", +"elverum.no", +"enebakk.no", +"engerdal.no", +"etne.no", +"etnedal.no", +"evenes.no", +"evenassi.no", +"evenášši.no", +"evje-og-hornnes.no", +"farsund.no", +"fauske.no", +"fuossko.no", +"fuoisku.no", +"fedje.no", +"fet.no", +"finnoy.no", +"finnøy.no", +"fitjar.no", +"fjaler.no", +"fjell.no", +"flakstad.no", +"flatanger.no", +"flekkefjord.no", +"flesberg.no", +"flora.no", +"fla.no", +"flå.no", +"folldal.no", +"forsand.no", +"fosnes.no", +"frei.no", +"frogn.no", +"froland.no", +"frosta.no", +"frana.no", +"fræna.no", +"froya.no", +"frøya.no", +"fusa.no", +"fyresdal.no", +"forde.no", +"førde.no", +"gamvik.no", +"gangaviika.no", +"gáŋgaviika.no", +"gaular.no", +"gausdal.no", +"gildeskal.no", +"gildeskål.no", +"giske.no", +"gjemnes.no", +"gjerdrum.no", +"gjerstad.no", +"gjesdal.no", +"gjovik.no", +"gjøvik.no", +"gloppen.no", +"gol.no", +"gran.no", +"grane.no", +"granvin.no", +"gratangen.no", +"grimstad.no", +"grong.no", +"kraanghke.no", +"kråanghke.no", +"grue.no", +"gulen.no", +"hadsel.no", +"halden.no", +"halsa.no", +"hamar.no", +"hamaroy.no", +"habmer.no", +"hábmer.no", +"hapmir.no", +"hápmir.no", +"hammerfest.no", +"hammarfeasta.no", +"hámmárfeasta.no", +"haram.no", +"hareid.no", +"harstad.no", +"hasvik.no", +"aknoluokta.no", +"ákŋoluokta.no", +"hattfjelldal.no", +"aarborte.no", +"haugesund.no", +"hemne.no", +"hemnes.no", +"hemsedal.no", +"heroy.more-og-romsdal.no", +"herøy.møre-og-romsdal.no", +"heroy.nordland.no", +"herøy.nordland.no", +"hitra.no", +"hjartdal.no", +"hjelmeland.no", +"hobol.no", +"hobøl.no", +"hof.no", +"hol.no", +"hole.no", +"holmestrand.no", +"holtalen.no", +"holtålen.no", +"hornindal.no", +"horten.no", +"hurdal.no", +"hurum.no", +"hvaler.no", +"hyllestad.no", +"hagebostad.no", +"hægebostad.no", +"hoyanger.no", +"høyanger.no", +"hoylandet.no", +"høylandet.no", +"ha.no", +"hå.no", +"ibestad.no", +"inderoy.no", +"inderøy.no", +"iveland.no", +"jevnaker.no", +"jondal.no", +"jolster.no", +"jølster.no", +"karasjok.no", +"karasjohka.no", +"kárášjohka.no", +"karlsoy.no", +"galsa.no", +"gálsá.no", +"karmoy.no", +"karmøy.no", +"kautokeino.no", +"guovdageaidnu.no", +"klepp.no", +"klabu.no", +"klæbu.no", +"kongsberg.no", +"kongsvinger.no", +"kragero.no", +"kragerø.no", +"kristiansand.no", +"kristiansund.no", +"krodsherad.no", +"krødsherad.no", +"kvalsund.no", +"rahkkeravju.no", +"ráhkkerávju.no", +"kvam.no", +"kvinesdal.no", +"kvinnherad.no", +"kviteseid.no", +"kvitsoy.no", +"kvitsøy.no", +"kvafjord.no", +"kvæfjord.no", +"giehtavuoatna.no", +"kvanangen.no", +"kvænangen.no", +"navuotna.no", +"návuotna.no", +"kafjord.no", +"kåfjord.no", +"gaivuotna.no", +"gáivuotna.no", +"larvik.no", +"lavangen.no", +"lavagis.no", +"loabat.no", +"loabát.no", +"lebesby.no", +"davvesiida.no", +"leikanger.no", +"leirfjord.no", +"leka.no", +"leksvik.no", +"lenvik.no", +"leangaviika.no", +"leaŋgaviika.no", +"lesja.no", +"levanger.no", +"lier.no", +"lierne.no", +"lillehammer.no", +"lillesand.no", +"lindesnes.no", +"lindas.no", +"lindås.no", +"lom.no", +"loppa.no", +"lahppi.no", +"láhppi.no", +"lund.no", +"lunner.no", +"luroy.no", +"lurøy.no", +"luster.no", +"lyngdal.no", +"lyngen.no", +"ivgu.no", +"lardal.no", +"lerdal.no", +"lærdal.no", +"lodingen.no", +"lødingen.no", +"lorenskog.no", +"lørenskog.no", +"loten.no", +"løten.no", +"malvik.no", +"masoy.no", +"måsøy.no", +"muosat.no", +"muosát.no", +"mandal.no", +"marker.no", +"marnardal.no", +"masfjorden.no", +"meland.no", +"meldal.no", +"melhus.no", +"meloy.no", +"meløy.no", +"meraker.no", +"meråker.no", +"moareke.no", +"moåreke.no", +"midsund.no", +"midtre-gauldal.no", +"modalen.no", +"modum.no", +"molde.no", +"moskenes.no", +"moss.no", +"mosvik.no", +"malselv.no", +"målselv.no", +"malatvuopmi.no", +"málatvuopmi.no", +"namdalseid.no", +"aejrie.no", +"namsos.no", +"namsskogan.no", +"naamesjevuemie.no", +"nååmesjevuemie.no", +"laakesvuemie.no", +"nannestad.no", +"narvik.no", +"narviika.no", +"naustdal.no", +"nedre-eiker.no", +"nes.akershus.no", +"nes.buskerud.no", +"nesna.no", +"nesodden.no", +"nesseby.no", +"unjarga.no", +"unjárga.no", +"nesset.no", +"nissedal.no", +"nittedal.no", +"nord-aurdal.no", +"nord-fron.no", +"nord-odal.no", +"norddal.no", +"nordkapp.no", +"davvenjarga.no", +"davvenjárga.no", +"nordre-land.no", +"nordreisa.no", +"raisa.no", +"ráisa.no", +"nore-og-uvdal.no", +"notodden.no", +"naroy.no", +"nærøy.no", +"notteroy.no", +"nøtterøy.no", +"odda.no", +"oksnes.no", +"øksnes.no", +"oppdal.no", +"oppegard.no", +"oppegård.no", +"orkdal.no", +"orland.no", +"ørland.no", +"orskog.no", +"ørskog.no", +"orsta.no", +"ørsta.no", +"os.hedmark.no", +"os.hordaland.no", +"osen.no", +"osteroy.no", +"osterøy.no", +"ostre-toten.no", +"østre-toten.no", +"overhalla.no", +"ovre-eiker.no", +"øvre-eiker.no", +"oyer.no", +"øyer.no", +"oygarden.no", +"øygarden.no", +"oystre-slidre.no", +"øystre-slidre.no", +"porsanger.no", +"porsangu.no", +"porsáŋgu.no", +"porsgrunn.no", +"radoy.no", +"radøy.no", +"rakkestad.no", +"rana.no", +"ruovat.no", +"randaberg.no", +"rauma.no", +"rendalen.no", +"rennebu.no", +"rennesoy.no", +"rennesøy.no", +"rindal.no", +"ringebu.no", +"ringerike.no", +"ringsaker.no", +"rissa.no", +"risor.no", +"risør.no", +"roan.no", +"rollag.no", +"rygge.no", +"ralingen.no", +"rælingen.no", +"rodoy.no", +"rødøy.no", +"romskog.no", +"rømskog.no", +"roros.no", +"røros.no", +"rost.no", +"røst.no", +"royken.no", +"røyken.no", +"royrvik.no", +"røyrvik.no", +"rade.no", +"råde.no", +"salangen.no", +"siellak.no", +"saltdal.no", +"salat.no", +"sálát.no", +"sálat.no", +"samnanger.no", +"sande.more-og-romsdal.no", +"sande.møre-og-romsdal.no", +"sande.vestfold.no", +"sandefjord.no", +"sandnes.no", +"sandoy.no", +"sandøy.no", +"sarpsborg.no", +"sauda.no", +"sauherad.no", +"sel.no", +"selbu.no", +"selje.no", +"seljord.no", +"sigdal.no", +"siljan.no", +"sirdal.no", +"skaun.no", +"skedsmo.no", +"ski.no", +"skien.no", +"skiptvet.no", +"skjervoy.no", +"skjervøy.no", +"skierva.no", +"skiervá.no", +"skjak.no", +"skjåk.no", +"skodje.no", +"skanland.no", +"skånland.no", +"skanit.no", +"skánit.no", +"smola.no", +"smøla.no", +"snillfjord.no", +"snasa.no", +"snåsa.no", +"snoasa.no", +"snaase.no", +"snåase.no", +"sogndal.no", +"sokndal.no", +"sola.no", +"solund.no", +"songdalen.no", +"sortland.no", +"spydeberg.no", +"stange.no", +"stavanger.no", +"steigen.no", +"steinkjer.no", +"stjordal.no", +"stjørdal.no", +"stokke.no", +"stor-elvdal.no", +"stord.no", +"stordal.no", +"storfjord.no", +"omasvuotna.no", +"strand.no", +"stranda.no", +"stryn.no", +"sula.no", +"suldal.no", +"sund.no", +"sunndal.no", +"surnadal.no", +"sveio.no", +"svelvik.no", +"sykkylven.no", +"sogne.no", +"søgne.no", +"somna.no", +"sømna.no", +"sondre-land.no", +"søndre-land.no", +"sor-aurdal.no", +"sør-aurdal.no", +"sor-fron.no", +"sør-fron.no", +"sor-odal.no", +"sør-odal.no", +"sor-varanger.no", +"sør-varanger.no", +"matta-varjjat.no", +"mátta-várjjat.no", +"sorfold.no", +"sørfold.no", +"sorreisa.no", +"sørreisa.no", +"sorum.no", +"sørum.no", +"tana.no", +"deatnu.no", +"time.no", +"tingvoll.no", +"tinn.no", +"tjeldsund.no", +"dielddanuorri.no", +"tjome.no", +"tjøme.no", +"tokke.no", +"tolga.no", +"torsken.no", +"tranoy.no", +"tranøy.no", +"tromso.no", +"tromsø.no", +"tromsa.no", +"romsa.no", +"trondheim.no", +"troandin.no", +"trysil.no", +"trana.no", +"træna.no", +"trogstad.no", +"trøgstad.no", +"tvedestrand.no", +"tydal.no", +"tynset.no", +"tysfjord.no", +"divtasvuodna.no", +"divttasvuotna.no", +"tysnes.no", +"tysvar.no", +"tysvær.no", +"tonsberg.no", +"tønsberg.no", +"ullensaker.no", +"ullensvang.no", +"ulvik.no", +"utsira.no", +"vadso.no", +"vadsø.no", +"cahcesuolo.no", +"čáhcesuolo.no", +"vaksdal.no", +"valle.no", +"vang.no", +"vanylven.no", +"vardo.no", +"vardø.no", +"varggat.no", +"várggát.no", +"vefsn.no", +"vaapste.no", +"vega.no", +"vegarshei.no", +"vegårshei.no", +"vennesla.no", +"verdal.no", +"verran.no", +"vestby.no", +"vestnes.no", +"vestre-slidre.no", +"vestre-toten.no", +"vestvagoy.no", +"vestvågøy.no", +"vevelstad.no", +"vik.no", +"vikna.no", +"vindafjord.no", +"volda.no", +"voss.no", +"varoy.no", +"værøy.no", +"vagan.no", +"vågan.no", +"voagat.no", +"vagsoy.no", +"vågsøy.no", +"vaga.no", +"vågå.no", +"valer.ostfold.no", +"våler.østfold.no", +"valer.hedmark.no", +"våler.hedmark.no", +"*.np", +"nr", +"biz.nr", +"info.nr", +"gov.nr", +"edu.nr", +"org.nr", +"net.nr", +"com.nr", +"nu", +"nz", +"ac.nz", +"co.nz", +"cri.nz", +"geek.nz", +"gen.nz", +"govt.nz", +"health.nz", +"iwi.nz", +"kiwi.nz", +"maori.nz", +"mil.nz", +"māori.nz", +"net.nz", +"org.nz", +"parliament.nz", +"school.nz", +"om", +"co.om", +"com.om", +"edu.om", +"gov.om", +"med.om", +"museum.om", +"net.om", +"org.om", +"pro.om", +"onion", +"org", +"pa", +"ac.pa", +"gob.pa", +"com.pa", +"org.pa", +"sld.pa", +"edu.pa", +"net.pa", +"ing.pa", +"abo.pa", +"med.pa", +"nom.pa", +"pe", +"edu.pe", +"gob.pe", +"nom.pe", +"mil.pe", +"org.pe", +"com.pe", +"net.pe", +"pf", +"com.pf", +"org.pf", +"edu.pf", +"*.pg", +"ph", +"com.ph", +"net.ph", +"org.ph", +"gov.ph", +"edu.ph", +"ngo.ph", +"mil.ph", +"i.ph", +"pk", +"com.pk", +"net.pk", +"edu.pk", +"org.pk", +"fam.pk", +"biz.pk", +"web.pk", +"gov.pk", +"gob.pk", +"gok.pk", +"gon.pk", +"gop.pk", +"gos.pk", +"info.pk", +"pl", +"com.pl", +"net.pl", +"org.pl", +"aid.pl", +"agro.pl", +"atm.pl", +"auto.pl", +"biz.pl", +"edu.pl", +"gmina.pl", +"gsm.pl", +"info.pl", +"mail.pl", +"miasta.pl", +"media.pl", +"mil.pl", +"nieruchomosci.pl", +"nom.pl", +"pc.pl", +"powiat.pl", +"priv.pl", +"realestate.pl", +"rel.pl", +"sex.pl", +"shop.pl", +"sklep.pl", +"sos.pl", +"szkola.pl", +"targi.pl", +"tm.pl", +"tourism.pl", +"travel.pl", +"turystyka.pl", +"gov.pl", +"ap.gov.pl", +"ic.gov.pl", +"is.gov.pl", +"us.gov.pl", +"kmpsp.gov.pl", +"kppsp.gov.pl", +"kwpsp.gov.pl", +"psp.gov.pl", +"wskr.gov.pl", +"kwp.gov.pl", +"mw.gov.pl", +"ug.gov.pl", +"um.gov.pl", +"umig.gov.pl", +"ugim.gov.pl", +"upow.gov.pl", +"uw.gov.pl", +"starostwo.gov.pl", +"pa.gov.pl", +"po.gov.pl", +"psse.gov.pl", +"pup.gov.pl", +"rzgw.gov.pl", +"sa.gov.pl", +"so.gov.pl", +"sr.gov.pl", +"wsa.gov.pl", +"sko.gov.pl", +"uzs.gov.pl", +"wiih.gov.pl", +"winb.gov.pl", +"pinb.gov.pl", +"wios.gov.pl", +"witd.gov.pl", +"wzmiuw.gov.pl", +"piw.gov.pl", +"wiw.gov.pl", +"griw.gov.pl", +"wif.gov.pl", +"oum.gov.pl", +"sdn.gov.pl", +"zp.gov.pl", +"uppo.gov.pl", +"mup.gov.pl", +"wuoz.gov.pl", +"konsulat.gov.pl", +"oirm.gov.pl", +"augustow.pl", +"babia-gora.pl", +"bedzin.pl", +"beskidy.pl", +"bialowieza.pl", +"bialystok.pl", +"bielawa.pl", +"bieszczady.pl", +"boleslawiec.pl", +"bydgoszcz.pl", +"bytom.pl", +"cieszyn.pl", +"czeladz.pl", +"czest.pl", +"dlugoleka.pl", +"elblag.pl", +"elk.pl", +"glogow.pl", +"gniezno.pl", +"gorlice.pl", +"grajewo.pl", +"ilawa.pl", +"jaworzno.pl", +"jelenia-gora.pl", +"jgora.pl", +"kalisz.pl", +"kazimierz-dolny.pl", +"karpacz.pl", +"kartuzy.pl", +"kaszuby.pl", +"katowice.pl", +"kepno.pl", +"ketrzyn.pl", +"klodzko.pl", +"kobierzyce.pl", +"kolobrzeg.pl", +"konin.pl", +"konskowola.pl", +"kutno.pl", +"lapy.pl", +"lebork.pl", +"legnica.pl", +"lezajsk.pl", +"limanowa.pl", +"lomza.pl", +"lowicz.pl", +"lubin.pl", +"lukow.pl", +"malbork.pl", +"malopolska.pl", +"mazowsze.pl", +"mazury.pl", +"mielec.pl", +"mielno.pl", +"mragowo.pl", +"naklo.pl", +"nowaruda.pl", +"nysa.pl", +"olawa.pl", +"olecko.pl", +"olkusz.pl", +"olsztyn.pl", +"opoczno.pl", +"opole.pl", +"ostroda.pl", +"ostroleka.pl", +"ostrowiec.pl", +"ostrowwlkp.pl", +"pila.pl", +"pisz.pl", +"podhale.pl", +"podlasie.pl", +"polkowice.pl", +"pomorze.pl", +"pomorskie.pl", +"prochowice.pl", +"pruszkow.pl", +"przeworsk.pl", +"pulawy.pl", +"radom.pl", +"rawa-maz.pl", +"rybnik.pl", +"rzeszow.pl", +"sanok.pl", +"sejny.pl", +"slask.pl", +"slupsk.pl", +"sosnowiec.pl", +"stalowa-wola.pl", +"skoczow.pl", +"starachowice.pl", +"stargard.pl", +"suwalki.pl", +"swidnica.pl", +"swiebodzin.pl", +"swinoujscie.pl", +"szczecin.pl", +"szczytno.pl", +"tarnobrzeg.pl", +"tgory.pl", +"turek.pl", +"tychy.pl", +"ustka.pl", +"walbrzych.pl", +"warmia.pl", +"warszawa.pl", +"waw.pl", +"wegrow.pl", +"wielun.pl", +"wlocl.pl", +"wloclawek.pl", +"wodzislaw.pl", +"wolomin.pl", +"wroclaw.pl", +"zachpomor.pl", +"zagan.pl", +"zarow.pl", +"zgora.pl", +"zgorzelec.pl", +"pm", +"pn", +"gov.pn", +"co.pn", +"org.pn", +"edu.pn", +"net.pn", +"post", +"pr", +"com.pr", +"net.pr", +"org.pr", +"gov.pr", +"edu.pr", +"isla.pr", +"pro.pr", +"biz.pr", +"info.pr", +"name.pr", +"est.pr", +"prof.pr", +"ac.pr", +"pro", +"aaa.pro", +"aca.pro", +"acct.pro", +"avocat.pro", +"bar.pro", +"cpa.pro", +"eng.pro", +"jur.pro", +"law.pro", +"med.pro", +"recht.pro", +"ps", +"edu.ps", +"gov.ps", +"sec.ps", +"plo.ps", +"com.ps", +"org.ps", +"net.ps", +"pt", +"net.pt", +"gov.pt", +"org.pt", +"edu.pt", +"int.pt", +"publ.pt", +"com.pt", +"nome.pt", +"pw", +"co.pw", +"ne.pw", +"or.pw", +"ed.pw", +"go.pw", +"belau.pw", +"py", +"com.py", +"coop.py", +"edu.py", +"gov.py", +"mil.py", +"net.py", +"org.py", +"qa", +"com.qa", +"edu.qa", +"gov.qa", +"mil.qa", +"name.qa", +"net.qa", +"org.qa", +"sch.qa", +"re", +"asso.re", +"com.re", +"nom.re", +"ro", +"arts.ro", +"com.ro", +"firm.ro", +"info.ro", +"nom.ro", +"nt.ro", +"org.ro", +"rec.ro", +"store.ro", +"tm.ro", +"www.ro", +"rs", +"ac.rs", +"co.rs", +"edu.rs", +"gov.rs", +"in.rs", +"org.rs", +"ru", +"ac.ru", +"edu.ru", +"gov.ru", +"int.ru", +"mil.ru", +"test.ru", +"rw", +"ac.rw", +"co.rw", +"coop.rw", +"gov.rw", +"mil.rw", +"net.rw", +"org.rw", +"sa", +"com.sa", +"net.sa", +"org.sa", +"gov.sa", +"med.sa", +"pub.sa", +"edu.sa", +"sch.sa", +"sb", +"com.sb", +"edu.sb", +"gov.sb", +"net.sb", +"org.sb", +"sc", +"com.sc", +"gov.sc", +"net.sc", +"org.sc", +"edu.sc", +"sd", +"com.sd", +"net.sd", +"org.sd", +"edu.sd", +"med.sd", +"tv.sd", +"gov.sd", +"info.sd", +"se", +"a.se", +"ac.se", +"b.se", +"bd.se", +"brand.se", +"c.se", +"d.se", +"e.se", +"f.se", +"fh.se", +"fhsk.se", +"fhv.se", +"g.se", +"h.se", +"i.se", +"k.se", +"komforb.se", +"kommunalforbund.se", +"komvux.se", +"l.se", +"lanbib.se", +"m.se", +"n.se", +"naturbruksgymn.se", +"o.se", +"org.se", +"p.se", +"parti.se", +"pp.se", +"press.se", +"r.se", +"s.se", +"t.se", +"tm.se", +"u.se", +"w.se", +"x.se", +"y.se", +"z.se", +"sg", +"com.sg", +"net.sg", +"org.sg", +"gov.sg", +"edu.sg", +"per.sg", +"sh", +"com.sh", +"net.sh", +"gov.sh", +"org.sh", +"mil.sh", +"si", +"sj", +"sk", +"sl", +"com.sl", +"net.sl", +"edu.sl", +"gov.sl", +"org.sl", +"sm", +"sn", +"art.sn", +"com.sn", +"edu.sn", +"gouv.sn", +"org.sn", +"perso.sn", +"univ.sn", +"so", +"com.so", +"net.so", +"org.so", +"sr", +"st", +"co.st", +"com.st", +"consulado.st", +"edu.st", +"embaixada.st", +"gov.st", +"mil.st", +"net.st", +"org.st", +"principe.st", +"saotome.st", +"store.st", +"su", +"sv", +"com.sv", +"edu.sv", +"gob.sv", +"org.sv", +"red.sv", +"sx", +"gov.sx", +"sy", +"edu.sy", +"gov.sy", +"net.sy", +"mil.sy", +"com.sy", +"org.sy", +"sz", +"co.sz", +"ac.sz", +"org.sz", +"tc", +"td", +"tel", +"tf", +"tg", +"th", +"ac.th", +"co.th", +"go.th", +"in.th", +"mi.th", +"net.th", +"or.th", +"tj", +"ac.tj", +"biz.tj", +"co.tj", +"com.tj", +"edu.tj", +"go.tj", +"gov.tj", +"int.tj", +"mil.tj", +"name.tj", +"net.tj", +"nic.tj", +"org.tj", +"test.tj", +"web.tj", +"tk", +"tl", +"gov.tl", +"tm", +"com.tm", +"co.tm", +"org.tm", +"net.tm", +"nom.tm", +"gov.tm", +"mil.tm", +"edu.tm", +"tn", +"com.tn", +"ens.tn", +"fin.tn", +"gov.tn", +"ind.tn", +"intl.tn", +"nat.tn", +"net.tn", +"org.tn", +"info.tn", +"perso.tn", +"tourism.tn", +"edunet.tn", +"rnrt.tn", +"rns.tn", +"rnu.tn", +"mincom.tn", +"agrinet.tn", +"defense.tn", +"turen.tn", +"to", +"com.to", +"gov.to", +"net.to", +"org.to", +"edu.to", +"mil.to", +"tr", +"av.tr", +"bbs.tr", +"bel.tr", +"biz.tr", +"com.tr", +"dr.tr", +"edu.tr", +"gen.tr", +"gov.tr", +"info.tr", +"mil.tr", +"k12.tr", +"kep.tr", +"name.tr", +"net.tr", +"org.tr", +"pol.tr", +"tel.tr", +"tsk.tr", +"tv.tr", +"web.tr", +"nc.tr", +"gov.nc.tr", +"tt", +"co.tt", +"com.tt", +"org.tt", +"net.tt", +"biz.tt", +"info.tt", +"pro.tt", +"int.tt", +"coop.tt", +"jobs.tt", +"mobi.tt", +"travel.tt", +"museum.tt", +"aero.tt", +"name.tt", +"gov.tt", +"edu.tt", +"tv", +"tw", +"edu.tw", +"gov.tw", +"mil.tw", +"com.tw", +"net.tw", +"org.tw", +"idv.tw", +"game.tw", +"ebiz.tw", +"club.tw", +"網路.tw", +"組織.tw", +"商業.tw", +"tz", +"ac.tz", +"co.tz", +"go.tz", +"hotel.tz", +"info.tz", +"me.tz", +"mil.tz", +"mobi.tz", +"ne.tz", +"or.tz", +"sc.tz", +"tv.tz", +"ua", +"com.ua", +"edu.ua", +"gov.ua", +"in.ua", +"net.ua", +"org.ua", +"cherkassy.ua", +"cherkasy.ua", +"chernigov.ua", +"chernihiv.ua", +"chernivtsi.ua", +"chernovtsy.ua", +"ck.ua", +"cn.ua", +"cr.ua", +"crimea.ua", +"cv.ua", +"dn.ua", +"dnepropetrovsk.ua", +"dnipropetrovsk.ua", +"dominic.ua", +"donetsk.ua", +"dp.ua", +"if.ua", +"ivano-frankivsk.ua", +"kh.ua", +"kharkiv.ua", +"kharkov.ua", +"kherson.ua", +"khmelnitskiy.ua", +"khmelnytskyi.ua", +"kiev.ua", +"kirovograd.ua", +"km.ua", +"kr.ua", +"krym.ua", +"ks.ua", +"kv.ua", +"kyiv.ua", +"lg.ua", +"lt.ua", +"lugansk.ua", +"lutsk.ua", +"lv.ua", +"lviv.ua", +"mk.ua", +"mykolaiv.ua", +"nikolaev.ua", +"od.ua", +"odesa.ua", +"odessa.ua", +"pl.ua", +"poltava.ua", +"rivne.ua", +"rovno.ua", +"rv.ua", +"sb.ua", +"sebastopol.ua", +"sevastopol.ua", +"sm.ua", +"sumy.ua", +"te.ua", +"ternopil.ua", +"uz.ua", +"uzhgorod.ua", +"vinnica.ua", +"vinnytsia.ua", +"vn.ua", +"volyn.ua", +"yalta.ua", +"zaporizhzhe.ua", +"zaporizhzhia.ua", +"zhitomir.ua", +"zhytomyr.ua", +"zp.ua", +"zt.ua", +"ug", +"co.ug", +"or.ug", +"ac.ug", +"sc.ug", +"go.ug", +"ne.ug", +"com.ug", +"org.ug", +"uk", +"ac.uk", +"co.uk", +"gov.uk", +"ltd.uk", +"me.uk", +"net.uk", +"nhs.uk", +"org.uk", +"plc.uk", +"police.uk", +"*.sch.uk", +"us", +"dni.us", +"fed.us", +"isa.us", +"kids.us", +"nsn.us", +"ak.us", +"al.us", +"ar.us", +"as.us", +"az.us", +"ca.us", +"co.us", +"ct.us", +"dc.us", +"de.us", +"fl.us", +"ga.us", +"gu.us", +"hi.us", +"ia.us", +"id.us", +"il.us", +"in.us", +"ks.us", +"ky.us", +"la.us", +"ma.us", +"md.us", +"me.us", +"mi.us", +"mn.us", +"mo.us", +"ms.us", +"mt.us", +"nc.us", +"nd.us", +"ne.us", +"nh.us", +"nj.us", +"nm.us", +"nv.us", +"ny.us", +"oh.us", +"ok.us", +"or.us", +"pa.us", +"pr.us", +"ri.us", +"sc.us", +"sd.us", +"tn.us", +"tx.us", +"ut.us", +"vi.us", +"vt.us", +"va.us", +"wa.us", +"wi.us", +"wv.us", +"wy.us", +"k12.ak.us", +"k12.al.us", +"k12.ar.us", +"k12.as.us", +"k12.az.us", +"k12.ca.us", +"k12.co.us", +"k12.ct.us", +"k12.dc.us", +"k12.de.us", +"k12.fl.us", +"k12.ga.us", +"k12.gu.us", +"k12.ia.us", +"k12.id.us", +"k12.il.us", +"k12.in.us", +"k12.ks.us", +"k12.ky.us", +"k12.la.us", +"k12.ma.us", +"k12.md.us", +"k12.me.us", +"k12.mi.us", +"k12.mn.us", +"k12.mo.us", +"k12.ms.us", +"k12.mt.us", +"k12.nc.us", +"k12.ne.us", +"k12.nh.us", +"k12.nj.us", +"k12.nm.us", +"k12.nv.us", +"k12.ny.us", +"k12.oh.us", +"k12.ok.us", +"k12.or.us", +"k12.pa.us", +"k12.pr.us", +"k12.ri.us", +"k12.sc.us", +"k12.tn.us", +"k12.tx.us", +"k12.ut.us", +"k12.vi.us", +"k12.vt.us", +"k12.va.us", +"k12.wa.us", +"k12.wi.us", +"k12.wy.us", +"cc.ak.us", +"cc.al.us", +"cc.ar.us", +"cc.as.us", +"cc.az.us", +"cc.ca.us", +"cc.co.us", +"cc.ct.us", +"cc.dc.us", +"cc.de.us", +"cc.fl.us", +"cc.ga.us", +"cc.gu.us", +"cc.hi.us", +"cc.ia.us", +"cc.id.us", +"cc.il.us", +"cc.in.us", +"cc.ks.us", +"cc.ky.us", +"cc.la.us", +"cc.ma.us", +"cc.md.us", +"cc.me.us", +"cc.mi.us", +"cc.mn.us", +"cc.mo.us", +"cc.ms.us", +"cc.mt.us", +"cc.nc.us", +"cc.nd.us", +"cc.ne.us", +"cc.nh.us", +"cc.nj.us", +"cc.nm.us", +"cc.nv.us", +"cc.ny.us", +"cc.oh.us", +"cc.ok.us", +"cc.or.us", +"cc.pa.us", +"cc.pr.us", +"cc.ri.us", +"cc.sc.us", +"cc.sd.us", +"cc.tn.us", +"cc.tx.us", +"cc.ut.us", +"cc.vi.us", +"cc.vt.us", +"cc.va.us", +"cc.wa.us", +"cc.wi.us", +"cc.wv.us", +"cc.wy.us", +"lib.ak.us", +"lib.al.us", +"lib.ar.us", +"lib.as.us", +"lib.az.us", +"lib.ca.us", +"lib.co.us", +"lib.ct.us", +"lib.dc.us", +"lib.fl.us", +"lib.ga.us", +"lib.gu.us", +"lib.hi.us", +"lib.ia.us", +"lib.id.us", +"lib.il.us", +"lib.in.us", +"lib.ks.us", +"lib.ky.us", +"lib.la.us", +"lib.ma.us", +"lib.md.us", +"lib.me.us", +"lib.mi.us", +"lib.mn.us", +"lib.mo.us", +"lib.ms.us", +"lib.mt.us", +"lib.nc.us", +"lib.nd.us", +"lib.ne.us", +"lib.nh.us", +"lib.nj.us", +"lib.nm.us", +"lib.nv.us", +"lib.ny.us", +"lib.oh.us", +"lib.ok.us", +"lib.or.us", +"lib.pa.us", +"lib.pr.us", +"lib.ri.us", +"lib.sc.us", +"lib.sd.us", +"lib.tn.us", +"lib.tx.us", +"lib.ut.us", +"lib.vi.us", +"lib.vt.us", +"lib.va.us", +"lib.wa.us", +"lib.wi.us", +"lib.wy.us", +"pvt.k12.ma.us", +"chtr.k12.ma.us", +"paroch.k12.ma.us", +"ann-arbor.mi.us", +"cog.mi.us", +"dst.mi.us", +"eaton.mi.us", +"gen.mi.us", +"mus.mi.us", +"tec.mi.us", +"washtenaw.mi.us", +"uy", +"com.uy", +"edu.uy", +"gub.uy", +"mil.uy", +"net.uy", +"org.uy", +"uz", +"co.uz", +"com.uz", +"net.uz", +"org.uz", +"va", +"vc", +"com.vc", +"net.vc", +"org.vc", +"gov.vc", +"mil.vc", +"edu.vc", +"ve", +"arts.ve", +"co.ve", +"com.ve", +"e12.ve", +"edu.ve", +"firm.ve", +"gob.ve", +"gov.ve", +"info.ve", +"int.ve", +"mil.ve", +"net.ve", +"org.ve", +"rec.ve", +"store.ve", +"tec.ve", +"web.ve", +"vg", +"vi", +"co.vi", +"com.vi", +"k12.vi", +"net.vi", +"org.vi", +"vn", +"com.vn", +"net.vn", +"org.vn", +"edu.vn", +"gov.vn", +"int.vn", +"ac.vn", +"biz.vn", +"info.vn", +"name.vn", +"pro.vn", +"health.vn", +"vu", +"com.vu", +"edu.vu", +"net.vu", +"org.vu", +"wf", +"ws", +"com.ws", +"net.ws", +"org.ws", +"gov.ws", +"edu.ws", +"yt", +"امارات", +"հայ", +"বাংলা", +"бг", +"бел", +"中国", +"中國", +"الجزائر", +"مصر", +"ею", +"გე", +"ελ", +"香港", +"公司.香港", +"教育.香港", +"政府.香港", +"個人.香港", +"網絡.香港", +"組織.香港", +"ಭಾರತ", +"ଭାରତ", +"ভাৰত", +"भारतम्", +"भारोत", +"ڀارت", +"ഭാരതം", +"भारत", +"بارت", +"بھارت", +"భారత్", +"ભારત", +"ਭਾਰਤ", +"ভারত", +"இந்தியா", +"ایران", +"ايران", +"عراق", +"الاردن", +"한국", +"қаз", +"ලංකා", +"இலங்கை", +"المغرب", +"мкд", +"мон", +"澳門", +"澳门", +"مليسيا", +"عمان", +"پاکستان", +"پاكستان", +"فلسطين", +"срб", +"пр.срб", +"орг.срб", +"обр.срб", +"од.срб", +"упр.срб", +"ак.срб", +"рф", +"قطر", +"السعودية", +"السعودیة", +"السعودیۃ", +"السعوديه", +"سودان", +"新加坡", +"சிங்கப்பூர்", +"سورية", +"سوريا", +"ไทย", +"ศึกษา.ไทย", +"ธุรกิจ.ไทย", +"รัฐบาล.ไทย", +"ทหาร.ไทย", +"เน็ต.ไทย", +"องค์กร.ไทย", +"تونس", +"台灣", +"台湾", +"臺灣", +"укр", +"اليمن", +"xxx", +"*.ye", +"ac.za", +"agric.za", +"alt.za", +"co.za", +"edu.za", +"gov.za", +"grondar.za", +"law.za", +"mil.za", +"net.za", +"ngo.za", +"nic.za", +"nis.za", +"nom.za", +"org.za", +"school.za", +"tm.za", +"web.za", +"zm", +"ac.zm", +"biz.zm", +"co.zm", +"com.zm", +"edu.zm", +"gov.zm", +"info.zm", +"mil.zm", +"net.zm", +"org.zm", +"sch.zm", +"zw", +"ac.zw", +"co.zw", +"gov.zw", +"mil.zw", +"org.zw", +"aaa", +"aarp", +"abarth", +"abb", +"abbott", +"abbvie", +"abc", +"able", +"abogado", +"abudhabi", +"academy", +"accenture", +"accountant", +"accountants", +"aco", +"actor", +"adac", +"ads", +"adult", +"aeg", +"aetna", +"afamilycompany", +"afl", +"africa", +"agakhan", +"agency", +"aig", +"aigo", +"airbus", +"airforce", +"airtel", +"akdn", +"alfaromeo", +"alibaba", +"alipay", +"allfinanz", +"allstate", +"ally", +"alsace", +"alstom", +"americanexpress", +"americanfamily", +"amex", +"amfam", +"amica", +"amsterdam", +"analytics", +"android", +"anquan", +"anz", +"aol", +"apartments", +"app", +"apple", +"aquarelle", +"arab", +"aramco", +"archi", +"army", +"art", +"arte", +"asda", +"associates", +"athleta", +"attorney", +"auction", +"audi", +"audible", +"audio", +"auspost", +"author", +"auto", +"autos", +"avianca", +"aws", +"axa", +"azure", +"baby", +"baidu", +"banamex", +"bananarepublic", +"band", +"bank", +"bar", +"barcelona", +"barclaycard", +"barclays", +"barefoot", +"bargains", +"baseball", +"basketball", +"bauhaus", +"bayern", +"bbc", +"bbt", +"bbva", +"bcg", +"bcn", +"beats", +"beauty", +"beer", +"bentley", +"berlin", +"best", +"bestbuy", +"bet", +"bharti", +"bible", +"bid", +"bike", +"bing", +"bingo", +"bio", +"black", +"blackfriday", +"blockbuster", +"blog", +"bloomberg", +"blue", +"bms", +"bmw", +"bnl", +"bnpparibas", +"boats", +"boehringer", +"bofa", +"bom", +"bond", +"boo", +"book", +"booking", +"bosch", +"bostik", +"boston", +"bot", +"boutique", +"box", +"bradesco", +"bridgestone", +"broadway", +"broker", +"brother", +"brussels", +"budapest", +"bugatti", +"build", +"builders", +"business", +"buy", +"buzz", +"bzh", +"cab", +"cafe", +"cal", +"call", +"calvinklein", +"cam", +"camera", +"camp", +"cancerresearch", +"canon", +"capetown", +"capital", +"capitalone", +"car", +"caravan", +"cards", +"care", +"career", +"careers", +"cars", +"cartier", +"casa", +"case", +"caseih", +"cash", +"casino", +"catering", +"catholic", +"cba", +"cbn", +"cbre", +"cbs", +"ceb", +"center", +"ceo", +"cern", +"cfa", +"cfd", +"chanel", +"channel", +"charity", +"chase", +"chat", +"cheap", +"chintai", +"christmas", +"chrome", +"chrysler", +"church", +"cipriani", +"circle", +"cisco", +"citadel", +"citi", +"citic", +"city", +"cityeats", +"claims", +"cleaning", +"click", +"clinic", +"clinique", +"clothing", +"cloud", +"club", +"clubmed", +"coach", +"codes", +"coffee", +"college", +"cologne", +"comcast", +"commbank", +"community", +"company", +"compare", +"computer", +"comsec", +"condos", +"construction", +"consulting", +"contact", +"contractors", +"cooking", +"cookingchannel", +"cool", +"corsica", +"country", +"coupon", +"coupons", +"courses", +"cpa", +"credit", +"creditcard", +"creditunion", +"cricket", +"crown", +"crs", +"cruise", +"cruises", +"csc", +"cuisinella", +"cymru", +"cyou", +"dabur", +"dad", +"dance", +"data", +"date", +"dating", +"datsun", +"day", +"dclk", +"dds", +"deal", +"dealer", +"deals", +"degree", +"delivery", +"dell", +"deloitte", +"delta", +"democrat", +"dental", +"dentist", +"desi", +"design", +"dev", +"dhl", +"diamonds", +"diet", +"digital", +"direct", +"directory", +"discount", +"discover", +"dish", +"diy", +"dnp", +"docs", +"doctor", +"dodge", +"dog", +"domains", +"dot", +"download", +"drive", +"dtv", +"dubai", +"duck", +"dunlop", +"duns", +"dupont", +"durban", +"dvag", +"dvr", +"earth", +"eat", +"eco", +"edeka", +"education", +"email", +"emerck", +"energy", +"engineer", +"engineering", +"enterprises", +"epson", +"equipment", +"ericsson", +"erni", +"esq", +"estate", +"esurance", +"etisalat", +"eurovision", +"eus", +"events", +"everbank", +"exchange", +"expert", +"exposed", +"express", +"extraspace", +"fage", +"fail", +"fairwinds", +"faith", +"family", +"fan", +"fans", +"farm", +"farmers", +"fashion", +"fast", +"fedex", +"feedback", +"ferrari", +"ferrero", +"fiat", +"fidelity", +"fido", +"film", +"final", +"finance", +"financial", +"fire", +"firestone", +"firmdale", +"fish", +"fishing", +"fit", +"fitness", +"flickr", +"flights", +"flir", +"florist", +"flowers", +"fly", +"foo", +"food", +"foodnetwork", +"football", +"ford", +"forex", +"forsale", +"forum", +"foundation", +"fox", +"free", +"fresenius", +"frl", +"frogans", +"frontdoor", +"frontier", +"ftr", +"fujitsu", +"fujixerox", +"fun", +"fund", +"furniture", +"futbol", +"fyi", +"gal", +"gallery", +"gallo", +"gallup", +"game", +"games", +"gap", +"garden", +"gay", +"gbiz", +"gdn", +"gea", +"gent", +"genting", +"george", +"ggee", +"gift", +"gifts", +"gives", +"giving", +"glade", +"glass", +"gle", +"global", +"globo", +"gmail", +"gmbh", +"gmo", +"gmx", +"godaddy", +"gold", +"goldpoint", +"golf", +"goo", +"goodyear", +"goog", +"google", +"gop", +"got", +"grainger", +"graphics", +"gratis", +"green", +"gripe", +"grocery", +"group", +"guardian", +"gucci", +"guge", +"guide", +"guitars", +"guru", +"hair", +"hamburg", +"hangout", +"haus", +"hbo", +"hdfc", +"hdfcbank", +"health", +"healthcare", +"help", +"helsinki", +"here", +"hermes", +"hgtv", +"hiphop", +"hisamitsu", +"hitachi", +"hiv", +"hkt", +"hockey", +"holdings", +"holiday", +"homedepot", +"homegoods", +"homes", +"homesense", +"honda", +"honeywell", +"horse", +"hospital", +"host", +"hosting", +"hot", +"hoteles", +"hotels", +"hotmail", +"house", +"how", +"hsbc", +"hughes", +"hyatt", +"hyundai", +"ibm", +"icbc", +"ice", +"icu", +"ieee", +"ifm", +"ikano", +"imamat", +"imdb", +"immo", +"immobilien", +"inc", +"industries", +"infiniti", +"ing", +"ink", +"institute", +"insurance", +"insure", +"intel", +"international", +"intuit", +"investments", +"ipiranga", +"irish", +"iselect", +"ismaili", +"ist", +"istanbul", +"itau", +"itv", +"iveco", +"jaguar", +"java", +"jcb", +"jcp", +"jeep", +"jetzt", +"jewelry", +"jio", +"jll", +"jmp", +"jnj", +"joburg", +"jot", +"joy", +"jpmorgan", +"jprs", +"juegos", +"juniper", +"kaufen", +"kddi", +"kerryhotels", +"kerrylogistics", +"kerryproperties", +"kfh", +"kia", +"kim", +"kinder", +"kindle", +"kitchen", +"kiwi", +"koeln", +"komatsu", +"kosher", +"kpmg", +"kpn", +"krd", +"kred", +"kuokgroup", +"kyoto", +"lacaixa", +"ladbrokes", +"lamborghini", +"lamer", +"lancaster", +"lancia", +"lancome", +"land", +"landrover", +"lanxess", +"lasalle", +"lat", +"latino", +"latrobe", +"law", +"lawyer", +"lds", +"lease", +"leclerc", +"lefrak", +"legal", +"lego", +"lexus", +"lgbt", +"liaison", +"lidl", +"life", +"lifeinsurance", +"lifestyle", +"lighting", +"like", +"lilly", +"limited", +"limo", +"lincoln", +"linde", +"link", +"lipsy", +"live", +"living", +"lixil", +"llc", +"loan", +"loans", +"locker", +"locus", +"loft", +"lol", +"london", +"lotte", +"lotto", +"love", +"lpl", +"lplfinancial", +"ltd", +"ltda", +"lundbeck", +"lupin", +"luxe", +"luxury", +"macys", +"madrid", +"maif", +"maison", +"makeup", +"man", +"management", +"mango", +"map", +"market", +"marketing", +"markets", +"marriott", +"marshalls", +"maserati", +"mattel", +"mba", +"mckinsey", +"med", +"media", +"meet", +"melbourne", +"meme", +"memorial", +"men", +"menu", +"merckmsd", +"metlife", +"miami", +"microsoft", +"mini", +"mint", +"mit", +"mitsubishi", +"mlb", +"mls", +"mma", +"mobile", +"mobily", +"moda", +"moe", +"moi", +"mom", +"monash", +"money", +"monster", +"mopar", +"mormon", +"mortgage", +"moscow", +"moto", +"motorcycles", +"mov", +"movie", +"movistar", +"msd", +"mtn", +"mtr", +"mutual", +"nab", +"nadex", +"nagoya", +"nationwide", +"natura", +"navy", +"nba", +"nec", +"netbank", +"netflix", +"network", +"neustar", +"new", +"newholland", +"news", +"next", +"nextdirect", +"nexus", +"nfl", +"ngo", +"nhk", +"nico", +"nike", +"nikon", +"ninja", +"nissan", +"nissay", +"nokia", +"northwesternmutual", +"norton", +"now", +"nowruz", +"nowtv", +"nra", +"nrw", +"ntt", +"nyc", +"obi", +"observer", +"off", +"office", +"okinawa", +"olayan", +"olayangroup", +"oldnavy", +"ollo", +"omega", +"one", +"ong", +"onl", +"online", +"onyourside", +"ooo", +"open", +"oracle", +"orange", +"organic", +"origins", +"osaka", +"otsuka", +"ott", +"ovh", +"page", +"panasonic", +"paris", +"pars", +"partners", +"parts", +"party", +"passagens", +"pay", +"pccw", +"pet", +"pfizer", +"pharmacy", +"phd", +"philips", +"phone", +"photo", +"photography", +"photos", +"physio", +"piaget", +"pics", +"pictet", +"pictures", +"pid", +"pin", +"ping", +"pink", +"pioneer", +"pizza", +"place", +"play", +"playstation", +"plumbing", +"plus", +"pnc", +"pohl", +"poker", +"politie", +"porn", +"pramerica", +"praxi", +"press", +"prime", +"prod", +"productions", +"prof", +"progressive", +"promo", +"properties", +"property", +"protection", +"pru", +"prudential", +"pub", +"pwc", +"qpon", +"quebec", +"quest", +"qvc", +"racing", +"radio", +"raid", +"read", +"realestate", +"realtor", +"realty", +"recipes", +"red", +"redstone", +"redumbrella", +"rehab", +"reise", +"reisen", +"reit", +"reliance", +"ren", +"rent", +"rentals", +"repair", +"report", +"republican", +"rest", +"restaurant", +"review", +"reviews", +"rexroth", +"rich", +"richardli", +"ricoh", +"rightathome", +"ril", +"rio", +"rip", +"rmit", +"rocher", +"rocks", +"rodeo", +"rogers", +"room", +"rsvp", +"rugby", +"ruhr", +"run", +"rwe", +"ryukyu", +"saarland", +"safe", +"safety", +"sakura", +"sale", +"salon", +"samsclub", +"samsung", +"sandvik", +"sandvikcoromant", +"sanofi", +"sap", +"sarl", +"sas", +"save", +"saxo", +"sbi", +"sbs", +"sca", +"scb", +"schaeffler", +"schmidt", +"scholarships", +"school", +"schule", +"schwarz", +"science", +"scjohnson", +"scor", +"scot", +"search", +"seat", +"secure", +"security", +"seek", +"select", +"sener", +"services", +"ses", +"seven", +"sew", +"sex", +"sexy", +"sfr", +"shangrila", +"sharp", +"shaw", +"shell", +"shia", +"shiksha", +"shoes", +"shop", +"shopping", +"shouji", +"show", +"showtime", +"shriram", +"silk", +"sina", +"singles", +"site", +"ski", +"skin", +"sky", +"skype", +"sling", +"smart", +"smile", +"sncf", +"soccer", +"social", +"softbank", +"software", +"sohu", +"solar", +"solutions", +"song", +"sony", +"soy", +"space", +"sport", +"spot", +"spreadbetting", +"srl", +"srt", +"stada", +"staples", +"star", +"starhub", +"statebank", +"statefarm", +"stc", +"stcgroup", +"stockholm", +"storage", +"store", +"stream", +"studio", +"study", +"style", +"sucks", +"supplies", +"supply", +"support", +"surf", +"surgery", +"suzuki", +"swatch", +"swiftcover", +"swiss", +"sydney", +"symantec", +"systems", +"tab", +"taipei", +"talk", +"taobao", +"target", +"tatamotors", +"tatar", +"tattoo", +"tax", +"taxi", +"tci", +"tdk", +"team", +"tech", +"technology", +"telefonica", +"temasek", +"tennis", +"teva", +"thd", +"theater", +"theatre", +"tiaa", +"tickets", +"tienda", +"tiffany", +"tips", +"tires", +"tirol", +"tjmaxx", +"tjx", +"tkmaxx", +"tmall", +"today", +"tokyo", +"tools", +"top", +"toray", +"toshiba", +"total", +"tours", +"town", +"toyota", +"toys", +"trade", +"trading", +"training", +"travel", +"travelchannel", +"travelers", +"travelersinsurance", +"trust", +"trv", +"tube", +"tui", +"tunes", +"tushu", +"tvs", +"ubank", +"ubs", +"uconnect", +"unicom", +"university", +"uno", +"uol", +"ups", +"vacations", +"vana", +"vanguard", +"vegas", +"ventures", +"verisign", +"versicherung", +"vet", +"viajes", +"video", +"vig", +"viking", +"villas", +"vin", +"vip", +"virgin", +"visa", +"vision", +"vistaprint", +"viva", +"vivo", +"vlaanderen", +"vodka", +"volkswagen", +"volvo", +"vote", +"voting", +"voto", +"voyage", +"vuelos", +"wales", +"walmart", +"walter", +"wang", +"wanggou", +"warman", +"watch", +"watches", +"weather", +"weatherchannel", +"webcam", +"weber", +"website", +"wed", +"wedding", +"weibo", +"weir", +"whoswho", +"wien", +"wiki", +"williamhill", +"win", +"windows", +"wine", +"winners", +"wme", +"wolterskluwer", +"woodside", +"work", +"works", +"world", +"wow", +"wtc", +"wtf", +"xbox", +"xerox", +"xfinity", +"xihuan", +"xin", +"कॉम", +"セール", +"佛山", +"慈善", +"集团", +"在线", +"大众汽车", +"点看", +"คอม", +"八卦", +"موقع", +"公益", +"公司", +"香格里拉", +"网站", +"移动", +"我爱你", +"москва", +"католик", +"онлайн", +"сайт", +"联通", +"קום", +"时尚", +"微博", +"淡马锡", +"ファッション", +"орг", +"नेट", +"ストア", +"삼성", +"商标", +"商店", +"商城", +"дети", +"ポイント", +"新闻", +"工行", +"家電", +"كوم", +"中文网", +"中信", +"娱乐", +"谷歌", +"電訊盈科", +"购物", +"クラウド", +"通販", +"网店", +"संगठन", +"餐厅", +"网络", +"ком", +"诺基亚", +"食品", +"飞利浦", +"手表", +"手机", +"ارامكو", +"العليان", +"اتصالات", +"بازار", +"موبايلي", +"ابوظبي", +"كاثوليك", +"همراه", +"닷컴", +"政府", +"شبكة", +"بيتك", +"عرب", +"机构", +"组织机构", +"健康", +"招聘", +"рус", +"珠宝", +"大拿", +"みんな", +"グーグル", +"世界", +"書籍", +"网址", +"닷넷", +"コム", +"天主教", +"游戏", +"vermögensberater", +"vermögensberatung", +"企业", +"信息", +"嘉里大酒店", +"嘉里", +"广东", +"政务", +"xyz", +"yachts", +"yahoo", +"yamaxun", +"yandex", +"yodobashi", +"yoga", +"yokohama", +"you", +"youtube", +"yun", +"zappos", +"zara", +"zero", +"zip", +"zone", +"zuerich", +"cc.ua", +"inf.ua", +"ltd.ua", +"beep.pl", +"barsy.ca", +"*.compute.estate", +"*.alces.network", +"alwaysdata.net", +"cloudfront.net", +"*.compute.amazonaws.com", +"*.compute-1.amazonaws.com", +"*.compute.amazonaws.com.cn", +"us-east-1.amazonaws.com", +"cn-north-1.eb.amazonaws.com.cn", +"cn-northwest-1.eb.amazonaws.com.cn", +"elasticbeanstalk.com", +"ap-northeast-1.elasticbeanstalk.com", +"ap-northeast-2.elasticbeanstalk.com", +"ap-northeast-3.elasticbeanstalk.com", +"ap-south-1.elasticbeanstalk.com", +"ap-southeast-1.elasticbeanstalk.com", +"ap-southeast-2.elasticbeanstalk.com", +"ca-central-1.elasticbeanstalk.com", +"eu-central-1.elasticbeanstalk.com", +"eu-west-1.elasticbeanstalk.com", +"eu-west-2.elasticbeanstalk.com", +"eu-west-3.elasticbeanstalk.com", +"sa-east-1.elasticbeanstalk.com", +"us-east-1.elasticbeanstalk.com", +"us-east-2.elasticbeanstalk.com", +"us-gov-west-1.elasticbeanstalk.com", +"us-west-1.elasticbeanstalk.com", +"us-west-2.elasticbeanstalk.com", +"*.elb.amazonaws.com", +"*.elb.amazonaws.com.cn", +"s3.amazonaws.com", +"s3-ap-northeast-1.amazonaws.com", +"s3-ap-northeast-2.amazonaws.com", +"s3-ap-south-1.amazonaws.com", +"s3-ap-southeast-1.amazonaws.com", +"s3-ap-southeast-2.amazonaws.com", +"s3-ca-central-1.amazonaws.com", +"s3-eu-central-1.amazonaws.com", +"s3-eu-west-1.amazonaws.com", +"s3-eu-west-2.amazonaws.com", +"s3-eu-west-3.amazonaws.com", +"s3-external-1.amazonaws.com", +"s3-fips-us-gov-west-1.amazonaws.com", +"s3-sa-east-1.amazonaws.com", +"s3-us-gov-west-1.amazonaws.com", +"s3-us-east-2.amazonaws.com", +"s3-us-west-1.amazonaws.com", +"s3-us-west-2.amazonaws.com", +"s3.ap-northeast-2.amazonaws.com", +"s3.ap-south-1.amazonaws.com", +"s3.cn-north-1.amazonaws.com.cn", +"s3.ca-central-1.amazonaws.com", +"s3.eu-central-1.amazonaws.com", +"s3.eu-west-2.amazonaws.com", +"s3.eu-west-3.amazonaws.com", +"s3.us-east-2.amazonaws.com", +"s3.dualstack.ap-northeast-1.amazonaws.com", +"s3.dualstack.ap-northeast-2.amazonaws.com", +"s3.dualstack.ap-south-1.amazonaws.com", +"s3.dualstack.ap-southeast-1.amazonaws.com", +"s3.dualstack.ap-southeast-2.amazonaws.com", +"s3.dualstack.ca-central-1.amazonaws.com", +"s3.dualstack.eu-central-1.amazonaws.com", +"s3.dualstack.eu-west-1.amazonaws.com", +"s3.dualstack.eu-west-2.amazonaws.com", +"s3.dualstack.eu-west-3.amazonaws.com", +"s3.dualstack.sa-east-1.amazonaws.com", +"s3.dualstack.us-east-1.amazonaws.com", +"s3.dualstack.us-east-2.amazonaws.com", +"s3-website-us-east-1.amazonaws.com", +"s3-website-us-west-1.amazonaws.com", +"s3-website-us-west-2.amazonaws.com", +"s3-website-ap-northeast-1.amazonaws.com", +"s3-website-ap-southeast-1.amazonaws.com", +"s3-website-ap-southeast-2.amazonaws.com", +"s3-website-eu-west-1.amazonaws.com", +"s3-website-sa-east-1.amazonaws.com", +"s3-website.ap-northeast-2.amazonaws.com", +"s3-website.ap-south-1.amazonaws.com", +"s3-website.ca-central-1.amazonaws.com", +"s3-website.eu-central-1.amazonaws.com", +"s3-website.eu-west-2.amazonaws.com", +"s3-website.eu-west-3.amazonaws.com", +"s3-website.us-east-2.amazonaws.com", +"t3l3p0rt.net", +"tele.amune.org", +"apigee.io", +"on-aptible.com", +"user.aseinet.ne.jp", +"gv.vc", +"d.gv.vc", +"user.party.eus", +"pimienta.org", +"poivron.org", +"potager.org", +"sweetpepper.org", +"myasustor.com", +"go-vip.co", +"go-vip.net", +"wpcomstaging.com", +"myfritz.net", +"*.awdev.ca", +"*.advisor.ws", +"b-data.io", +"backplaneapp.io", +"balena-devices.com", +"app.banzaicloud.io", +"betainabox.com", +"bnr.la", +"blackbaudcdn.net", +"boomla.net", +"boxfuse.io", +"square7.ch", +"bplaced.com", +"bplaced.de", +"square7.de", +"bplaced.net", +"square7.net", +"browsersafetymark.io", +"uk0.bigv.io", +"dh.bytemark.co.uk", +"vm.bytemark.co.uk", +"mycd.eu", +"carrd.co", +"crd.co", +"uwu.ai", +"ae.org", +"ar.com", +"br.com", +"cn.com", +"com.de", +"com.se", +"de.com", +"eu.com", +"gb.com", +"gb.net", +"hu.com", +"hu.net", +"jp.net", +"jpn.com", +"kr.com", +"mex.com", +"no.com", +"qc.com", +"ru.com", +"sa.com", +"se.net", +"uk.com", +"uk.net", +"us.com", +"uy.com", +"za.bz", +"za.com", +"africa.com", +"gr.com", +"in.net", +"us.org", +"co.com", +"c.la", +"certmgr.org", +"xenapponazure.com", +"discourse.group", +"virtueeldomein.nl", +"cleverapps.io", +"*.lcl.dev", +"*.stg.dev", +"c66.me", +"cloud66.ws", +"cloud66.zone", +"jdevcloud.com", +"wpdevcloud.com", +"cloudaccess.host", +"freesite.host", +"cloudaccess.net", +"cloudcontrolled.com", +"cloudcontrolapp.com", +"cloudera.site", +"trycloudflare.com", +"workers.dev", +"wnext.app", +"co.ca", +"*.otap.co", +"co.cz", +"c.cdn77.org", +"cdn77-ssl.net", +"r.cdn77.net", +"rsc.cdn77.org", +"ssl.origin.cdn77-secure.org", +"cloudns.asia", +"cloudns.biz", +"cloudns.club", +"cloudns.cc", +"cloudns.eu", +"cloudns.in", +"cloudns.info", +"cloudns.org", +"cloudns.pro", +"cloudns.pw", +"cloudns.us", +"cloudeity.net", +"cnpy.gdn", +"co.nl", +"co.no", +"webhosting.be", +"hosting-cluster.nl", +"dyn.cosidns.de", +"dynamisches-dns.de", +"dnsupdater.de", +"internet-dns.de", +"l-o-g-i-n.de", +"dynamic-dns.info", +"feste-ip.net", +"knx-server.net", +"static-access.net", +"realm.cz", +"*.cryptonomic.net", +"cupcake.is", +"cyon.link", +"cyon.site", +"daplie.me", +"localhost.daplie.me", +"dattolocal.com", +"dattorelay.com", +"dattoweb.com", +"mydatto.com", +"dattolocal.net", +"mydatto.net", +"biz.dk", +"co.dk", +"firm.dk", +"reg.dk", +"store.dk", +"*.dapps.earth", +"*.bzz.dapps.earth", +"debian.net", +"dedyn.io", +"dnshome.de", +"online.th", +"shop.th", +"drayddns.com", +"dreamhosters.com", +"mydrobo.com", +"drud.io", +"drud.us", +"duckdns.org", +"dy.fi", +"tunk.org", +"dyndns-at-home.com", +"dyndns-at-work.com", +"dyndns-blog.com", +"dyndns-free.com", +"dyndns-home.com", +"dyndns-ip.com", +"dyndns-mail.com", +"dyndns-office.com", +"dyndns-pics.com", +"dyndns-remote.com", +"dyndns-server.com", +"dyndns-web.com", +"dyndns-wiki.com", +"dyndns-work.com", +"dyndns.biz", +"dyndns.info", +"dyndns.org", +"dyndns.tv", +"at-band-camp.net", +"ath.cx", +"barrel-of-knowledge.info", +"barrell-of-knowledge.info", +"better-than.tv", +"blogdns.com", +"blogdns.net", +"blogdns.org", +"blogsite.org", +"boldlygoingnowhere.org", +"broke-it.net", +"buyshouses.net", +"cechire.com", +"dnsalias.com", +"dnsalias.net", +"dnsalias.org", +"dnsdojo.com", +"dnsdojo.net", +"dnsdojo.org", +"does-it.net", +"doesntexist.com", +"doesntexist.org", +"dontexist.com", +"dontexist.net", +"dontexist.org", +"doomdns.com", +"doomdns.org", +"dvrdns.org", +"dyn-o-saur.com", +"dynalias.com", +"dynalias.net", +"dynalias.org", +"dynathome.net", +"dyndns.ws", +"endofinternet.net", +"endofinternet.org", +"endoftheinternet.org", +"est-a-la-maison.com", +"est-a-la-masion.com", +"est-le-patron.com", +"est-mon-blogueur.com", +"for-better.biz", +"for-more.biz", +"for-our.info", +"for-some.biz", +"for-the.biz", +"forgot.her.name", +"forgot.his.name", +"from-ak.com", +"from-al.com", +"from-ar.com", +"from-az.net", +"from-ca.com", +"from-co.net", +"from-ct.com", +"from-dc.com", +"from-de.com", +"from-fl.com", +"from-ga.com", +"from-hi.com", +"from-ia.com", +"from-id.com", +"from-il.com", +"from-in.com", +"from-ks.com", +"from-ky.com", +"from-la.net", +"from-ma.com", +"from-md.com", +"from-me.org", +"from-mi.com", +"from-mn.com", +"from-mo.com", +"from-ms.com", +"from-mt.com", +"from-nc.com", +"from-nd.com", +"from-ne.com", +"from-nh.com", +"from-nj.com", +"from-nm.com", +"from-nv.com", +"from-ny.net", +"from-oh.com", +"from-ok.com", +"from-or.com", +"from-pa.com", +"from-pr.com", +"from-ri.com", +"from-sc.com", +"from-sd.com", +"from-tn.com", +"from-tx.com", +"from-ut.com", +"from-va.com", +"from-vt.com", +"from-wa.com", +"from-wi.com", +"from-wv.com", +"from-wy.com", +"ftpaccess.cc", +"fuettertdasnetz.de", +"game-host.org", +"game-server.cc", +"getmyip.com", +"gets-it.net", +"go.dyndns.org", +"gotdns.com", +"gotdns.org", +"groks-the.info", +"groks-this.info", +"ham-radio-op.net", +"here-for-more.info", +"hobby-site.com", +"hobby-site.org", +"home.dyndns.org", +"homedns.org", +"homeftp.net", +"homeftp.org", +"homeip.net", +"homelinux.com", +"homelinux.net", +"homelinux.org", +"homeunix.com", +"homeunix.net", +"homeunix.org", +"iamallama.com", +"in-the-band.net", +"is-a-anarchist.com", +"is-a-blogger.com", +"is-a-bookkeeper.com", +"is-a-bruinsfan.org", +"is-a-bulls-fan.com", +"is-a-candidate.org", +"is-a-caterer.com", +"is-a-celticsfan.org", +"is-a-chef.com", +"is-a-chef.net", +"is-a-chef.org", +"is-a-conservative.com", +"is-a-cpa.com", +"is-a-cubicle-slave.com", +"is-a-democrat.com", +"is-a-designer.com", +"is-a-doctor.com", +"is-a-financialadvisor.com", +"is-a-geek.com", +"is-a-geek.net", +"is-a-geek.org", +"is-a-green.com", +"is-a-guru.com", +"is-a-hard-worker.com", +"is-a-hunter.com", +"is-a-knight.org", +"is-a-landscaper.com", +"is-a-lawyer.com", +"is-a-liberal.com", +"is-a-libertarian.com", +"is-a-linux-user.org", +"is-a-llama.com", +"is-a-musician.com", +"is-a-nascarfan.com", +"is-a-nurse.com", +"is-a-painter.com", +"is-a-patsfan.org", +"is-a-personaltrainer.com", +"is-a-photographer.com", +"is-a-player.com", +"is-a-republican.com", +"is-a-rockstar.com", +"is-a-socialist.com", +"is-a-soxfan.org", +"is-a-student.com", +"is-a-teacher.com", +"is-a-techie.com", +"is-a-therapist.com", +"is-an-accountant.com", +"is-an-actor.com", +"is-an-actress.com", +"is-an-anarchist.com", +"is-an-artist.com", +"is-an-engineer.com", +"is-an-entertainer.com", +"is-by.us", +"is-certified.com", +"is-found.org", +"is-gone.com", +"is-into-anime.com", +"is-into-cars.com", +"is-into-cartoons.com", +"is-into-games.com", +"is-leet.com", +"is-lost.org", +"is-not-certified.com", +"is-saved.org", +"is-slick.com", +"is-uberleet.com", +"is-very-bad.org", +"is-very-evil.org", +"is-very-good.org", +"is-very-nice.org", +"is-very-sweet.org", +"is-with-theband.com", +"isa-geek.com", +"isa-geek.net", +"isa-geek.org", +"isa-hockeynut.com", +"issmarterthanyou.com", +"isteingeek.de", +"istmein.de", +"kicks-ass.net", +"kicks-ass.org", +"knowsitall.info", +"land-4-sale.us", +"lebtimnetz.de", +"leitungsen.de", +"likes-pie.com", +"likescandy.com", +"merseine.nu", +"mine.nu", +"misconfused.org", +"mypets.ws", +"myphotos.cc", +"neat-url.com", +"office-on-the.net", +"on-the-web.tv", +"podzone.net", +"podzone.org", +"readmyblog.org", +"saves-the-whales.com", +"scrapper-site.net", +"scrapping.cc", +"selfip.biz", +"selfip.com", +"selfip.info", +"selfip.net", +"selfip.org", +"sells-for-less.com", +"sells-for-u.com", +"sells-it.net", +"sellsyourhome.org", +"servebbs.com", +"servebbs.net", +"servebbs.org", +"serveftp.net", +"serveftp.org", +"servegame.org", +"shacknet.nu", +"simple-url.com", +"space-to-rent.com", +"stuff-4-sale.org", +"stuff-4-sale.us", +"teaches-yoga.com", +"thruhere.net", +"traeumtgerade.de", +"webhop.biz", +"webhop.info", +"webhop.net", +"webhop.org", +"worse-than.tv", +"writesthisblog.com", +"ddnss.de", +"dyn.ddnss.de", +"dyndns.ddnss.de", +"dyndns1.de", +"dyn-ip24.de", +"home-webserver.de", +"dyn.home-webserver.de", +"myhome-server.de", +"ddnss.org", +"definima.net", +"definima.io", +"bci.dnstrace.pro", +"ddnsfree.com", +"ddnsgeek.com", +"giize.com", +"gleeze.com", +"kozow.com", +"loseyourip.com", +"ooguy.com", +"theworkpc.com", +"casacam.net", +"dynu.net", +"accesscam.org", +"camdvr.org", +"freeddns.org", +"mywire.org", +"webredirect.org", +"myddns.rocks", +"blogsite.xyz", +"dynv6.net", +"e4.cz", +"mytuleap.com", +"onred.one", +"staging.onred.one", +"enonic.io", +"customer.enonic.io", +"eu.org", +"al.eu.org", +"asso.eu.org", +"at.eu.org", +"au.eu.org", +"be.eu.org", +"bg.eu.org", +"ca.eu.org", +"cd.eu.org", +"ch.eu.org", +"cn.eu.org", +"cy.eu.org", +"cz.eu.org", +"de.eu.org", +"dk.eu.org", +"edu.eu.org", +"ee.eu.org", +"es.eu.org", +"fi.eu.org", +"fr.eu.org", +"gr.eu.org", +"hr.eu.org", +"hu.eu.org", +"ie.eu.org", +"il.eu.org", +"in.eu.org", +"int.eu.org", +"is.eu.org", +"it.eu.org", +"jp.eu.org", +"kr.eu.org", +"lt.eu.org", +"lu.eu.org", +"lv.eu.org", +"mc.eu.org", +"me.eu.org", +"mk.eu.org", +"mt.eu.org", +"my.eu.org", +"net.eu.org", +"ng.eu.org", +"nl.eu.org", +"no.eu.org", +"nz.eu.org", +"paris.eu.org", +"pl.eu.org", +"pt.eu.org", +"q-a.eu.org", +"ro.eu.org", +"ru.eu.org", +"se.eu.org", +"si.eu.org", +"sk.eu.org", +"tr.eu.org", +"uk.eu.org", +"us.eu.org", +"eu-1.evennode.com", +"eu-2.evennode.com", +"eu-3.evennode.com", +"eu-4.evennode.com", +"us-1.evennode.com", +"us-2.evennode.com", +"us-3.evennode.com", +"us-4.evennode.com", +"twmail.cc", +"twmail.net", +"twmail.org", +"mymailer.com.tw", +"url.tw", +"apps.fbsbx.com", +"ru.net", +"adygeya.ru", +"bashkiria.ru", +"bir.ru", +"cbg.ru", +"com.ru", +"dagestan.ru", +"grozny.ru", +"kalmykia.ru", +"kustanai.ru", +"marine.ru", +"mordovia.ru", +"msk.ru", +"mytis.ru", +"nalchik.ru", +"nov.ru", +"pyatigorsk.ru", +"spb.ru", +"vladikavkaz.ru", +"vladimir.ru", +"abkhazia.su", +"adygeya.su", +"aktyubinsk.su", +"arkhangelsk.su", +"armenia.su", +"ashgabad.su", +"azerbaijan.su", +"balashov.su", +"bashkiria.su", +"bryansk.su", +"bukhara.su", +"chimkent.su", +"dagestan.su", +"east-kazakhstan.su", +"exnet.su", +"georgia.su", +"grozny.su", +"ivanovo.su", +"jambyl.su", +"kalmykia.su", +"kaluga.su", +"karacol.su", +"karaganda.su", +"karelia.su", +"khakassia.su", +"krasnodar.su", +"kurgan.su", +"kustanai.su", +"lenug.su", +"mangyshlak.su", +"mordovia.su", +"msk.su", +"murmansk.su", +"nalchik.su", +"navoi.su", +"north-kazakhstan.su", +"nov.su", +"obninsk.su", +"penza.su", +"pokrovsk.su", +"sochi.su", +"spb.su", +"tashkent.su", +"termez.su", +"togliatti.su", +"troitsk.su", +"tselinograd.su", +"tula.su", +"tuva.su", +"vladikavkaz.su", +"vladimir.su", +"vologda.su", +"channelsdvr.net", +"fastly-terrarium.com", +"fastlylb.net", +"map.fastlylb.net", +"freetls.fastly.net", +"map.fastly.net", +"a.prod.fastly.net", +"global.prod.fastly.net", +"a.ssl.fastly.net", +"b.ssl.fastly.net", +"global.ssl.fastly.net", +"fastpanel.direct", +"fastvps-server.com", +"fhapp.xyz", +"fedorainfracloud.org", +"fedorapeople.org", +"cloud.fedoraproject.org", +"app.os.fedoraproject.org", +"app.os.stg.fedoraproject.org", +"mydobiss.com", +"filegear.me", +"filegear-au.me", +"filegear-de.me", +"filegear-gb.me", +"filegear-ie.me", +"filegear-jp.me", +"filegear-sg.me", +"firebaseapp.com", +"flynnhub.com", +"flynnhosting.net", +"freebox-os.com", +"freeboxos.com", +"fbx-os.fr", +"fbxos.fr", +"freebox-os.fr", +"freeboxos.fr", +"freedesktop.org", +"*.futurecms.at", +"*.ex.futurecms.at", +"*.in.futurecms.at", +"futurehosting.at", +"futuremailing.at", +"*.ex.ortsinfo.at", +"*.kunden.ortsinfo.at", +"*.statics.cloud", +"service.gov.uk", +"gehirn.ne.jp", +"usercontent.jp", +"lab.ms", +"github.io", +"githubusercontent.com", +"gitlab.io", +"glitch.me", +"cloudapps.digital", +"london.cloudapps.digital", +"homeoffice.gov.uk", +"ro.im", +"shop.ro", +"goip.de", +"run.app", +"a.run.app", +"web.app", +"*.0emm.com", +"appspot.com", +"blogspot.ae", +"blogspot.al", +"blogspot.am", +"blogspot.ba", +"blogspot.be", +"blogspot.bg", +"blogspot.bj", +"blogspot.ca", +"blogspot.cf", +"blogspot.ch", +"blogspot.cl", +"blogspot.co.at", +"blogspot.co.id", +"blogspot.co.il", +"blogspot.co.ke", +"blogspot.co.nz", +"blogspot.co.uk", +"blogspot.co.za", +"blogspot.com", +"blogspot.com.ar", +"blogspot.com.au", +"blogspot.com.br", +"blogspot.com.by", +"blogspot.com.co", +"blogspot.com.cy", +"blogspot.com.ee", +"blogspot.com.eg", +"blogspot.com.es", +"blogspot.com.mt", +"blogspot.com.ng", +"blogspot.com.tr", +"blogspot.com.uy", +"blogspot.cv", +"blogspot.cz", +"blogspot.de", +"blogspot.dk", +"blogspot.fi", +"blogspot.fr", +"blogspot.gr", +"blogspot.hk", +"blogspot.hr", +"blogspot.hu", +"blogspot.ie", +"blogspot.in", +"blogspot.is", +"blogspot.it", +"blogspot.jp", +"blogspot.kr", +"blogspot.li", +"blogspot.lt", +"blogspot.lu", +"blogspot.md", +"blogspot.mk", +"blogspot.mr", +"blogspot.mx", +"blogspot.my", +"blogspot.nl", +"blogspot.no", +"blogspot.pe", +"blogspot.pt", +"blogspot.qa", +"blogspot.re", +"blogspot.ro", +"blogspot.rs", +"blogspot.ru", +"blogspot.se", +"blogspot.sg", +"blogspot.si", +"blogspot.sk", +"blogspot.sn", +"blogspot.td", +"blogspot.tw", +"blogspot.ug", +"blogspot.vn", +"cloudfunctions.net", +"cloud.goog", +"codespot.com", +"googleapis.com", +"googlecode.com", +"pagespeedmobilizer.com", +"publishproxy.com", +"withgoogle.com", +"withyoutube.com", +"fin.ci", +"free.hr", +"caa.li", +"ua.rs", +"conf.se", +"hs.zone", +"hs.run", +"hashbang.sh", +"hasura.app", +"hasura-app.io", +"hepforge.org", +"herokuapp.com", +"herokussl.com", +"myravendb.com", +"ravendb.community", +"ravendb.me", +"development.run", +"ravendb.run", +"bpl.biz", +"orx.biz", +"ng.city", +"biz.gl", +"ng.ink", +"col.ng", +"firm.ng", +"gen.ng", +"ltd.ng", +"ng.school", +"sch.so", +"häkkinen.fi", +"*.moonscale.io", +"moonscale.net", +"iki.fi", +"dyn-berlin.de", +"in-berlin.de", +"in-brb.de", +"in-butter.de", +"in-dsl.de", +"in-dsl.net", +"in-dsl.org", +"in-vpn.de", +"in-vpn.net", +"in-vpn.org", +"biz.at", +"info.at", +"info.cx", +"ac.leg.br", +"al.leg.br", +"am.leg.br", +"ap.leg.br", +"ba.leg.br", +"ce.leg.br", +"df.leg.br", +"es.leg.br", +"go.leg.br", +"ma.leg.br", +"mg.leg.br", +"ms.leg.br", +"mt.leg.br", +"pa.leg.br", +"pb.leg.br", +"pe.leg.br", +"pi.leg.br", +"pr.leg.br", +"rj.leg.br", +"rn.leg.br", +"ro.leg.br", +"rr.leg.br", +"rs.leg.br", +"sc.leg.br", +"se.leg.br", +"sp.leg.br", +"to.leg.br", +"pixolino.com", +"ipifony.net", +"mein-iserv.de", +"test-iserv.de", +"iserv.dev", +"iobb.net", +"myjino.ru", +"*.hosting.myjino.ru", +"*.landing.myjino.ru", +"*.spectrum.myjino.ru", +"*.vps.myjino.ru", +"*.triton.zone", +"*.cns.joyent.com", +"js.org", +"kaas.gg", +"khplay.nl", +"keymachine.de", +"kinghost.net", +"uni5.net", +"knightpoint.systems", +"co.krd", +"edu.krd", +"git-repos.de", +"lcube-server.de", +"svn-repos.de", +"leadpages.co", +"lpages.co", +"lpusercontent.com", +"lelux.site", +"co.business", +"co.education", +"co.events", +"co.financial", +"co.network", +"co.place", +"co.technology", +"app.lmpm.com", +"linkitools.space", +"linkyard.cloud", +"linkyard-cloud.ch", +"members.linode.com", +"nodebalancer.linode.com", +"we.bs", +"loginline.app", +"loginline.dev", +"loginline.io", +"loginline.services", +"loginline.site", +"krasnik.pl", +"leczna.pl", +"lubartow.pl", +"lublin.pl", +"poniatowa.pl", +"swidnik.pl", +"uklugs.org", +"glug.org.uk", +"lug.org.uk", +"lugs.org.uk", +"barsy.bg", +"barsy.co.uk", +"barsyonline.co.uk", +"barsycenter.com", +"barsyonline.com", +"barsy.club", +"barsy.de", +"barsy.eu", +"barsy.in", +"barsy.info", +"barsy.io", +"barsy.me", +"barsy.menu", +"barsy.mobi", +"barsy.net", +"barsy.online", +"barsy.org", +"barsy.pro", +"barsy.pub", +"barsy.shop", +"barsy.site", +"barsy.support", +"barsy.uk", +"*.magentosite.cloud", +"mayfirst.info", +"mayfirst.org", +"hb.cldmail.ru", +"miniserver.com", +"memset.net", +"cloud.metacentrum.cz", +"custom.metacentrum.cz", +"flt.cloud.muni.cz", +"usr.cloud.muni.cz", +"meteorapp.com", +"eu.meteorapp.com", +"co.pl", +"azurecontainer.io", +"azurewebsites.net", +"azure-mobile.net", +"cloudapp.net", +"mozilla-iot.org", +"bmoattachments.org", +"net.ru", +"org.ru", +"pp.ru", +"ui.nabu.casa", +"pony.club", +"of.fashion", +"on.fashion", +"of.football", +"in.london", +"of.london", +"for.men", +"and.mom", +"for.mom", +"for.one", +"for.sale", +"of.work", +"to.work", +"nctu.me", +"bitballoon.com", +"netlify.com", +"4u.com", +"ngrok.io", +"nh-serv.co.uk", +"nfshost.com", +"dnsking.ch", +"mypi.co", +"n4t.co", +"001www.com", +"ddnslive.com", +"myiphost.com", +"forumz.info", +"16-b.it", +"32-b.it", +"64-b.it", +"soundcast.me", +"tcp4.me", +"dnsup.net", +"hicam.net", +"now-dns.net", +"ownip.net", +"vpndns.net", +"dynserv.org", +"now-dns.org", +"x443.pw", +"now-dns.top", +"ntdll.top", +"freeddns.us", +"crafting.xyz", +"zapto.xyz", +"nsupdate.info", +"nerdpol.ovh", +"blogsyte.com", +"brasilia.me", +"cable-modem.org", +"ciscofreak.com", +"collegefan.org", +"couchpotatofries.org", +"damnserver.com", +"ddns.me", +"ditchyourip.com", +"dnsfor.me", +"dnsiskinky.com", +"dvrcam.info", +"dynns.com", +"eating-organic.net", +"fantasyleague.cc", +"geekgalaxy.com", +"golffan.us", +"health-carereform.com", +"homesecuritymac.com", +"homesecuritypc.com", +"hopto.me", +"ilovecollege.info", +"loginto.me", +"mlbfan.org", +"mmafan.biz", +"myactivedirectory.com", +"mydissent.net", +"myeffect.net", +"mymediapc.net", +"mypsx.net", +"mysecuritycamera.com", +"mysecuritycamera.net", +"mysecuritycamera.org", +"net-freaks.com", +"nflfan.org", +"nhlfan.net", +"no-ip.ca", +"no-ip.co.uk", +"no-ip.net", +"noip.us", +"onthewifi.com", +"pgafan.net", +"point2this.com", +"pointto.us", +"privatizehealthinsurance.net", +"quicksytes.com", +"read-books.org", +"securitytactics.com", +"serveexchange.com", +"servehumour.com", +"servep2p.com", +"servesarcasm.com", +"stufftoread.com", +"ufcfan.org", +"unusualperson.com", +"workisboring.com", +"3utilities.com", +"bounceme.net", +"ddns.net", +"ddnsking.com", +"gotdns.ch", +"hopto.org", +"myftp.biz", +"myftp.org", +"myvnc.com", +"no-ip.biz", +"no-ip.info", +"no-ip.org", +"noip.me", +"redirectme.net", +"servebeer.com", +"serveblog.net", +"servecounterstrike.com", +"serveftp.com", +"servegame.com", +"servehalflife.com", +"servehttp.com", +"serveirc.com", +"serveminecraft.net", +"servemp3.com", +"servepics.com", +"servequake.com", +"sytes.net", +"webhop.me", +"zapto.org", +"stage.nodeart.io", +"nodum.co", +"nodum.io", +"pcloud.host", +"nyc.mn", +"nom.ae", +"nom.af", +"nom.ai", +"nom.al", +"nym.by", +"nym.bz", +"nom.cl", +"nym.ec", +"nom.gd", +"nom.ge", +"nom.gl", +"nym.gr", +"nom.gt", +"nym.gy", +"nym.hk", +"nom.hn", +"nym.ie", +"nom.im", +"nom.ke", +"nym.kz", +"nym.la", +"nym.lc", +"nom.li", +"nym.li", +"nym.lt", +"nym.lu", +"nym.me", +"nom.mk", +"nym.mn", +"nym.mx", +"nom.nu", +"nym.nz", +"nym.pe", +"nym.pt", +"nom.pw", +"nom.qa", +"nym.ro", +"nom.rs", +"nom.si", +"nym.sk", +"nom.st", +"nym.su", +"nym.sx", +"nom.tj", +"nym.tw", +"nom.ug", +"nom.uy", +"nom.vc", +"nom.vg", +"cya.gg", +"cloudycluster.net", +"nid.io", +"opencraft.hosting", +"operaunite.com", +"outsystemscloud.com", +"ownprovider.com", +"own.pm", +"ox.rs", +"oy.lc", +"pgfog.com", +"pagefrontapp.com", +"art.pl", +"gliwice.pl", +"krakow.pl", +"poznan.pl", +"wroc.pl", +"zakopane.pl", +"pantheonsite.io", +"gotpantheon.com", +"mypep.link", +"on-web.fr", +"*.platform.sh", +"*.platformsh.site", +"dyn53.io", +"co.bn", +"xen.prgmr.com", +"priv.at", +"prvcy.page", +"*.dweb.link", +"protonet.io", +"chirurgiens-dentistes-en-france.fr", +"byen.site", +"pubtls.org", +"qualifioapp.com", +"instantcloud.cn", +"ras.ru", +"qa2.com", +"dev-myqnapcloud.com", +"alpha-myqnapcloud.com", +"myqnapcloud.com", +"*.quipelements.com", +"vapor.cloud", +"vaporcloud.io", +"rackmaze.com", +"rackmaze.net", +"*.on-rancher.cloud", +"*.on-rio.io", +"readthedocs.io", +"rhcloud.com", +"app.render.com", +"onrender.com", +"repl.co", +"repl.run", +"resindevice.io", +"devices.resinstaging.io", +"hzc.io", +"wellbeingzone.eu", +"ptplus.fit", +"wellbeingzone.co.uk", +"git-pages.rit.edu", +"sandcats.io", +"logoip.de", +"logoip.com", +"schokokeks.net", +"scrysec.com", +"firewall-gateway.com", +"firewall-gateway.de", +"my-gateway.de", +"my-router.de", +"spdns.de", +"spdns.eu", +"firewall-gateway.net", +"my-firewall.org", +"myfirewall.org", +"spdns.org", +"biz.ua", +"co.ua", +"pp.ua", +"shiftedit.io", +"myshopblocks.com", +"shopitsite.com", +"mo-siemens.io", +"1kapp.com", +"appchizi.com", +"applinzi.com", +"sinaapp.com", +"vipsinaapp.com", +"siteleaf.net", +"bounty-full.com", +"alpha.bounty-full.com", +"beta.bounty-full.com", +"stackhero-network.com", +"static.land", +"dev.static.land", +"sites.static.land", +"apps.lair.io", +"*.stolos.io", +"spacekit.io", +"customer.speedpartner.de", +"api.stdlib.com", +"storj.farm", +"utwente.io", +"soc.srcf.net", +"user.srcf.net", +"temp-dns.com", +"applicationcloud.io", +"scapp.io", +"*.s5y.io", +"*.sensiosite.cloud", +"syncloud.it", +"diskstation.me", +"dscloud.biz", +"dscloud.me", +"dscloud.mobi", +"dsmynas.com", +"dsmynas.net", +"dsmynas.org", +"familyds.com", +"familyds.net", +"familyds.org", +"i234.me", +"myds.me", +"synology.me", +"vpnplus.to", +"taifun-dns.de", +"gda.pl", +"gdansk.pl", +"gdynia.pl", +"med.pl", +"sopot.pl", +"edugit.org", +"telebit.app", +"telebit.io", +"*.telebit.xyz", +"gwiddle.co.uk", +"thingdustdata.com", +"cust.dev.thingdust.io", +"cust.disrec.thingdust.io", +"cust.prod.thingdust.io", +"cust.testing.thingdust.io", +"arvo.network", +"azimuth.network", +"bloxcms.com", +"townnews-staging.com", +"12hp.at", +"2ix.at", +"4lima.at", +"lima-city.at", +"12hp.ch", +"2ix.ch", +"4lima.ch", +"lima-city.ch", +"trafficplex.cloud", +"de.cool", +"12hp.de", +"2ix.de", +"4lima.de", +"lima-city.de", +"1337.pictures", +"clan.rip", +"lima-city.rocks", +"webspace.rocks", +"lima.zone", +"*.transurl.be", +"*.transurl.eu", +"*.transurl.nl", +"tuxfamily.org", +"dd-dns.de", +"diskstation.eu", +"diskstation.org", +"dray-dns.de", +"draydns.de", +"dyn-vpn.de", +"dynvpn.de", +"mein-vigor.de", +"my-vigor.de", +"my-wan.de", +"syno-ds.de", +"synology-diskstation.de", +"synology-ds.de", +"uber.space", +"*.uberspace.de", +"hk.com", +"hk.org", +"ltd.hk", +"inc.hk", +"virtualuser.de", +"virtual-user.de", +"lib.de.us", +"2038.io", +"router.management", +"v-info.info", +"voorloper.cloud", +"wafflecell.com", +"*.webhare.dev", +"wedeploy.io", +"wedeploy.me", +"wedeploy.sh", +"remotewd.com", +"wmflabs.org", +"half.host", +"xnbay.com", +"u2.xnbay.com", +"u2-local.xnbay.com", +"cistron.nl", +"demon.nl", +"xs4all.space", +"yandexcloud.net", +"storage.yandexcloud.net", +"website.yandexcloud.net", +"official.academy", +"yolasite.com", +"ybo.faith", +"yombo.me", +"homelink.one", +"ybo.party", +"ybo.review", +"ybo.science", +"ybo.trade", +"nohost.me", +"noho.st", +"za.net", +"za.org", +"now.sh", +"bss.design", +"basicserver.io", +"virtualserver.io", +"site.builder.nu", +"enterprisecloud.nu", +"zone.id" +] \ No newline at end of file diff --git a/node_modules/psl/dist/psl.js b/node_modules/psl/dist/psl.js new file mode 100644 index 0000000..e6a277a --- /dev/null +++ b/node_modules/psl/dist/psl.js @@ -0,0 +1,9606 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.psl = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= punySuffix.length) { + // return memo; + // } + //} + return rule; + }, null); +}; + + +// +// Error codes and messages. +// +exports.errorCodes = { + DOMAIN_TOO_SHORT: 'Domain name too short.', + DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', + LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', + LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', + LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', + LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', + LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' +}; + + +// +// Validate domain name and throw if not valid. +// +// From wikipedia: +// +// Hostnames are composed of series of labels concatenated with dots, as are all +// domain names. Each label must be between 1 and 63 characters long, and the +// entire hostname (including the delimiting dots) has a maximum of 255 chars. +// +// Allowed chars: +// +// * `a-z` +// * `0-9` +// * `-` but not as a starting or ending character +// * `.` as a separator for the textual portions of a domain name +// +// * http://en.wikipedia.org/wiki/Domain_name +// * http://en.wikipedia.org/wiki/Hostname +// +internals.validate = function (input) { + + // Before we can validate we need to take care of IDNs with unicode chars. + var ascii = Punycode.toASCII(input); + + if (ascii.length < 1) { + return 'DOMAIN_TOO_SHORT'; + } + if (ascii.length > 255) { + return 'DOMAIN_TOO_LONG'; + } + + // Check each part's length and allowed chars. + var labels = ascii.split('.'); + var label; + + for (var i = 0; i < labels.length; ++i) { + label = labels[i]; + if (!label.length) { + return 'LABEL_TOO_SHORT'; + } + if (label.length > 63) { + return 'LABEL_TOO_LONG'; + } + if (label.charAt(0) === '-') { + return 'LABEL_STARTS_WITH_DASH'; + } + if (label.charAt(label.length - 1) === '-') { + return 'LABEL_ENDS_WITH_DASH'; + } + if (!/^[a-z0-9\-]+$/.test(label)) { + return 'LABEL_INVALID_CHARS'; + } + } +}; + + +// +// Public API +// + + +// +// Parse domain. +// +exports.parse = function (input) { + + if (typeof input !== 'string') { + throw new TypeError('Domain name must be a string.'); + } + + // Force domain to lowercase. + var domain = input.slice(0).toLowerCase(); + + // Handle FQDN. + // TODO: Simply remove trailing dot? + if (domain.charAt(domain.length - 1) === '.') { + domain = domain.slice(0, domain.length - 1); + } + + // Validate and sanitise input. + var error = internals.validate(domain); + if (error) { + return { + input: input, + error: { + message: exports.errorCodes[error], + code: error + } + }; + } + + var parsed = { + input: input, + tld: null, + sld: null, + domain: null, + subdomain: null, + listed: false + }; + + var domainParts = domain.split('.'); + + // Non-Internet TLD + if (domainParts[domainParts.length - 1] === 'local') { + return parsed; + } + + var handlePunycode = function () { + + if (!/xn--/.test(domain)) { + return parsed; + } + if (parsed.domain) { + parsed.domain = Punycode.toASCII(parsed.domain); + } + if (parsed.subdomain) { + parsed.subdomain = Punycode.toASCII(parsed.subdomain); + } + return parsed; + }; + + var rule = internals.findRule(domain); + + // Unlisted tld. + if (!rule) { + if (domainParts.length < 2) { + return parsed; + } + parsed.tld = domainParts.pop(); + parsed.sld = domainParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); + if (domainParts.length) { + parsed.subdomain = domainParts.pop(); + } + return handlePunycode(); + } + + // At this point we know the public suffix is listed. + parsed.listed = true; + + var tldParts = rule.suffix.split('.'); + var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); + + if (rule.exception) { + privateParts.push(tldParts.shift()); + } + + parsed.tld = tldParts.join('.'); + + if (!privateParts.length) { + return handlePunycode(); + } + + if (rule.wildcard) { + tldParts.unshift(privateParts.pop()); + parsed.tld = tldParts.join('.'); + } + + if (!privateParts.length) { + return handlePunycode(); + } + + parsed.sld = privateParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); + + if (privateParts.length) { + parsed.subdomain = privateParts.join('.'); + } + + return handlePunycode(); +}; + + +// +// Get domain. +// +exports.get = function (domain) { + + if (!domain) { + return null; + } + return exports.parse(domain).domain || null; +}; + + +// +// Check whether domain belongs to a known public suffix. +// +exports.isValid = function (domain) { + + var parsed = exports.parse(domain); + return Boolean(parsed.domain && parsed.listed); +}; + +},{"./data/rules.json":1,"punycode":3}],3:[function(require,module,exports){ +(function (global){ +/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[2])(2) +}); diff --git a/node_modules/psl/dist/psl.min.js b/node_modules/psl/dist/psl.min.js new file mode 100644 index 0000000..780127e --- /dev/null +++ b/node_modules/psl/dist/psl.min.js @@ -0,0 +1 @@ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).psl=a()}}(function(){return function s(m,t,u){function r(o,a){if(!t[o]){if(!m[o]){var i="function"==typeof require&&require;if(!a&&i)return i(o,!0);if(p)return p(o,!0);var e=new Error("Cannot find module '"+o+"'");throw e.code="MODULE_NOT_FOUND",e}var n=t[o]={exports:{}};m[o][0].call(n.exports,function(a){return r(m[o][1][a]||a)},n,n.exports,s,m,t,u)}return t[o].exports}for(var p="function"==typeof require&&require,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=b-y,x=Math.floor,q=String.fromCharCode;function A(a){throw new RangeError(k[a])}function l(a,o){for(var i=a.length,e=[];i--;)e[i]=o(a[i]);return e}function g(a,o){var i=a.split("@"),e="";return 1>>10&1023|55296),a=56320|1023&a),o+=q(a)}).join("")}function L(a,o){return a+22+75*(a<26)-((0!=o)<<5)}function I(a,o,i){var e=0;for(a=i?x(a/t):a>>1,a+=x(a/o);c*f>>1x((d-g)/m))&&A("overflow"),g+=u*m,!(u<(r=t<=j?y:j+f<=t?f:t-j));t+=b)m>x(d/(p=b-r))&&A("overflow"),m*=p;j=I(g-s,o=c.length+1,0==s),x(g/o)>d-h&&A("overflow"),h+=x(g/o),g%=o,c.splice(g++,0,h)}return _(c)}function j(a){var o,i,e,n,s,m,t,u,r,p,k,c,l,g,h,j=[];for(c=(a=O(a)).length,o=w,s=v,m=i=0;mx((d-i)/(l=e+1))&&A("overflow"),i+=(t-o)*l,o=t,m=0;md&&A("overflow"),k==o){for(u=i,r=b;!(u<(p=r<=s?y:s+f<=r?f:r-s));r+=b)h=u-p,g=b-p,j.push(q(L(p+h%g,0))),u=x(h/g);j.push(q(L(u,0))),s=I(i,l,e==n),i=0,++e}++i,++o}return j.join("")}if(n={version:"1.4.1",ucs2:{decode:O,encode:_},decode:h,encode:j,toASCII:function(a){return g(a,function(a){return r.test(a)?"xn--"+j(a):a})},toUnicode:function(a){return g(a,function(a){return u.test(a)?h(a.slice(4).toLowerCase()):a})}},o&&i)if(T.exports==o)i.exports=n;else for(s in n)n.hasOwnProperty(s)&&(o[s]=n[s]);else a.punycode=n}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[2])(2)}); diff --git a/node_modules/psl/index.js b/node_modules/psl/index.js new file mode 100644 index 0000000..da7bc12 --- /dev/null +++ b/node_modules/psl/index.js @@ -0,0 +1,269 @@ +/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */ +'use strict'; + + +var Punycode = require('punycode'); + + +var internals = {}; + + +// +// Read rules from file. +// +internals.rules = require('./data/rules.json').map(function (rule) { + + return { + rule: rule, + suffix: rule.replace(/^(\*\.|\!)/, ''), + punySuffix: -1, + wildcard: rule.charAt(0) === '*', + exception: rule.charAt(0) === '!' + }; +}); + + +// +// Check is given string ends with `suffix`. +// +internals.endsWith = function (str, suffix) { + + return str.indexOf(suffix, str.length - suffix.length) !== -1; +}; + + +// +// Find rule for a given domain. +// +internals.findRule = function (domain) { + + var punyDomain = Punycode.toASCII(domain); + return internals.rules.reduce(function (memo, rule) { + + if (rule.punySuffix === -1){ + rule.punySuffix = Punycode.toASCII(rule.suffix); + } + if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) { + return memo; + } + // This has been commented out as it never seems to run. This is because + // sub tlds always appear after their parents and we never find a shorter + // match. + //if (memo) { + // var memoSuffix = Punycode.toASCII(memo.suffix); + // if (memoSuffix.length >= punySuffix.length) { + // return memo; + // } + //} + return rule; + }, null); +}; + + +// +// Error codes and messages. +// +exports.errorCodes = { + DOMAIN_TOO_SHORT: 'Domain name too short.', + DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', + LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', + LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', + LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', + LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', + LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' +}; + + +// +// Validate domain name and throw if not valid. +// +// From wikipedia: +// +// Hostnames are composed of series of labels concatenated with dots, as are all +// domain names. Each label must be between 1 and 63 characters long, and the +// entire hostname (including the delimiting dots) has a maximum of 255 chars. +// +// Allowed chars: +// +// * `a-z` +// * `0-9` +// * `-` but not as a starting or ending character +// * `.` as a separator for the textual portions of a domain name +// +// * http://en.wikipedia.org/wiki/Domain_name +// * http://en.wikipedia.org/wiki/Hostname +// +internals.validate = function (input) { + + // Before we can validate we need to take care of IDNs with unicode chars. + var ascii = Punycode.toASCII(input); + + if (ascii.length < 1) { + return 'DOMAIN_TOO_SHORT'; + } + if (ascii.length > 255) { + return 'DOMAIN_TOO_LONG'; + } + + // Check each part's length and allowed chars. + var labels = ascii.split('.'); + var label; + + for (var i = 0; i < labels.length; ++i) { + label = labels[i]; + if (!label.length) { + return 'LABEL_TOO_SHORT'; + } + if (label.length > 63) { + return 'LABEL_TOO_LONG'; + } + if (label.charAt(0) === '-') { + return 'LABEL_STARTS_WITH_DASH'; + } + if (label.charAt(label.length - 1) === '-') { + return 'LABEL_ENDS_WITH_DASH'; + } + if (!/^[a-z0-9\-]+$/.test(label)) { + return 'LABEL_INVALID_CHARS'; + } + } +}; + + +// +// Public API +// + + +// +// Parse domain. +// +exports.parse = function (input) { + + if (typeof input !== 'string') { + throw new TypeError('Domain name must be a string.'); + } + + // Force domain to lowercase. + var domain = input.slice(0).toLowerCase(); + + // Handle FQDN. + // TODO: Simply remove trailing dot? + if (domain.charAt(domain.length - 1) === '.') { + domain = domain.slice(0, domain.length - 1); + } + + // Validate and sanitise input. + var error = internals.validate(domain); + if (error) { + return { + input: input, + error: { + message: exports.errorCodes[error], + code: error + } + }; + } + + var parsed = { + input: input, + tld: null, + sld: null, + domain: null, + subdomain: null, + listed: false + }; + + var domainParts = domain.split('.'); + + // Non-Internet TLD + if (domainParts[domainParts.length - 1] === 'local') { + return parsed; + } + + var handlePunycode = function () { + + if (!/xn--/.test(domain)) { + return parsed; + } + if (parsed.domain) { + parsed.domain = Punycode.toASCII(parsed.domain); + } + if (parsed.subdomain) { + parsed.subdomain = Punycode.toASCII(parsed.subdomain); + } + return parsed; + }; + + var rule = internals.findRule(domain); + + // Unlisted tld. + if (!rule) { + if (domainParts.length < 2) { + return parsed; + } + parsed.tld = domainParts.pop(); + parsed.sld = domainParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); + if (domainParts.length) { + parsed.subdomain = domainParts.pop(); + } + return handlePunycode(); + } + + // At this point we know the public suffix is listed. + parsed.listed = true; + + var tldParts = rule.suffix.split('.'); + var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); + + if (rule.exception) { + privateParts.push(tldParts.shift()); + } + + parsed.tld = tldParts.join('.'); + + if (!privateParts.length) { + return handlePunycode(); + } + + if (rule.wildcard) { + tldParts.unshift(privateParts.pop()); + parsed.tld = tldParts.join('.'); + } + + if (!privateParts.length) { + return handlePunycode(); + } + + parsed.sld = privateParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); + + if (privateParts.length) { + parsed.subdomain = privateParts.join('.'); + } + + return handlePunycode(); +}; + + +// +// Get domain. +// +exports.get = function (domain) { + + if (!domain) { + return null; + } + return exports.parse(domain).domain || null; +}; + + +// +// Check whether domain belongs to a known public suffix. +// +exports.isValid = function (domain) { + + var parsed = exports.parse(domain); + return Boolean(parsed.domain && parsed.listed); +}; diff --git a/node_modules/psl/package.json b/node_modules/psl/package.json new file mode 100644 index 0000000..fd93fc6 --- /dev/null +++ b/node_modules/psl/package.json @@ -0,0 +1,77 @@ +{ + "_from": "psl@^1.1.24", + "_id": "psl@1.3.0", + "_inBundle": false, + "_integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "_location": "/psl", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "psl@^1.1.24", + "name": "psl", + "escapedName": "psl", + "rawSpec": "^1.1.24", + "saveSpec": null, + "fetchSpec": "^1.1.24" + }, + "_requiredBy": [ + "/tough-cookie" + ], + "_resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "_shasum": "e1ebf6a3b5564fa8376f3da2275da76d875ca1bd", + "_spec": "psl@^1.1.24", + "_where": "/home/peter/www/prive/cypress-test/node_modules/tough-cookie", + "author": { + "name": "Lupo Montero", + "email": "lupomontero@gmail.com", + "url": "https://lupomontero.com/" + }, + "bugs": { + "url": "https://github.com/lupomontero/psl/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Domain name parser based on the Public Suffix List", + "devDependencies": { + "JSONStream": "^1.3.5", + "browserify": "^16.3.0", + "commit-and-pr": "^1.0.3", + "eslint": "^6.1.0", + "eslint-config-hapi": "^12.0.0", + "eslint-plugin-hapi": "^4.1.0", + "karma": "^4.2.0", + "karma-browserify": "^6.1.0", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-phantomjs-launcher": "^1.0.4", + "mocha": "^6.2.0", + "phantomjs-prebuilt": "^2.1.16", + "request": "^2.88.0", + "uglify-js": "^3.6.0", + "watchify": "^3.11.1" + }, + "homepage": "https://github.com/lupomontero/psl#readme", + "keywords": [ + "publicsuffix", + "publicsuffixlist" + ], + "license": "MIT", + "main": "index.js", + "name": "psl", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/lupomontero/psl.git" + }, + "scripts": { + "build": "browserify ./index.js --standalone=psl > ./dist/psl.js", + "changelog": "git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"%h %s (%an <%ae>)\"", + "commit-and-pr": "commit-and-pr", + "postbuild": "cat ./dist/psl.js | uglifyjs -c -m > ./dist/psl.min.js", + "prebuild": "./scripts/update-rules.js", + "pretest": "eslint .", + "test": "mocha test && karma start ./karma.conf.js --single-run", + "watch": "mocha test --watch" + }, + "version": "1.3.0" +} diff --git a/node_modules/punycode/LICENSE-MIT.txt b/node_modules/punycode/LICENSE-MIT.txt new file mode 100644 index 0000000..a41e0a7 --- /dev/null +++ b/node_modules/punycode/LICENSE-MIT.txt @@ -0,0 +1,20 @@ +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/punycode/README.md b/node_modules/punycode/README.md new file mode 100644 index 0000000..ee2f9d6 --- /dev/null +++ b/node_modules/punycode/README.md @@ -0,0 +1,122 @@ +# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/codecov/c/github/bestiejs/punycode.js.svg)](https://codecov.io/gh/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js) + +Punycode.js is a robust Punycode converter that fully complies to [RFC 3492](https://tools.ietf.org/html/rfc3492) and [RFC 5891](https://tools.ietf.org/html/rfc5891). + +This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: + +* [The C example code from RFC 3492](https://tools.ietf.org/html/rfc3492#appendix-C) +* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) +* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) +* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) +* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) + +This project was [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with Node.js from [v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc) until [v7](https://github.com/nodejs/node/pull/7941) (soft-deprecated). + +The current version supports recent versions of Node.js only. It provides a CommonJS module and an ES6 module. For the old version that offers the same functionality with broader support, including Rhino, Ringo, Narwhal, and web browsers, see [v1.4.1](https://github.com/bestiejs/punycode.js/releases/tag/v1.4.1). + +## Installation + +Via [npm](https://www.npmjs.com/): + +```bash +npm install punycode --save +``` + +In [Node.js](https://nodejs.org/): + +```js +const punycode = require('punycode'); +``` + +## API + +### `punycode.decode(string)` + +Converts a Punycode string of ASCII symbols to a string of Unicode symbols. + +```js +// decode domain name parts +punycode.decode('maana-pta'); // 'mañana' +punycode.decode('--dqo34k'); // '☃-⌘' +``` + +### `punycode.encode(string)` + +Converts a string of Unicode symbols to a Punycode string of ASCII symbols. + +```js +// encode domain name parts +punycode.encode('mañana'); // 'maana-pta' +punycode.encode('☃-⌘'); // '--dqo34k' +``` + +### `punycode.toUnicode(input)` + +Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. + +```js +// decode domain names +punycode.toUnicode('xn--maana-pta.com'); +// → 'mañana.com' +punycode.toUnicode('xn----dqo34k.com'); +// → '☃-⌘.com' + +// decode email addresses +punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); +// → 'джумла@джpумлатест.bрфa' +``` + +### `punycode.toASCII(input)` + +Converts a lowercased Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that’s already in ASCII. + +```js +// encode domain names +punycode.toASCII('mañana.com'); +// → 'xn--maana-pta.com' +punycode.toASCII('☃-⌘.com'); +// → 'xn----dqo34k.com' + +// encode email addresses +punycode.toASCII('джумла@джpумлатест.bрфa'); +// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' +``` + +### `punycode.ucs2` + +#### `punycode.ucs2.decode(string)` + +Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. + +```js +punycode.ucs2.decode('abc'); +// → [0x61, 0x62, 0x63] +// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: +punycode.ucs2.decode('\uD834\uDF06'); +// → [0x1D306] +``` + +#### `punycode.ucs2.encode(codePoints)` + +Creates a string based on an array of numeric code point values. + +```js +punycode.ucs2.encode([0x61, 0x62, 0x63]); +// → 'abc' +punycode.ucs2.encode([0x1D306]); +// → '\uD834\uDF06' +``` + +### `punycode.version` + +A string representing the current Punycode.js version number. + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## License + +Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/punycode/package.json b/node_modules/punycode/package.json new file mode 100644 index 0000000..fce394b --- /dev/null +++ b/node_modules/punycode/package.json @@ -0,0 +1,85 @@ +{ + "_from": "punycode@^2.1.0", + "_id": "punycode@2.1.1", + "_inBundle": false, + "_integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "_location": "/punycode", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "punycode@^2.1.0", + "name": "punycode", + "escapedName": "punycode", + "rawSpec": "^2.1.0", + "saveSpec": null, + "fetchSpec": "^2.1.0" + }, + "_requiredBy": [ + "/uri-js" + ], + "_resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "_shasum": "b58b010ac40c22c5657616c8d2c2c02c7bf479ec", + "_spec": "punycode@^2.1.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/uri-js", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "bugs": { + "url": "https://github.com/bestiejs/punycode.js/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + } + ], + "deprecated": false, + "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", + "devDependencies": { + "codecov": "^1.0.1", + "istanbul": "^0.4.1", + "mocha": "^2.5.3" + }, + "engines": { + "node": ">=6" + }, + "files": [ + "LICENSE-MIT.txt", + "punycode.js", + "punycode.es6.js" + ], + "homepage": "https://mths.be/punycode", + "jsnext:main": "punycode.es6.js", + "jspm": { + "map": { + "./punycode.js": { + "node": "@node/punycode" + } + } + }, + "keywords": [ + "punycode", + "unicode", + "idn", + "idna", + "dns", + "url", + "domain" + ], + "license": "MIT", + "main": "punycode.js", + "module": "punycode.es6.js", + "name": "punycode", + "repository": { + "type": "git", + "url": "git+https://github.com/bestiejs/punycode.js.git" + }, + "scripts": { + "prepublish": "node scripts/prepublish.js", + "test": "mocha tests" + }, + "version": "2.1.1" +} diff --git a/node_modules/punycode/punycode.es6.js b/node_modules/punycode/punycode.es6.js new file mode 100644 index 0000000..4610bc9 --- /dev/null +++ b/node_modules/punycode/punycode.es6.js @@ -0,0 +1,441 @@ +'use strict'; + +/** Highest positive signed 32-bit float value */ +const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +const base = 36; +const tMin = 1; +const tMax = 26; +const skew = 38; +const damp = 700; +const initialBias = 72; +const initialN = 128; // 0x80 +const delimiter = '-'; // '\x2D' + +/** Regular expressions */ +const regexPunycode = /^xn--/; +const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +const errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; + +/** Convenience shortcuts */ +const baseMinusTMin = base - tMin; +const floor = Math.floor; +const stringFromCharCode = String.fromCharCode; + +/*--------------------------------------------------------------------------*/ + +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error(type) { + throw new RangeError(errors[type]); +} + +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map(array, fn) { + const result = []; + let length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} + +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + const parts = string.split('@'); + let result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + const labels = string.split('.'); + const encoded = map(labels, fn).join('.'); + return result + encoded; +} + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + const output = []; + let counter = 0; + const length = string.length; + while (counter < length) { + const value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + const extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +} + +/** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ +const ucs2encode = array => String.fromCodePoint(...array); + +/** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ +const basicToDigit = function(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; +}; + +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +const digitToBasic = function(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +const adapt = function(delta, numPoints, firstTime) { + let k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ +const decode = function(input) { + // Don't use UCS-2. + const output = []; + const inputLength = input.length; + let i = 0; + let n = initialN; + let bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + let basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (let j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + let oldi = i; + for (let w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + const digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + const baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + const out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + + } + + return String.fromCodePoint(...output); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +const encode = function(input) { + const output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + let inputLength = input.length; + + // Initialize the state. + let n = initialN; + let delta = 0; + let bias = initialBias; + + // Handle the basic code points. + for (const currentValue of input) { + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + let basicLength = output.length; + let handledCPCount = basicLength; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + let m = maxInt; + for (const currentValue of input) { + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + const handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (const currentValue of input) { + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + let q = delta; + for (let k = base; /* no condition */; k += base) { + const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + const qMinusT = q - t; + const baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); +}; + +/** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ +const toUnicode = function(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); +}; + +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +const toASCII = function(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); +}; + +/*--------------------------------------------------------------------------*/ + +/** Define the public API */ +const punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode +}; + +export { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode }; +export default punycode; diff --git a/node_modules/punycode/punycode.js b/node_modules/punycode/punycode.js new file mode 100644 index 0000000..ea61fd0 --- /dev/null +++ b/node_modules/punycode/punycode.js @@ -0,0 +1,440 @@ +'use strict'; + +/** Highest positive signed 32-bit float value */ +const maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +const base = 36; +const tMin = 1; +const tMax = 26; +const skew = 38; +const damp = 700; +const initialBias = 72; +const initialN = 128; // 0x80 +const delimiter = '-'; // '\x2D' + +/** Regular expressions */ +const regexPunycode = /^xn--/; +const regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +const regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +const errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; + +/** Convenience shortcuts */ +const baseMinusTMin = base - tMin; +const floor = Math.floor; +const stringFromCharCode = String.fromCharCode; + +/*--------------------------------------------------------------------------*/ + +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error(type) { + throw new RangeError(errors[type]); +} + +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map(array, fn) { + const result = []; + let length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} + +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + const parts = string.split('@'); + let result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + const labels = string.split('.'); + const encoded = map(labels, fn).join('.'); + return result + encoded; +} + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + const output = []; + let counter = 0; + const length = string.length; + while (counter < length) { + const value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + const extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +} + +/** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ +const ucs2encode = array => String.fromCodePoint(...array); + +/** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ +const basicToDigit = function(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; +}; + +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +const digitToBasic = function(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +const adapt = function(delta, numPoints, firstTime) { + let k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ +const decode = function(input) { + // Don't use UCS-2. + const output = []; + const inputLength = input.length; + let i = 0; + let n = initialN; + let bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + let basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (let j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + let oldi = i; + for (let w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + const digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + const baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + const out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + + } + + return String.fromCodePoint(...output); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +const encode = function(input) { + const output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + let inputLength = input.length; + + // Initialize the state. + let n = initialN; + let delta = 0; + let bias = initialBias; + + // Handle the basic code points. + for (const currentValue of input) { + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + let basicLength = output.length; + let handledCPCount = basicLength; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + let m = maxInt; + for (const currentValue of input) { + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + const handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (const currentValue of input) { + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + if (currentValue == n) { + // Represent delta as a generalized variable-length integer. + let q = delta; + for (let k = base; /* no condition */; k += base) { + const t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + const qMinusT = q - t; + const baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); +}; + +/** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ +const toUnicode = function(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); +}; + +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +const toASCII = function(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); +}; + +/*--------------------------------------------------------------------------*/ + +/** Define the public API */ +const punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode +}; + +module.exports = punycode; diff --git a/node_modules/qs/.editorconfig b/node_modules/qs/.editorconfig new file mode 100644 index 0000000..b2654e7 --- /dev/null +++ b/node_modules/qs/.editorconfig @@ -0,0 +1,30 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 140 + +[test/*] +max_line_length = off + +[*.md] +max_line_length = off + +[*.json] +max_line_length = off + +[Makefile] +max_line_length = off + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[LICENSE] +indent_size = 2 +max_line_length = off diff --git a/node_modules/qs/.eslintignore b/node_modules/qs/.eslintignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/node_modules/qs/.eslintignore @@ -0,0 +1 @@ +dist diff --git a/node_modules/qs/.eslintrc b/node_modules/qs/.eslintrc new file mode 100644 index 0000000..b7a87b9 --- /dev/null +++ b/node_modules/qs/.eslintrc @@ -0,0 +1,19 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "complexity": 0, + "consistent-return": 1, + "func-name-matching": 0, + "id-length": [2, { "min": 1, "max": 25, "properties": "never" }], + "indent": [2, 4], + "max-params": [2, 12], + "max-statements": [2, 45], + "no-continue": 1, + "no-magic-numbers": 0, + "no-restricted-syntax": [2, "BreakStatement", "DebuggerStatement", "ForInStatement", "LabeledStatement", "WithStatement"], + "operator-linebreak": [2, "before"], + } +} diff --git a/node_modules/qs/CHANGELOG.md b/node_modules/qs/CHANGELOG.md new file mode 100644 index 0000000..fe52320 --- /dev/null +++ b/node_modules/qs/CHANGELOG.md @@ -0,0 +1,226 @@ +## **6.5.2** +- [Fix] use `safer-buffer` instead of `Buffer` constructor +- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) +- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify` + +## **6.5.1** +- [Fix] Fix parsing & compacting very deep objects (#224) +- [Refactor] name utils functions +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` +- [Tests] up to `node` `v8.4`; use `nvm install-latest-npm` so newer npm doesn’t break older node +- [Tests] Use precise dist for Node.js 0.6 runtime (#225) +- [Tests] make 0.6 required, now that it’s passing +- [Tests] on `node` `v8.2`; fix npm on node 0.6 + +## **6.5.0** +- [New] add `utils.assign` +- [New] pass default encoder/decoder to custom encoder/decoder functions (#206) +- [New] `parse`/`stringify`: add `ignoreQueryPrefix`/`addQueryPrefix` options, respectively (#213) +- [Fix] Handle stringifying empty objects with addQueryPrefix (#217) +- [Fix] do not mutate `options` argument (#207) +- [Refactor] `parse`: cache index to reuse in else statement (#182) +- [Docs] add various badges to readme (#208) +- [Dev Deps] update `eslint`, `browserify`, `iconv-lite`, `tape` +- [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 +- [Tests] add `editorconfig-tools` + +## **6.4.0** +- [New] `qs.stringify`: add `encodeValuesOnly` option +- [Fix] follow `allowPrototypes` option during merge (#201, #201) +- [Fix] support keys starting with brackets (#202, #200) +- [Fix] chmod a-x +- [Dev Deps] update `eslint` +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds +- [eslint] reduce warnings + +## **6.3.2** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Dev Deps] update `eslint` +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.3.1** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties (thanks, @snyk!) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `iconv-lite`, `qs-iconv`, `tape` +- [Tests] on all node minors; improve test matrix +- [Docs] document stringify option `allowDots` (#195) +- [Docs] add empty object and array values example (#195) +- [Docs] Fix minor inconsistency/typo (#192) +- [Docs] document stringify option `sort` (#191) +- [Refactor] `stringify`: throw faster with an invalid encoder +- [Refactor] remove unnecessary escapes (#184) +- Remove contributing.md, since `qs` is no longer part of `hapi` (#183) + +## **6.3.0** +- [New] Add support for RFC 1738 (#174, #173) +- [New] `stringify`: Add `serializeDate` option to customize Date serialization (#159) +- [Fix] ensure `utils.merge` handles merging two arrays +- [Refactor] only constructors should be capitalized +- [Refactor] capitalized var names are for constructors only +- [Refactor] avoid using a sparse array +- [Robustness] `formats`: cache `String#replace` +- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`; add `safe-publish-latest` +- [Tests] up to `node` `v6.8`, `v4.6`; improve test matrix +- [Tests] flesh out arrayLimit/arrayFormat tests (#107) +- [Tests] skip Object.create tests when null objects are not available +- [Tests] Turn on eslint for test files (#175) + +## **6.2.3** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.2.2** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties + +## **6.2.1** +- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values +- [Refactor] Be explicit and use `Object.prototype.hasOwnProperty.call` +- [Tests] remove `parallelshell` since it does not reliably report failures +- [Tests] up to `node` `v6.3`, `v5.12` +- [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`, `qs-iconv` + +## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed) +- [New] pass Buffers to the encoder/decoder directly (#161) +- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) +- [Fix] fix compacting of nested sparse arrays (#150) + +## **6.1.2 +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.1.1** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties + +## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed) +- [New] allowDots option for `stringify` (#151) +- [Fix] "sort" option should work at a depth of 3 or more (#151) +- [Fix] Restore `dist` directory; will be removed in v7 (#148) + +## **6.0.4** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.0.3** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties +- [Fix] Restore `dist` directory; will be removed in v7 (#148) + +## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed) +- Revert ES6 requirement and restore support for node down to v0.8. + +## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed) +- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json + +## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed) +- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4 + +## **5.2.1** +- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values + +## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed) +- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string + +## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed) +- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional +- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify + +## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed) +- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false +- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm + +## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed) +- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional + +## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed) +- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" + +## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed) +- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties +- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost +- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing +- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object +- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option +- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects. +- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47 +- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986 +- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign +- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute + +## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed) +- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function + +## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed) +- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option + +## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed) +- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57 +- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader + +## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed) +- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object + +## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed) +- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". + +## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed) +- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46 + +## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed) +- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer? +- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45 +- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39 + +## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed) +- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number + +## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed) +- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array +- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x + +## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed) +- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value +- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty +- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver? + +## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed) +- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31 +- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects + +## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed) +- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present +- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays +- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge +- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters? + +## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed) +- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter + +## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed) +- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit? +- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit +- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20 + +## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed) +- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values + +## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed) +- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters +- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block + +## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed) +- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument +- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed + +## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed) +- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted +- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null +- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README + +## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed) +- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/node_modules/qs/LICENSE b/node_modules/qs/LICENSE new file mode 100644 index 0000000..d456948 --- /dev/null +++ b/node_modules/qs/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2014 Nathan LaFreniere and other contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * * * + +The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/node_modules/qs/README.md b/node_modules/qs/README.md new file mode 100644 index 0000000..d811966 --- /dev/null +++ b/node_modules/qs/README.md @@ -0,0 +1,475 @@ +# qs [![Version Badge][2]][1] + +[![Build Status][3]][4] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +A querystring parsing and stringifying library with some added security. + +Lead Maintainer: [Jordan Harband](https://github.com/ljharb) + +The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). + +## Usage + +```javascript +var qs = require('qs'); +var assert = require('assert'); + +var obj = qs.parse('a=c'); +assert.deepEqual(obj, { a: 'c' }); + +var str = qs.stringify(obj); +assert.equal(str, 'a=c'); +``` + +### Parsing Objects + +[](#preventEval) +```javascript +qs.parse(string, [options]); +``` + +**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. +For example, the string `'foo[bar]=baz'` converts to: + +```javascript +assert.deepEqual(qs.parse('foo[bar]=baz'), { + foo: { + bar: 'baz' + } +}); +``` + +When using the `plainObjects` option the parsed value is returned as a null object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: + +```javascript +var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); +assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); +``` + +By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option. + +```javascript +var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); +assert.deepEqual(protoObject, { a: { hasOwnProperty: 'b' } }); +``` + +URI encoded strings work too: + +```javascript +assert.deepEqual(qs.parse('a%5Bb%5D=c'), { + a: { b: 'c' } +}); +``` + +You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: + +```javascript +assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { + foo: { + bar: { + baz: 'foobarbaz' + } + } +}); +``` + +By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like +`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: + +```javascript +var expected = { + a: { + b: { + c: { + d: { + e: { + f: { + '[g][h][i]': 'j' + } + } + } + } + } + } +}; +var string = 'a[b][c][d][e][f][g][h][i]=j'; +assert.deepEqual(qs.parse(string), expected); +``` + +This depth can be overridden by passing a `depth` option to `qs.parse(string, [options])`: + +```javascript +var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); +assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); +``` + +The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. + +For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: + +```javascript +var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); +assert.deepEqual(limited, { a: 'b' }); +``` + +To bypass the leading question mark, use `ignoreQueryPrefix`: + +```javascript +var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true }); +assert.deepEqual(prefixed, { a: 'b', c: 'd' }); +``` + +An optional delimiter can also be passed: + +```javascript +var delimited = qs.parse('a=b;c=d', { delimiter: ';' }); +assert.deepEqual(delimited, { a: 'b', c: 'd' }); +``` + +Delimiters can be a regular expression too: + +```javascript +var regexed = qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); +assert.deepEqual(regexed, { a: 'b', c: 'd', e: 'f' }); +``` + +Option `allowDots` can be used to enable dot notation: + +```javascript +var withDots = qs.parse('a.b=c', { allowDots: true }); +assert.deepEqual(withDots, { a: { b: 'c' } }); +``` + +### Parsing Arrays + +**qs** can also parse arrays using a similar `[]` notation: + +```javascript +var withArray = qs.parse('a[]=b&a[]=c'); +assert.deepEqual(withArray, { a: ['b', 'c'] }); +``` + +You may specify an index as well: + +```javascript +var withIndexes = qs.parse('a[1]=c&a[0]=b'); +assert.deepEqual(withIndexes, { a: ['b', 'c'] }); +``` + +Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number +to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving +their order: + +```javascript +var noSparse = qs.parse('a[1]=b&a[15]=c'); +assert.deepEqual(noSparse, { a: ['b', 'c'] }); +``` + +Note that an empty string is also a value, and will be preserved: + +```javascript +var withEmptyString = qs.parse('a[]=&a[]=b'); +assert.deepEqual(withEmptyString, { a: ['', 'b'] }); + +var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); +assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); +``` + +**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will +instead be converted to an object with the index as the key: + +```javascript +var withMaxIndex = qs.parse('a[100]=b'); +assert.deepEqual(withMaxIndex, { a: { '100': 'b' } }); +``` + +This limit can be overridden by passing an `arrayLimit` option: + +```javascript +var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); +assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); +``` + +To disable array parsing entirely, set `parseArrays` to `false`. + +```javascript +var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); +assert.deepEqual(noParsingArrays, { a: { '0': 'b' } }); +``` + +If you mix notations, **qs** will merge the two items into an object: + +```javascript +var mixedNotation = qs.parse('a[0]=b&a[b]=c'); +assert.deepEqual(mixedNotation, { a: { '0': 'b', b: 'c' } }); +``` + +You can also create arrays of objects: + +```javascript +var arraysOfObjects = qs.parse('a[][b]=c'); +assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] }); +``` + +### Stringifying + +[](#preventEval) +```javascript +qs.stringify(object, [options]); +``` + +When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: + +```javascript +assert.equal(qs.stringify({ a: 'b' }), 'a=b'); +assert.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); +``` + +This encoding can be disabled by setting the `encode` option to `false`: + +```javascript +var unencoded = qs.stringify({ a: { b: 'c' } }, { encode: false }); +assert.equal(unencoded, 'a[b]=c'); +``` + +Encoding can be disabled for keys by setting the `encodeValuesOnly` option to `true`: +```javascript +var encodedValues = qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true } +); +assert.equal(encodedValues,'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h'); +``` + +This encoding can also be replaced by a custom encoding method set as `encoder` option: + +```javascript +var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str) { + // Passed in values `a`, `b`, `c` + return // Return encoded string +}}) +``` + +_(Note: the `encoder` option does not apply if `encode` is `false`)_ + +Analogue to the `encoder` there is a `decoder` option for `parse` to override decoding of properties and values: + +```javascript +var decoded = qs.parse('x=z', { decoder: function (str) { + // Passed in values `x`, `z` + return // Return decoded string +}}) +``` + +Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. + +When arrays are stringified, by default they are given explicit indices: + +```javascript +qs.stringify({ a: ['b', 'c', 'd'] }); +// 'a[0]=b&a[1]=c&a[2]=d' +``` + +You may override this by setting the `indices` option to `false`: + +```javascript +qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); +// 'a=b&a=c&a=d' +``` + +You may use the `arrayFormat` option to specify the format of the output array: + +```javascript +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) +// 'a[0]=b&a[1]=c' +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) +// 'a[]=b&a[]=c' +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) +// 'a=b&a=c' +``` + +When objects are stringified, by default they use bracket notation: + +```javascript +qs.stringify({ a: { b: { c: 'd', e: 'f' } } }); +// 'a[b][c]=d&a[b][e]=f' +``` + +You may override this to use dot notation by setting the `allowDots` option to `true`: + +```javascript +qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); +// 'a.b.c=d&a.b.e=f' +``` + +Empty strings and null values will omit the value, but the equals sign (=) remains in place: + +```javascript +assert.equal(qs.stringify({ a: '' }), 'a='); +``` + +Key with no values (such as an empty object or array) will return nothing: + +```javascript +assert.equal(qs.stringify({ a: [] }), ''); +assert.equal(qs.stringify({ a: {} }), ''); +assert.equal(qs.stringify({ a: [{}] }), ''); +assert.equal(qs.stringify({ a: { b: []} }), ''); +assert.equal(qs.stringify({ a: { b: {}} }), ''); +``` + +Properties that are set to `undefined` will be omitted entirely: + +```javascript +assert.equal(qs.stringify({ a: null, b: undefined }), 'a='); +``` + +The query string may optionally be prepended with a question mark: + +```javascript +assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); +``` + +The delimiter may be overridden with stringify as well: + +```javascript +assert.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); +``` + +If you only want to override the serialization of `Date` objects, you can provide a `serializeDate` option: + +```javascript +var date = new Date(7); +assert.equal(qs.stringify({ a: date }), 'a=1970-01-01T00:00:00.007Z'.replace(/:/g, '%3A')); +assert.equal( + qs.stringify({ a: date }, { serializeDate: function (d) { return d.getTime(); } }), + 'a=7' +); +``` + +You may use the `sort` option to affect the order of parameter keys: + +```javascript +function alphabeticalSort(a, b) { + return a.localeCompare(b); +} +assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort }), 'a=c&b=f&z=y'); +``` + +Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. +If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you +pass an array, it will be used to select properties and array indices for stringification: + +```javascript +function filterFunc(prefix, value) { + if (prefix == 'b') { + // Return an `undefined` value to omit a property. + return; + } + if (prefix == 'e[f]') { + return value.getTime(); + } + if (prefix == 'e[g][0]') { + return value * 2; + } + return value; +} +qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }); +// 'a=b&c=d&e[f]=123&e[g][0]=4' +qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }); +// 'a=b&e=f' +qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); +// 'a[0]=b&a[2]=d' +``` + +### Handling of `null` values + +By default, `null` values are treated like empty strings: + +```javascript +var withNull = qs.stringify({ a: null, b: '' }); +assert.equal(withNull, 'a=&b='); +``` + +Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. + +```javascript +var equalsInsensitive = qs.parse('a&b='); +assert.deepEqual(equalsInsensitive, { a: '', b: '' }); +``` + +To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` +values have no `=` sign: + +```javascript +var strictNull = qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); +assert.equal(strictNull, 'a&b='); +``` + +To parse values without `=` back to `null` use the `strictNullHandling` flag: + +```javascript +var parsedStrictNull = qs.parse('a&b=', { strictNullHandling: true }); +assert.deepEqual(parsedStrictNull, { a: null, b: '' }); +``` + +To completely skip rendering keys with `null` values, use the `skipNulls` flag: + +```javascript +var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); +assert.equal(nullsSkipped, 'a=b'); +``` + +### Dealing with special character sets + +By default the encoding and decoding of characters is done in `utf-8`. If you +wish to encode querystrings to a different character set (i.e. +[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the +[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library: + +```javascript +var encoder = require('qs-iconv/encoder')('shift_jis'); +var shiftJISEncoded = qs.stringify({ a: 'こんにちは!' }, { encoder: encoder }); +assert.equal(shiftJISEncoded, 'a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I'); +``` + +This also works for decoding of query strings: + +```javascript +var decoder = require('qs-iconv/decoder')('shift_jis'); +var obj = qs.parse('a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I', { decoder: decoder }); +assert.deepEqual(obj, { a: 'こんにちは!' }); +``` + +### RFC 3986 and RFC 1738 space encoding + +RFC3986 used as default option and encodes ' ' to *%20* which is backward compatible. +In the same time, output can be stringified as per RFC1738 with ' ' equal to '+'. + +``` +assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); +assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c'); +assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c'); +``` + +[1]: https://npmjs.org/package/qs +[2]: http://versionbadg.es/ljharb/qs.svg +[3]: https://api.travis-ci.org/ljharb/qs.svg +[4]: https://travis-ci.org/ljharb/qs +[5]: https://david-dm.org/ljharb/qs.svg +[6]: https://david-dm.org/ljharb/qs +[7]: https://david-dm.org/ljharb/qs/dev-status.svg +[8]: https://david-dm.org/ljharb/qs?type=dev +[9]: https://ci.testling.com/ljharb/qs.png +[10]: https://ci.testling.com/ljharb/qs +[11]: https://nodei.co/npm/qs.png?downloads=true&stars=true +[license-image]: http://img.shields.io/npm/l/qs.svg +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/qs.svg +[downloads-url]: http://npm-stat.com/charts.html?package=qs diff --git a/node_modules/qs/dist/qs.js b/node_modules/qs/dist/qs.js new file mode 100644 index 0000000..ecf7ba4 --- /dev/null +++ b/node_modules/qs/dist/qs.js @@ -0,0 +1,638 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]') { + obj = []; + obj = obj.concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else { + obj[cleanRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys + // that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options); +}; + +module.exports = function (str, opts) { + var options = opts ? utils.assign({}, opts) : {}; + + if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; + options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; + options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; + options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; + options.parseArrays = options.parseArrays !== false; + options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; + options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; + options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; + options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; + options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; + options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } + + return utils.compact(obj); +}; + +},{"./utils":5}],4:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var formats = require('./formats'); + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { // eslint-disable-line func-name-matching + return prefix + '[]'; + }, + indices: function indices(prefix, key) { // eslint-disable-line func-name-matching + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { // eslint-disable-line func-name-matching + return prefix; + } +}; + +var toISO = Date.prototype.toISOString; + +var defaults = { + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var stringify = function stringify( // eslint-disable-line func-name-matching + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; + } + + obj = ''; + } + + if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (Array.isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + if (Array.isArray(obj)) { + values = values.concat(stringify( + obj[key], + generateArrayPrefix(prefix, key), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } else { + values = values.concat(stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + } + + return values; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = opts ? utils.assign({}, opts) : {}; + + if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; + var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; + var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; + var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; + var sort = typeof options.sort === 'function' ? options.sort : null; + var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; + var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; + var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; + if (typeof options.format === 'undefined') { + options.format = formats['default']; + } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { + throw new TypeError('Unknown format option provided.'); + } + var formatter = formats.formatters[options.format]; + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (Array.isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (options.arrayFormat in arrayPrefixGenerators) { + arrayFormat = options.arrayFormat; + } else if ('indices' in options) { + arrayFormat = options.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (sort) { + objKeys.sort(sort); + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + keys = keys.concat(stringify( + obj[key], + key, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encode ? encoder : null, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + + var joined = keys.join(delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + return joined.length > 0 ? prefix + joined : ''; +}; + +},{"./formats":1,"./utils":5}],5:[function(require,module,exports){ +'use strict'; + +var has = Object.prototype.hasOwnProperty; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + var obj; + + while (queue.length) { + var item = queue.pop(); + obj = item.obj[item.prop]; + + if (Array.isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } + + return obj; +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (Array.isArray(target)) { + target.push(source); + } else if (typeof target === 'object') { + if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (Array.isArray(target) && !Array.isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (Array.isArray(target) && Array.isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + if (target[i] && typeof target[i] === 'object') { + target[i] = merge(target[i], item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (e) { + return str; + } +}; + +var encode = function encode(str) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = typeof str === 'string' ? str : String(str); + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + return compactQueue(queue); +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (obj === null || typeof obj === 'undefined') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + merge: merge +}; + +},{}]},{},[2])(2) +}); diff --git a/node_modules/qs/lib/formats.js b/node_modules/qs/lib/formats.js new file mode 100644 index 0000000..df45997 --- /dev/null +++ b/node_modules/qs/lib/formats.js @@ -0,0 +1,18 @@ +'use strict'; + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +module.exports = { + 'default': 'RFC3986', + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return value; + } + }, + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; diff --git a/node_modules/qs/lib/index.js b/node_modules/qs/lib/index.js new file mode 100644 index 0000000..0d6a97d --- /dev/null +++ b/node_modules/qs/lib/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var stringify = require('./stringify'); +var parse = require('./parse'); +var formats = require('./formats'); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; diff --git a/node_modules/qs/lib/parse.js b/node_modules/qs/lib/parse.js new file mode 100644 index 0000000..8c9872e --- /dev/null +++ b/node_modules/qs/lib/parse.js @@ -0,0 +1,174 @@ +'use strict'; + +var utils = require('./utils'); + +var has = Object.prototype.hasOwnProperty; + +var defaults = { + allowDots: false, + allowPrototypes: false, + arrayLimit: 20, + decoder: utils.decode, + delimiter: '&', + depth: 5, + parameterLimit: 1000, + plainObjects: false, + strictNullHandling: false +}; + +var parseValues = function parseQueryStringValues(str, options) { + var obj = {}; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); + + for (var i = 0; i < parts.length; ++i) { + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder); + val = options.decoder(part.slice(pos + 1), defaults.decoder); + } + if (has.call(obj, key)) { + obj[key] = [].concat(obj[key]).concat(val); + } else { + obj[key] = val; + } + } + + return obj; +}; + +var parseObject = function (chain, val, options) { + var leaf = val; + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]') { + obj = []; + obj = obj.concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else { + obj[cleanRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys + // that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options); +}; + +module.exports = function (str, opts) { + var options = opts ? utils.assign({}, opts) : {}; + + if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; + options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; + options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; + options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; + options.parseArrays = options.parseArrays !== false; + options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; + options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; + options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; + options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; + options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; + options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } + + return utils.compact(obj); +}; diff --git a/node_modules/qs/lib/stringify.js b/node_modules/qs/lib/stringify.js new file mode 100644 index 0000000..ab915ac --- /dev/null +++ b/node_modules/qs/lib/stringify.js @@ -0,0 +1,210 @@ +'use strict'; + +var utils = require('./utils'); +var formats = require('./formats'); + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { // eslint-disable-line func-name-matching + return prefix + '[]'; + }, + indices: function indices(prefix, key) { // eslint-disable-line func-name-matching + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { // eslint-disable-line func-name-matching + return prefix; + } +}; + +var toISO = Date.prototype.toISOString; + +var defaults = { + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var stringify = function stringify( // eslint-disable-line func-name-matching + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; + } + + obj = ''; + } + + if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (Array.isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + if (Array.isArray(obj)) { + values = values.concat(stringify( + obj[key], + generateArrayPrefix(prefix, key), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } else { + values = values.concat(stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + } + + return values; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = opts ? utils.assign({}, opts) : {}; + + if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; + var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; + var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; + var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; + var sort = typeof options.sort === 'function' ? options.sort : null; + var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; + var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; + var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; + if (typeof options.format === 'undefined') { + options.format = formats['default']; + } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { + throw new TypeError('Unknown format option provided.'); + } + var formatter = formats.formatters[options.format]; + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (Array.isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (options.arrayFormat in arrayPrefixGenerators) { + arrayFormat = options.arrayFormat; + } else if ('indices' in options) { + arrayFormat = options.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (sort) { + objKeys.sort(sort); + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + keys = keys.concat(stringify( + obj[key], + key, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encode ? encoder : null, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + + var joined = keys.join(delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + return joined.length > 0 ? prefix + joined : ''; +}; diff --git a/node_modules/qs/lib/utils.js b/node_modules/qs/lib/utils.js new file mode 100644 index 0000000..8775a32 --- /dev/null +++ b/node_modules/qs/lib/utils.js @@ -0,0 +1,213 @@ +'use strict'; + +var has = Object.prototype.hasOwnProperty; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + var obj; + + while (queue.length) { + var item = queue.pop(); + obj = item.obj[item.prop]; + + if (Array.isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } + + return obj; +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (Array.isArray(target)) { + target.push(source); + } else if (typeof target === 'object') { + if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (Array.isArray(target) && !Array.isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (Array.isArray(target) && Array.isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + if (target[i] && typeof target[i] === 'object') { + target[i] = merge(target[i], item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (e) { + return str; + } +}; + +var encode = function encode(str) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = typeof str === 'string' ? str : String(str); + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + return compactQueue(queue); +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (obj === null || typeof obj === 'undefined') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + merge: merge +}; diff --git a/node_modules/qs/package.json b/node_modules/qs/package.json new file mode 100644 index 0000000..a4e5635 --- /dev/null +++ b/node_modules/qs/package.json @@ -0,0 +1,80 @@ +{ + "_from": "qs@~6.5.2", + "_id": "qs@6.5.2", + "_inBundle": false, + "_integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "_location": "/qs", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "qs@~6.5.2", + "name": "qs", + "escapedName": "qs", + "rawSpec": "~6.5.2", + "saveSpec": null, + "fetchSpec": "~6.5.2" + }, + "_requiredBy": [ + "/request" + ], + "_resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "_shasum": "cb3ae806e8740444584ef154ce8ee98d403f3e36", + "_spec": "qs@~6.5.2", + "_where": "/home/peter/www/prive/cypress-test/node_modules/request", + "bugs": { + "url": "https://github.com/ljharb/qs/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "dependencies": {}, + "deprecated": false, + "description": "A querystring parser that supports nesting and arrays, with a depth limit", + "devDependencies": { + "@ljharb/eslint-config": "^12.2.1", + "browserify": "^16.2.0", + "covert": "^1.1.0", + "editorconfig-tools": "^0.1.1", + "eslint": "^4.19.1", + "evalmd": "^0.0.17", + "iconv-lite": "^0.4.21", + "mkdirp": "^0.5.1", + "qs-iconv": "^1.0.4", + "safe-publish-latest": "^1.1.1", + "safer-buffer": "^2.1.2", + "tape": "^4.9.0" + }, + "engines": { + "node": ">=0.6" + }, + "homepage": "https://github.com/ljharb/qs", + "keywords": [ + "querystring", + "qs" + ], + "license": "BSD-3-Clause", + "main": "lib/index.js", + "name": "qs", + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/qs.git" + }, + "scripts": { + "coverage": "covert test", + "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js", + "lint": "eslint lib/*.js test/*.js", + "prelint": "editorconfig-tools check * lib/* test/*", + "prepublish": "safe-publish-latest && npm run dist", + "pretest": "npm run --silent readme && npm run --silent lint", + "readme": "evalmd README.md", + "test": "npm run --silent coverage", + "tests-only": "node test" + }, + "version": "6.5.2" +} diff --git a/node_modules/qs/test/.eslintrc b/node_modules/qs/test/.eslintrc new file mode 100644 index 0000000..20175d6 --- /dev/null +++ b/node_modules/qs/test/.eslintrc @@ -0,0 +1,15 @@ +{ + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "consistent-return": 2, + "max-lines": 0, + "max-nested-callbacks": [2, 3], + "max-statements": 0, + "no-buffer-constructor": 0, + "no-extend-native": 0, + "no-magic-numbers": 0, + "object-curly-newline": 0, + "sort-keys": 0 + } +} diff --git a/node_modules/qs/test/index.js b/node_modules/qs/test/index.js new file mode 100644 index 0000000..5e6bc8f --- /dev/null +++ b/node_modules/qs/test/index.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./parse'); + +require('./stringify'); + +require('./utils'); diff --git a/node_modules/qs/test/parse.js b/node_modules/qs/test/parse.js new file mode 100644 index 0000000..0f8fe45 --- /dev/null +++ b/node_modules/qs/test/parse.js @@ -0,0 +1,574 @@ +'use strict'; + +var test = require('tape'); +var qs = require('../'); +var utils = require('../lib/utils'); +var iconv = require('iconv-lite'); +var SaferBuffer = require('safer-buffer').Buffer; + +test('parse()', function (t) { + t.test('parses a simple string', function (st) { + st.deepEqual(qs.parse('0=foo'), { 0: 'foo' }); + st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' }); + st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } }); + st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } }); + st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } }); + st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null }); + st.deepEqual(qs.parse('foo'), { foo: '' }); + st.deepEqual(qs.parse('foo='), { foo: '' }); + st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' }); + st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' }); + st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' }); + st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' }); + st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' }); + st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null }); + st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' }); + st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), { + cht: 'p3', + chd: 't:60,40', + chs: '250x100', + chl: 'Hello|World' + }); + st.end(); + }); + + t.test('allows enabling dot notation', function (st) { + st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); + st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); + st.end(); + }); + + t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string'); + t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string'); + t.deepEqual( + qs.parse('a[b][c][d][e][f][g][h]=i'), + { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, + 'defaults to a depth of 5' + ); + + t.test('only parses one level when depth = 1', function (st) { + st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } }); + st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } }); + st.end(); + }); + + t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array'); + + t.test('parses an explicit array', function (st) { + st.deepEqual(qs.parse('a[]=b'), { a: ['b'] }); + st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] }); + st.end(); + }); + + t.test('parses a mix of simple and explicit arrays', function (st) { + st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); + + st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); + + st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); + + st.end(); + }); + + t.test('parses a nested array', function (st) { + st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } }); + st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } }); + st.end(); + }); + + t.test('allows to specify array indices', function (st) { + st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] }); + st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] }); + st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } }); + st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] }); + st.end(); + }); + + t.test('limits specific array indices to arrayLimit', function (st) { + st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] }); + st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } }); + st.end(); + }); + + t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number'); + + t.test('supports encoded = signs', function (st) { + st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' }); + st.end(); + }); + + t.test('is ok with url encoded strings', function (st) { + st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } }); + st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } }); + st.end(); + }); + + t.test('allows brackets in the value', function (st) { + st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' }); + st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' }); + st.end(); + }); + + t.test('allows empty values', function (st) { + st.deepEqual(qs.parse(''), {}); + st.deepEqual(qs.parse(null), {}); + st.deepEqual(qs.parse(undefined), {}); + st.end(); + }); + + t.test('transforms arrays to objects', function (st) { + st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); + st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); + + st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } }); + st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } }); + st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } }); + st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } }); + st.end(); + }); + + t.test('transforms arrays to objects (dot notation)', function (st) { + st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); + st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); + st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); + st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] }); + st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] }); + st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); + st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); + st.end(); + }); + + t.test('correctly prunes undefined values when converting an array to an object', function (st) { + st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } }); + st.end(); + }); + + t.test('supports malformed uri characters', function (st) { + st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null }); + st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' }); + st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' }); + st.end(); + }); + + t.test('doesn\'t produce empty keys', function (st) { + st.deepEqual(qs.parse('_r=1&'), { _r: '1' }); + st.end(); + }); + + t.test('cannot access Object prototype', function (st) { + qs.parse('constructor[prototype][bad]=bad'); + qs.parse('bad[constructor][prototype][bad]=bad'); + st.equal(typeof Object.prototype.bad, 'undefined'); + st.end(); + }); + + t.test('parses arrays of objects', function (st) { + st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); + st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] }); + st.end(); + }); + + t.test('allows for empty strings in arrays', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] }); + + st.deepEqual( + qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }), + { a: ['b', null, 'c', ''] }, + 'with arrayLimit 20 + array indices: null then empty string works' + ); + st.deepEqual( + qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), + { a: ['b', null, 'c', ''] }, + 'with arrayLimit 0 + array brackets: null then empty string works' + ); + + st.deepEqual( + qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }), + { a: ['b', '', 'c', null] }, + 'with arrayLimit 20 + array indices: empty string then null works' + ); + st.deepEqual( + qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), + { a: ['b', '', 'c', null] }, + 'with arrayLimit 0 + array brackets: empty string then null works' + ); + + st.deepEqual( + qs.parse('a[]=&a[]=b&a[]=c'), + { a: ['', 'b', 'c'] }, + 'array brackets: empty strings work' + ); + st.end(); + }); + + t.test('compacts sparse arrays', function (st) { + st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] }); + st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] }); + st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] }); + st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] }); + st.end(); + }); + + t.test('parses semi-parsed strings', function (st) { + st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } }); + st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }); + st.end(); + }); + + t.test('parses buffers correctly', function (st) { + var b = SaferBuffer.from('test'); + st.deepEqual(qs.parse({ a: b }), { a: b }); + st.end(); + }); + + t.test('continues parsing when no parent is found', function (st) { + st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' }); + st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' }); + st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' }); + st.end(); + }); + + t.test('does not error when parsing a very long array', function (st) { + var str = 'a[]=a'; + while (Buffer.byteLength(str) < 128 * 1024) { + str = str + '&' + str; + } + + st.doesNotThrow(function () { + qs.parse(str); + }); + + st.end(); + }); + + t.test('should not throw when a native prototype has an enumerable property', { parallel: false }, function (st) { + Object.prototype.crash = ''; + Array.prototype.crash = ''; + st.doesNotThrow(qs.parse.bind(null, 'a=b')); + st.deepEqual(qs.parse('a=b'), { a: 'b' }); + st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); + st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); + delete Object.prototype.crash; + delete Array.prototype.crash; + st.end(); + }); + + t.test('parses a string with an alternative string delimiter', function (st) { + st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('parses a string with an alternative RegExp delimiter', function (st) { + st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('does not use non-splittable objects as delimiters', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('allows overriding parameter limit', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' }); + st.end(); + }); + + t.test('allows setting the parameter limit to Infinity', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('allows overriding array limit', function (st) { + st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); + st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); + st.end(); + }); + + t.test('allows disabling array parsing', function (st) { + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { parseArrays: false }), { a: { 0: 'b', 1: 'c' } }); + st.end(); + }); + + t.test('allows for query string prefix', function (st) { + st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); + st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); + st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); + st.end(); + }); + + t.test('parses an object', function (st) { + var input = { + 'user[name]': { 'pop[bob]': 3 }, + 'user[email]': null + }; + + var expected = { + user: { + name: { 'pop[bob]': 3 }, + email: null + } + }; + + var result = qs.parse(input); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('parses an object in dot notation', function (st) { + var input = { + 'user.name': { 'pop[bob]': 3 }, + 'user.email.': null + }; + + var expected = { + user: { + name: { 'pop[bob]': 3 }, + email: null + } + }; + + var result = qs.parse(input, { allowDots: true }); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('parses an object and not child values', function (st) { + var input = { + 'user[name]': { 'pop[bob]': { test: 3 } }, + 'user[email]': null + }; + + var expected = { + user: { + name: { 'pop[bob]': { test: 3 } }, + email: null + } + }; + + var result = qs.parse(input); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('does not blow up when Buffer global is missing', function (st) { + var tempBuffer = global.Buffer; + delete global.Buffer; + var result = qs.parse('a=b&c=d'); + global.Buffer = tempBuffer; + st.deepEqual(result, { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('does not crash when parsing circular references', function (st) { + var a = {}; + a.b = a; + + var parsed; + + st.doesNotThrow(function () { + parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); + }); + + st.equal('foo' in parsed, true, 'parsed has "foo" property'); + st.equal('bar' in parsed.foo, true); + st.equal('baz' in parsed.foo, true); + st.equal(parsed.foo.bar, 'baz'); + st.deepEqual(parsed.foo.baz, a); + st.end(); + }); + + t.test('does not crash when parsing deep objects', function (st) { + var parsed; + var str = 'foo'; + + for (var i = 0; i < 5000; i++) { + str += '[p]'; + } + + str += '=bar'; + + st.doesNotThrow(function () { + parsed = qs.parse(str, { depth: 5000 }); + }); + + st.equal('foo' in parsed, true, 'parsed has "foo" property'); + + var depth = 0; + var ref = parsed.foo; + while ((ref = ref.p)) { + depth += 1; + } + + st.equal(depth, 5000, 'parsed is 5000 properties deep'); + + st.end(); + }); + + t.test('parses null objects correctly', { skip: !Object.create }, function (st) { + var a = Object.create(null); + a.b = 'c'; + + st.deepEqual(qs.parse(a), { b: 'c' }); + var result = qs.parse({ a: a }); + st.equal('a' in result, true, 'result has "a" property'); + st.deepEqual(result.a, a); + st.end(); + }); + + t.test('parses dates correctly', function (st) { + var now = new Date(); + st.deepEqual(qs.parse({ a: now }), { a: now }); + st.end(); + }); + + t.test('parses regular expressions correctly', function (st) { + var re = /^test$/; + st.deepEqual(qs.parse({ a: re }), { a: re }); + st.end(); + }); + + t.test('does not allow overwriting prototype properties', function (st) { + st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {}); + st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {}); + + st.deepEqual( + qs.parse('toString', { allowPrototypes: false }), + {}, + 'bare "toString" results in {}' + ); + + st.end(); + }); + + t.test('can allow overwriting prototype properties', function (st) { + st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }); + st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }); + + st.deepEqual( + qs.parse('toString', { allowPrototypes: true }), + { toString: '' }, + 'bare "toString" results in { toString: "" }' + ); + + st.end(); + }); + + t.test('params starting with a closing bracket', function (st) { + st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); + st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); + st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); + st.end(); + }); + + t.test('params starting with a starting bracket', function (st) { + st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); + st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); + st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); + st.end(); + }); + + t.test('add keys to objects', function (st) { + st.deepEqual( + qs.parse('a[b]=c&a=d'), + { a: { b: 'c', d: true } }, + 'can add keys to objects' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString'), + { a: { b: 'c' } }, + 'can not overwrite prototype' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { allowPrototypes: true }), + { a: { b: 'c', toString: true } }, + 'can overwrite prototype with allowPrototypes true' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { plainObjects: true }), + { a: { b: 'c', toString: true } }, + 'can overwrite prototype with plainObjects true' + ); + + st.end(); + }); + + t.test('can return null objects', { skip: !Object.create }, function (st) { + var expected = Object.create(null); + expected.a = Object.create(null); + expected.a.b = 'c'; + expected.a.hasOwnProperty = 'd'; + st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); + st.deepEqual(qs.parse(null, { plainObjects: true }), Object.create(null)); + var expectedArray = Object.create(null); + expectedArray.a = Object.create(null); + expectedArray.a[0] = 'b'; + expectedArray.a.c = 'd'; + st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); + st.end(); + }); + + t.test('can parse with custom encoding', function (st) { + st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', { + decoder: function (str) { + var reg = /%([0-9A-F]{2})/ig; + var result = []; + var parts = reg.exec(str); + while (parts) { + result.push(parseInt(parts[1], 16)); + parts = reg.exec(str); + } + return iconv.decode(SaferBuffer.from(result), 'shift_jis').toString(); + } + }), { 県: '大阪府' }); + st.end(); + }); + + t.test('receives the default decoder as a second argument', function (st) { + st.plan(1); + qs.parse('a', { + decoder: function (str, defaultDecoder) { + st.equal(defaultDecoder, utils.decode); + } + }); + st.end(); + }); + + t.test('throws error with wrong decoder', function (st) { + st['throws'](function () { + qs.parse({}, { decoder: 'string' }); + }, new TypeError('Decoder has to be a function.')); + st.end(); + }); + + t.test('does not mutate the options argument', function (st) { + var options = {}; + qs.parse('a[b]=true', options); + st.deepEqual(options, {}); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/qs/test/stringify.js b/node_modules/qs/test/stringify.js new file mode 100644 index 0000000..165ac62 --- /dev/null +++ b/node_modules/qs/test/stringify.js @@ -0,0 +1,597 @@ +'use strict'; + +var test = require('tape'); +var qs = require('../'); +var utils = require('../lib/utils'); +var iconv = require('iconv-lite'); +var SaferBuffer = require('safer-buffer').Buffer; + +test('stringify()', function (t) { + t.test('stringifies a querystring object', function (st) { + st.equal(qs.stringify({ a: 'b' }), 'a=b'); + st.equal(qs.stringify({ a: 1 }), 'a=1'); + st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2'); + st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z'); + st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC'); + st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80'); + st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90'); + st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7'); + st.end(); + }); + + t.test('adds query prefix', function (st) { + st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); + st.end(); + }); + + t.test('with query prefix, outputs blank string given an empty object', function (st) { + st.equal(qs.stringify({}, { addQueryPrefix: true }), ''); + st.end(); + }); + + t.test('stringifies a nested object', function (st) { + st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); + st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e'); + st.end(); + }); + + t.test('stringifies a nested object with dots notation', function (st) { + st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); + st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); + st.end(); + }); + + t.test('stringifies an array value', function (st) { + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'indices' }), + 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'brackets' }), + 'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }), + 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', + 'default => indices' + ); + st.end(); + }); + + t.test('omits nulls when asked', function (st) { + st.equal(qs.stringify({ a: 'b', c: null }, { skipNulls: true }), 'a=b'); + st.end(); + }); + + t.test('omits nested nulls when asked', function (st) { + st.equal(qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), 'a%5Bb%5D=c'); + st.end(); + }); + + t.test('omits array indices when asked', function (st) { + st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); + st.end(); + }); + + t.test('stringifies a nested array value', function (st) { + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'indices' }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { arrayFormat: 'brackets' }), 'a%5Bb%5D%5B%5D=c&a%5Bb%5D%5B%5D=d'); + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }), 'a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); + st.end(); + }); + + t.test('stringifies a nested array value with dots notation', function (st) { + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encode: false, arrayFormat: 'indices' } + ), + 'a.b[0]=c&a.b[1]=d', + 'indices: stringifies with dots + indices' + ); + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encode: false, arrayFormat: 'brackets' } + ), + 'a.b[]=c&a.b[]=d', + 'brackets: stringifies with dots + brackets' + ); + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encode: false } + ), + 'a.b[0]=c&a.b[1]=d', + 'default: stringifies with dots + indices' + ); + st.end(); + }); + + t.test('stringifies an object inside an array', function (st) { + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices' }), + 'a%5B0%5D%5Bb%5D=c', + 'indices => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets' }), + 'a%5B%5D%5Bb%5D=c', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }), + 'a%5B0%5D%5Bb%5D=c', + 'default => indices' + ); + + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices' }), + 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', + 'indices => indices' + ); + + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets' }), + 'a%5B%5D%5Bb%5D%5Bc%5D%5B%5D=1', + 'brackets => brackets' + ); + + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }), + 'a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1', + 'default => indices' + ); + + st.end(); + }); + + t.test('stringifies an array with mixed objects and primitives', function (st) { + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false, arrayFormat: 'indices' }), + 'a[0][b]=1&a[1]=2&a[2]=3', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false, arrayFormat: 'brackets' }), + 'a[][b]=1&a[]=2&a[]=3', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encode: false }), + 'a[0][b]=1&a[1]=2&a[2]=3', + 'default => indices' + ); + + st.end(); + }); + + t.test('stringifies an object inside an array with dots notation', function (st) { + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false, arrayFormat: 'indices' } + ), + 'a[0].b=c', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false, arrayFormat: 'brackets' } + ), + 'a[].b=c', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false } + ), + 'a[0].b=c', + 'default => indices' + ); + + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false, arrayFormat: 'indices' } + ), + 'a[0].b.c[0]=1', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false, arrayFormat: 'brackets' } + ), + 'a[].b.c[]=1', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false } + ), + 'a[0].b.c[0]=1', + 'default => indices' + ); + + st.end(); + }); + + t.test('does not omit object keys when indices = false', function (st) { + st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when indices=true', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when no arrayFormat=indices', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses repeat notation for arrays when no arrayFormat=repeat', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); + st.end(); + }); + + t.test('uses brackets notation for arrays when no arrayFormat=brackets', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); + st.end(); + }); + + t.test('stringifies a complicated object', function (st) { + st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e'); + st.end(); + }); + + t.test('stringifies an empty value', function (st) { + st.equal(qs.stringify({ a: '' }), 'a='); + st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a'); + + st.equal(qs.stringify({ a: '', b: '' }), 'a=&b='); + st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b='); + + st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D='); + st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D'); + st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D='); + + st.end(); + }); + + t.test('stringifies a null object', { skip: !Object.create }, function (st) { + var obj = Object.create(null); + obj.a = 'b'; + st.equal(qs.stringify(obj), 'a=b'); + st.end(); + }); + + t.test('returns an empty string for invalid input', function (st) { + st.equal(qs.stringify(undefined), ''); + st.equal(qs.stringify(false), ''); + st.equal(qs.stringify(null), ''); + st.equal(qs.stringify(''), ''); + st.end(); + }); + + t.test('stringifies an object with a null object as a child', { skip: !Object.create }, function (st) { + var obj = { a: Object.create(null) }; + + obj.a.b = 'c'; + st.equal(qs.stringify(obj), 'a%5Bb%5D=c'); + st.end(); + }); + + t.test('drops keys with a value of undefined', function (st) { + st.equal(qs.stringify({ a: undefined }), ''); + + st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D'); + st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D='); + st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D='); + st.end(); + }); + + t.test('url encodes values', function (st) { + st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); + st.end(); + }); + + t.test('stringifies a date', function (st) { + var now = new Date(); + var str = 'a=' + encodeURIComponent(now.toISOString()); + st.equal(qs.stringify({ a: now }), str); + st.end(); + }); + + t.test('stringifies the weird object from qs', function (st) { + st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); + st.end(); + }); + + t.test('skips properties that are part of the object prototype', function (st) { + Object.prototype.crash = 'test'; + st.equal(qs.stringify({ a: 'b' }), 'a=b'); + st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); + delete Object.prototype.crash; + st.end(); + }); + + t.test('stringifies boolean values', function (st) { + st.equal(qs.stringify({ a: true }), 'a=true'); + st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true'); + st.equal(qs.stringify({ b: false }), 'b=false'); + st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false'); + st.end(); + }); + + t.test('stringifies buffer values', function (st) { + st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test'); + st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test'); + st.end(); + }); + + t.test('stringifies an object using an alternative delimiter', function (st) { + st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); + st.end(); + }); + + t.test('doesn\'t blow up when Buffer global is missing', function (st) { + var tempBuffer = global.Buffer; + delete global.Buffer; + var result = qs.stringify({ a: 'b', c: 'd' }); + global.Buffer = tempBuffer; + st.equal(result, 'a=b&c=d'); + st.end(); + }); + + t.test('selects properties when filter=array', function (st) { + st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b'); + st.equal(qs.stringify({ a: 1 }, { filter: [] }), ''); + + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2], arrayFormat: 'indices' } + ), + 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2], arrayFormat: 'brackets' } + ), + 'a%5Bb%5D%5B%5D=1&a%5Bb%5D%5B%5D=3', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2] } + ), + 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', + 'default => indices' + ); + + st.end(); + }); + + t.test('supports custom representations when filter=function', function (st) { + var calls = 0; + var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; + var filterFunc = function (prefix, value) { + calls += 1; + if (calls === 1) { + st.equal(prefix, '', 'prefix is empty'); + st.equal(value, obj); + } else if (prefix === 'c') { + return void 0; + } else if (value instanceof Date) { + st.equal(prefix, 'e[f]'); + return value.getTime(); + } + return value; + }; + + st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000'); + st.equal(calls, 5); + st.end(); + }); + + t.test('can disable uri encoding', function (st) { + st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b'); + st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c'); + st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c'); + st.end(); + }); + + t.test('can sort the keys', function (st) { + var sort = function (a, b) { + return a.localeCompare(b); + }; + st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y'); + st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); + st.end(); + }); + + t.test('can sort the keys at depth 3 or more too', function (st) { + var sort = function (a, b) { + return a.localeCompare(b); + }; + st.equal( + qs.stringify( + { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, + { sort: sort, encode: false } + ), + 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb' + ); + st.equal( + qs.stringify( + { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, + { sort: null, encode: false } + ), + 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b' + ); + st.end(); + }); + + t.test('can stringify with custom encoding', function (st) { + st.equal(qs.stringify({ 県: '大阪府', '': '' }, { + encoder: function (str) { + if (str.length === 0) { + return ''; + } + var buf = iconv.encode(str, 'shiftjis'); + var result = []; + for (var i = 0; i < buf.length; ++i) { + result.push(buf.readUInt8(i).toString(16)); + } + return '%' + result.join('%'); + } + }), '%8c%a7=%91%e5%8d%e3%95%7b&='); + st.end(); + }); + + t.test('receives the default encoder as a second argument', function (st) { + st.plan(2); + qs.stringify({ a: 1 }, { + encoder: function (str, defaultEncoder) { + st.equal(defaultEncoder, utils.encode); + } + }); + st.end(); + }); + + t.test('throws error with wrong encoder', function (st) { + st['throws'](function () { + qs.stringify({}, { encoder: 'string' }); + }, new TypeError('Encoder has to be a function.')); + st.end(); + }); + + t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) { + st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, { + encoder: function (buffer) { + if (typeof buffer === 'string') { + return buffer; + } + return String.fromCharCode(buffer.readUInt8(0) + 97); + } + }), 'a=b'); + st.end(); + }); + + t.test('serializeDate option', function (st) { + var date = new Date(); + st.equal( + qs.stringify({ a: date }), + 'a=' + date.toISOString().replace(/:/g, '%3A'), + 'default is toISOString' + ); + + var mutatedDate = new Date(); + mutatedDate.toISOString = function () { + throw new SyntaxError(); + }; + st['throws'](function () { + mutatedDate.toISOString(); + }, SyntaxError); + st.equal( + qs.stringify({ a: mutatedDate }), + 'a=' + Date.prototype.toISOString.call(mutatedDate).replace(/:/g, '%3A'), + 'toISOString works even when method is not locally present' + ); + + var specificDate = new Date(6); + st.equal( + qs.stringify( + { a: specificDate }, + { serializeDate: function (d) { return d.getTime() * 7; } } + ), + 'a=42', + 'custom serializeDate function called' + ); + + st.end(); + }); + + t.test('RFC 1738 spaces serialization', function (st) { + st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC1738 }), 'a=b+c'); + st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC1738 }), 'a+b=c+d'); + st.end(); + }); + + t.test('RFC 3986 spaces serialization', function (st) { + st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC3986 }), 'a=b%20c'); + st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC3986 }), 'a%20b=c%20d'); + st.end(); + }); + + t.test('Backward compatibility to RFC 3986', function (st) { + st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); + st.end(); + }); + + t.test('Edge cases and unknown formats', function (st) { + ['UFO1234', false, 1234, null, {}, []].forEach( + function (format) { + st['throws']( + function () { + qs.stringify({ a: 'b c' }, { format: format }); + }, + new TypeError('Unknown format option provided.') + ); + } + ); + st.end(); + }); + + t.test('encodeValuesOnly', function (st) { + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true } + ), + 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] } + ), + 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h' + ); + st.end(); + }); + + t.test('encodeValuesOnly - strictNullHandling', function (st) { + st.equal( + qs.stringify( + { a: { b: null } }, + { encodeValuesOnly: true, strictNullHandling: true } + ), + 'a[b]' + ); + st.end(); + }); + + t.test('does not mutate the options argument', function (st) { + var options = {}; + qs.stringify({}, options); + st.deepEqual(options, {}); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/qs/test/utils.js b/node_modules/qs/test/utils.js new file mode 100644 index 0000000..eff4011 --- /dev/null +++ b/node_modules/qs/test/utils.js @@ -0,0 +1,34 @@ +'use strict'; + +var test = require('tape'); +var utils = require('../lib/utils'); + +test('merge()', function (t) { + t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key'); + + var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } }); + t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array'); + + var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } }); + t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array'); + + var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' }); + t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array'); + + var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] }); + t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] }); + + t.end(); +}); + +test('assign()', function (t) { + var target = { a: 1, b: 2 }; + var source = { b: 3, c: 4 }; + var result = utils.assign(target, source); + + t.equal(result, target, 'returns the target'); + t.deepEqual(target, { a: 1, b: 3, c: 4 }, 'target and source are merged'); + t.deepEqual(source, { b: 3, c: 4 }, 'source is untouched'); + + t.end(); +}); diff --git a/node_modules/querystring/.History.md.un~ b/node_modules/querystring/.History.md.un~ new file mode 100644 index 0000000000000000000000000000000000000000..c96a7dd8c8c86e2e4b6af0478b1bc122b929528d GIT binary patch literal 7960 zcmeI1O>0v@6ozk__}SL4mLj+rD1;VG%uP&mDblr2L05iY+Y|yOx0H0*MfHaW;zHes zKR`F`T=@gs`hk0K;X==IGN(>L?aJBB3n!DAdy@?3;XU`)S!)7yiU;&V2&^z8MM z_O~xGQz3{XCeC6fM$1j%OzWXru>3x=E^Ac0e$!mpo5+#Xq5{S_vTkUMz zuW+=IJ^08`5g#ydh*13&{hirr8vkDgRy%8%;>fZe=l$2h@R$S`78YHj-l(_SW!G%v zd987!mUrA@dr#qUMp?pSNJ_l70&gjVNBWOSOu%a%Tp;ai+aKUqn`0q4k1WKLz+3(o zyv!FzkZ`p#0hgesNr*^7R0*PsAtG=bmpCcGHEe#=fQ9Dmz#6q#%RwOxR6L$U>@xmX=tfkh&gPir=9Y8Y%7Y^LoR2jl5aQTOJ*#w5#Al zqW${GB%vb7^QPhnO@ ZFiAa69(m~N+kCx4vvqx5-`@NB>JPML-n9S# literal 0 HcmV?d00001 diff --git a/node_modules/querystring/.Readme.md.un~ b/node_modules/querystring/.Readme.md.un~ new file mode 100644 index 0000000000000000000000000000000000000000..71613b59ba1b551647a6ba1b47180a44ac70212b GIT binary patch literal 3225 zcmeHJyGjE=6dhxHHnxHY5fx2g(wK;m2tL4CM2U#VlB~&Ul8rO75g(v-*8YIKrG>3O zV4?PwVrgY5de3Y|*AUQ%YqbYXhTNHb%sprCofWHezFeNSA6e+|G>1{HPna%a9q zp?4>dB~Fx_m_f}bEc`<0w6uAF!lBtZI=41*ERw;dU*sfHzCq6QQM z(+C8rAq#$jR2#4V2qA}7&H7al*JZhx3SRRAv~Tn57%zhgoI^2MwfumpG2qeK*kR#H{5#i5Mo3~;7 L>#09+@^tYI$G;b9 literal 0 HcmV?d00001 diff --git a/node_modules/querystring/.package.json.un~ b/node_modules/querystring/.package.json.un~ new file mode 100644 index 0000000000000000000000000000000000000000..d86fe314c5aaeffce89d94a968668c5dc133ba5b GIT binary patch literal 5710 zcmeHLOKTKC5T3-u_&`k*#kb>v5n;0rb>mwIL_}{n=tV>}yR&9w=i$t5j7Sb%Jt!(3 z#j~D7Px=RZ9K@@FM-@en9!0;erhB)O4H6P_n}%advIf~Yu2>IpEI{p6-nwZjxRQ_iVj17;! z7CJ2J*JjwJ>o);g0aDRz+b#V7{%--S(oLa`NW0+oTY(hIAm$NE$+IKoH;x2dTe_-tEeJ1%Z=M1ZOox*jx?OI z;BL#4u&_;g6>?JdLDdHdv+jf{mN*-jUEZjtZacu}T8rR|E0G&EBxgdCoe_|JP<3oZ zXPoEn(AB0BU5^`)>tD`Yi8Hi<9^r$q^VYWWHHj*1MG`eAH4Fdhb|Wvc+)NN4N9X%K3+ zEKs&QiS=YhP9l&-zN|bI3e_tiYvT!kL8pQ(EANE5Xp-L@KxffBJhNzqo*gxPshdMm zK?etI-&BrA!L`_lYweI$<0LH0a(RkNUQlh;oj4y(l>J8FxwY&0ao5jRyeew2 zos-I(uLPbK_$!kb(xC? zt2)(Y$kTvqZ^(7(P+!ME0h4Y(wM`b+Ts#Sv$$c2M2V_`zKp#dnPzh76GZof@h|h5W zrq(2C3>?Ad7${aGii>=7F@&MYL=<>>1t?2eW`Ch`$$B+bb0en~OsT8j8I-=rHMHF} zQ!I6w(N~VkwQ}StEA1tvTv3d)?|!(`M!&jb5IRx0!$fg^vZ61UbrHAJ%kDHfW@cd~ z(O;#|l`L}{QeLLg%tDteqM4b6{W(rzm1mM!mM6vG7$z~Zi~!6m;A}dp-<-?}fHC2X k7WsA2O1YvJ7SZOxmG@1!>PxuN-yAeobAJIY-TeCGFNStew*UYD literal 0 HcmV?d00001 diff --git a/node_modules/querystring/.travis.yml b/node_modules/querystring/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/node_modules/querystring/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node_modules/querystring/History.md b/node_modules/querystring/History.md new file mode 100644 index 0000000..4fddbaf --- /dev/null +++ b/node_modules/querystring/History.md @@ -0,0 +1,20 @@ +# 0.2.0 / 2013-02-21 + + - Refactor into function per-module idiomatic style. + - Improved test coverage. + +# 0.1.0 / 2011-12-13 + + - Minor project reorganization + +# 0.0.3 / 2011-04-16 + - Support for AMD module loaders + +# 0.0.2 / 2011-04-16 + + - Ported unit tests + - Removed functionality that depended on Buffers + +# 0.0.1 / 2011-04-15 + + - Initial release diff --git a/node_modules/querystring/License.md b/node_modules/querystring/License.md new file mode 100644 index 0000000..fc80e85 --- /dev/null +++ b/node_modules/querystring/License.md @@ -0,0 +1,19 @@ + +Copyright 2012 Irakli Gozalishvili. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_modules/querystring/Readme.md b/node_modules/querystring/Readme.md new file mode 100644 index 0000000..a4fe252 --- /dev/null +++ b/node_modules/querystring/Readme.md @@ -0,0 +1,15 @@ +# querystring + +[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring) + + +[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring) + + + +Node's querystring module for all engines. + +## Install ## + + npm install querystring + diff --git a/node_modules/querystring/decode.js b/node_modules/querystring/decode.js new file mode 100644 index 0000000..a6518b8 --- /dev/null +++ b/node_modules/querystring/decode.js @@ -0,0 +1,80 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; diff --git a/node_modules/querystring/encode.js b/node_modules/querystring/encode.js new file mode 100644 index 0000000..4f2b561 --- /dev/null +++ b/node_modules/querystring/encode.js @@ -0,0 +1,64 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; diff --git a/node_modules/querystring/index.js b/node_modules/querystring/index.js new file mode 100644 index 0000000..99826ea --- /dev/null +++ b/node_modules/querystring/index.js @@ -0,0 +1,4 @@ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); diff --git a/node_modules/querystring/package.json b/node_modules/querystring/package.json new file mode 100644 index 0000000..21ffdd3 --- /dev/null +++ b/node_modules/querystring/package.json @@ -0,0 +1,100 @@ +{ + "_from": "querystring@0.2.0", + "_id": "querystring@0.2.0", + "_inBundle": false, + "_integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "_location": "/querystring", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "querystring@0.2.0", + "name": "querystring", + "escapedName": "querystring", + "rawSpec": "0.2.0", + "saveSpec": null, + "fetchSpec": "0.2.0" + }, + "_requiredBy": [ + "/url" + ], + "_resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "_shasum": "b209849203bb25df820da756e747005878521620", + "_spec": "querystring@0.2.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/url", + "author": { + "name": "Irakli Gozalishvili", + "email": "rfobic@gmail.com" + }, + "bugs": { + "url": "http://github.com/Gozala/querystring/issues/" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Node's querystring module for all engines.", + "devDependencies": { + "phantomify": "~0.x.0", + "retape": "~0.x.0", + "tape": "~0.1.5", + "test": "~0.x.0" + }, + "engines": { + "node": ">=0.4.x" + }, + "homepage": "https://github.com/Gozala/querystring#readme", + "id": "querystring", + "keywords": [ + "commonjs", + "query", + "querystring" + ], + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/Gozala/enchain/License.md" + } + ], + "name": "querystring", + "repository": { + "type": "git", + "url": "git://github.com/Gozala/querystring.git", + "web": "https://github.com/Gozala/querystring" + }, + "scripts": { + "test": "npm run test-node && npm run test-browser && npm run test-tap", + "test-browser": "node ./node_modules/phantomify/bin/cmd.js ./test/common-index.js", + "test-node": "node ./test/common-index.js", + "test-tap": "node ./test/tap-index.js" + }, + "testling": { + "files": "test/tap-index.js", + "browsers": { + "iexplore": [ + 9, + 10 + ], + "chrome": [ + 16, + 20, + 25, + "canary" + ], + "firefox": [ + 10, + 15, + 16, + 17, + 18, + "nightly" + ], + "safari": [ + 5, + 6 + ], + "opera": [ + 12 + ] + } + }, + "version": "0.2.0" +} diff --git a/node_modules/querystring/test/.index.js.un~ b/node_modules/querystring/test/.index.js.un~ new file mode 100644 index 0000000000000000000000000000000000000000..898eceddc9e485e85275e41f9b8b98294bb3fe08 GIT binary patch literal 975 zcmWH`%$*;a=aT=Ffr(>^0h6blXhl42hkT^^Cju)3aORMz^9E7#J=A zF*0BTa+sh3AR2}l0?m@ovVde68R9P>DS$G8!VCjM7vN0bq2T0Y?V| z!&eEQ*`RoY1wSY%7)%?%(FA6L_)q|fPnbG}(P)AN3$18)G%;e2CfTCY!qUv5R1Kw) b)Z!8)O}(PhJdM ; :'); + }); +}; + +exports['test the weird objects, that they get parsed properly'] = function(assert) { + qsWeirdObjects.forEach(function(testCase) { + assert.deepEqual(testCase[2], qs.parse(testCase[1]), + 'parse ' + testCase[1]); + }); +}; + +exports['test non munge test cases'] = function(assert) { + qsNoMungeTestCases.forEach(function(testCase) { + assert.deepEqual(testCase[0], qs.stringify(testCase[1], '&', '=', false), + 'stringify ' + JSON.stringify(testCase[1]) + ' -> & ='); + }); +}; + +exports['test the nested qs-in-qs case'] = function(assert) { + var f = qs.parse('a=b&q=x%3Dy%26y%3Dz'); + f.q = qs.parse(f.q); + assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, + 'parse a=b&q=x%3Dy%26y%3Dz'); +}; + +exports['test nested in colon'] = function(assert) { + var f = qs.parse('a:b;q:x%3Ay%3By%3Az', ';', ':'); + f.q = qs.parse(f.q, ';', ':'); + assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, + 'parse a:b;q:x%3Ay%3By%3Az -> ; :'); +}; + +exports['test stringifying'] = function(assert) { + qsTestCases.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[2]), + 'stringify ' + JSON.stringify(testCase[2])); + }); + + qsColonTestCases.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[2], ';', ':'), + 'stringify ' + JSON.stringify(testCase[2]) + ' -> ; :'); + }); + + qsWeirdObjects.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[0]), + 'stringify ' + JSON.stringify(testCase[0])); + }); +}; + +exports['test stringifying nested'] = function(assert) { + var f = qs.stringify({ + a: 'b', + q: qs.stringify({ + x: 'y', + y: 'z' + }) + }); + assert.equal(f, 'a=b&q=x%3Dy%26y%3Dz', + JSON.stringify({ + a: 'b', + 'qs.stringify -> q': { + x: 'y', + y: 'z' + } + })); + + var threw = false; + try { qs.parse(undefined); } catch(error) { threw = true; } + assert.ok(!threw, "does not throws on undefined"); +}; + +exports['test nested in colon'] = function(assert) { + var f = qs.stringify({ + a: 'b', + q: qs.stringify({ + x: 'y', + y: 'z' + }, ';', ':') + }, ';', ':'); + assert.equal(f, 'a:b;q:x%3Ay%3By%3Az', + 'stringify ' + JSON.stringify({ + a: 'b', + 'qs.stringify -> q': { + x: 'y', + y: 'z' + } + }) + ' -> ; : '); + + + assert.deepEqual({}, qs.parse(), 'parse undefined'); +}; diff --git a/node_modules/querystring/test/tap-index.js b/node_modules/querystring/test/tap-index.js new file mode 100644 index 0000000..70679b3 --- /dev/null +++ b/node_modules/querystring/test/tap-index.js @@ -0,0 +1,3 @@ +"use strict"; + +require("retape")(require("./index")) \ No newline at end of file diff --git a/node_modules/ramda/CHANGELOG.md b/node_modules/ramda/CHANGELOG.md new file mode 100644 index 0000000..cf75f9a --- /dev/null +++ b/node_modules/ramda/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +See the [upgrade guides][1]. + + +[1]: https://github.com/ramda/ramda/issues?q=label%3A%22upgrade+guide%22 diff --git a/node_modules/ramda/LICENSE.txt b/node_modules/ramda/LICENSE.txt new file mode 100644 index 0000000..7bf1da4 --- /dev/null +++ b/node_modules/ramda/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2016 Scott Sauyet and Michael Hurley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/ramda/README.md b/node_modules/ramda/README.md new file mode 100644 index 0000000..56e36bd --- /dev/null +++ b/node_modules/ramda/README.md @@ -0,0 +1,193 @@ +Ramda +============= + +A practical functional library for JavaScript programmers. + +[![Build Status](https://travis-ci.org/ramda/ramda.svg?branch=master)](https://travis-ci.org/ramda/ramda) +[![npm module](https://badge.fury.io/js/ramda.svg)](https://www.npmjs.org/package/ramda) +[![dependencies](https://david-dm.org/ramda/ramda.svg)](https://david-dm.org/ramda/ramda) +[![Gitter](https://badges.gitter.im/Join_Chat.svg)](https://gitter.im/ramda/ramda?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + + +Why Ramda? +---------- + + + +There are already several excellent libraries with a functional flavor. Typically, they are meant to be general-purpose toolkits, suitable for working in multiple paradigms. Ramda has a more focused goal. We wanted a library designed specifically for a functional programming style, one that makes it easy to create functional pipelines, one that never mutates user data. + + +What's Different? +----------------- + +The primary distinguishing features of Ramda are: + +* Ramda emphasizes a purer functional style. Immutability and side-effect free functions + are at the heart of its design philosophy. This can help you get the job done with simple, + elegant code. + +* Ramda functions are automatically curried. This allows you to easily build up new functions + from old ones simply by not supplying the final parameters. + +* The parameters to Ramda functions are arranged to make it convenient for currying. The data + to be operated on is generally supplied last. + +The last two points together make it very easy to build functions as sequences of simpler functions, each of which transforms the data and passes it along to the next. Ramda is designed to support this style of coding. + + +Introductions +------------- + +* [Introducing Ramda](http://buzzdecafe.github.io/code/2014/05/16/introducing-ramda) by Buzz de Cafe +* [Why Ramda?](http://fr.umio.us/why-ramda/) by Scott Sauyet +* [Favoring Curry](http://fr.umio.us/favoring-curry/) by Scott Sauyet +* [Why Curry Helps](https://hughfdjackson.com/javascript/why-curry-helps/) by Hugh Jackson +* [Hey Underscore, You're Doing It Wrong!](https://www.youtube.com/watch?v=m3svKOdZijA&app=desktop) by Brian Lonsdorf +* [Thinking in Ramda](http://randycoulman.com/blog/categories/thinking-in-ramda) by Randy Coulman + + +Philosophy +---------- +Using Ramda should feel much like just using JavaScript. +It is practical, functional JavaScript. We're not introducing +lambda expressions in strings, we're not borrowing consed +lists, we're not porting over all of the Clojure functions. + +Our basic data structures are plain JavaScript objects, and our +usual collections are JavaScript arrays. We also keep other +native features of JavaScript, such as functions as objects +with properties. + +Functional programming is in good part about immutable objects and +side-effect free functions. While Ramda does not *enforce* this, it +enables such style to be as frictionless as possible. + +We aim for an implementation both clean and elegant, but the API is king. +We sacrifice a great deal of implementation elegance for even a slightly +cleaner API. + +Last but not least, Ramda strives for performance. A reliable and quick +implementation wins over any notions of functional purity. + +Installation +------------ + +To use with node: + +```bash +$ npm install ramda +``` + +Then in the console: + +```javascript +const R = require('ramda'); +``` + +To use directly in the browser: + +```html + +``` + +or the minified version: + +```html + +``` + +or from a CDN, either cdnjs: + +```html + +``` + +or one of the below links from [jsDelivr](http://jsdelivr.com): + +```html + + + +``` + +(note that using `latest` is taking a significant risk that ramda API changes could break your code.) + +These script tags add the variable `R` on the browser's global scope. + +Or you can inject ramda into virtually any unsuspecting website using [the bookmarklet](https://github.com/ramda/ramda/blob/master/BOOKMARKLET.md). + +### Build + +* on Unix-based platforms, `npm run build` updates __dist/ramda.js__ and __dist/ramda.min.js__ +* on Windows, write the output of `scripts/build --complete` to a temporary file, then rename the temporary file __dist/ramda.js__. + +#### Partial Builds + +It is possible to build Ramda with a subset of the functionality to reduce its file size. Ramda's build system supports this with command line flags. For example if you're using `R.compose`, `R.reduce`, and `R.filter` you can create a partial build with: + + ./scripts/build -- src/compose.js src/reduce.js src/filter.js > dist/ramda.custom.js + +This requires having Node/io.js installed. + +Documentation +------------- + +Please review the [API documentation](http://ramdajs.com/docs/). + +The Name +-------- + +Ok, so we like sheep. That's all. It's a short name, not already +taken. It could as easily have been `eweda`, but then we would be +forced to say _eweda lamb!_, and no one wants that. For non-English +speakers, lambs are baby sheep, ewes are female sheep, and rams are male +sheep. So perhaps ramda is a grown-up lambda... but probably not. + + + + +Running The Test Suite +---------------------- + +**Console:** + +To run the test suite from the console, you need to have `mocha` installed: + + npm install -g mocha + +Then from the root of the project, you can just call + + mocha + +Alternately, if you've installed the dependencies, via: + + npm install + +then you can run the tests (and get detailed output) by running: + + npm test + +**Browser:** + +You can use [testem](https://github.com/airportyh/testem) to +test across different browsers (or even headlessly), with livereloading of +tests. Install testem (`npm install -g testem`) and run `testem`. Open the +link provided in your browser and you will see the results in your terminal. + +If you have _PhantomJS_ installed, you can run `testem -l phantomjs` to run the +tests completely headlessly. + + +Translations +----------------- + +[Chinese(中文)](http://ramda.cn/) + + +Acknowledgements +----------------- + +Thanks to [J. C. Phillipps](http://www.jcphillipps.com) for the Ramda logo. +Ramda logo artwork © 2014 J. C. Phillipps. Licensed Creative Commons +[CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/). diff --git a/node_modules/ramda/dist/ramda.js b/node_modules/ramda/dist/ramda.js new file mode 100644 index 0000000..d470abc --- /dev/null +++ b/node_modules/ramda/dist/ramda.js @@ -0,0 +1,9398 @@ +// Ramda v0.24.1 +// https://github.com/ramda/ramda +// (c) 2013-2017 Scott Sauyet, Michael Hurley, and David Chambers +// Ramda may be freely distributed under the MIT license. + +;(function() { + + 'use strict'; + + /** + * A special placeholder value used to specify "gaps" within curried functions, + * allowing partial application of any combination of arguments, regardless of + * their positions. + * + * If `g` is a curried ternary function and `_` is `R.__`, the following are + * equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2, _)(1, 3)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @constant + * @memberOf R + * @since v0.6.0 + * @category Function + * @example + * + * var greet = R.replace('{name}', R.__, 'Hello, {name}!'); + * greet('Alice'); //=> 'Hello, Alice!' + */ + var __ = { '@@functional/placeholder': true }; + + var _aperture = function _aperture(n, list) { + var idx = 0; + var limit = list.length - (n - 1); + var acc = new Array(limit >= 0 ? limit : 0); + while (idx < limit) { + acc[idx] = Array.prototype.slice.call(list, idx, idx + n); + idx += 1; + } + return acc; + }; + + /* eslint-disable no-unused-vars */ + var _arity = function _arity(n, fn) { + /* eslint-disable no-unused-vars */ + switch (n) { + case 0: + return function () { + return fn.apply(this, arguments); + }; + case 1: + return function (a0) { + return fn.apply(this, arguments); + }; + case 2: + return function (a0, a1) { + return fn.apply(this, arguments); + }; + case 3: + return function (a0, a1, a2) { + return fn.apply(this, arguments); + }; + case 4: + return function (a0, a1, a2, a3) { + return fn.apply(this, arguments); + }; + case 5: + return function (a0, a1, a2, a3, a4) { + return fn.apply(this, arguments); + }; + case 6: + return function (a0, a1, a2, a3, a4, a5) { + return fn.apply(this, arguments); + }; + case 7: + return function (a0, a1, a2, a3, a4, a5, a6) { + return fn.apply(this, arguments); + }; + case 8: + return function (a0, a1, a2, a3, a4, a5, a6, a7) { + return fn.apply(this, arguments); + }; + case 9: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { + return fn.apply(this, arguments); + }; + case 10: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + return fn.apply(this, arguments); + }; + default: + throw new Error('First argument to _arity must be a non-negative integer no greater than ten'); + } + }; + + var _arrayFromIterator = function _arrayFromIterator(iter) { + var list = []; + var next; + while (!(next = iter.next()).done) { + list.push(next.value); + } + return list; + }; + + var _cloneRegExp = function _cloneRegExp(pattern) { + return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '')); + }; + + var _complement = function _complement(f) { + return function () { + return !f.apply(this, arguments); + }; + }; + + /** + * Private `concat` function to merge two array-like objects. + * + * @private + * @param {Array|Arguments} [set1=[]] An array-like object. + * @param {Array|Arguments} [set2=[]] An array-like object. + * @return {Array} A new, merged array. + * @example + * + * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + */ + var _concat = function _concat(set1, set2) { + set1 = set1 || []; + set2 = set2 || []; + var idx; + var len1 = set1.length; + var len2 = set2.length; + var result = []; + idx = 0; + while (idx < len1) { + result[result.length] = set1[idx]; + idx += 1; + } + idx = 0; + while (idx < len2) { + result[result.length] = set2[idx]; + idx += 1; + } + return result; + }; + + var _containsWith = function _containsWith(pred, x, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (pred(x, list[idx])) { + return true; + } + idx += 1; + } + return false; + }; + + var _dropLastWhile = function dropLastWhile(pred, list) { + var idx = list.length - 1; + while (idx >= 0 && pred(list[idx])) { + idx -= 1; + } + return Array.prototype.slice.call(list, 0, idx + 1); + }; + + var _filter = function _filter(fn, list) { + var idx = 0; + var len = list.length; + var result = []; + while (idx < len) { + if (fn(list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; + }; + + var _forceReduced = function _forceReduced(x) { + return { + '@@transducer/value': x, + '@@transducer/reduced': true + }; + }; + + // String(x => x) evaluates to "x => x", so the pattern may not match. + var _functionName = function _functionName(f) { + // String(x => x) evaluates to "x => x", so the pattern may not match. + var match = String(f).match(/^function (\w*)/); + return match == null ? '' : match[1]; + }; + + var _has = function _has(prop, obj) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + + var _identity = function _identity(x) { + return x; + }; + + var _isArguments = function () { + var toString = Object.prototype.toString; + return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) { + return toString.call(x) === '[object Arguments]'; + } : function _isArguments(x) { + return _has('callee', x); + }; + }(); + + /** + * Tests whether or not an object is an array. + * + * @private + * @param {*} val The object to test. + * @return {Boolean} `true` if `val` is an array, `false` otherwise. + * @example + * + * _isArray([]); //=> true + * _isArray(null); //=> false + * _isArray({}); //=> false + */ + var _isArray = Array.isArray || function _isArray(val) { + return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]'; + }; + + var _isFunction = function _isFunction(x) { + return Object.prototype.toString.call(x) === '[object Function]'; + }; + + /** + * Determine if the passed argument is an integer. + * + * @private + * @param {*} n + * @category Type + * @return {Boolean} + */ + var _isInteger = Number.isInteger || function _isInteger(n) { + return n << 0 === n; + }; + + var _isNumber = function _isNumber(x) { + return Object.prototype.toString.call(x) === '[object Number]'; + }; + + var _isObject = function _isObject(x) { + return Object.prototype.toString.call(x) === '[object Object]'; + }; + + var _isPlaceholder = function _isPlaceholder(a) { + return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true; + }; + + var _isRegExp = function _isRegExp(x) { + return Object.prototype.toString.call(x) === '[object RegExp]'; + }; + + var _isString = function _isString(x) { + return Object.prototype.toString.call(x) === '[object String]'; + }; + + var _isTransformer = function _isTransformer(obj) { + return typeof obj['@@transducer/step'] === 'function'; + }; + + var _map = function _map(fn, functor) { + var idx = 0; + var len = functor.length; + var result = Array(len); + while (idx < len) { + result[idx] = fn(functor[idx]); + idx += 1; + } + return result; + }; + + // Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + var _objectAssign = function _objectAssign(target) { + if (target == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var output = Object(target); + var idx = 1; + var length = arguments.length; + while (idx < length) { + var source = arguments[idx]; + if (source != null) { + for (var nextKey in source) { + if (_has(nextKey, source)) { + output[nextKey] = source[nextKey]; + } + } + } + idx += 1; + } + return output; + }; + + var _of = function _of(x) { + return [x]; + }; + + var _pipe = function _pipe(f, g) { + return function () { + return g.call(this, f.apply(this, arguments)); + }; + }; + + var _pipeP = function _pipeP(f, g) { + return function () { + var ctx = this; + return f.apply(ctx, arguments).then(function (x) { + return g.call(ctx, x); + }); + }; + }; + + // \b matches word boundary; [\b] matches backspace + var _quote = function _quote(s) { + var escaped = s.replace(/\\/g, '\\\\').replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace + .replace(/\f/g, '\\f').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\t/g, '\\t').replace(/\v/g, '\\v').replace(/\0/g, '\\0'); + return '"' + escaped.replace(/"/g, '\\"') + '"'; + }; + + var _reduced = function _reduced(x) { + return x && x['@@transducer/reduced'] ? x : { + '@@transducer/value': x, + '@@transducer/reduced': true + }; + }; + + /** + * Polyfill from . + */ + var _toISOString = function () { + var pad = function pad(n) { + return (n < 10 ? '0' : '') + n; + }; + return typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) { + return d.toISOString(); + } : function _toISOString(d) { + return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z'; + }; + }(); + + var _xfBase = { + init: function () { + return this.xf['@@transducer/init'](); + }, + result: function (result) { + return this.xf['@@transducer/result'](result); + } + }; + + var _xwrap = function () { + function XWrap(fn) { + this.f = fn; + } + XWrap.prototype['@@transducer/init'] = function () { + throw new Error('init not implemented on XWrap'); + }; + XWrap.prototype['@@transducer/result'] = function (acc) { + return acc; + }; + XWrap.prototype['@@transducer/step'] = function (acc, x) { + return this.f(acc, x); + }; + return function _xwrap(fn) { + return new XWrap(fn); + }; + }(); + + var _assign = typeof Object.assign === 'function' ? Object.assign : _objectAssign; + + /** + * This checks whether a function has a [methodname] function. If it isn't an + * array it will execute that function otherwise it will default to the ramda + * implementation. + * + * @private + * @param {Function} fn ramda implemtation + * @param {String} methodname property to check for a custom implementation + * @return {Object} Whatever the return value of the method is. + */ + var _checkForMethod = function _checkForMethod(methodname, fn) { + return function () { + var length = arguments.length; + if (length === 0) { + return fn(); + } + var obj = arguments[length - 1]; + return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1)); + }; + }; + + /** + * Optimized internal one-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ + var _curry1 = function _curry1(fn) { + return function f1(a) { + if (arguments.length === 0 || _isPlaceholder(a)) { + return f1; + } else { + return fn.apply(this, arguments); + } + }; + }; + + /** + * Optimized internal two-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ + var _curry2 = function _curry2(fn) { + return function f2(a, b) { + switch (arguments.length) { + case 0: + return f2; + case 1: + return _isPlaceholder(a) ? f2 : _curry1(function (_b) { + return fn(a, _b); + }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) { + return fn(_a, b); + }) : _isPlaceholder(b) ? _curry1(function (_b) { + return fn(a, _b); + }) : fn(a, b); + } + }; + }; + + /** + * Optimized internal three-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ + var _curry3 = function _curry3(fn) { + return function f3(a, b, c) { + switch (arguments.length) { + case 0: + return f3; + case 1: + return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) { + return fn(a, _b, _c); + }); + case 2: + return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) { + return fn(_a, b, _c); + }) : _isPlaceholder(b) ? _curry2(function (_b, _c) { + return fn(a, _b, _c); + }) : _curry1(function (_c) { + return fn(a, b, _c); + }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) { + return fn(_a, _b, c); + }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) { + return fn(_a, b, _c); + }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) { + return fn(a, _b, _c); + }) : _isPlaceholder(a) ? _curry1(function (_a) { + return fn(_a, b, c); + }) : _isPlaceholder(b) ? _curry1(function (_b) { + return fn(a, _b, c); + }) : _isPlaceholder(c) ? _curry1(function (_c) { + return fn(a, b, _c); + }) : fn(a, b, c); + } + }; + }; + + /** + * Internal curryN function. + * + * @private + * @category Function + * @param {Number} length The arity of the curried function. + * @param {Array} received An array of arguments received thus far. + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ + var _curryN = function _curryN(length, received, fn) { + return function () { + var combined = []; + var argsIdx = 0; + var left = length; + var combinedIdx = 0; + while (combinedIdx < received.length || argsIdx < arguments.length) { + var result; + if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) { + result = received[combinedIdx]; + } else { + result = arguments[argsIdx]; + argsIdx += 1; + } + combined[combinedIdx] = result; + if (!_isPlaceholder(result)) { + left -= 1; + } + combinedIdx += 1; + } + return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn)); + }; + }; + + /** + * Returns a function that dispatches with different strategies based on the + * object in list position (last argument). If it is an array, executes [fn]. + * Otherwise, if it has a function with one of the given method names, it will + * execute that function (functor case). Otherwise, if it is a transformer, + * uses transducer [xf] to return a new transformer (transducer case). + * Otherwise, it will default to executing [fn]. + * + * @private + * @param {Array} methodNames properties to check for a custom implementation + * @param {Function} xf transducer to initialize if object is transformer + * @param {Function} fn default ramda implementation + * @return {Function} A function that dispatches on object in list position + */ + var _dispatchable = function _dispatchable(methodNames, xf, fn) { + return function () { + if (arguments.length === 0) { + return fn(); + } + var args = Array.prototype.slice.call(arguments, 0); + var obj = args.pop(); + if (!_isArray(obj)) { + var idx = 0; + while (idx < methodNames.length) { + if (typeof obj[methodNames[idx]] === 'function') { + return obj[methodNames[idx]].apply(obj, args); + } + idx += 1; + } + if (_isTransformer(obj)) { + var transducer = xf.apply(null, args); + return transducer(obj); + } + } + return fn.apply(this, arguments); + }; + }; + + /** + * Tests whether or not an object is similar to an array. + * + * @private + * @category Type + * @category List + * @sig * -> Boolean + * @param {*} x The object to test. + * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise. + * @example + * + * _isArrayLike([]); //=> true + * _isArrayLike(true); //=> false + * _isArrayLike({}); //=> false + * _isArrayLike({length: 10}); //=> false + * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true + */ + var _isArrayLike = _curry1(function isArrayLike(x) { + if (_isArray(x)) { + return true; + } + if (!x) { + return false; + } + if (typeof x !== 'object') { + return false; + } + if (_isString(x)) { + return false; + } + if (x.nodeType === 1) { + return !!x.length; + } + if (x.length === 0) { + return true; + } + if (x.length > 0) { + return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1); + } + return false; + }); + + /** + * `_makeFlat` is a helper function that returns a one-level or fully recursive + * function based on the flag passed in. + * + * @private + */ + var _makeFlat = function _makeFlat(recursive) { + return function flatt(list) { + var value, jlen, j; + var result = []; + var idx = 0; + var ilen = list.length; + while (idx < ilen) { + if (_isArrayLike(list[idx])) { + value = recursive ? flatt(list[idx]) : list[idx]; + j = 0; + jlen = value.length; + while (j < jlen) { + result[result.length] = value[j]; + j += 1; + } + } else { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; + }; + }; + + var _xall = function () { + function XAll(f, xf) { + this.xf = xf; + this.f = f; + this.all = true; + } + XAll.prototype['@@transducer/init'] = _xfBase.init; + XAll.prototype['@@transducer/result'] = function (result) { + if (this.all) { + result = this.xf['@@transducer/step'](result, true); + } + return this.xf['@@transducer/result'](result); + }; + XAll.prototype['@@transducer/step'] = function (result, input) { + if (!this.f(input)) { + this.all = false; + result = _reduced(this.xf['@@transducer/step'](result, false)); + } + return result; + }; + return _curry2(function _xall(f, xf) { + return new XAll(f, xf); + }); + }(); + + var _xany = function () { + function XAny(f, xf) { + this.xf = xf; + this.f = f; + this.any = false; + } + XAny.prototype['@@transducer/init'] = _xfBase.init; + XAny.prototype['@@transducer/result'] = function (result) { + if (!this.any) { + result = this.xf['@@transducer/step'](result, false); + } + return this.xf['@@transducer/result'](result); + }; + XAny.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.any = true; + result = _reduced(this.xf['@@transducer/step'](result, true)); + } + return result; + }; + return _curry2(function _xany(f, xf) { + return new XAny(f, xf); + }); + }(); + + var _xaperture = function () { + function XAperture(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XAperture.prototype['@@transducer/init'] = _xfBase.init; + XAperture.prototype['@@transducer/result'] = function (result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XAperture.prototype['@@transducer/step'] = function (result, input) { + this.store(input); + return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; + }; + XAperture.prototype.store = function (input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + XAperture.prototype.getCopy = function () { + return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos)); + }; + return _curry2(function _xaperture(n, xf) { + return new XAperture(n, xf); + }); + }(); + + var _xdrop = function () { + function XDrop(n, xf) { + this.xf = xf; + this.n = n; + } + XDrop.prototype['@@transducer/init'] = _xfBase.init; + XDrop.prototype['@@transducer/result'] = _xfBase.result; + XDrop.prototype['@@transducer/step'] = function (result, input) { + if (this.n > 0) { + this.n -= 1; + return result; + } + return this.xf['@@transducer/step'](result, input); + }; + return _curry2(function _xdrop(n, xf) { + return new XDrop(n, xf); + }); + }(); + + var _xdropLast = function () { + function XDropLast(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XDropLast.prototype['@@transducer/init'] = _xfBase.init; + XDropLast.prototype['@@transducer/result'] = function (result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XDropLast.prototype['@@transducer/step'] = function (result, input) { + if (this.full) { + result = this.xf['@@transducer/step'](result, this.acc[this.pos]); + } + this.store(input); + return result; + }; + XDropLast.prototype.store = function (input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + return _curry2(function _xdropLast(n, xf) { + return new XDropLast(n, xf); + }); + }(); + + var _xdropRepeatsWith = function () { + function XDropRepeatsWith(pred, xf) { + this.xf = xf; + this.pred = pred; + this.lastValue = undefined; + this.seenFirstValue = false; + } + XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init; + XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result; + XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) { + var sameAsLast = false; + if (!this.seenFirstValue) { + this.seenFirstValue = true; + } else if (this.pred(this.lastValue, input)) { + sameAsLast = true; + } + this.lastValue = input; + return sameAsLast ? result : this.xf['@@transducer/step'](result, input); + }; + return _curry2(function _xdropRepeatsWith(pred, xf) { + return new XDropRepeatsWith(pred, xf); + }); + }(); + + var _xdropWhile = function () { + function XDropWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XDropWhile.prototype['@@transducer/init'] = _xfBase.init; + XDropWhile.prototype['@@transducer/result'] = _xfBase.result; + XDropWhile.prototype['@@transducer/step'] = function (result, input) { + if (this.f) { + if (this.f(input)) { + return result; + } + this.f = null; + } + return this.xf['@@transducer/step'](result, input); + }; + return _curry2(function _xdropWhile(f, xf) { + return new XDropWhile(f, xf); + }); + }(); + + var _xfilter = function () { + function XFilter(f, xf) { + this.xf = xf; + this.f = f; + } + XFilter.prototype['@@transducer/init'] = _xfBase.init; + XFilter.prototype['@@transducer/result'] = _xfBase.result; + XFilter.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : result; + }; + return _curry2(function _xfilter(f, xf) { + return new XFilter(f, xf); + }); + }(); + + var _xfind = function () { + function XFind(f, xf) { + this.xf = xf; + this.f = f; + this.found = false; + } + XFind.prototype['@@transducer/init'] = _xfBase.init; + XFind.prototype['@@transducer/result'] = function (result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, void 0); + } + return this.xf['@@transducer/result'](result); + }; + XFind.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, input)); + } + return result; + }; + return _curry2(function _xfind(f, xf) { + return new XFind(f, xf); + }); + }(); + + var _xfindIndex = function () { + function XFindIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.found = false; + } + XFindIndex.prototype['@@transducer/init'] = _xfBase.init; + XFindIndex.prototype['@@transducer/result'] = function (result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, -1); + } + return this.xf['@@transducer/result'](result); + }; + XFindIndex.prototype['@@transducer/step'] = function (result, input) { + this.idx += 1; + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, this.idx)); + } + return result; + }; + return _curry2(function _xfindIndex(f, xf) { + return new XFindIndex(f, xf); + }); + }(); + + var _xfindLast = function () { + function XFindLast(f, xf) { + this.xf = xf; + this.f = f; + } + XFindLast.prototype['@@transducer/init'] = _xfBase.init; + XFindLast.prototype['@@transducer/result'] = function (result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last)); + }; + XFindLast.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.last = input; + } + return result; + }; + return _curry2(function _xfindLast(f, xf) { + return new XFindLast(f, xf); + }); + }(); + + var _xfindLastIndex = function () { + function XFindLastIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.lastIdx = -1; + } + XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init; + XFindLastIndex.prototype['@@transducer/result'] = function (result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx)); + }; + XFindLastIndex.prototype['@@transducer/step'] = function (result, input) { + this.idx += 1; + if (this.f(input)) { + this.lastIdx = this.idx; + } + return result; + }; + return _curry2(function _xfindLastIndex(f, xf) { + return new XFindLastIndex(f, xf); + }); + }(); + + var _xmap = function () { + function XMap(f, xf) { + this.xf = xf; + this.f = f; + } + XMap.prototype['@@transducer/init'] = _xfBase.init; + XMap.prototype['@@transducer/result'] = _xfBase.result; + XMap.prototype['@@transducer/step'] = function (result, input) { + return this.xf['@@transducer/step'](result, this.f(input)); + }; + return _curry2(function _xmap(f, xf) { + return new XMap(f, xf); + }); + }(); + + var _xreduceBy = function () { + function XReduceBy(valueFn, valueAcc, keyFn, xf) { + this.valueFn = valueFn; + this.valueAcc = valueAcc; + this.keyFn = keyFn; + this.xf = xf; + this.inputs = {}; + } + XReduceBy.prototype['@@transducer/init'] = _xfBase.init; + XReduceBy.prototype['@@transducer/result'] = function (result) { + var key; + for (key in this.inputs) { + if (_has(key, this.inputs)) { + result = this.xf['@@transducer/step'](result, this.inputs[key]); + if (result['@@transducer/reduced']) { + result = result['@@transducer/value']; + break; + } + } + } + this.inputs = null; + return this.xf['@@transducer/result'](result); + }; + XReduceBy.prototype['@@transducer/step'] = function (result, input) { + var key = this.keyFn(input); + this.inputs[key] = this.inputs[key] || [ + key, + this.valueAcc + ]; + this.inputs[key][1] = this.valueFn(this.inputs[key][1], input); + return result; + }; + return _curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) { + return new XReduceBy(valueFn, valueAcc, keyFn, xf); + }); + }(); + + var _xtake = function () { + function XTake(n, xf) { + this.xf = xf; + this.n = n; + this.i = 0; + } + XTake.prototype['@@transducer/init'] = _xfBase.init; + XTake.prototype['@@transducer/result'] = _xfBase.result; + XTake.prototype['@@transducer/step'] = function (result, input) { + this.i += 1; + var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input); + return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret; + }; + return _curry2(function _xtake(n, xf) { + return new XTake(n, xf); + }); + }(); + + var _xtakeWhile = function () { + function XTakeWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XTakeWhile.prototype['@@transducer/init'] = _xfBase.init; + XTakeWhile.prototype['@@transducer/result'] = _xfBase.result; + XTakeWhile.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result); + }; + return _curry2(function _xtakeWhile(f, xf) { + return new XTakeWhile(f, xf); + }); + }(); + + /** + * Adds two values. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a + * @param {Number} b + * @return {Number} + * @see R.subtract + * @example + * + * R.add(2, 3); //=> 5 + * R.add(7)(10); //=> 17 + */ + var add = _curry2(function add(a, b) { + return Number(a) + Number(b); + }); + + /** + * Applies a function to the value at the given index of an array, returning a + * new copy of the array with the element at the given index replaced with the + * result of the function application. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig (a -> a) -> Number -> [a] -> [a] + * @param {Function} fn The function to apply. + * @param {Number} idx The index. + * @param {Array|Arguments} list An array-like object whose value + * at the supplied index will be replaced. + * @return {Array} A copy of the supplied array-like object with + * the element at index `idx` replaced with the value + * returned by applying `fn` to the existing element. + * @see R.update + * @example + * + * R.adjust(R.add(10), 1, [1, 2, 3]); //=> [1, 12, 3] + * R.adjust(R.add(10))(1)([1, 2, 3]); //=> [1, 12, 3] + * @symb R.adjust(f, -1, [a, b]) = [a, f(b)] + * @symb R.adjust(f, 0, [a, b]) = [f(a), b] + */ + var adjust = _curry3(function adjust(fn, idx, list) { + if (idx >= list.length || idx < -list.length) { + return list; + } + var start = idx < 0 ? list.length : 0; + var _idx = start + idx; + var _list = _concat(list); + _list[_idx] = fn(list[_idx]); + return _list; + }); + + /** + * Returns `true` if all elements of the list match the predicate, `false` if + * there are any that don't. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by every element, `false` + * otherwise. + * @see R.any, R.none, R.transduce + * @example + * + * var equals3 = R.equals(3); + * R.all(equals3)([3, 3, 3, 3]); //=> true + * R.all(equals3)([3, 3, 1, 3]); //=> false + */ + var all = _curry2(_dispatchable(['all'], _xall, function all(fn, list) { + var idx = 0; + while (idx < list.length) { + if (!fn(list[idx])) { + return false; + } + idx += 1; + } + return true; + })); + + /** + * Returns a function that always returns the given value. Note that for + * non-primitives the value returned is a reference to the original value. + * + * This function is known as `const`, `constant`, or `K` (for K combinator) in + * other languages and libraries. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> (* -> a) + * @param {*} val The value to wrap in a function + * @return {Function} A Function :: * -> val. + * @example + * + * var t = R.always('Tee'); + * t(); //=> 'Tee' + */ + var always = _curry1(function always(val) { + return function () { + return val; + }; + }); + + /** + * Returns `true` if both arguments are `true`; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if it is falsy, otherwise the second argument. + * @see R.both + * @example + * + * R.and(true, true); //=> true + * R.and(true, false); //=> false + * R.and(false, true); //=> false + * R.and(false, false); //=> false + */ + var and = _curry2(function and(a, b) { + return a && b; + }); + + /** + * Returns `true` if at least one of elements of the list match the predicate, + * `false` otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false` + * otherwise. + * @see R.all, R.none, R.transduce + * @example + * + * var lessThan0 = R.flip(R.lt)(0); + * var lessThan2 = R.flip(R.lt)(2); + * R.any(lessThan0)([1, 2]); //=> false + * R.any(lessThan2)([1, 2]); //=> true + */ + var any = _curry2(_dispatchable(['any'], _xany, function any(fn, list) { + var idx = 0; + while (idx < list.length) { + if (fn(list[idx])) { + return true; + } + idx += 1; + } + return false; + })); + + /** + * Returns a new list, composed of n-tuples of consecutive elements. If `n` is + * greater than the length of the list, an empty list is returned. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @param {Number} n The size of the tuples to create + * @param {Array} list The list to split into `n`-length tuples + * @return {Array} The resulting list of `n`-length tuples + * @see R.transduce + * @example + * + * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] + * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] + * R.aperture(7, [1, 2, 3, 4, 5]); //=> [] + */ + var aperture = _curry2(_dispatchable([], _xaperture, _aperture)); + + /** + * Returns a new list containing the contents of the given list, followed by + * the given element. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The element to add to the end of the new list. + * @param {Array} list The list of elements to add a new item to. + * list. + * @return {Array} A new list containing the elements of the old list followed by `el`. + * @see R.prepend + * @example + * + * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests'] + * R.append('tests', []); //=> ['tests'] + * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] + */ + var append = _curry2(function append(el, list) { + return _concat(list, [el]); + }); + + /** + * Applies function `fn` to the argument list `args`. This is useful for + * creating a fixed-arity function from a variadic function. `fn` should be a + * bound function if context is significant. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> a) -> [*] -> a + * @param {Function} fn The function which will be called with `args` + * @param {Array} args The arguments to call `fn` with + * @return {*} result The result, equivalent to `fn(...args)` + * @see R.call, R.unapply + * @example + * + * var nums = [1, 2, 3, -99, 42, 6, 7]; + * R.apply(Math.max, nums); //=> 42 + * @symb R.apply(f, [a, b, c]) = f(a, b, c) + */ + var apply = _curry2(function apply(fn, args) { + return fn.apply(this, args); + }); + + /** + * Makes an ascending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0` + * @see R.descend + * @example + * + * var byAge = R.ascend(R.prop('age')); + * var people = [ + * // ... + * ]; + * var peopleByYoungestFirst = R.sort(byAge, people); + */ + var ascend = _curry3(function ascend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; + }); + + /** + * Makes a shallow clone of an object, setting or overriding the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig String -> a -> {k: v} -> {k: v} + * @param {String} prop The property name to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except for the changed property. + * @see R.dissoc + * @example + * + * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} + */ + var assoc = _curry3(function assoc(prop, val, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + result[prop] = val; + return result; + }); + + /** + * Creates a function that is bound to a context. + * Note: `R.bind` does not provide the additional argument-binding capabilities of + * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Function + * @category Object + * @sig (* -> *) -> {*} -> (* -> *) + * @param {Function} fn The function to bind to context + * @param {Object} thisObj The context to bind `fn` to + * @return {Function} A function that will execute in the context of `thisObj`. + * @see R.partial + * @example + * + * var log = R.bind(console.log, console); + * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} + * // logs {a: 2} + * @symb R.bind(f, o)(a, b) = f.call(o, a, b) + */ + var bind = _curry2(function bind(fn, thisObj) { + return _arity(fn.length, function () { + return fn.apply(thisObj, arguments); + }); + }); + + /** + * Restricts a number to be within a range. + * + * Also works for other ordered types such as Strings and Dates. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Relation + * @sig Ord a => a -> a -> a -> a + * @param {Number} minimum The lower limit of the clamp (inclusive) + * @param {Number} maximum The upper limit of the clamp (inclusive) + * @param {Number} value Value to be clamped + * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise + * @example + * + * R.clamp(1, 10, -5) // => 1 + * R.clamp(1, 10, 15) // => 10 + * R.clamp(1, 10, 4) // => 4 + */ + var clamp = _curry3(function clamp(min, max, value) { + if (min > max) { + throw new Error('min must not be greater than max in clamp(min, max, value)'); + } + return value < min ? min : value > max ? max : value; + }); + + /** + * Makes a comparator function out of a function that reports whether the first + * element is less than the second. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a, b -> Boolean) -> (a, b -> Number) + * @param {Function} pred A predicate function of arity two which will return `true` if the first argument + * is less than the second, `false` otherwise + * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0` + * @example + * + * var byAge = R.comparator((a, b) => a.age < b.age); + * var people = [ + * // ... + * ]; + * var peopleByIncreasingAge = R.sort(byAge, people); + */ + var comparator = _curry1(function comparator(pred) { + return function (a, b) { + return pred(a, b) ? -1 : pred(b, a) ? 1 : 0; + }; + }); + + /** + * Returns a curried equivalent of the provided function, with the specified + * arity. The curried function has two unusual capabilities. First, its + * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.5.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curry + * @example + * + * var sumArgs = (...args) => R.sum(args); + * + * var curriedAddFourNumbers = R.curryN(4, sumArgs); + * var f = curriedAddFourNumbers(1, 2); + * var g = f(3); + * g(4); //=> 10 + */ + var curryN = _curry2(function curryN(length, fn) { + if (length === 1) { + return _curry1(fn); + } + return _arity(length, _curryN(length, [], fn)); + }); + + /** + * Decrements its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n - 1 + * @see R.inc + * @example + * + * R.dec(42); //=> 41 + */ + var dec = add(-1); + + /** + * Returns the second argument if it is not `null`, `undefined` or `NaN`; + * otherwise the first argument is returned. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Logic + * @sig a -> b -> a | b + * @param {a} default The default value. + * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`. + * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value + * @example + * + * var defaultTo42 = R.defaultTo(42); + * + * defaultTo42(null); //=> 42 + * defaultTo42(undefined); //=> 42 + * defaultTo42('Ramda'); //=> 'Ramda' + * // parseInt('string') results in NaN + * defaultTo42(parseInt('string')); //=> 42 + */ + var defaultTo = _curry2(function defaultTo(d, v) { + return v == null || v !== v ? d : v; + }); + + /** + * Makes a descending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0` + * @see R.ascend + * @example + * + * var byAge = R.descend(R.prop('age')); + * var people = [ + * // ... + * ]; + * var peopleByOldestFirst = R.sort(byAge, people); + */ + var descend = _curry3(function descend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa > bb ? -1 : aa < bb ? 1 : 0; + }); + + /** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith + * @example + * + * var cmp = (x, y) => x.a === y.a; + * var l1 = [{a: 1}, {a: 2}, {a: 3}]; + * var l2 = [{a: 3}, {a: 4}]; + * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] + */ + var differenceWith = _curry3(function differenceWith(pred, first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!_containsWith(pred, first[idx], second) && !_containsWith(pred, first[idx], out)) { + out.push(first[idx]); + } + idx += 1; + } + return out; + }); + + /** + * Returns a new object that does not contain a `prop` property. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Object + * @sig String -> {k: v} -> {k: v} + * @param {String} prop The name of the property to dissociate + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original but without the specified property + * @see R.assoc + * @example + * + * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} + */ + var dissoc = _curry2(function dissoc(prop, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + delete result[prop]; + return result; + }); + + /** + * Divides two numbers. Equivalent to `a / b`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a / b`. + * @see R.multiply + * @example + * + * R.divide(71, 100); //=> 0.71 + * + * var half = R.divide(R.__, 2); + * half(42); //=> 21 + * + * var reciprocal = R.divide(1); + * reciprocal(4); //=> 0.25 + */ + var divide = _curry2(function divide(a, b) { + return a / b; + }); + + /** + * Returns a new list excluding the leading elements of a given list which + * satisfy the supplied predicate function. It passes each value to the supplied + * predicate function, skipping elements while the predicate function returns + * `true`. The predicate function is applied to one argument: *(value)*. + * + * Dispatches to the `dropWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.takeWhile, R.transduce, R.addIndex + * @example + * + * var lteTwo = x => x <= 2; + * + * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] + */ + var dropWhile = _curry2(_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, list) { + var idx = 0; + var len = list.length; + while (idx < len && pred(list[idx])) { + idx += 1; + } + return Array.prototype.slice.call(list, idx); + })); + + /** + * Returns the empty value of its argument's type. Ramda defines the empty + * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other + * types are supported if they define `.empty` and/or + * `.prototype.empty`. + * + * Dispatches to the `empty` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> a + * @param {*} x + * @return {*} + * @example + * + * R.empty(Just(42)); //=> Nothing() + * R.empty([1, 2, 3]); //=> [] + * R.empty('unicorns'); //=> '' + * R.empty({x: 1, y: 2}); //=> {} + */ + // else + var empty = _curry1(function empty(x) { + return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () { + return arguments; + }() : // else + void 0; + }); + + /** + * Creates a new object by recursively evolving a shallow copy of `object`, + * according to the `transformation` functions. All non-primitive properties + * are copied by reference. + * + * A `transformation` function will not be invoked if its corresponding key + * does not exist in the evolved object. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {k: (v -> v)} -> {k: v} -> {k: v} + * @param {Object} transformations The object specifying transformation functions to apply + * to the object. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * var tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123}; + * var transformations = { + * firstName: R.trim, + * lastName: R.trim, // Will not get invoked. + * data: {elapsed: R.add(1), remaining: R.add(-1)} + * }; + * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} + */ + var evolve = _curry2(function evolve(transformations, object) { + var result = {}; + var transformation, key, type; + for (key in object) { + transformation = transformations[key]; + type = typeof transformation; + result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key]; + } + return result; + }); + + /** + * Returns the first element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Dispatches to the `find` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * var xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.find(R.propEq('a', 2))(xs); //=> {a: 2} + * R.find(R.propEq('a', 4))(xs); //=> undefined + */ + var find = _curry2(_dispatchable(['find'], _xfind, function find(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return list[idx]; + } + idx += 1; + } + })); + + /** + * Returns the index of the first element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * var xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.findIndex(R.propEq('a', 2))(xs); //=> 1 + * R.findIndex(R.propEq('a', 4))(xs); //=> -1 + */ + var findIndex = _curry2(_dispatchable([], _xfindIndex, function findIndex(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return idx; + } + idx += 1; + } + return -1; + })); + + /** + * Returns the last element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * var xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1} + * R.findLast(R.propEq('a', 4))(xs); //=> undefined + */ + var findLast = _curry2(_dispatchable([], _xfindLast, function findLast(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return list[idx]; + } + idx -= 1; + } + })); + + /** + * Returns the index of the last element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * var xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1 + * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 + */ + var findLastIndex = _curry2(_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return idx; + } + idx -= 1; + } + return -1; + })); + + /** + * Returns a new list by pulling every item out of it (and all its sub-arrays) + * and putting them in a new array, depth-first. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] + * @param {Array} list The array to consider. + * @return {Array} The flattened list. + * @see R.unnest + * @example + * + * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); + * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + */ + var flatten = _curry1(_makeFlat(true)); + + /** + * Iterate over an input `list`, calling a provided function `fn` for each + * element in the list. + * + * `fn` receives one argument: *(value)*. + * + * Note: `R.forEach` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.forEach` method. For more + * details on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description + * + * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns + * the original array. In some libraries this function is named `each`. + * + * Dispatches to the `forEach` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> *) -> [a] -> [a] + * @param {Function} fn The function to invoke. Receives one argument, `value`. + * @param {Array} list The list to iterate over. + * @return {Array} The original list. + * @see R.addIndex + * @example + * + * var printXPlusFive = x => console.log(x + 5); + * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] + * // logs 6 + * // logs 7 + * // logs 8 + * @symb R.forEach(f, [a, b, c]) = [a, b, c] + */ + var forEach = _curry2(_checkForMethod('forEach', function forEach(fn, list) { + var len = list.length; + var idx = 0; + while (idx < len) { + fn(list[idx]); + idx += 1; + } + return list; + })); + + /** + * Creates a new object from a list key-value pairs. If a key appears in + * multiple pairs, the rightmost pair is included in the object. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [[k,v]] -> {k: v} + * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object. + * @return {Object} The object made by pairing up `keys` and `values`. + * @see R.toPairs, R.pair + * @example + * + * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} + */ + var fromPairs = _curry1(function fromPairs(pairs) { + var result = {}; + var idx = 0; + while (idx < pairs.length) { + result[pairs[idx][0]] = pairs[idx][1]; + idx += 1; + } + return result; + }); + + /** + * Takes a list and returns a list of lists where each sublist's elements are + * all satisfied pairwise comparison according to the provided function. + * Only adjacent elements are passed to the comparison function. + * + * @func + * @memberOf R + * @since v0.21.0 + * @category List + * @sig ((a, a) → Boolean) → [a] → [[a]] + * @param {Function} fn Function for determining whether two given (adjacent) + * elements should be in the same group + * @param {Array} list The array to group. Also accepts a string, which will be + * treated as a list of characters. + * @return {List} A list that contains sublists of elements, + * whose concatenations are equal to the original list. + * @example + * + * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] + * + * R.groupWith(R.eqBy(isVowel), 'aestiou') + * //=> ['ae', 'st', 'iou'] + */ + var groupWith = _curry2(function (fn, list) { + var res = []; + var idx = 0; + var len = list.length; + while (idx < len) { + var nextidx = idx + 1; + while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) { + nextidx += 1; + } + res.push(list.slice(idx, nextidx)); + idx = nextidx; + } + return res; + }); + + /** + * Returns `true` if the first argument is greater than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.lt + * @example + * + * R.gt(2, 1); //=> true + * R.gt(2, 2); //=> false + * R.gt(2, 3); //=> false + * R.gt('a', 'z'); //=> false + * R.gt('z', 'a'); //=> true + */ + var gt = _curry2(function gt(a, b) { + return a > b; + }); + + /** + * Returns `true` if the first argument is greater than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.lte + * @example + * + * R.gte(2, 1); //=> true + * R.gte(2, 2); //=> true + * R.gte(2, 3); //=> false + * R.gte('a', 'z'); //=> false + * R.gte('z', 'a'); //=> true + */ + var gte = _curry2(function gte(a, b) { + return a >= b; + }); + + /** + * Returns whether or not an object has an own property with the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * var hasName = R.has('name'); + * hasName({name: 'alice'}); //=> true + * hasName({name: 'bob'}); //=> true + * hasName({}); //=> false + * + * var point = {x: 0, y: 0}; + * var pointHas = R.has(R.__, point); + * pointHas('x'); //=> true + * pointHas('y'); //=> true + * pointHas('z'); //=> false + */ + var has = _curry2(_has); + + /** + * Returns whether or not an object or its prototype chain has a property with + * the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * function Rectangle(width, height) { + * this.width = width; + * this.height = height; + * } + * Rectangle.prototype.area = function() { + * return this.width * this.height; + * }; + * + * var square = new Rectangle(2, 2); + * R.hasIn('width', square); //=> true + * R.hasIn('area', square); //=> true + */ + var hasIn = _curry2(function hasIn(prop, obj) { + return prop in obj; + }); + + /** + * Returns true if its arguments are identical, false otherwise. Values are + * identical if they reference the same memory. `NaN` is identical to `NaN`; + * `0` and `-0` are not identical. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * var o = {}; + * R.identical(o, o); //=> true + * R.identical(1, 1); //=> true + * R.identical(1, '1'); //=> false + * R.identical([], []); //=> false + * R.identical(0, -0); //=> false + * R.identical(NaN, NaN); //=> true + */ + // SameValue algorithm + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + // Step 6.a: NaN == NaN + var identical = _curry2(function identical(a, b) { + // SameValue algorithm + if (a === b) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return a !== 0 || 1 / a === 1 / b; + } else { + // Step 6.a: NaN == NaN + return a !== a && b !== b; + } + }); + + /** + * A function that does nothing but return the parameter supplied to it. Good + * as a default or placeholder function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> a + * @param {*} x The value to return. + * @return {*} The input value, `x`. + * @example + * + * R.identity(1); //=> 1 + * + * var obj = {}; + * R.identity(obj) === obj; //=> true + * @symb R.identity(a) = a + */ + var identity = _curry1(_identity); + + /** + * Creates a function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *) + * @param {Function} condition A predicate function + * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value. + * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value. + * @return {Function} A new unary function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * @see R.unless, R.when + * @example + * + * var incCount = R.ifElse( + * R.has('count'), + * R.over(R.lensProp('count'), R.inc), + * R.assoc('count', 1) + * ); + * incCount({}); //=> { count: 1 } + * incCount({ count: 1 }); //=> { count: 2 } + */ + var ifElse = _curry3(function ifElse(condition, onTrue, onFalse) { + return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() { + return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments); + }); + }); + + /** + * Increments its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n + 1 + * @see R.dec + * @example + * + * R.inc(42); //=> 43 + */ + var inc = add(1); + + /** + * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list + * `xs'` comprising each of the elements of `xs` which is equal to one or more + * elements of `ys` according to `pred`. + * + * `pred` must be a binary function expecting an element from each list. + * + * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should + * not be significant, but since `xs'` is ordered the implementation guarantees + * that its values are in the same order as they appear in `xs`. Duplicates are + * not removed, so `xs'` may contain duplicates if `xs` contains duplicates. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Relation + * @sig (a -> b -> Boolean) -> [a] -> [b] -> [a] + * @param {Function} pred + * @param {Array} xs + * @param {Array} ys + * @return {Array} + * @see R.intersection + * @example + * + * R.innerJoin( + * (record, id) => record.id === id, + * [{id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'}], + * [177, 456, 999] + * ); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ + var innerJoin = _curry3(function innerJoin(pred, xs, ys) { + return _filter(function (x) { + return _containsWith(pred, x, ys); + }, xs); + }); + + /** + * Inserts the supplied element into the list, at the specified `index`. _Note that + + * this is not destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} index The position to insert the element + * @param {*} elt The element to insert into the Array + * @param {Array} list The list to insert into + * @return {Array} A new Array with `elt` inserted at `index`. + * @example + * + * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4] + */ + var insert = _curry3(function insert(idx, elt, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + var result = Array.prototype.slice.call(list, 0); + result.splice(idx, 0, elt); + return result; + }); + + /** + * Inserts the sub-list into the list, at the specified `index`. _Note that this is not + * destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig Number -> [a] -> [a] -> [a] + * @param {Number} index The position to insert the sub-list + * @param {Array} elts The sub-list to insert into the Array + * @param {Array} list The list to insert the sub-list into + * @return {Array} A new Array with `elts` inserted starting at `index`. + * @example + * + * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4] + */ + var insertAll = _curry3(function insertAll(idx, elts, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx)); + }); + + /** + * Creates a new list with the separator interposed between elements. + * + * Dispatches to the `intersperse` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} separator The element to add to the list. + * @param {Array} list The list to be interposed. + * @return {Array} The new list. + * @example + * + * R.intersperse('n', ['ba', 'a', 'a']); //=> ['ba', 'n', 'a', 'n', 'a'] + */ + var intersperse = _curry2(_checkForMethod('intersperse', function intersperse(separator, list) { + var out = []; + var idx = 0; + var length = list.length; + while (idx < length) { + if (idx === length - 1) { + out.push(list[idx]); + } else { + out.push(list[idx], separator); + } + idx += 1; + } + return out; + })); + + /** + * See if an object (`val`) is an instance of the supplied constructor. This + * function will check up the inheritance chain, if any. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Type + * @sig (* -> {*}) -> a -> Boolean + * @param {Object} ctor A constructor + * @param {*} val The value to test + * @return {Boolean} + * @example + * + * R.is(Object, {}); //=> true + * R.is(Number, 1); //=> true + * R.is(Object, 1); //=> false + * R.is(String, 's'); //=> true + * R.is(String, new String('')); //=> true + * R.is(Object, new String('')); //=> true + * R.is(Object, 's'); //=> false + * R.is(Number, {}); //=> false + */ + var is = _curry2(function is(Ctor, val) { + return val != null && val.constructor === Ctor || val instanceof Ctor; + }); + + /** + * Checks if the input value is `null` or `undefined`. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Type + * @sig * -> Boolean + * @param {*} x The value to test. + * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`. + * @example + * + * R.isNil(null); //=> true + * R.isNil(undefined); //=> true + * R.isNil(0); //=> false + * R.isNil([]); //=> false + */ + var isNil = _curry1(function isNil(x) { + return x == null; + }); + + /** + * Returns a list containing the names of all the enumerable own properties of + * the supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own properties. + * @see R.keysIn, R.values + * @example + * + * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] + */ + // cover IE < 9 keys issues + // Safari bug + var keys = function () { + // cover IE < 9 keys issues + var hasEnumBug = !{ toString: null }.propertyIsEnumerable('toString'); + var nonEnumerableProps = [ + 'constructor', + 'valueOf', + 'isPrototypeOf', + 'toString', + 'propertyIsEnumerable', + 'hasOwnProperty', + 'toLocaleString' + ]; + // Safari bug + var hasArgsEnumBug = function () { + 'use strict'; + return arguments.propertyIsEnumerable('length'); + }(); + var contains = function contains(list, item) { + var idx = 0; + while (idx < list.length) { + if (list[idx] === item) { + return true; + } + idx += 1; + } + return false; + }; + return typeof Object.keys === 'function' && !hasArgsEnumBug ? _curry1(function keys(obj) { + return Object(obj) !== obj ? [] : Object.keys(obj); + }) : _curry1(function keys(obj) { + if (Object(obj) !== obj) { + return []; + } + var prop, nIdx; + var ks = []; + var checkArgsLength = hasArgsEnumBug && _isArguments(obj); + for (prop in obj) { + if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) { + ks[ks.length] = prop; + } + } + if (hasEnumBug) { + nIdx = nonEnumerableProps.length - 1; + while (nIdx >= 0) { + prop = nonEnumerableProps[nIdx]; + if (_has(prop, obj) && !contains(ks, prop)) { + ks[ks.length] = prop; + } + nIdx -= 1; + } + } + return ks; + }); + }(); + + /** + * Returns a list containing the names of all the properties of the supplied + * object, including prototype properties. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own and prototype properties. + * @see R.keys, R.valuesIn + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.keysIn(f); //=> ['x', 'y'] + */ + var keysIn = _curry1(function keysIn(obj) { + var prop; + var ks = []; + for (prop in obj) { + ks[ks.length] = prop; + } + return ks; + }); + + /** + * Returns the number of elements in the array by returning `list.length`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [a] -> Number + * @param {Array} list The array to inspect. + * @return {Number} The length of the array. + * @example + * + * R.length([]); //=> 0 + * R.length([1, 2, 3]); //=> 3 + */ + var length = _curry1(function length(list) { + return list != null && _isNumber(list.length) ? list.length : NaN; + }); + + /** + * Returns `true` if the first argument is less than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.gt + * @example + * + * R.lt(2, 1); //=> false + * R.lt(2, 2); //=> false + * R.lt(2, 3); //=> true + * R.lt('a', 'z'); //=> true + * R.lt('z', 'a'); //=> false + */ + var lt = _curry2(function lt(a, b) { + return a < b; + }); + + /** + * Returns `true` if the first argument is less than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.gte + * @example + * + * R.lte(2, 1); //=> false + * R.lte(2, 2); //=> true + * R.lte(2, 3); //=> true + * R.lte('a', 'z'); //=> true + * R.lte('z', 'a'); //=> false + */ + var lte = _curry2(function lte(a, b) { + return a <= b; + }); + + /** + * The `mapAccum` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from left to right, and returning a final value of this + * accumulator together with the new list. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccumRight + * @example + * + * var digits = ['1', '2', '3', '4']; + * var appender = (a, b) => [a + b, a + b]; + * + * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']] + * @symb R.mapAccum(f, a, [b, c, d]) = [ + * f(f(f(a, b)[0], c)[0], d)[0], + * [ + * f(a, b)[1], + * f(f(a, b)[0], c)[1], + * f(f(f(a, b)[0], c)[0], d)[1] + * ] + * ] + */ + var mapAccum = _curry3(function mapAccum(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = []; + var tuple = [acc]; + while (idx < len) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx += 1; + } + return [ + tuple[0], + result + ]; + }); + + /** + * The `mapAccumRight` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from right to left, and returning a final value of this + * accumulator together with the new list. + * + * Similar to [`mapAccum`](#mapAccum), except moves through the input list from + * the right to the left. + * + * The iterator function receives two arguments, *value* and *acc*, and should + * return a tuple *[value, acc]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (x-> acc -> (y, acc)) -> acc -> [x] -> ([y], acc) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccum + * @example + * + * var digits = ['1', '2', '3', '4']; + * var append = (a, b) => [a + b, a + b]; + * + * R.mapAccumRight(append, 5, digits); //=> [['12345', '2345', '345', '45'], '12345'] + * @symb R.mapAccumRight(f, a, [b, c, d]) = [ + * [ + * f(b, f(c, f(d, a)[0])[0])[1], + * f(c, f(d, a)[0])[1], + * f(d, a)[1], + * ] + * f(b, f(c, f(d, a)[0])[0])[0], + * ] + */ + var mapAccumRight = _curry3(function mapAccumRight(fn, acc, list) { + var idx = list.length - 1; + var result = []; + var tuple = [acc]; + while (idx >= 0) { + tuple = fn(list[idx], tuple[0]); + result[idx] = tuple[1]; + idx -= 1; + } + return [ + result, + tuple[0] + ]; + }); + + /** + * Tests a regular expression against a String. Note that this function will + * return an empty array when there are no matches. This differs from + * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) + * which returns `null` when there are no matches. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig RegExp -> String -> [String | Undefined] + * @param {RegExp} rx A regular expression. + * @param {String} str The string to match against + * @return {Array} The list of matches or empty array. + * @see R.test + * @example + * + * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] + * R.match(/a/, 'b'); //=> [] + * R.match(/a/, null); //=> TypeError: null does not have a method named "match" + */ + var match = _curry2(function match(rx, str) { + return str.match(rx) || []; + }); + + /** + * `mathMod` behaves like the modulo operator should mathematically, unlike the + * `%` operator (and by extension, [`R.modulo`](#modulo)). So while + * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer + * arguments, and returns NaN when the modulus is zero or negative. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} m The dividend. + * @param {Number} p the modulus. + * @return {Number} The result of `b mod a`. + * @see R.modulo + * @example + * + * R.mathMod(-17, 5); //=> 3 + * R.mathMod(17, 5); //=> 2 + * R.mathMod(17, -5); //=> NaN + * R.mathMod(17, 0); //=> NaN + * R.mathMod(17.2, 5); //=> NaN + * R.mathMod(17, 5.3); //=> NaN + * + * var clock = R.mathMod(R.__, 12); + * clock(15); //=> 3 + * clock(24); //=> 0 + * + * var seventeenMod = R.mathMod(17); + * seventeenMod(3); //=> 2 + * seventeenMod(4); //=> 1 + * seventeenMod(10); //=> 7 + */ + var mathMod = _curry2(function mathMod(m, p) { + if (!_isInteger(m)) { + return NaN; + } + if (!_isInteger(p) || p < 1) { + return NaN; + } + return (m % p + p) % p; + }); + + /** + * Returns the larger of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.maxBy, R.min + * @example + * + * R.max(789, 123); //=> 789 + * R.max('a', 'b'); //=> 'b' + */ + var max = _curry2(function max(a, b) { + return b > a ? b : a; + }); + + /** + * Takes a function and two values, and returns whichever value produces the + * larger result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.max, R.minBy + * @example + * + * // square :: Number -> Number + * var square = n => n * n; + * + * R.maxBy(square, -3, 2); //=> -3 + * + * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 + * R.reduce(R.maxBy(square), 0, []); //=> 0 + */ + var maxBy = _curry3(function maxBy(f, a, b) { + return f(b) > f(a) ? b : a; + }); + + /** + * A customisable version of [`R.memoize`](#memoize). `memoizeWith` takes an + * additional function that will be applied to a given argument set and used to + * create the cache key under which the results of the function to be memoized + * will be stored. Care must be taken when implementing key generation to avoid + * clashes that may overwrite previous entries erroneously. + * + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (*... -> String) -> (*... -> a) -> (*... -> a) + * @param {Function} fn The function to generate the cache key. + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @see R.memoize + * @example + * + * let count = 0; + * const factorial = R.memoizeWith(R.identity, n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ + var memoizeWith = _curry2(function memoizeWith(mFn, fn) { + var cache = {}; + return _arity(fn.length, function () { + var key = mFn.apply(this, arguments); + if (!_has(key, cache)) { + cache[key] = fn.apply(this, arguments); + } + return cache[key]; + }); + }); + + /** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepRight, R.mergeWith, R.mergeWithKey + * @example + * + * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * var resetToDefault = R.merge(R.__, {x: 0}); + * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} + * @symb R.merge({ x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: 5, z: 3 } + */ + var merge = _curry2(function merge(l, r) { + return _assign({}, l, r); + }); + + /** + * Merges a list of objects together into one object. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig [{k: v}] -> {k: v} + * @param {Array} list An array of objects + * @return {Object} A merged object. + * @see R.reduce + * @example + * + * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3} + * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} + * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 } + */ + var mergeAll = _curry1(function mergeAll(list) { + return _assign.apply(null, [{}].concat(list)); + }); + + /** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the key + * and the values associated with the key in each object, with the result being + * used as the value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig (String -> a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWithKey, R.merge, R.mergeWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeWithKey(concatValues, + * { a: true, thing: 'foo', values: [10, 20] }, + * { b: true, thing: 'bar', values: [15, 35] }); + * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } + * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 } + */ + var mergeWithKey = _curry3(function mergeWithKey(fn, l, r) { + var result = {}; + var k; + for (k in l) { + if (_has(k, l)) { + result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k]; + } + } + for (k in r) { + if (_has(k, r) && !_has(k, result)) { + result[k] = r[k]; + } + } + return result; + }); + + /** + * Returns the smaller of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.minBy, R.max + * @example + * + * R.min(789, 123); //=> 123 + * R.min('a', 'b'); //=> 'a' + */ + var min = _curry2(function min(a, b) { + return b < a ? b : a; + }); + + /** + * Takes a function and two values, and returns whichever value produces the + * smaller result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.min, R.maxBy + * @example + * + * // square :: Number -> Number + * var square = n => n * n; + * + * R.minBy(square, -3, 2); //=> 2 + * + * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 + * R.reduce(R.minBy(square), Infinity, []); //=> Infinity + */ + var minBy = _curry3(function minBy(f, a, b) { + return f(b) < f(a) ? b : a; + }); + + /** + * Divides the first parameter by the second and returns the remainder. Note + * that this function preserves the JavaScript-style behavior for modulo. For + * mathematical modulo see [`mathMod`](#mathMod). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The value to the divide. + * @param {Number} b The pseudo-modulus + * @return {Number} The result of `b % a`. + * @see R.mathMod + * @example + * + * R.modulo(17, 3); //=> 2 + * // JS behavior: + * R.modulo(-17, 3); //=> -2 + * R.modulo(17, -3); //=> 2 + * + * var isOdd = R.modulo(R.__, 2); + * isOdd(42); //=> 0 + * isOdd(21); //=> 1 + */ + var modulo = _curry2(function modulo(a, b) { + return a % b; + }); + + /** + * Multiplies two numbers. Equivalent to `a * b` but curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a * b`. + * @see R.divide + * @example + * + * var double = R.multiply(2); + * var triple = R.multiply(3); + * double(3); //=> 6 + * triple(4); //=> 12 + * R.multiply(2, 5); //=> 10 + */ + var multiply = _curry2(function multiply(a, b) { + return a * b; + }); + + /** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly `n` parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} n The desired arity of the new function. + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity `n`. + * @see R.binary, R.unary + * @example + * + * var takesTwoArgs = (a, b) => [a, b]; + * + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * var takesOneArg = R.nAry(1, takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only `n` arguments are passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.nAry(0, f)(a, b) = f() + * @symb R.nAry(1, f)(a, b) = f(a) + * @symb R.nAry(2, f)(a, b) = f(a, b) + */ + var nAry = _curry2(function nAry(n, fn) { + switch (n) { + case 0: + return function () { + return fn.call(this); + }; + case 1: + return function (a0) { + return fn.call(this, a0); + }; + case 2: + return function (a0, a1) { + return fn.call(this, a0, a1); + }; + case 3: + return function (a0, a1, a2) { + return fn.call(this, a0, a1, a2); + }; + case 4: + return function (a0, a1, a2, a3) { + return fn.call(this, a0, a1, a2, a3); + }; + case 5: + return function (a0, a1, a2, a3, a4) { + return fn.call(this, a0, a1, a2, a3, a4); + }; + case 6: + return function (a0, a1, a2, a3, a4, a5) { + return fn.call(this, a0, a1, a2, a3, a4, a5); + }; + case 7: + return function (a0, a1, a2, a3, a4, a5, a6) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6); + }; + case 8: + return function (a0, a1, a2, a3, a4, a5, a6, a7) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7); + }; + case 9: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8); + }; + case 10: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); + }; + default: + throw new Error('First argument to nAry must be a non-negative integer no greater than ten'); + } + }); + + /** + * Negates its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} + * @example + * + * R.negate(42); //=> -42 + */ + var negate = _curry1(function negate(n) { + return -n; + }); + + /** + * Returns `true` if no elements of the list match the predicate, `false` + * otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise. + * @see R.all, R.any + * @example + * + * var isEven = n => n % 2 === 0; + * + * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true + * R.none(isEven, [1, 3, 5, 7, 8, 11]); //=> false + */ + var none = _curry2(_complement(_dispatchable(['any'], _xany, any))); + + /** + * A function that returns the `!` of its argument. It will return `true` when + * passed false-y value, and `false` when passed a truth-y one. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig * -> Boolean + * @param {*} a any value + * @return {Boolean} the logical inverse of passed argument. + * @see R.complement + * @example + * + * R.not(true); //=> false + * R.not(false); //=> true + * R.not(0); //=> true + * R.not(1); //=> false + */ + var not = _curry1(function not(a) { + return !a; + }); + + /** + * Returns the nth element of the given list or string. If n is negative the + * element at index length + n is returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> a | Undefined + * @sig Number -> String -> String + * @param {Number} offset + * @param {*} list + * @return {*} + * @example + * + * var list = ['foo', 'bar', 'baz', 'quux']; + * R.nth(1, list); //=> 'bar' + * R.nth(-1, list); //=> 'quux' + * R.nth(-99, list); //=> undefined + * + * R.nth(2, 'abc'); //=> 'c' + * R.nth(3, 'abc'); //=> '' + * @symb R.nth(-1, [a, b, c]) = c + * @symb R.nth(0, [a, b, c]) = a + * @symb R.nth(1, [a, b, c]) = b + */ + var nth = _curry2(function nth(offset, list) { + var idx = offset < 0 ? list.length + offset : offset; + return _isString(list) ? list.charAt(idx) : list[idx]; + }); + + /** + * Returns a function which returns its nth argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig Number -> *... -> * + * @param {Number} n + * @return {Function} + * @example + * + * R.nthArg(1)('a', 'b', 'c'); //=> 'b' + * R.nthArg(-1)('a', 'b', 'c'); //=> 'c' + * @symb R.nthArg(-1)(a, b, c) = c + * @symb R.nthArg(0)(a, b, c) = a + * @symb R.nthArg(1)(a, b, c) = b + */ + var nthArg = _curry1(function nthArg(n) { + var arity = n < 0 ? 1 : n + 1; + return curryN(arity, function () { + return nth(n, arguments); + }); + }); + + /** + * `o` is a curried composition function that returns a unary function. + * Like [`compose`](#compose), `o` performs right-to-left function composition. + * Unlike [`compose`](#compose), the rightmost function passed to `o` will be + * invoked with only one argument. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (b -> c) -> (a -> b) -> a -> c + * @param {Function} f + * @param {Function} g + * @return {Function} + * @see R.compose, R.pipe + * @example + * + * var classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + lastName + * var yellGreeting = R.o(R.toUpper, classyGreeting); + * yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.o(R.multiply(10), R.add(10))(-4) //=> 60 + * + * @symb R.o(f, g, x) = f(g(x)) + */ + var o = _curry3(function o(f, g, x) { + return f(g(x)); + }); + + /** + * Creates an object containing a single key:value pair. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @sig String -> a -> {String:a} + * @param {String} key + * @param {*} val + * @return {Object} + * @see R.pair + * @example + * + * var matchPhrases = R.compose( + * R.objOf('must'), + * R.map(R.objOf('match_phrase')) + * ); + * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} + */ + var objOf = _curry2(function objOf(key, val) { + var obj = {}; + obj[key] = val; + return obj; + }); + + /** + * Returns a singleton array containing the value provided. + * + * Note this `of` is different from the ES6 `of`; See + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> [a] + * @param {*} x any value + * @return {Array} An array wrapping `x`. + * @example + * + * R.of(null); //=> [null] + * R.of([42]); //=> [[42]] + */ + var of = _curry1(_of); + + /** + * Accepts a function `fn` and returns a function that guards invocation of + * `fn` such that `fn` can only ever be called once, no matter how many times + * the returned function is invoked. The first value calculated is returned in + * subsequent invocations. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a... -> b) -> (a... -> b) + * @param {Function} fn The function to wrap in a call-only-once wrapper. + * @return {Function} The wrapped function. + * @example + * + * var addOneOnce = R.once(x => x + 1); + * addOneOnce(10); //=> 11 + * addOneOnce(addOneOnce(50)); //=> 11 + */ + var once = _curry1(function once(fn) { + var called = false; + var result; + return _arity(fn.length, function () { + if (called) { + return result; + } + called = true; + result = fn.apply(this, arguments); + return result; + }); + }); + + /** + * Returns `true` if one or both of its arguments are `true`. Returns `false` + * if both arguments are `false`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if truthy, otherwise the second argument. + * @see R.either + * @example + * + * R.or(true, true); //=> true + * R.or(true, false); //=> true + * R.or(false, true); //=> true + * R.or(false, false); //=> false + */ + var or = _curry2(function or(a, b) { + return a || b; + }); + + /** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the result of applying the given function to + * the focused value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> (a -> a) -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var headLens = R.lensIndex(0); + * + * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz'] + */ + // `Identity` is a functor that holds a single value, where `map` simply + // transforms the held value with the provided function. + // The value returned by the getter function is first transformed with `f`, + // then set as the value of an `Identity`. This is then mapped over with the + // setter function of the lens. + var over = function () { + // `Identity` is a functor that holds a single value, where `map` simply + // transforms the held value with the provided function. + var Identity = function (x) { + return { + value: x, + map: function (f) { + return Identity(f(x)); + } + }; + }; + return _curry3(function over(lens, f, x) { + // The value returned by the getter function is first transformed with `f`, + // then set as the value of an `Identity`. This is then mapped over with the + // setter function of the lens. + return lens(function (y) { + return Identity(f(y)); + })(x).value; + }); + }(); + + /** + * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category List + * @sig a -> b -> (a,b) + * @param {*} fst + * @param {*} snd + * @return {Array} + * @see R.objOf, R.of + * @example + * + * R.pair('foo', 'bar'); //=> ['foo', 'bar'] + */ + var pair = _curry2(function pair(fst, snd) { + return [ + fst, + snd + ]; + }); + + /** + * Retrieve the value at a given path. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {a} -> a | Undefined + * @param {Array} path The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path`. + * @see R.prop + * @example + * + * R.path(['a', 'b'], {a: {b: 2}}); //=> 2 + * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined + */ + var path = _curry2(function path(paths, obj) { + var val = obj; + var idx = 0; + while (idx < paths.length) { + if (val == null) { + return; + } + val = val[paths[idx]]; + idx += 1; + } + return val; + }); + + /** + * If the given, non-null object has a value at the given path, returns the + * value at that path. Otherwise returns the provided default value. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @typedefn Idx = String | Int + * @sig a -> [Idx] -> {a} -> a + * @param {*} d The default value. + * @param {Array} p The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path` of the supplied object or the default value. + * @example + * + * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2 + * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" + */ + var pathOr = _curry3(function pathOr(d, p, obj) { + return defaultTo(d, path(p, obj)); + }); + + /** + * Returns `true` if the specified object property at given path satisfies the + * given predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Logic + * @typedefn Idx = String | Int + * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean + * @param {Function} pred + * @param {Array} propPath + * @param {*} obj + * @return {Boolean} + * @see R.propSatisfies, R.path + * @example + * + * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true + */ + var pathSatisfies = _curry3(function pathSatisfies(pred, propPath, obj) { + return propPath.length > 0 && pred(path(propPath, obj)); + }); + + /** + * Returns a partial copy of an object containing only the keys specified. If + * the key does not exist, the property is ignored. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.omit, R.props + * @example + * + * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} + */ + var pick = _curry2(function pick(names, obj) { + var result = {}; + var idx = 0; + while (idx < names.length) { + if (names[idx] in obj) { + result[names[idx]] = obj[names[idx]]; + } + idx += 1; + } + return result; + }); + + /** + * Similar to `pick` except that this one includes a `key: undefined` pair for + * properties that don't exist. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.pick + * @example + * + * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} + */ + var pickAll = _curry2(function pickAll(names, obj) { + var result = {}; + var idx = 0; + var len = names.length; + while (idx < len) { + var name = names[idx]; + result[name] = obj[name]; + idx += 1; + } + return result; + }); + + /** + * Returns a partial copy of an object containing only the keys that satisfy + * the supplied predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig (v, k -> Boolean) -> {k: v} -> {k: v} + * @param {Function} pred A predicate to determine whether or not a key + * should be included on the output object. + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties that satisfy `pred` + * on it. + * @see R.pick, R.filter + * @example + * + * var isUpperCase = (val, key) => key.toUpperCase() === key; + * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} + */ + var pickBy = _curry2(function pickBy(test, obj) { + var result = {}; + for (var prop in obj) { + if (test(obj[prop], prop, obj)) { + result[prop] = obj[prop]; + } + } + return result; + }); + + /** + * Returns a new list with the given element at the front, followed by the + * contents of the list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The item to add to the head of the output list. + * @param {Array} list The array to add to the tail of the output list. + * @return {Array} A new array. + * @see R.append + * @example + * + * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] + */ + var prepend = _curry2(function prepend(el, list) { + return _concat([el], list); + }); + + /** + * Returns a function that when supplied an object returns the indicated + * property of that object, if it exists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig s -> {s: a} -> a | Undefined + * @param {String} p The property name + * @param {Object} obj The object to query + * @return {*} The value at `obj.p`. + * @see R.path + * @example + * + * R.prop('x', {x: 100}); //=> 100 + * R.prop('x', {}); //=> undefined + */ + var prop = _curry2(function prop(p, obj) { + return obj[p]; + }); + + /** + * Returns `true` if the specified object property is of the given type; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Type + * @sig Type -> String -> Object -> Boolean + * @param {Function} type + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.is, R.propSatisfies + * @example + * + * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true + * R.propIs(Number, 'x', {x: 'foo'}); //=> false + * R.propIs(Number, 'x', {}); //=> false + */ + var propIs = _curry3(function propIs(type, name, obj) { + return is(type, obj[name]); + }); + + /** + * If the given, non-null object has an own property with the specified name, + * returns the value of that property. Otherwise returns the provided default + * value. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Object + * @sig a -> String -> Object -> a + * @param {*} val The default value. + * @param {String} p The name of the property to return. + * @param {Object} obj The object to query. + * @return {*} The value of given property of the supplied object or the default value. + * @example + * + * var alice = { + * name: 'ALICE', + * age: 101 + * }; + * var favorite = R.prop('favoriteLibrary'); + * var favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary'); + * + * favorite(alice); //=> undefined + * favoriteWithDefault(alice); //=> 'Ramda' + */ + var propOr = _curry3(function propOr(val, p, obj) { + return obj != null && _has(p, obj) ? obj[p] : val; + }); + + /** + * Returns `true` if the specified object property satisfies the given + * predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Logic + * @sig (a -> Boolean) -> String -> {String: a} -> Boolean + * @param {Function} pred + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.propEq, R.propIs + * @example + * + * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true + */ + var propSatisfies = _curry3(function propSatisfies(pred, name, obj) { + return pred(obj[name]); + }); + + /** + * Acts as multiple `prop`: array of keys in, array of values out. Preserves + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> [v] + * @param {Array} ps The property names to fetch + * @param {Object} obj The object to query + * @return {Array} The corresponding values or partially applied function. + * @example + * + * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2] + * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2] + * + * var fullName = R.compose(R.join(' '), R.props(['first', 'last'])); + * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' + */ + var props = _curry2(function props(ps, obj) { + var len = ps.length; + var out = []; + var idx = 0; + while (idx < len) { + out[idx] = obj[ps[idx]]; + idx += 1; + } + return out; + }); + + /** + * Returns a list of numbers from `from` (inclusive) to `to` (exclusive). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> Number -> [Number] + * @param {Number} from The first number in the list. + * @param {Number} to One more than the last number in the list. + * @return {Array} The list of numbers in tthe set `[a, b)`. + * @example + * + * R.range(1, 5); //=> [1, 2, 3, 4] + * R.range(50, 53); //=> [50, 51, 52] + */ + var range = _curry2(function range(from, to) { + if (!(_isNumber(from) && _isNumber(to))) { + throw new TypeError('Both arguments to range must be numbers'); + } + var result = []; + var n = from; + while (n < to) { + result.push(n); + n += 1; + } + return result; + }); + + /** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * Similar to [`reduce`](#reduce), except moves through the input list from the + * right to the left. + * + * The iterator function receives two values: *(value, acc)*, while the arguments' + * order of `reduce`'s iterator function is *(acc, value)*. + * + * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduceRight` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a, b -> b) -> b -> [a] -> b + * @param {Function} fn The iterator function. Receives two values, the current element from the array + * and the accumulator. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.addIndex + * @example + * + * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 + * - -2 + * / \ / \ + * 1 - 1 3 + * / \ / \ + * 2 - ==> 2 -1 + * / \ / \ + * 3 - 3 4 + * / \ / \ + * 4 0 4 0 + * + * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a))) + */ + var reduceRight = _curry3(function reduceRight(fn, acc, list) { + var idx = list.length - 1; + while (idx >= 0) { + acc = fn(list[idx], acc); + idx -= 1; + } + return acc; + }); + + /** + * Returns a value wrapped to indicate that it is the final value of the reduce + * and transduce functions. The returned value should be considered a black + * box: the internal structure is not guaranteed to be stable. + * + * Note: this optimization is unavailable to functions not explicitly listed + * above. For instance, it is not currently supported by + * [`reduceRight`](#reduceRight). + * + * @func + * @memberOf R + * @since v0.15.0 + * @category List + * @sig a -> * + * @param {*} x The final value of the reduce. + * @return {*} The wrapped value. + * @see R.reduce, R.transduce + * @example + * + * R.reduce( + * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), + * [], + * [1, 2, 3, 4, 5]) // [1, 2, 3] + */ + var reduced = _curry1(_reduced); + + /** + * Removes the sub-list of `list` starting at index `start` and containing + * `count` elements. _Note that this is not destructive_: it returns a copy of + * the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} start The position to start removing elements + * @param {Number} count The number of elements to remove + * @param {Array} list The list to remove from + * @return {Array} A new Array with `count` elements from `start` removed. + * @example + * + * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8] + */ + var remove = _curry3(function remove(start, count, list) { + var result = Array.prototype.slice.call(list, 0); + result.splice(start, count); + return result; + }); + + /** + * Replace a substring or regex match in a string with a replacement. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category String + * @sig RegExp|String -> String -> String -> String + * @param {RegExp|String} pattern A regular expression or a substring to match. + * @param {String} replacement The string to replace the matches with. + * @param {String} str The String to do the search and replacement in. + * @return {String} The result. + * @example + * + * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo' + * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo' + * + * // Use the "g" (global) flag to replace all occurrences: + * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' + */ + var replace = _curry3(function replace(regex, replacement, str) { + return str.replace(regex, replacement); + }); + + /** + * Returns a new list or string with the elements or characters in reverse + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {Array|String} list + * @return {Array|String} + * @example + * + * R.reverse([1, 2, 3]); //=> [3, 2, 1] + * R.reverse([1, 2]); //=> [2, 1] + * R.reverse([1]); //=> [1] + * R.reverse([]); //=> [] + * + * R.reverse('abc'); //=> 'cba' + * R.reverse('ab'); //=> 'ba' + * R.reverse('a'); //=> 'a' + * R.reverse(''); //=> '' + */ + var reverse = _curry1(function reverse(list) { + return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse(); + }); + + /** + * Scan is similar to [`reduce`](#reduce), but returns a list of successively + * reduced values from the left + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a,b -> a) -> a -> [b] -> [a] + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {Array} A list of all intermediately reduced values. + * @see R.reduce + * @example + * + * var numbers = [1, 2, 3, 4]; + * var factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24] + * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)] + */ + var scan = _curry3(function scan(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = [acc]; + while (idx < len) { + acc = fn(acc, list[idx]); + result[idx + 1] = acc; + idx += 1; + } + return result; + }); + + /** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the given value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> a -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lensProp('x'); + * + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} + */ + var set = _curry3(function set(lens, v, x) { + return over(lens, always(v), x); + }); + + /** + * Returns the elements of the given list or string (or object with a `slice` + * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). + * + * Dispatches to the `slice` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @sig Number -> Number -> String -> String + * @param {Number} fromIndex The start index (inclusive). + * @param {Number} toIndex The end index (exclusive). + * @param {*} list + * @return {*} + * @example + * + * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] + * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] + * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(0, 3, 'ramda'); //=> 'ram' + */ + var slice = _curry3(_checkForMethod('slice', function slice(fromIndex, toIndex, list) { + return Array.prototype.slice.call(list, fromIndex, toIndex); + })); + + /** + * Returns a copy of the list, sorted according to the comparator function, + * which should accept two values at a time and return a negative number if the + * first value is smaller, a positive number if it's larger, and zero if they + * are equal. Please note that this is a **copy** of the list. It does not + * modify the original. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a,a -> Number) -> [a] -> [a] + * @param {Function} comparator A sorting function :: a -> b -> Int + * @param {Array} list The list to sort + * @return {Array} a new array with its elements sorted by the comparator function. + * @example + * + * var diff = function(a, b) { return a - b; }; + * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] + */ + var sort = _curry2(function sort(comparator, list) { + return Array.prototype.slice.call(list, 0).sort(comparator); + }); + + /** + * Sorts the list according to the supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord b => (a -> b) -> [a] -> [a] + * @param {Function} fn + * @param {Array} list The list to sort. + * @return {Array} A new list sorted by the keys generated by `fn`. + * @example + * + * var sortByFirstItem = R.sortBy(R.prop(0)); + * var sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name'))); + * var pairs = [[-1, 1], [-2, 2], [-3, 3]]; + * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]] + * var alice = { + * name: 'ALICE', + * age: 101 + * }; + * var bob = { + * name: 'Bob', + * age: -10 + * }; + * var clara = { + * name: 'clara', + * age: 314.159 + * }; + * var people = [clara, bob, alice]; + * sortByNameCaseInsensitive(people); //=> [alice, bob, clara] + */ + var sortBy = _curry2(function sortBy(fn, list) { + return Array.prototype.slice.call(list, 0).sort(function (a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; + }); + }); + + /** + * Sorts a list according to a list of comparators. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Relation + * @sig [a -> a -> Number] -> [a] -> [a] + * @param {Array} functions A list of comparator functions. + * @param {Array} list The list to sort. + * @return {Array} A new list sorted according to the comarator functions. + * @example + * + * var alice = { + * name: 'alice', + * age: 40 + * }; + * var bob = { + * name: 'bob', + * age: 30 + * }; + * var clara = { + * name: 'clara', + * age: 40 + * }; + * var people = [clara, bob, alice]; + * var ageNameSort = R.sortWith([ + * R.descend(R.prop('age')), + * R.ascend(R.prop('name')) + * ]); + * ageNameSort(people); //=> [alice, clara, bob] + */ + var sortWith = _curry2(function sortWith(fns, list) { + return Array.prototype.slice.call(list, 0).sort(function (a, b) { + var result = 0; + var i = 0; + while (result === 0 && i < fns.length) { + result = fns[i](a, b); + i += 1; + } + return result; + }); + }); + + /** + * Splits a given list or string at a given index. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig Number -> [a] -> [[a], [a]] + * @sig Number -> String -> [String, String] + * @param {Number} index The index where the array/string is split. + * @param {Array|String} array The array/string to be split. + * @return {Array} + * @example + * + * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] + * R.splitAt(5, 'hello world'); //=> ['hello', ' world'] + * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r'] + */ + var splitAt = _curry2(function splitAt(index, array) { + return [ + slice(0, index, array), + slice(index, length(array), array) + ]; + }); + + /** + * Splits a collection into slices of the specified length. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @sig Number -> String -> [String] + * @param {Number} n + * @param {Array} list + * @return {Array} + * @example + * + * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] + * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz'] + */ + var splitEvery = _curry2(function splitEvery(n, list) { + if (n <= 0) { + throw new Error('First argument to splitEvery must be a positive integer'); + } + var result = []; + var idx = 0; + while (idx < list.length) { + result.push(slice(idx, idx += n, list)); + } + return result; + }); + + /** + * Takes a list and a predicate and returns a pair of lists with the following properties: + * + * - the result of concatenating the two output lists is equivalent to the input list; + * - none of the elements of the first output list satisfies the predicate; and + * - if the second output list is non-empty, its first element satisfies the predicate. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [[a], [a]] + * @param {Function} pred The predicate that determines where the array is split. + * @param {Array} list The array to be split. + * @return {Array} + * @example + * + * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] + */ + var splitWhen = _curry2(function splitWhen(pred, list) { + var idx = 0; + var len = list.length; + var prefix = []; + while (idx < len && !pred(list[idx])) { + prefix.push(list[idx]); + idx += 1; + } + return [ + prefix, + Array.prototype.slice.call(list, idx) + ]; + }); + + /** + * Subtracts its second argument from its first argument. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a - b`. + * @see R.add + * @example + * + * R.subtract(10, 8); //=> 2 + * + * var minus5 = R.subtract(R.__, 5); + * minus5(17); //=> 12 + * + * var complementaryAngle = R.subtract(90); + * complementaryAngle(30); //=> 60 + * complementaryAngle(72); //=> 18 + */ + var subtract = _curry2(function subtract(a, b) { + return Number(a) - Number(b); + }); + + /** + * Returns all but the first element of the given list or string (or object + * with a `tail` method). + * + * Dispatches to the `slice` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.head, R.init, R.last + * @example + * + * R.tail([1, 2, 3]); //=> [2, 3] + * R.tail([1, 2]); //=> [2] + * R.tail([1]); //=> [] + * R.tail([]); //=> [] + * + * R.tail('abc'); //=> 'bc' + * R.tail('ab'); //=> 'b' + * R.tail('a'); //=> '' + * R.tail(''); //=> '' + */ + var tail = _curry1(_checkForMethod('tail', slice(1, Infinity))); + + /** + * Returns the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `take` method). + * + * Dispatches to the `take` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} + * @see R.drop + * @example + * + * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(3, 'ramda'); //=> 'ram' + * + * var personnel = [ + * 'Dave Brubeck', + * 'Paul Desmond', + * 'Eugene Wright', + * 'Joe Morello', + * 'Gerry Mulligan', + * 'Bob Bates', + * 'Joe Dodge', + * 'Ron Crotty' + * ]; + * + * var takeFive = R.take(5); + * takeFive(personnel); + * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan'] + * @symb R.take(-1, [a, b]) = [a, b] + * @symb R.take(0, [a, b]) = [] + * @symb R.take(1, [a, b]) = [a] + * @symb R.take(2, [a, b]) = [a, b] + */ + var take = _curry2(_dispatchable(['take'], _xtake, function take(n, xs) { + return slice(0, n < 0 ? Infinity : n, xs); + })); + + /** + * Returns a new list containing the last `n` elements of a given list, passing + * each value to the supplied predicate function, and terminating when the + * predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.dropLastWhile, R.addIndex + * @example + * + * var isNotOne = x => x !== 1; + * + * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] + */ + var takeLastWhile = _curry2(function takeLastWhile(fn, list) { + var idx = list.length - 1; + while (idx >= 0 && fn(list[idx])) { + idx -= 1; + } + return Array.prototype.slice.call(list, idx + 1); + }); + + /** + * Returns a new list containing the first `n` elements of a given list, + * passing each value to the supplied predicate function, and terminating when + * the predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * Dispatches to the `takeWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.dropWhile, R.transduce, R.addIndex + * @example + * + * var isNotFour = x => x !== 4; + * + * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] + */ + var takeWhile = _curry2(_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len && fn(list[idx])) { + idx += 1; + } + return Array.prototype.slice.call(list, 0, idx); + })); + + /** + * Runs the given function with the supplied object, then returns the object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> *) -> a -> a + * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away. + * @param {*} x + * @return {*} `x`. + * @example + * + * var sayX = x => console.log('x is ' + x); + * R.tap(sayX, 100); //=> 100 + * // logs 'x is 100' + * @symb R.tap(f, a) = a + */ + var tap = _curry2(function tap(fn, x) { + fn(x); + return x; + }); + + /** + * Calls an input function `n` times, returning an array containing the results + * of those function calls. + * + * `fn` is passed one argument: The current value of `n`, which begins at `0` + * and is gradually incremented to `n - 1`. + * + * @func + * @memberOf R + * @since v0.2.3 + * @category List + * @sig (Number -> a) -> Number -> [a] + * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`. + * @param {Number} n A value between `0` and `n - 1`. Increments after each function call. + * @return {Array} An array containing the return values of all calls to `fn`. + * @see R.repeat + * @example + * + * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4] + * @symb R.times(f, 0) = [] + * @symb R.times(f, 1) = [f(0)] + * @symb R.times(f, 2) = [f(0), f(1)] + */ + var times = _curry2(function times(fn, n) { + var len = Number(n); + var idx = 0; + var list; + if (len < 0 || isNaN(len)) { + throw new RangeError('n must be a non-negative number'); + } + list = new Array(len); + while (idx < len) { + list[idx] = fn(idx); + idx += 1; + } + return list; + }); + + /** + * Converts an object into an array of key, value arrays. Only the object's + * own properties are used. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own properties. + * @see R.fromPairs + * @example + * + * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] + */ + var toPairs = _curry1(function toPairs(obj) { + var pairs = []; + for (var prop in obj) { + if (_has(prop, obj)) { + pairs[pairs.length] = [ + prop, + obj[prop] + ]; + } + } + return pairs; + }); + + /** + * Converts an object into an array of key, value arrays. The object's own + * properties and prototype properties are used. Note that the order of the + * output array is not guaranteed to be consistent across different JS + * platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own + * and prototype properties. + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.toPairsIn(f); //=> [['x','X'], ['y','Y']] + */ + var toPairsIn = _curry1(function toPairsIn(obj) { + var pairs = []; + for (var prop in obj) { + pairs[pairs.length] = [ + prop, + obj[prop] + ]; + } + return pairs; + }); + + /** + * Transposes the rows and columns of a 2D list. + * When passed a list of `n` lists of length `x`, + * returns a list of `x` lists of length `n`. + * + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [[a]] -> [[a]] + * @param {Array} list A 2D list + * @return {Array} A 2D list + * @example + * + * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] + * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * + * // If some of the rows are shorter than the following rows, their elements are skipped: + * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] + * @symb R.transpose([[a], [b], [c]]) = [a, b, c] + * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] + * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] + */ + var transpose = _curry1(function transpose(outerlist) { + var i = 0; + var result = []; + while (i < outerlist.length) { + var innerlist = outerlist[i]; + var j = 0; + while (j < innerlist.length) { + if (typeof result[j] === 'undefined') { + result[j] = []; + } + result[j].push(innerlist[j]); + j += 1; + } + i += 1; + } + return result; + }); + + /** + * Removes (strips) whitespace from both ends of the string. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category String + * @sig String -> String + * @param {String} str The string to trim. + * @return {String} Trimmed version of `str`. + * @example + * + * R.trim(' xyz '); //=> 'xyz' + * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] + */ + var trim = function () { + var ws = '\t\n\x0B\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; + var zeroWidth = '\u200B'; + var hasProtoTrim = typeof String.prototype.trim === 'function'; + if (!hasProtoTrim || (ws.trim() || !zeroWidth.trim())) { + return _curry1(function trim(str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); + }); + } else { + return _curry1(function trim(str) { + return str.trim(); + }); + } + }(); + + /** + * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned + * function evaluates the `tryer`; if it does not throw, it simply returns the + * result. If the `tryer` *does* throw, the returned function evaluates the + * `catcher` function and returns its result. Note that for effective + * composition with this function, both the `tryer` and `catcher` functions + * must return the same type of results. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a) + * @param {Function} tryer The function that may throw. + * @param {Function} catcher The function that will be evaluated if `tryer` throws. + * @return {Function} A new function that will catch exceptions and send then to the catcher. + * @example + * + * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true + * R.tryCatch(R.prop('x'), R.F)(null); //=> false + */ + var tryCatch = _curry2(function _tryCatch(tryer, catcher) { + return _arity(tryer.length, function () { + try { + return tryer.apply(this, arguments); + } catch (e) { + return catcher.apply(this, _concat([e], arguments)); + } + }); + }); + + /** + * Gives a single-word string description of the (native) type of a value, + * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not + * attempt to distinguish user Object types any further, reporting them all as + * 'Object'. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Type + * @sig (* -> {*}) -> String + * @param {*} val The value to test + * @return {String} + * @example + * + * R.type({}); //=> "Object" + * R.type(1); //=> "Number" + * R.type(false); //=> "Boolean" + * R.type('s'); //=> "String" + * R.type(null); //=> "Null" + * R.type([]); //=> "Array" + * R.type(/[A-z]/); //=> "RegExp" + * R.type(() => {}); //=> "Function" + */ + var type = _curry1(function type(val) { + return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1); + }); + + /** + * Takes a function `fn`, which takes a single array argument, and returns a + * function which: + * + * - takes any number of positional arguments; + * - passes these arguments to `fn` as an array; and + * - returns the result. + * + * In other words, `R.unapply` derives a variadic function from a function which + * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply). + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Function + * @sig ([*...] -> a) -> (*... -> a) + * @param {Function} fn + * @return {Function} + * @see R.apply + * @example + * + * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]' + * @symb R.unapply(f)(a, b) = f([a, b]) + */ + var unapply = _curry1(function unapply(fn) { + return function () { + return fn(Array.prototype.slice.call(arguments, 0)); + }; + }); + + /** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 1 parameter. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> b) -> (a -> b) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 1. + * @see R.binary, R.nAry + * @example + * + * var takesTwoArgs = function(a, b) { + * return [a, b]; + * }; + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * var takesOneArg = R.unary(takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only 1 argument is passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.unary(f)(a, b, c) = f(a) + */ + var unary = _curry1(function unary(fn) { + return nAry(1, fn); + }); + + /** + * Returns a function of arity `n` from a (manually) curried function. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Function + * @sig Number -> (a -> b) -> (a -> c) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to uncurry. + * @return {Function} A new function. + * @see R.curry + * @example + * + * var addFour = a => b => c => d => a + b + c + d; + * + * var uncurriedAddFour = R.uncurryN(4, addFour); + * uncurriedAddFour(1, 2, 3, 4); //=> 10 + */ + var uncurryN = _curry2(function uncurryN(depth, fn) { + return curryN(depth, function () { + var currentDepth = 1; + var value = fn; + var idx = 0; + var endIdx; + while (currentDepth <= depth && typeof value === 'function') { + endIdx = currentDepth === depth ? arguments.length : idx + value.length; + value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); + currentDepth += 1; + idx = endIdx; + } + return value; + }); + }); + + /** + * Builds a list from a seed value. Accepts an iterator function, which returns + * either false to stop iteration or an array of length 2 containing the value + * to add to the resulting list and the seed to be used in the next call to the + * iterator function. + * + * The iterator function receives one argument: *(seed)*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a -> [b]) -> * -> [b] + * @param {Function} fn The iterator function. receives one argument, `seed`, and returns + * either false to quit iteration or an array of length two to proceed. The element + * at index 0 of this array will be added to the resulting array, and the element + * at index 1 will be passed to the next call to `fn`. + * @param {*} seed The seed value. + * @return {Array} The final list. + * @example + * + * var f = n => n > 50 ? false : [-n, n + 10]; + * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50] + * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...] + */ + var unfold = _curry2(function unfold(fn, seed) { + var pair = fn(seed); + var result = []; + while (pair && pair.length) { + result[result.length] = pair[0]; + pair = fn(pair[1]); + } + return result; + }); + + /** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied predicate to + * two list elements. Prefers the first item if two items compare equal based + * on the predicate. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category List + * @sig (a, a -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * var strEq = R.eqBy(String); + * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2] + * R.uniqWith(strEq)([{}, {}]); //=> [{}] + * R.uniqWith(strEq)([1, '1', 1]); //=> [1] + * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] + */ + var uniqWith = _curry2(function uniqWith(pred, list) { + var idx = 0; + var len = list.length; + var result = []; + var item; + while (idx < len) { + item = list[idx]; + if (!_containsWith(pred, item, result)) { + result[result.length] = item; + } + idx += 1; + } + return result; + }); + + /** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is not satisfied, the function will return the result of + * calling the `whenFalseFn` function with the same argument. If the predicate + * is satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates + * to a falsy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenFalseFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`. + * @see R.ifElse, R.when + * @example + * + * let safeInc = R.unless(R.isNil, R.inc); + * safeInc(null); //=> null + * safeInc(1); //=> 2 + */ + var unless = _curry3(function unless(pred, whenFalseFn, x) { + return pred(x) ? x : whenFalseFn(x); + }); + + /** + * Takes a predicate, a transformation function, and an initial value, + * and returns a value of the same type as the initial value. + * It does so by applying the transformation until the predicate is satisfied, + * at which point it returns the satisfactory value. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} fn The iterator function + * @param {*} init Initial value + * @return {*} Final value that satisfies predicate + * @example + * + * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128 + */ + var until = _curry3(function until(pred, fn, init) { + var val = init; + while (!pred(val)) { + val = fn(val); + } + return val; + }); + + /** + * Returns a new copy of the array with the element at the provided index + * replaced with the given value. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} idx The index to update. + * @param {*} x The value to exist at the given index of the returned array. + * @param {Array|Arguments} list The source array-like object to be updated. + * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`. + * @see R.adjust + * @example + * + * R.update(1, 11, [0, 1, 2]); //=> [0, 11, 2] + * R.update(1)(11)([0, 1, 2]); //=> [0, 11, 2] + * @symb R.update(-1, a, [b, c]) = [b, a] + * @symb R.update(0, a, [b, c]) = [a, c] + * @symb R.update(1, a, [b, c]) = [b, a] + */ + var update = _curry3(function update(idx, x, list) { + return adjust(always(x), idx, list); + }); + + /** + * Accepts a function `fn` and a list of transformer functions and returns a + * new curried function. When the new function is invoked, it calls the + * function `fn` with parameters consisting of the result of calling each + * supplied handler on successive arguments to the new function. + * + * If more arguments are passed to the returned function than transformer + * functions, those arguments are passed directly to `fn` as additional + * parameters. If you expect additional arguments that don't need to be + * transformed, although you can ignore them, it's best to pass an identity + * function so that the new function reports the correct arity. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (x1 -> x2 -> ... -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} fn The function to wrap. + * @param {Array} transformers A list of transformer functions + * @return {Function} The wrapped function. + * @see R.converge + * @example + * + * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 + * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 + * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 + * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 + * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) + */ + var useWith = _curry2(function useWith(fn, transformers) { + return curryN(transformers.length, function () { + var args = []; + var idx = 0; + while (idx < transformers.length) { + args.push(transformers[idx].call(this, arguments[idx])); + idx += 1; + } + return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); + }); + }); + + /** + * Returns a list of all the enumerable own properties of the supplied object. + * Note that the order of the output array is not guaranteed across different + * JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own properties. + * @see R.valuesIn, R.keys + * @example + * + * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] + */ + var values = _curry1(function values(obj) { + var props = keys(obj); + var len = props.length; + var vals = []; + var idx = 0; + while (idx < len) { + vals[idx] = obj[props[idx]]; + idx += 1; + } + return vals; + }); + + /** + * Returns a list of all the properties, including prototype properties, of the + * supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own and prototype properties. + * @see R.values, R.keysIn + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.valuesIn(f); //=> ['X', 'Y'] + */ + var valuesIn = _curry1(function valuesIn(obj) { + var prop; + var vs = []; + for (prop in obj) { + vs[vs.length] = obj[prop]; + } + return vs; + }); + + /** + * Returns a "view" of the given data structure, determined by the given lens. + * The lens's focus determines which portion of the data structure is visible. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> s -> a + * @param {Lens} lens + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.view(xLens, {x: 4, y: 2}); //=> 4 + */ + // `Const` is a functor that effectively ignores the function given to `map`. + // Using `Const` effectively ignores the setter function of the `lens`, + // leaving the value returned by the getter function unmodified. + var view = function () { + // `Const` is a functor that effectively ignores the function given to `map`. + var Const = function (x) { + return { + value: x, + 'fantasy-land/map': function () { + return this; + } + }; + }; + return _curry2(function view(lens, x) { + // Using `Const` effectively ignores the setter function of the `lens`, + // leaving the value returned by the getter function unmodified. + return lens(Const)(x).value; + }); + }(); + + /** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is satisfied, the function will return the result of calling + * the `whenTrueFn` function with the same argument. If the predicate is not + * satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenTrueFn A function to invoke when the `condition` + * evaluates to a truthy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenTrueFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`. + * @see R.ifElse, R.unless + * @example + * + * // truncate :: String -> String + * var truncate = R.when( + * R.propSatisfies(R.gt(R.__, 10), 'length'), + * R.pipe(R.take(10), R.append('…'), R.join('')) + * ); + * truncate('12345'); //=> '12345' + * truncate('0123456789ABC'); //=> '0123456789…' + */ + var when = _curry3(function when(pred, whenTrueFn, x) { + return pred(x) ? whenTrueFn(x) : x; + }); + + /** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec. Each of the spec's own properties must be a predicate function. + * Each predicate is applied to the value of the corresponding property of the + * test object. `where` returns true if all the predicates return true, false + * otherwise. + * + * `where` is well suited to declaratively expressing constraints for other + * functions such as [`filter`](#filter) and [`find`](#find). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Object + * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @example + * + * // pred :: Object -> Boolean + * var pred = R.where({ + * a: R.equals('foo'), + * b: R.complement(R.equals('bar')), + * x: R.gt(R.__, 10), + * y: R.lt(R.__, 20) + * }); + * + * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true + * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false + */ + var where = _curry2(function where(spec, testObj) { + for (var prop in spec) { + if (_has(prop, spec) && !spec[prop](testObj[prop])) { + return false; + } + } + return true; + }); + + /** + * Creates a new list out of the two supplied by creating each possible pair + * from the lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The list made by combining each possible pair from + * `as` and `bs` into pairs (`[a, b]`). + * @example + * + * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']] + * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]] + */ + // = xprodWith(prepend); (takes about 3 times as long...) + var xprod = _curry2(function xprod(a, b) { + // = xprodWith(prepend); (takes about 3 times as long...) + var idx = 0; + var ilen = a.length; + var j; + var jlen = b.length; + var result = []; + while (idx < ilen) { + j = 0; + while (j < jlen) { + result[result.length] = [ + a[idx], + b[j] + ]; + j += 1; + } + idx += 1; + } + return result; + }); + + /** + * Creates a new list out of the two supplied by pairing up equally-positioned + * items from both lists. The returned list is truncated to the length of the + * shorter of the two input lists. + * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`. + * @example + * + * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]] + */ + var zip = _curry2(function zip(a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = [ + a[idx], + b[idx] + ]; + idx += 1; + } + return rv; + }); + + /** + * Creates a new object out of a list of keys and a list of values. + * Key/value pairing is truncated to the length of the shorter of the two lists. + * Note: `zipObj` is equivalent to `pipe(zipWith(pair), fromPairs)`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [String] -> [*] -> {String: *} + * @param {Array} keys The array that will be properties on the output object. + * @param {Array} values The list of values on the output object. + * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`. + * @example + * + * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} + */ + var zipObj = _curry2(function zipObj(keys, values) { + var idx = 0; + var len = Math.min(keys.length, values.length); + var out = {}; + while (idx < len) { + out[keys[idx]] = values[idx]; + idx += 1; + } + return out; + }); + + /** + * Creates a new list out of the two supplied by applying the function to each + * equally-positioned pair in the lists. The returned list is truncated to the + * length of the shorter of the two input lists. + * + * @function + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a,b -> c) -> [a] -> [b] -> [c] + * @param {Function} fn The function used to combine the two elements into one value. + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by combining same-indexed elements of `list1` and `list2` + * using `fn`. + * @example + * + * var f = (x, y) => { + * // ... + * }; + * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']); + * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')] + * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)] + */ + var zipWith = _curry3(function zipWith(fn, a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = fn(a[idx], b[idx]); + idx += 1; + } + return rv; + }); + + /** + * A function that always returns `false`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.always, R.T + * @example + * + * R.F(); //=> false + */ + var F = always(false); + + /** + * A function that always returns `true`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.always, R.F + * @example + * + * R.T(); //=> true + */ + var T = always(true); + + /** + * Copies an object. + * + * @private + * @param {*} value The value to be copied + * @param {Array} refFrom Array containing the source references + * @param {Array} refTo Array containing the copied source references + * @param {Boolean} deep Whether or not to perform deep cloning. + * @return {*} The copied value. + */ + var _clone = function _clone(value, refFrom, refTo, deep) { + var copy = function copy(copiedValue) { + var len = refFrom.length; + var idx = 0; + while (idx < len) { + if (value === refFrom[idx]) { + return refTo[idx]; + } + idx += 1; + } + refFrom[idx + 1] = value; + refTo[idx + 1] = copiedValue; + for (var key in value) { + copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key]; + } + return copiedValue; + }; + switch (type(value)) { + case 'Object': + return copy({}); + case 'Array': + return copy([]); + case 'Date': + return new Date(value.valueOf()); + case 'RegExp': + return _cloneRegExp(value); + default: + return value; + } + }; + + var _createPartialApplicator = function _createPartialApplicator(concat) { + return _curry2(function (fn, args) { + return _arity(Math.max(0, fn.length - args.length), function () { + return fn.apply(this, concat(args, arguments)); + }); + }); + }; + + var _dropLast = function dropLast(n, xs) { + return take(n < xs.length ? xs.length - n : 0, xs); + }; + + // Values of other types are only equal if identical. + var _equals = function _equals(a, b, stackA, stackB) { + if (identical(a, b)) { + return true; + } + if (type(a) !== type(b)) { + return false; + } + if (a == null || b == null) { + return false; + } + if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') { + return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a); + } + if (typeof a.equals === 'function' || typeof b.equals === 'function') { + return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a); + } + switch (type(a)) { + case 'Arguments': + case 'Array': + case 'Object': + if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') { + return a === b; + } + break; + case 'Boolean': + case 'Number': + case 'String': + if (!(typeof a === typeof b && identical(a.valueOf(), b.valueOf()))) { + return false; + } + break; + case 'Date': + if (!identical(a.valueOf(), b.valueOf())) { + return false; + } + break; + case 'Error': + return a.name === b.name && a.message === b.message; + case 'RegExp': + if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) { + return false; + } + break; + case 'Map': + case 'Set': + if (!_equals(_arrayFromIterator(a.entries()), _arrayFromIterator(b.entries()), stackA, stackB)) { + return false; + } + break; + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + break; + case 'ArrayBuffer': + break; + default: + // Values of other types are only equal if identical. + return false; + } + var keysA = keys(a); + if (keysA.length !== keys(b).length) { + return false; + } + var idx = stackA.length - 1; + while (idx >= 0) { + if (stackA[idx] === a) { + return stackB[idx] === b; + } + idx -= 1; + } + stackA.push(a); + stackB.push(b); + idx = keysA.length - 1; + while (idx >= 0) { + var key = keysA[idx]; + if (!(_has(key, b) && _equals(b[key], a[key], stackA, stackB))) { + return false; + } + idx -= 1; + } + stackA.pop(); + stackB.pop(); + return true; + }; + + var _reduce = function () { + function _arrayReduce(xf, acc, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + acc = xf['@@transducer/step'](acc, list[idx]); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + idx += 1; + } + return xf['@@transducer/result'](acc); + } + function _iterableReduce(xf, acc, iter) { + var step = iter.next(); + while (!step.done) { + acc = xf['@@transducer/step'](acc, step.value); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + step = iter.next(); + } + return xf['@@transducer/result'](acc); + } + function _methodReduce(xf, acc, obj, methodName) { + return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc)); + } + var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator'; + return function _reduce(fn, acc, list) { + if (typeof fn === 'function') { + fn = _xwrap(fn); + } + if (_isArrayLike(list)) { + return _arrayReduce(fn, acc, list); + } + if (typeof list['fantasy-land/reduce'] === 'function') { + return _methodReduce(fn, acc, list, 'fantasy-land/reduce'); + } + if (list[symIterator] != null) { + return _iterableReduce(fn, acc, list[symIterator]()); + } + if (typeof list.next === 'function') { + return _iterableReduce(fn, acc, list); + } + if (typeof list.reduce === 'function') { + return _methodReduce(fn, acc, list, 'reduce'); + } + throw new TypeError('reduce: list must be array or iterable'); + }; + }(); + + var _stepCat = function () { + var _stepCatArray = { + '@@transducer/init': Array, + '@@transducer/step': function (xs, x) { + xs.push(x); + return xs; + }, + '@@transducer/result': _identity + }; + var _stepCatString = { + '@@transducer/init': String, + '@@transducer/step': function (a, b) { + return a + b; + }, + '@@transducer/result': _identity + }; + var _stepCatObject = { + '@@transducer/init': Object, + '@@transducer/step': function (result, input) { + return _assign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input); + }, + '@@transducer/result': _identity + }; + return function _stepCat(obj) { + if (_isTransformer(obj)) { + return obj; + } + if (_isArrayLike(obj)) { + return _stepCatArray; + } + if (typeof obj === 'string') { + return _stepCatString; + } + if (typeof obj === 'object') { + return _stepCatObject; + } + throw new Error('Cannot create transformer for ' + obj); + }; + }(); + + var _xdropLastWhile = function () { + function XDropLastWhile(fn, xf) { + this.f = fn; + this.retained = []; + this.xf = xf; + } + XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init; + XDropLastWhile.prototype['@@transducer/result'] = function (result) { + this.retained = null; + return this.xf['@@transducer/result'](result); + }; + XDropLastWhile.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.retain(result, input) : this.flush(result, input); + }; + XDropLastWhile.prototype.flush = function (result, input) { + result = _reduce(this.xf['@@transducer/step'], result, this.retained); + this.retained = []; + return this.xf['@@transducer/step'](result, input); + }; + XDropLastWhile.prototype.retain = function (result, input) { + this.retained.push(input); + return result; + }; + return _curry2(function _xdropLastWhile(fn, xf) { + return new XDropLastWhile(fn, xf); + }); + }(); + + /** + * Creates a new list iteration function from an existing one by adding two new + * parameters to its callback function: the current index, and the entire list. + * + * This would turn, for instance, [`R.map`](#map) function into one that + * more closely resembles `Array.prototype.map`. Note that this will only work + * for functions in which the iteration callback function is the first + * parameter, and where the list is the last parameter. (This latter might be + * unimportant if the list parameter is not used.) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Function + * @category List + * @sig ((a ... -> b) ... -> [a] -> *) -> (a ..., Int, [a] -> b) ... -> [a] -> *) + * @param {Function} fn A list iteration function that does not pass index or list to its callback + * @return {Function} An altered list iteration function that passes (item, index, list) to its callback + * @example + * + * var mapIndexed = R.addIndex(R.map); + * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); + * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] + */ + var addIndex = _curry1(function addIndex(fn) { + return curryN(fn.length, function () { + var idx = 0; + var origFn = arguments[0]; + var list = arguments[arguments.length - 1]; + var args = Array.prototype.slice.call(arguments, 0); + args[0] = function () { + var result = origFn.apply(this, _concat(arguments, [ + idx, + list + ])); + idx += 1; + return result; + }; + return fn.apply(this, args); + }); + }); + + /** + * Makes a shallow clone of an object, setting or overriding the nodes required + * to create the given path, and placing the specific value at the tail end of + * that path. Note that this copies and flattens prototype properties onto the + * new object as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> {a} + * @param {Array} path the path to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except along the specified path. + * @see R.dissocPath + * @example + * + * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}} + * + * // Any missing or non-object keys in path will be overridden + * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} + */ + var assocPath = _curry3(function assocPath(path, val, obj) { + if (path.length === 0) { + return val; + } + var idx = path[0]; + if (path.length > 1) { + var nextObj = !isNil(obj) && _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {}; + val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj); + } + if (_isInteger(idx) && _isArray(obj)) { + var arr = [].concat(obj); + arr[idx] = val; + return arr; + } else { + return assoc(idx, val, obj); + } + }); + + /** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 2 parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> c) -> (a, b -> c) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 2. + * @see R.nAry, R.unary + * @example + * + * var takesThreeArgs = function(a, b, c) { + * return [a, b, c]; + * }; + * takesThreeArgs.length; //=> 3 + * takesThreeArgs(1, 2, 3); //=> [1, 2, 3] + * + * var takesTwoArgs = R.binary(takesThreeArgs); + * takesTwoArgs.length; //=> 2 + * // Only 2 arguments are passed to the wrapped function + * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] + * @symb R.binary(f)(a, b, c) = f(a, b) + */ + var binary = _curry1(function binary(fn) { + return nAry(2, fn); + }); + + /** + * Creates a deep copy of the value which may contain (nested) `Array`s and + * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are + * assigned by reference rather than copied + * + * Dispatches to a `clone` method if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {*} -> {*} + * @param {*} value The object or array to clone + * @return {*} A deeply cloned copy of `val` + * @example + * + * var objects = [{}, {}, {}]; + * var objectsClone = R.clone(objects); + * objects === objectsClone; //=> false + * objects[0] === objectsClone[0]; //=> false + */ + var clone = _curry1(function clone(value) { + return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, [], [], true); + }); + + /** + * Returns a curried equivalent of the provided function. The curried function + * has two unusual capabilities. First, its arguments needn't be provided one + * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> a) -> (* -> a) + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curryN + * @example + * + * var addFourNumbers = (a, b, c, d) => a + b + c + d; + * + * var curriedAddFourNumbers = R.curry(addFourNumbers); + * var f = curriedAddFourNumbers(1, 2); + * var g = f(3); + * g(4); //=> 10 + */ + var curry = _curry1(function curry(fn) { + return curryN(fn.length, fn); + }); + + /** + * Makes a shallow clone of an object, omitting the property at the given path. + * Note that this copies and flattens prototype properties onto the new object + * as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.11.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {k: v} -> {k: v} + * @param {Array} path The path to the value to omit + * @param {Object} obj The object to clone + * @return {Object} A new object without the property at path + * @see R.assocPath + * @example + * + * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} + */ + var dissocPath = _curry2(function dissocPath(path, obj) { + switch (path.length) { + case 0: + return obj; + case 1: + return _isInteger(path[0]) ? remove(path[0], 1, obj) : dissoc(path[0], obj); + default: + var head = path[0]; + var tail = Array.prototype.slice.call(path, 1); + if (obj[head] == null) { + return obj; + } else if (_isInteger(path[0])) { + return update(head, dissocPath(tail, obj[head]), obj); + } else { + return assoc(head, dissocPath(tail, obj[head]), obj); + } + } + }); + + /** + * Returns all but the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `drop` method). + * + * Dispatches to the `drop` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} A copy of list without the first `n` elements + * @see R.take, R.transduce, R.dropLast, R.dropWhile + * @example + * + * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.drop(3, ['foo', 'bar', 'baz']); //=> [] + * R.drop(4, ['foo', 'bar', 'baz']); //=> [] + * R.drop(3, 'ramda'); //=> 'da' + */ + var drop = _curry2(_dispatchable(['drop'], _xdrop, function drop(n, xs) { + return slice(Math.max(0, n), Infinity, xs); + })); + + /** + * Returns a list containing all but the last `n` elements of the given `list`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements of `list` to skip. + * @param {Array} list The list of elements to consider. + * @return {Array} A copy of the list with only the first `list.length - n` elements + * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile + * @example + * + * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(3, 'ramda'); //=> 'ra' + */ + var dropLast = _curry2(_dispatchable([], _xdropLast, _dropLast)); + + /** + * Returns a new list excluding all the tailing elements of a given list which + * satisfy the supplied predicate function. It passes each value from the right + * to the supplied predicate function, skipping elements until the predicate + * function returns a `falsy` value. The predicate function is applied to one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} predicate The function to be called on each element + * @param {Array} list The collection to iterate over. + * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`. + * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile + * @example + * + * var lteThree = x => x <= 3; + * + * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] + */ + var dropLastWhile = _curry2(_dispatchable([], _xdropLastWhile, _dropLastWhile)); + + /** + * Returns `true` if its arguments are equivalent, `false` otherwise. Handles + * cyclical data structures. + * + * Dispatches symmetrically to the `equals` methods of both arguments, if + * present. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> b -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * R.equals(1, 1); //=> true + * R.equals(1, '1'); //=> false + * R.equals([1, 2, 3], [1, 2, 3]); //=> true + * + * var a = {}; a.v = a; + * var b = {}; b.v = b; + * R.equals(a, b); //=> true + */ + var equals = _curry2(function equals(a, b) { + return _equals(a, b, [], []); + }); + + /** + * Takes a predicate and a `Filterable`, and returns a new filterable of the + * same type containing the members of the given filterable which satisfy the + * given predicate. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * Dispatches to the `filter` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} Filterable + * @see R.reject, R.transduce, R.addIndex + * @example + * + * var isEven = n => n % 2 === 0; + * + * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4] + * + * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ + // else + var filter = _curry2(_dispatchable(['filter'], _xfilter, function (pred, filterable) { + return _isObject(filterable) ? _reduce(function (acc, key) { + if (pred(filterable[key])) { + acc[key] = filterable[key]; + } + return acc; + }, {}, keys(filterable)) : // else + _filter(pred, filterable); + })); + + /** + * Returns a new function much like the supplied one, except that the first two + * arguments' order is reversed. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> b -> c -> ... -> z) -> (b -> a -> c -> ... -> z) + * @param {Function} fn The function to invoke with its first two parameters reversed. + * @return {*} The result of invoking `fn` with its first two parameters' order reversed. + * @example + * + * var mergeThree = (a, b, c) => [].concat(a, b, c); + * + * mergeThree(1, 2, 3); //=> [1, 2, 3] + * + * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] + * @symb R.flip(f)(a, b, c) = f(b, a, c) + */ + var flip = _curry1(function flip(fn) { + return curry(function (a, b) { + var args = Array.prototype.slice.call(arguments, 0); + args[0] = b; + args[1] = a; + return fn.apply(this, args); + }); + }); + + /** + * Iterate over an input `object`, calling a provided function `fn` for each + * key and value in the object. + * + * `fn` receives three argument: *(value, key, obj)*. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Object + * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a + * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`. + * @param {Object} obj The object to iterate over. + * @return {Object} The original object. + * @example + * + * var printKeyConcatValue = (value, key) => console.log(key + ':' + value); + * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2} + * // logs x:1 + * // logs y:2 + * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b} + */ + var forEachObjIndexed = _curry2(function forEachObjIndexed(fn, obj) { + var keyList = keys(obj); + var idx = 0; + while (idx < keyList.length) { + var key = keyList[idx]; + fn(obj[key], key, obj); + idx += 1; + } + return obj; + }); + + /** + * Returns the first element of the given list or string. In some libraries + * this function is named `first`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {Array|String} list + * @return {*} + * @see R.tail, R.init, R.last + * @example + * + * R.head(['fi', 'fo', 'fum']); //=> 'fi' + * R.head([]); //=> undefined + * + * R.head('abc'); //=> 'a' + * R.head(''); //=> '' + */ + var head = nth(0); + + /** + * Returns all but the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.last, R.head, R.tail + * @example + * + * R.init([1, 2, 3]); //=> [1, 2] + * R.init([1, 2]); //=> [1] + * R.init([1]); //=> [] + * R.init([]); //=> [] + * + * R.init('abc'); //=> 'ab' + * R.init('ab'); //=> 'a' + * R.init('a'); //=> '' + * R.init(''); //=> '' + */ + var init = slice(0, -1); + + /** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate function that determines whether + * the two supplied elements are equal. + * @param {Array} list1 One list of items to compare + * @param {Array} list2 A second list of items to compare + * @return {Array} A new list containing those elements common to both lists. + * @see R.innerJoin + * @deprecated since v0.24.0 + * @example + * + * var buffaloSpringfield = [ + * {id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'} + * ]; + * var csny = [ + * {id: 204, name: 'David Crosby'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 539, name: 'Graham Nash'}, + * {id: 177, name: 'Neil Young'} + * ]; + * + * R.intersectionWith(R.eqBy(R.prop('id')), buffaloSpringfield, csny); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ + var intersectionWith = _curry3(function intersectionWith(pred, list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + var results = []; + var idx = 0; + while (idx < filteredList.length) { + if (_containsWith(pred, filteredList[idx], lookupList)) { + results[results.length] = filteredList[idx]; + } + idx += 1; + } + return uniqWith(pred, results); + }); + + /** + * Transforms the items of the list with the transducer and appends the + * transformed items to the accumulator using an appropriate iterator function + * based on the accumulator type. + * + * The accumulator can be an array, string, object or a transformer. Iterated + * items will be appended to arrays and concatenated to strings. Objects will + * be merged directly or 2-item arrays will be merged as key, value pairs. + * + * The accumulator can also be a transformer object that provides a 2-arity + * reducing iterator function, step, 0-arity initial value function, init, and + * 1-arity result extraction function result. The step function is used as the + * iterator function in reduce. The result function is used to convert the + * final accumulator into the return type and in most cases is R.identity. The + * init function is used to provide the initial accumulator. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the + * transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig a -> (b -> b) -> [c] -> a + * @param {*} acc The initial accumulator value. + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @example + * + * var numbers = [1, 2, 3, 4]; + * var transducer = R.compose(R.map(R.add(1)), R.take(2)); + * + * R.into([], transducer, numbers); //=> [2, 3] + * + * var intoArray = R.into([]); + * intoArray(transducer, numbers); //=> [2, 3] + */ + var into = _curry3(function into(acc, xf, list) { + return _isTransformer(acc) ? _reduce(xf(acc), acc['@@transducer/init'](), list) : _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list); + }); + + /** + * Same as [`R.invertObj`](#invertObj), however this accounts for objects with + * duplicate values by putting the values into an array. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: [ s, ... ]} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object with keys in an array. + * @see R.invertObj + * @example + * + * var raceResultsByFirstName = { + * first: 'alice', + * second: 'jake', + * third: 'alice', + * }; + * R.invert(raceResultsByFirstName); + * //=> { 'alice': ['first', 'third'], 'jake':['second'] } + */ + var invert = _curry1(function invert(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + while (idx < len) { + var key = props[idx]; + var val = obj[key]; + var list = _has(val, out) ? out[val] : out[val] = []; + list[list.length] = key; + idx += 1; + } + return out; + }); + + /** + * Returns a new object with the keys of the given object as values, and the + * values of the given object, which are coerced to strings, as keys. Note + * that the last key found is preferred when handling the same value. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: s} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object + * @see R.invert + * @example + * + * var raceResults = { + * first: 'alice', + * second: 'jake' + * }; + * R.invertObj(raceResults); + * //=> { 'alice': 'first', 'jake':'second' } + * + * // Alternatively: + * var raceResults = ['alice', 'jake']; + * R.invertObj(raceResults); + * //=> { 'alice': '0', 'jake':'1' } + */ + var invertObj = _curry1(function invertObj(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + while (idx < len) { + var key = props[idx]; + out[obj[key]] = key; + idx += 1; + } + return out; + }); + + /** + * Returns `true` if the given value is its type's empty value; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> Boolean + * @param {*} x + * @return {Boolean} + * @see R.empty + * @example + * + * R.isEmpty([1, 2, 3]); //=> false + * R.isEmpty([]); //=> true + * R.isEmpty(''); //=> true + * R.isEmpty(null); //=> false + * R.isEmpty({}); //=> true + * R.isEmpty({length: 0}); //=> false + */ + var isEmpty = _curry1(function isEmpty(x) { + return x != null && equals(x, empty(x)); + }); + + /** + * Returns the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.init, R.head, R.tail + * @example + * + * R.last(['fi', 'fo', 'fum']); //=> 'fum' + * R.last([]); //=> undefined + * + * R.last('abc'); //=> 'c' + * R.last(''); //=> '' + */ + var last = nth(-1); + + /** + * Returns the position of the last occurrence of an item in an array, or -1 if + * the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.indexOf + * @example + * + * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 + * R.lastIndexOf(10, [1,2,3,4]); //=> -1 + */ + var lastIndexOf = _curry2(function lastIndexOf(target, xs) { + if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) { + return xs.lastIndexOf(target); + } else { + var idx = xs.length - 1; + while (idx >= 0) { + if (equals(xs[idx], target)) { + return idx; + } + idx -= 1; + } + return -1; + } + }); + + /** + * Takes a function and + * a [functor](https://github.com/fantasyland/fantasy-land#functor), + * applies the function to each of the functor's values, and returns + * a functor of the same shape. + * + * Ramda provides suitable `map` implementations for `Array` and `Object`, + * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`. + * + * Dispatches to the `map` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * Also treats functions as functors and will compose them together. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => (a -> b) -> f a -> f b + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {Array} list The list to be iterated over. + * @return {Array} The new list. + * @see R.transduce, R.addIndex + * @example + * + * var double = x => x * 2; + * + * R.map(double, [1, 2, 3]); //=> [2, 4, 6] + * + * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} + * @symb R.map(f, [a, b]) = [f(a), f(b)] + * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) } + * @symb R.map(f, functor_o) = functor_o.map(f) + */ + var map = _curry2(_dispatchable([ + 'fantasy-land/map', + 'map' + ], _xmap, function map(fn, functor) { + switch (Object.prototype.toString.call(functor)) { + case '[object Function]': + return curryN(functor.length, function () { + return fn.call(this, functor.apply(this, arguments)); + }); + case '[object Object]': + return _reduce(function (acc, key) { + acc[key] = fn(functor[key]); + return acc; + }, {}, keys(functor)); + default: + return _map(fn, functor); + } + })); + + /** + * An Object-specific version of [`map`](#map). The function is applied to three + * arguments: *(value, key, obj)*. If only the value is significant, use + * [`map`](#map) instead. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig ((*, String, Object) -> *) -> Object -> Object + * @param {Function} fn + * @param {Object} obj + * @return {Object} + * @see R.map + * @example + * + * var values = { x: 1, y: 2, z: 3 }; + * var prependKeyAndDouble = (num, key, obj) => key + (num * 2); + * + * R.mapObjIndexed(prependKeyAndDouble, values); //=> { x: 'x2', y: 'y4', z: 'z6' } + */ + var mapObjIndexed = _curry2(function mapObjIndexed(fn, obj) { + return _reduce(function (acc, key) { + acc[key] = fn(obj[key], key, obj); + return acc; + }, {}, keys(obj)); + }); + + /** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to the key and associated values + * using the resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig (String -> a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWithKey, R.mergeDeep, R.mergeDeepWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeDeepWithKey(concatValues, + * { a: true, c: { thing: 'foo', values: [10, 20] }}, + * { b: true, c: { thing: 'bar', values: [15, 35] }}); + * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} + */ + var mergeDeepWithKey = _curry3(function mergeDeepWithKey(fn, lObj, rObj) { + return mergeWithKey(function (k, lVal, rVal) { + if (_isObject(lVal) && _isObject(rVal)) { + return mergeDeepWithKey(fn, lVal, rVal); + } else { + return fn(k, lVal, rVal); + } + }, lObj, rObj); + }); + + /** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the values + * associated with the key in each object, with the result being used as the + * value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig (a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWith, R.merge, R.mergeWithKey + * @example + * + * R.mergeWith(R.concat, + * { a: true, values: [10, 20] }, + * { b: true, values: [15, 35] }); + * //=> { a: true, b: true, values: [10, 20, 15, 35] } + */ + var mergeWith = _curry3(function mergeWith(fn, l, r) { + return mergeWithKey(function (_, _l, _r) { + return fn(_l, _r); + }, l, r); + }); + + /** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided initially followed by the arguments provided to `g`. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partialRight + * @example + * + * var multiply2 = (a, b) => a * b; + * var double = R.partial(multiply2, [2]); + * double(2); //=> 4 + * + * var greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * var sayHello = R.partial(greet, ['Hello']); + * var sayHelloToMs = R.partial(sayHello, ['Ms.']); + * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d) + */ + var partial = _createPartialApplicator(_concat); + + /** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided to `g` followed by the arguments provided initially. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partial + * @example + * + * var greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * var greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']); + * + * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b) + */ + var partialRight = _createPartialApplicator(flip(_concat)); + + /** + * Determines whether a nested path on an object has a specific value, in + * [`R.equals`](#equals) terms. Most likely used to filter a list. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Relation + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> Boolean + * @param {Array} path The path of the nested property to use + * @param {*} val The value to compare the nested property with + * @param {Object} obj The object to check the nested property in + * @return {Boolean} `true` if the value equals the nested object property, + * `false` otherwise. + * @example + * + * var user1 = { address: { zipCode: 90210 } }; + * var user2 = { address: { zipCode: 55555 } }; + * var user3 = { name: 'Bob' }; + * var users = [ user1, user2, user3 ]; + * var isFamous = R.pathEq(['address', 'zipCode'], 90210); + * R.filter(isFamous, users); //=> [ user1 ] + */ + var pathEq = _curry3(function pathEq(_path, val, obj) { + return equals(path(_path, obj), val); + }); + + /** + * Returns a new list by plucking the same named property off all objects in + * the list supplied. + * + * `pluck` will work on + * any [functor](https://github.com/fantasyland/fantasy-land#functor) in + * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => k -> f {k: v} -> f v + * @param {Number|String} key The key name to pluck off of each object. + * @param {Array} f The array or functor to consider. + * @return {Array} The list of values for the given key. + * @see R.props + * @example + * + * R.pluck('a')([{a: 1}, {a: 2}]); //=> [1, 2] + * R.pluck(0)([[1, 2], [3, 4]]); //=> [1, 3] + * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} + * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5] + * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5] + */ + var pluck = _curry2(function pluck(p, list) { + return map(prop(p), list); + }); + + /** + * Reasonable analog to SQL `select` statement. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @category Relation + * @sig [k] -> [{k: v}] -> [{k: v}] + * @param {Array} props The property names to project + * @param {Array} objs The objects to query + * @return {Array} An array of objects with just the `props` properties. + * @example + * + * var abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2}; + * var fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7}; + * var kids = [abby, fred]; + * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] + */ + // passing `identity` gives correct arity + var project = useWith(_map, [ + pickAll, + identity + ]); + + /** + * Returns `true` if the specified object property is equal, in + * [`R.equals`](#equals) terms, to the given value; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig String -> a -> Object -> Boolean + * @param {String} name + * @param {*} val + * @param {*} obj + * @return {Boolean} + * @see R.equals, R.propSatisfies + * @example + * + * var abby = {name: 'Abby', age: 7, hair: 'blond'}; + * var fred = {name: 'Fred', age: 12, hair: 'brown'}; + * var rusty = {name: 'Rusty', age: 10, hair: 'brown'}; + * var alois = {name: 'Alois', age: 15, disposition: 'surly'}; + * var kids = [abby, fred, rusty, alois]; + * var hasBrownHair = R.propEq('hair', 'brown'); + * R.filter(hasBrownHair, kids); //=> [fred, rusty] + */ + var propEq = _curry3(function propEq(name, val, obj) { + return equals(val, obj[name]); + }); + + /** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It may use + * [`R.reduced`](#reduced) to shortcut the iteration. + * + * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function + * is *(value, acc)*. + * + * Note: `R.reduce` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduce` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description + * + * Dispatches to the `reduce` method of the third argument, if present. When + * doing so, it is up to the user to handle the [`R.reduced`](#reduced) + * shortcuting, as this is not implemented by `reduce`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> a + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduced, R.addIndex, R.reduceRight + * @example + * + * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 + * - -10 + * / \ / \ + * - 4 -6 4 + * / \ / \ + * - 3 ==> -3 3 + * / \ / \ + * - 2 -1 2 + * / \ / \ + * 0 1 0 1 + * + * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d) + */ + var reduce = _curry3(_reduce); + + /** + * Groups the elements of the list according to the result of calling + * the String-returning function `keyFn` on each element and reduces the elements + * of each group to a single value via the reducer function `valueFn`. + * + * This function is basically a more general [`groupBy`](#groupBy) function. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category List + * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a} + * @param {Function} valueFn The function that reduces the elements of each group to a single + * value. Receives two values, accumulator for a particular group and the current element. + * @param {*} acc The (initial) accumulator value for each group. + * @param {Function} keyFn The function that maps the list's element into a key. + * @param {Array} list The array to group. + * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of + * `valueFn` for elements which produced that key when passed to `keyFn`. + * @see R.groupBy, R.reduce + * @example + * + * var reduceToNamesBy = R.reduceBy((acc, student) => acc.concat(student.name), []); + * var namesByGrade = reduceToNamesBy(function(student) { + * var score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * var students = [{name: 'Lucy', score: 92}, + * {name: 'Drew', score: 85}, + * // ... + * {name: 'Bart', score: 62}]; + * namesByGrade(students); + * // { + * // 'A': ['Lucy'], + * // 'B': ['Drew'] + * // // ..., + * // 'F': ['Bart'] + * // } + */ + var reduceBy = _curryN(4, [], _dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) { + return _reduce(function (acc, elt) { + var key = keyFn(elt); + acc[key] = valueFn(_has(key, acc) ? acc[key] : valueAcc, elt); + return acc; + }, {}, list); + })); + + /** + * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating + * through the list, successively calling the iterator function. `reduceWhile` + * also takes a predicate that is evaluated before each step. If the predicate + * returns `false`, it "short-circuits" the iteration and returns the current + * value of the accumulator. + * + * @func + * @memberOf R + * @since v0.22.0 + * @category List + * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} pred The predicate. It is passed the accumulator and the + * current element. + * @param {Function} fn The iterator function. Receives two values, the + * accumulator and the current element. + * @param {*} a The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced + * @example + * + * var isOdd = (acc, x) => x % 2 === 1; + * var xs = [1, 3, 5, 60, 777, 800]; + * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 + * + * var ys = [2, 4, 6] + * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111 + */ + var reduceWhile = _curryN(4, [], function _reduceWhile(pred, fn, a, list) { + return _reduce(function (acc, x) { + return pred(acc, x) ? fn(acc, x) : _reduced(acc); + }, a, list); + }); + + /** + * The complement of [`filter`](#filter). + * + * Acts as a transducer if a transformer is given in list position. Filterable + * objects include plain objects or any object that has a filter method such + * as `Array`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} + * @see R.filter, R.transduce, R.addIndex + * @example + * + * var isOdd = (n) => n % 2 === 1; + * + * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4] + * + * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ + var reject = _curry2(function reject(pred, filterable) { + return filter(_complement(pred), filterable); + }); + + /** + * Returns a fixed list of size `n` containing a specified identical value. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig a -> n -> [a] + * @param {*} value The value to repeat. + * @param {Number} n The desired size of the output list. + * @return {Array} A new array containing `n` `value`s. + * @see R.times + * @example + * + * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi'] + * + * var obj = {}; + * var repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}] + * repeatedObjs[0] === repeatedObjs[1]; //=> true + * @symb R.repeat(a, 0) = [] + * @symb R.repeat(a, 1) = [a] + * @symb R.repeat(a, 2) = [a, a] + */ + var repeat = _curry2(function repeat(value, n) { + return times(always(value), n); + }); + + /** + * Checks if a list starts with the provided values + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> Boolean + * @sig String -> Boolean + * @param {*} prefix + * @param {*} list + * @return {Boolean} + * @example + * + * R.startsWith('a', 'abc') //=> true + * R.startsWith('b', 'abc') //=> false + * R.startsWith(['a'], ['a', 'b', 'c']) //=> true + * R.startsWith(['b'], ['a', 'b', 'c']) //=> false + */ + var startsWith = _curry2(function (prefix, list) { + return equals(take(prefix.length, list), prefix); + }); + + /** + * Adds together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The sum of all the numbers in the list. + * @see R.reduce + * @example + * + * R.sum([2,4,6,8,100,1]); //=> 121 + */ + var sum = reduce(add, 0); + + /** + * Returns a new list containing the last `n` elements of the given list. + * If `n > list.length`, returns a list of `list.length` elements. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements to return. + * @param {Array} xs The collection to consider. + * @return {Array} + * @see R.dropLast + * @example + * + * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(3, 'ramda'); //=> 'mda' + */ + var takeLast = _curry2(function takeLast(n, xs) { + return drop(n >= 0 ? xs.length - n : 0, xs); + }); + + /** + * Initializes a transducer using supplied iterator function. Returns a single + * item by iterating through the list, successively calling the transformed + * iterator function and passing it an accumulator value and the current value + * from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It will be + * wrapped as a transformer to initialize the transducer. A transformer can be + * passed directly in place of an iterator function. In both cases, iteration + * may be stopped early with the [`R.reduced`](#reduced) function. + * + * A transducer is a function that accepts a transformer and returns a + * transformer and can be composed directly. + * + * A transformer is an an object that provides a 2-arity reducing iterator + * function, step, 0-arity initial value function, init, and 1-arity result + * extraction function, result. The step function is used as the iterator + * function in reduce. The result function is used to convert the final + * accumulator into the return type and in most cases is + * [`R.identity`](#identity). The init function can be used to provide an + * initial accumulator, but is ignored by transduce. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. Wrapped as transformer, if necessary, and used to + * initialize the transducer + * @param {*} acc The initial accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced, R.into + * @example + * + * var numbers = [1, 2, 3, 4]; + * var transducer = R.compose(R.map(R.add(1)), R.take(2)); + * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] + * + * var isOdd = (x) => x % 2 === 1; + * var firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); + * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] + */ + var transduce = curryN(4, function transduce(xf, fn, acc, list) { + return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list); + }); + + /** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. Duplication is determined according to the value returned by + * applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> a -> Boolean) -> [*] -> [*] -> [*] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @see R.union + * @example + * + * var l1 = [{a: 1}, {a: 2}]; + * var l2 = [{a: 1}, {a: 4}]; + * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] + */ + var unionWith = _curry3(function unionWith(pred, list1, list2) { + return uniqWith(pred, _concat(list1, list2)); + }); + + /** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec, false otherwise. An object satisfies the spec if, for each of the + * spec's own properties, accessing that property of the object gives the same + * value (in [`R.equals`](#equals) terms) as accessing that property of the + * spec. + * + * `whereEq` is a specialization of [`where`](#where). + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @sig {String: *} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.where + * @example + * + * // pred :: Object -> Boolean + * var pred = R.whereEq({a: 1, b: 2}); + * + * pred({a: 1}); //=> false + * pred({a: 1, b: 2}); //=> true + * pred({a: 1, b: 2, c: 3}); //=> true + * pred({a: 1, b: 1}); //=> false + */ + var whereEq = _curry2(function whereEq(spec, testObj) { + return where(map(equals, spec), testObj); + }); + + var _flatCat = function () { + var preservingReduced = function (xf) { + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function (result) { + return xf['@@transducer/result'](result); + }, + '@@transducer/step': function (result, input) { + var ret = xf['@@transducer/step'](result, input); + return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret; + } + }; + }; + return function _xcat(xf) { + var rxf = preservingReduced(xf); + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function (result) { + return rxf['@@transducer/result'](result); + }, + '@@transducer/step': function (result, input) { + return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input); + } + }; + }; + }(); + + // Array.prototype.indexOf doesn't exist below IE9 + // manually crawl the list to distinguish between +0 and -0 + // NaN + // non-zero numbers can utilise Set + // all these types can utilise Set + // null can utilise Set + // anything else not covered above, defer to R.equals + var _indexOf = function _indexOf(list, a, idx) { + var inf, item; + // Array.prototype.indexOf doesn't exist below IE9 + if (typeof list.indexOf === 'function') { + switch (typeof a) { + case 'number': + if (a === 0) { + // manually crawl the list to distinguish between +0 and -0 + inf = 1 / a; + while (idx < list.length) { + item = list[idx]; + if (item === 0 && 1 / item === inf) { + return idx; + } + idx += 1; + } + return -1; + } else if (a !== a) { + // NaN + while (idx < list.length) { + item = list[idx]; + if (typeof item === 'number' && item !== item) { + return idx; + } + idx += 1; + } + return -1; + } + // non-zero numbers can utilise Set + return list.indexOf(a, idx); + // all these types can utilise Set + case 'string': + case 'boolean': + case 'function': + case 'undefined': + return list.indexOf(a, idx); + case 'object': + if (a === null) { + // null can utilise Set + return list.indexOf(a, idx); + } + } + } + // anything else not covered above, defer to R.equals + while (idx < list.length) { + if (equals(list[idx], a)) { + return idx; + } + idx += 1; + } + return -1; + }; + + var _xchain = _curry2(function _xchain(f, xf) { + return map(f, _flatCat(xf)); + }); + + /** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if every one of the provided predicates is satisfied + * by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.anyPass + * @example + * + * var isQueen = R.propEq('rank', 'Q'); + * var isSpade = R.propEq('suit', '♠︎'); + * var isQueenOfSpades = R.allPass([isQueen, isSpade]); + * + * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false + * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true + */ + var allPass = _curry1(function allPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function () { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (!preds[idx].apply(this, arguments)) { + return false; + } + idx += 1; + } + return true; + }); + }); + + /** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if at least one of the provided predicates is + * satisfied by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.allPass + * @example + * + * var isClub = R.propEq('suit', '♣'); + * var isSpade = R.propEq('suit', '♠'); + * var isBlackCard = R.anyPass([isClub, isSpade]); + * + * isBlackCard({rank: '10', suit: '♣'}); //=> true + * isBlackCard({rank: 'Q', suit: '♠'}); //=> true + * isBlackCard({rank: 'Q', suit: '♦'}); //=> false + */ + var anyPass = _curry1(function anyPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function () { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (preds[idx].apply(this, arguments)) { + return true; + } + idx += 1; + } + return false; + }); + }); + + /** + * ap applies a list of functions to a list of values. + * + * Dispatches to the `ap` method of the second argument, if present. Also + * treats curried functions as applicatives. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig [a -> b] -> [a] -> [b] + * @sig Apply f => f (a -> b) -> f a -> f b + * @param {*} applyF + * @param {*} applyX + * @return {*} + * @example + * + * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6] + * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"] + * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)] + */ + // else + var ap = _curry2(function ap(applyF, applyX) { + return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) { + return applyF(x)(applyX(x)); + } : // else + _reduce(function (acc, f) { + return _concat(acc, map(f, applyX)); + }, [], applyF); + }); + + /** + * Given a spec object recursively mapping properties to functions, creates a + * function producing an object of the same structure, by mapping each property + * to the result of calling its associated function with the supplied arguments. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v}) + * @param {Object} spec an object recursively mapping properties to functions for + * producing the values for these properties. + * @return {Function} A function that returns an object of the same structure + * as `spec', with each property set to the value returned by calling its + * associated function with the supplied arguments. + * @see R.converge, R.juxt + * @example + * + * var getMetrics = R.applySpec({ + * sum: R.add, + * nested: { mul: R.multiply } + * }); + * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } + * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } } + */ + var applySpec = _curry1(function applySpec(spec) { + spec = map(function (v) { + return typeof v == 'function' ? v : applySpec(v); + }, spec); + return curryN(reduce(max, 0, pluck('length', values(spec))), function () { + var args = arguments; + return map(function (f) { + return apply(f, args); + }, spec); + }); + }); + + /** + * Returns the result of calling its first argument with the remaining + * arguments. This is occasionally useful as a converging function for + * [`R.converge`](#converge): the first branch can produce a function while the + * remaining branches produce values to be passed to that function as its + * arguments. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig (*... -> a),*... -> a + * @param {Function} fn The function to apply to the remaining arguments. + * @param {...*} args Any number of positional arguments. + * @return {*} + * @see R.apply + * @example + * + * R.call(R.add, 1, 2); //=> 3 + * + * var indentN = R.pipe(R.times(R.always(' ')), + * R.join(''), + * R.replace(/^(?!$)/gm)); + * + * var format = R.converge(R.call, [ + * R.pipe(R.prop('indent'), indentN), + * R.prop('value') + * ]); + * + * format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' + * @symb R.call(f, a, b) = f(a, b) + */ + var call = curry(function call(fn) { + return fn.apply(this, Array.prototype.slice.call(arguments, 1)); + }); + + /** + * `chain` maps a function over a list and concatenates the results. `chain` + * is also known as `flatMap` in some libraries + * + * Dispatches to the `chain` method of the second argument, if present, + * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain m => (a -> m b) -> m a -> m b + * @param {Function} fn The function to map with + * @param {Array} list The list to map over + * @return {Array} The result of flat-mapping `list` with `fn` + * @example + * + * var duplicate = n => [n, n]; + * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] + * + * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1] + */ + var chain = _curry2(_dispatchable([ + 'fantasy-land/chain', + 'chain' + ], _xchain, function chain(fn, monad) { + if (typeof monad === 'function') { + return function (x) { + return fn(monad(x))(x); + }; + } + return _makeFlat(false)(map(fn, monad)); + })); + + /** + * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic. + * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments + * to `fn` are applied to each of the predicates in turn until one returns a + * "truthy" value, at which point `fn` returns the result of applying its + * arguments to the corresponding transformer. If none of the predicates + * matches, `fn` returns undefined. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Logic + * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *) + * @param {Array} pairs A list of [predicate, transformer] + * @return {Function} + * @example + * + * var fn = R.cond([ + * [R.equals(0), R.always('water freezes at 0°C')], + * [R.equals(100), R.always('water boils at 100°C')], + * [R.T, temp => 'nothing special happens at ' + temp + '°C'] + * ]); + * fn(0); //=> 'water freezes at 0°C' + * fn(50); //=> 'nothing special happens at 50°C' + * fn(100); //=> 'water boils at 100°C' + */ + var cond = _curry1(function cond(pairs) { + var arity = reduce(max, 0, map(function (pair) { + return pair[0].length; + }, pairs)); + return _arity(arity, function () { + var idx = 0; + while (idx < pairs.length) { + if (pairs[idx][0].apply(this, arguments)) { + return pairs[idx][1].apply(this, arguments); + } + idx += 1; + } + }); + }); + + /** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. The arity of the function + * returned is specified to allow using variadic constructor functions. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Function + * @sig Number -> (* -> {*}) -> (* -> {*}) + * @param {Number} n The arity of the constructor function. + * @param {Function} Fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @example + * + * // Variadic Constructor function + * function Salad() { + * this.ingredients = arguments; + * }; + * Salad.prototype.recipe = function() { + * var instructions = R.map((ingredient) => ( + * 'Add a whollop of ' + ingredient, this.ingredients) + * ) + * return R.join('\n', instructions) + * } + * + * var ThreeLayerSalad = R.constructN(3, Salad) + * + * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments. + * var salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup') + * console.log(salad.recipe()); + * // Add a whollop of Mayonnaise + * // Add a whollop of Potato Chips + * // Add a whollop of Potato Ketchup + */ + var constructN = _curry2(function constructN(n, Fn) { + if (n > 10) { + throw new Error('Constructor with greater than ten arguments'); + } + if (n === 0) { + return function () { + return new Fn(); + }; + } + return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) { + switch (arguments.length) { + case 1: + return new Fn($0); + case 2: + return new Fn($0, $1); + case 3: + return new Fn($0, $1, $2); + case 4: + return new Fn($0, $1, $2, $3); + case 5: + return new Fn($0, $1, $2, $3, $4); + case 6: + return new Fn($0, $1, $2, $3, $4, $5); + case 7: + return new Fn($0, $1, $2, $3, $4, $5, $6); + case 8: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7); + case 9: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8); + case 10: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9); + } + })); + }); + + /** + * Accepts a converging function and a list of branching functions and returns + * a new function. When invoked, this new function is applied to some + * arguments, each branching function is applied to those same arguments. The + * results of each branching function are passed as arguments to the converging + * function to produce the return value. + * + * @func + * @memberOf R + * @since v0.4.2 + * @category Function + * @sig (x1 -> x2 -> ... -> z) -> [(a -> b -> ... -> x1), (a -> b -> ... -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} after A function. `after` will be invoked with the return values of + * `fn1` and `fn2` as its arguments. + * @param {Array} functions A list of functions. + * @return {Function} A new function. + * @see R.useWith + * @example + * + * var average = R.converge(R.divide, [R.sum, R.length]) + * average([1, 2, 3, 4, 5, 6, 7]) //=> 4 + * + * var strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) + * strangeConcat("Yodel") //=> "YODELyodel" + * + * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b)) + */ + var converge = _curry2(function converge(after, fns) { + return curryN(reduce(max, 0, pluck('length', fns)), function () { + var args = arguments; + var context = this; + return after.apply(context, _map(function (fn) { + return fn.apply(context, args); + }, fns)); + }); + }); + + /** + * Counts the elements of a list according to how many match each value of a + * key generated by the supplied function. Returns an object mapping the keys + * produced by `fn` to the number of occurrences in the list. Note that all + * keys are coerced to strings because of how JavaScript objects work. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> String) -> [a] -> {*} + * @param {Function} fn The function used to map values to keys. + * @param {Array} list The list to count elements from. + * @return {Object} An object mapping keys to number of occurrences in the list. + * @example + * + * var numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2]; + * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1} + * + * var letters = ['a', 'b', 'A', 'a', 'B', 'c']; + * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} + */ + var countBy = reduceBy(function (acc, elem) { + return acc + 1; + }, 0); + + /** + * Returns a new list without any consecutively repeating elements. Equality is + * determined by applying the supplied predicate to each pair of consecutive elements. The + * first element in a series of equal elements will be preserved. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig (a, a -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * var l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; + * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] + */ + var dropRepeatsWith = _curry2(_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) { + var result = []; + var idx = 1; + var len = list.length; + if (len !== 0) { + result[0] = list[0]; + while (idx < len) { + if (!pred(last(result), list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + } + return result; + })); + + /** + * Checks if a list ends with the provided values + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> Boolean + * @sig String -> Boolean + * @param {*} suffix + * @param {*} list + * @return {Boolean} + * @example + * + * R.endsWith('c', 'abc') //=> true + * R.endsWith('b', 'abc') //=> false + * R.endsWith(['c'], ['a', 'b', 'c']) //=> true + * R.endsWith(['b'], ['a', 'b', 'c']) //=> false + */ + var endsWith = _curry2(function (suffix, list) { + return equals(takeLast(suffix.length, list), suffix); + }); + + /** + * Takes a function and two values in its domain and returns `true` if the + * values map to the same value in the codomain; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Relation + * @sig (a -> b) -> a -> a -> Boolean + * @param {Function} f + * @param {*} x + * @param {*} y + * @return {Boolean} + * @example + * + * R.eqBy(Math.abs, 5, -5); //=> true + */ + var eqBy = _curry3(function eqBy(f, x, y) { + return equals(f(x), f(y)); + }); + + /** + * Reports whether two objects have the same value, in [`R.equals`](#equals) + * terms, for the specified property. Useful as a curried predicate. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig k -> {k: v} -> {k: v} -> Boolean + * @param {String} prop The name of the property to compare + * @param {Object} obj1 + * @param {Object} obj2 + * @return {Boolean} + * + * @example + * + * var o1 = { a: 1, b: 2, c: 3, d: 4 }; + * var o2 = { a: 10, b: 20, c: 3, d: 40 }; + * R.eqProps('a', o1, o2); //=> false + * R.eqProps('c', o1, o2); //=> true + */ + var eqProps = _curry3(function eqProps(prop, obj1, obj2) { + return equals(obj1[prop], obj2[prop]); + }); + + /** + * Splits a list into sub-lists stored in an object, based on the result of + * calling a String-returning function on each element, and grouping the + * results according to values returned. + * + * Dispatches to the `groupBy` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> String) -> [a] -> {String: [a]} + * @param {Function} fn Function :: a -> String + * @param {Array} list The array to group + * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements + * that produced that key when passed to `fn`. + * @see R.transduce + * @example + * + * var byGrade = R.groupBy(function(student) { + * var score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * var students = [{name: 'Abby', score: 84}, + * {name: 'Eddy', score: 58}, + * // ... + * {name: 'Jack', score: 69}]; + * byGrade(students); + * // { + * // 'A': [{name: 'Dianne', score: 99}], + * // 'B': [{name: 'Abby', score: 84}] + * // // ..., + * // 'F': [{name: 'Eddy', score: 58}] + * // } + */ + var groupBy = _curry2(_checkForMethod('groupBy', reduceBy(function (acc, item) { + if (acc == null) { + acc = []; + } + acc.push(item); + return acc; + }, null))); + + /** + * Given a function that generates a key, turns a list of objects into an + * object indexing the objects by the given key. Note that if multiple + * objects generate the same value for the indexing key only the last value + * will be included in the generated object. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> String) -> [{k: v}] -> {k: {k: v}} + * @param {Function} fn Function :: a -> String + * @param {Array} array The array of objects to index + * @return {Object} An object indexing each array element by the given property. + * @example + * + * var list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}]; + * R.indexBy(R.prop('id'), list); + * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} + */ + var indexBy = reduceBy(function (acc, elem) { + return elem; + }, null); + + /** + * Returns the position of the first occurrence of an item in an array, or -1 + * if the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.lastIndexOf + * @example + * + * R.indexOf(3, [1,2,3,4]); //=> 2 + * R.indexOf(10, [1,2,3,4]); //=> -1 + */ + var indexOf = _curry2(function indexOf(target, xs) { + return typeof xs.indexOf === 'function' && !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0); + }); + + /** + * juxt applies a list of functions to a list of values. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Function + * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n]) + * @param {Array} fns An array of functions + * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters. + * @see R.applySpec + * @example + * + * var getRange = R.juxt([Math.min, Math.max]); + * getRange(3, 4, 9, -3); //=> [-3, 9] + * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)] + */ + var juxt = _curry1(function juxt(fns) { + return converge(function () { + return Array.prototype.slice.call(arguments, 0); + }, fns); + }); + + /** + * Returns a lens for the given getter and setter functions. The getter "gets" + * the value of the focus; the setter "sets" the value of the focus. The setter + * should not mutate the data structure. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig (s -> a) -> ((a, s) -> s) -> Lens s a + * @param {Function} getter + * @param {Function} setter + * @return {Lens} + * @see R.view, R.set, R.over, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lens(R.prop('x'), R.assoc('x')); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ + var lens = _curry2(function lens(getter, setter) { + return function (toFunctorFn) { + return function (target) { + return map(function (focus) { + return setter(focus, target); + }, toFunctorFn(getter(target))); + }; + }; + }); + + /** + * Returns a lens whose focus is the specified index. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Number -> Lens s a + * @param {Number} n + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var headLens = R.lensIndex(0); + * + * R.view(headLens, ['a', 'b', 'c']); //=> 'a' + * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] + * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c'] + */ + var lensIndex = _curry1(function lensIndex(n) { + return lens(nth(n), update(n)); + }); + + /** + * Returns a lens whose focus is the specified path. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @typedefn Idx = String | Int + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig [Idx] -> Lens s a + * @param {Array} path The path to use. + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var xHeadYLens = R.lensPath(['x', 0, 'y']); + * + * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> 2 + * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]} + * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} + */ + var lensPath = _curry1(function lensPath(p) { + return lens(path(p), assocPath(p)); + }); + + /** + * Returns a lens whose focus is the specified property. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig String -> Lens s a + * @param {String} k + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ + var lensProp = _curry1(function lensProp(k) { + return lens(prop(k), assoc(k)); + }); + + /** + * "lifts" a function to be the specified arity, so that it may "map over" that + * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig Number -> (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.lift, R.ap + * @example + * + * var madd3 = R.liftN(3, (...args) => R.sum(args)); + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + */ + var liftN = _curry2(function liftN(arity, fn) { + var lifted = curryN(arity, fn); + return curryN(arity, function () { + return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); + }); + }); + + /** + * Returns the mean of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.median + * @example + * + * R.mean([2, 7, 9]); //=> 6 + * R.mean([]); //=> NaN + */ + var mean = _curry1(function mean(list) { + return sum(list) / list.length; + }); + + /** + * Returns the median of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.mean + * @example + * + * R.median([2, 9, 7]); //=> 7 + * R.median([7, 2, 10, 9]); //=> 8 + * R.median([]); //=> NaN + */ + var median = _curry1(function median(list) { + var len = list.length; + if (len === 0) { + return NaN; + } + var width = 2 - len % 2; + var idx = (len - width) / 2; + return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) { + return a < b ? -1 : a > b ? 1 : 0; + }).slice(idx, idx + width)); + }); + + /** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the first object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} + */ + var mergeDeepLeft = _curry2(function mergeDeepLeft(lObj, rObj) { + return mergeDeepWithKey(function (k, lVal, rVal) { + return lVal; + }, lObj, rObj); + }); + + /** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} + */ + var mergeDeepRight = _curry2(function mergeDeepRight(lObj, rObj) { + return mergeDeepWithKey(function (k, lVal, rVal) { + return rVal; + }, lObj, rObj); + }); + + /** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to associated values using the + * resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig (a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWith, R.mergeDeep, R.mergeDeepWithKey + * @example + * + * R.mergeDeepWith(R.concat, + * { a: true, c: { values: [10, 20] }}, + * { b: true, c: { values: [15, 35] }}); + * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} + */ + var mergeDeepWith = _curry3(function mergeDeepWith(fn, lObj, rObj) { + return mergeDeepWithKey(function (k, lVal, rVal) { + return fn(lVal, rVal); + }, lObj, rObj); + }); + + /** + * Takes a predicate and a list or other `Filterable` object and returns the + * pair of filterable objects of the same type of elements which do and do not + * satisfy, the predicate, respectively. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a] + * @param {Function} pred A predicate to determine which side the element belongs to. + * @param {Array} filterable the list (or other filterable) to partition. + * @return {Array} An array, containing first the subset of elements that satisfy the + * predicate, and second the subset of elements that do not satisfy. + * @see R.filter, R.reject + * @example + * + * R.partition(R.contains('s'), ['sss', 'ttt', 'foo', 'bars']); + * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ] + * + * R.partition(R.contains('s'), { a: 'sss', b: 'ttt', foo: 'bars' }); + * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] + */ + var partition = juxt([ + filter, + reject + ]); + + /** + * Performs left-to-right function composition. The leftmost function may have + * any arity; the remaining functions must be unary. + * + * In some libraries this function is named `sequence`. + * + * **Note:** The result of pipe is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) + * @param {...Function} functions + * @return {Function} + * @see R.compose + * @example + * + * var f = R.pipe(Math.pow, R.negate, R.inc); + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b))) + */ + var pipe = function pipe() { + if (arguments.length === 0) { + throw new Error('pipe requires at least one argument'); + } + return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments))); + }; + + /** + * Performs left-to-right composition of one or more Promise-returning + * functions. The leftmost function may have any arity; the remaining functions + * must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z) + * @param {...Function} functions + * @return {Function} + * @see R.composeP + * @example + * + * // followersForUser :: String -> Promise [User] + * var followersForUser = R.pipeP(db.getUserById, db.getFollowers); + */ + var pipeP = function pipeP() { + if (arguments.length === 0) { + throw new Error('pipeP requires at least one argument'); + } + return _arity(arguments[0].length, reduce(_pipeP, arguments[0], tail(arguments))); + }; + + /** + * Multiplies together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The product of all the numbers in the list. + * @see R.reduce + * @example + * + * R.product([2,4,6,8,100,1]); //=> 38400 + */ + var product = reduce(multiply, 1); + + /** + * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) + * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an + * Applicative of Traversable. + * + * Dispatches to the `sequence` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a) + * @param {Function} of + * @param {*} traversable + * @return {*} + * @see R.traverse + * @example + * + * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) + * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() + * + * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] + * R.sequence(R.of, Nothing()); //=> [Nothing()] + */ + var sequence = _curry2(function sequence(of, traversable) { + return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) { + return ap(map(prepend, x), acc); + }, of([]), traversable); + }); + + /** + * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning + * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable), + * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative + * into an Applicative of Traversable. + * + * Dispatches to the `sequence` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b) + * @param {Function} of + * @param {Function} f + * @param {*} traversable + * @return {*} + * @see R.sequence + * @example + * + * // Returns `Nothing` if the given divisor is `0` + * safeDiv = n => d => d === 0 ? Nothing() : Just(n / d) + * + * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Just([5, 2.5, 2]) + * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Nothing + */ + var traverse = _curry3(function traverse(of, f, traversable) { + return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : sequence(of, map(f, traversable)); + }); + + /** + * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from + * any [Chain](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain c => c (c a) -> c a + * @param {*} list + * @return {*} + * @see R.flatten, R.chain + * @example + * + * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] + * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] + */ + var unnest = chain(_identity); + + var _contains = function _contains(a, list) { + return _indexOf(list, a, 0) >= 0; + }; + + // mapPairs :: (Object, [String]) -> [String] + var _toString = function _toString(x, seen) { + var recur = function recur(y) { + var xs = seen.concat([x]); + return _contains(y, xs) ? '' : _toString(y, xs); + }; + // mapPairs :: (Object, [String]) -> [String] + var mapPairs = function (obj, keys) { + return _map(function (k) { + return _quote(k) + ': ' + recur(obj[k]); + }, keys.slice().sort()); + }; + switch (Object.prototype.toString.call(x)) { + case '[object Arguments]': + return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))'; + case '[object Array]': + return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) { + return /^\d+$/.test(k); + }, keys(x)))).join(', ') + ']'; + case '[object Boolean]': + return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString(); + case '[object Date]': + return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')'; + case '[object Null]': + return 'null'; + case '[object Number]': + return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10); + case '[object String]': + return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x); + case '[object Undefined]': + return 'undefined'; + default: + if (typeof x.toString === 'function') { + var repr = x.toString(); + if (repr !== '[object Object]') { + return repr; + } + } + return '{' + mapPairs(x, keys(x)).join(', ') + '}'; + } + }; + + /** + * Performs right-to-left function composition. The rightmost function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of compose is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipe + * @example + * + * var classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName + * var yellGreeting = R.compose(R.toUpper, classyGreeting); + * yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 + * + * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b))) + */ + var compose = function compose() { + if (arguments.length === 0) { + throw new Error('compose requires at least one argument'); + } + return pipe.apply(this, reverse(arguments)); + }; + + /** + * Returns the right-to-left Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), R.chain(f))`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipeK + * @example + * + * // get :: String -> Object -> Maybe * + * var get = R.curry((propName, obj) => Maybe(obj[propName])) + * + * // getStateCode :: Maybe String -> Maybe String + * var getStateCode = R.composeK( + * R.compose(Maybe.of, R.toUpper), + * get('state'), + * get('address'), + * get('user'), + * ); + * getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY") + * getStateCode({}); //=> Maybe.Nothing() + * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a))) + */ + var composeK = function composeK() { + if (arguments.length === 0) { + throw new Error('composeK requires at least one argument'); + } + var init = Array.prototype.slice.call(arguments); + var last = init.pop(); + return compose(compose.apply(this, map(chain, init)), last); + }; + + /** + * Performs right-to-left composition of one or more Promise-returning + * functions. The rightmost function may have any arity; the remaining + * functions must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z) + * @param {...Function} functions The functions to compose + * @return {Function} + * @see R.pipeP + * @example + * + * var db = { + * users: { + * JOE: { + * name: 'Joe', + * followers: ['STEVE', 'SUZY'] + * } + * } + * } + * + * // We'll pretend to do a db lookup which returns a promise + * var lookupUser = (userId) => Promise.resolve(db.users[userId]) + * var lookupFollowers = (user) => Promise.resolve(user.followers) + * lookupUser('JOE').then(lookupFollowers) + * + * // followersForUser :: String -> Promise [UserId] + * var followersForUser = R.composeP(lookupFollowers, lookupUser); + * followersForUser('JOE').then(followers => console.log('Followers:', followers)) + * // Followers: ["STEVE","SUZY"] + */ + var composeP = function composeP() { + if (arguments.length === 0) { + throw new Error('composeP requires at least one argument'); + } + return pipeP.apply(this, reverse(arguments)); + }; + + /** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> {*}) -> (* -> {*}) + * @param {Function} fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @see R.invoker + * @example + * + * // Constructor function + * function Animal(kind) { + * this.kind = kind; + * }; + * Animal.prototype.sighting = function() { + * return "It's a " + this.kind + "!"; + * } + * + * var AnimalConstructor = R.construct(Animal) + * + * // Notice we no longer need the 'new' keyword: + * AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}}; + * + * var animalTypes = ["Lion", "Tiger", "Bear"]; + * var animalSighting = R.invoker(0, 'sighting'); + * var sightNewAnimal = R.compose(animalSighting, AnimalConstructor); + * R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] + */ + var construct = _curry1(function construct(Fn) { + return constructN(Fn.length, Fn); + }); + + /** + * Returns `true` if the specified value is equal, in [`R.equals`](#equals) + * terms, to at least one element of the given list; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Boolean + * @param {Object} a The item to compare against. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. + * @see R.any + * @example + * + * R.contains(3, [1, 2, 3]); //=> true + * R.contains(4, [1, 2, 3]); //=> false + * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true + * R.contains([42], [[42]]); //=> true + */ + var contains = _curry2(_contains); + + /** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Objects and Arrays are compared in terms of + * value equality, not reference equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without + * @example + * + * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] + * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] + * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] + */ + var difference = _curry2(function difference(first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!_contains(first[idx], second) && !_contains(first[idx], out)) { + out[out.length] = first[idx]; + } + idx += 1; + } + return out; + }); + + /** + * Returns a new list without any consecutively repeating elements. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2] + */ + var dropRepeats = _curry1(_dispatchable([], _xdropRepeatsWith(equals), dropRepeatsWith(equals))); + + /** + * "lifts" a function of arity > 1 so that it may "map over" a list, Function or other + * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.liftN + * @example + * + * var madd3 = R.lift((a, b, c) => a + b + c); + * + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + * + * var madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); + * + * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24] + */ + var lift = _curry1(function lift(fn) { + return liftN(fn.length, fn); + }); + + /** + * Returns a partial copy of an object omitting the keys specified. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [String] -> {String: *} -> {String: *} + * @param {Array} names an array of String property names to omit from the new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with properties from `names` not on it. + * @see R.pick + * @example + * + * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} + */ + var omit = _curry2(function omit(names, obj) { + var result = {}; + for (var prop in obj) { + if (!_contains(prop, names)) { + result[prop] = obj[prop]; + } + } + return result; + }); + + /** + * Returns the left-to-right Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.pipeK(f, g, h)` is equivalent to `R.pipe(R.chain(f), R.chain(g), R.chain(h))`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z) + * @param {...Function} + * @return {Function} + * @see R.composeK + * @example + * + * // parseJson :: String -> Maybe * + * // get :: String -> Object -> Maybe * + * + * // getStateCode :: Maybe String -> Maybe String + * var getStateCode = R.pipeK( + * parseJson, + * get('user'), + * get('address'), + * get('state'), + * R.compose(Maybe.of, R.toUpper) + * ); + * + * getStateCode('{"user":{"address":{"state":"ny"}}}'); + * //=> Just('NY') + * getStateCode('[Invalid JSON]'); + * //=> Nothing() + * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a))) + */ + var pipeK = function pipeK() { + if (arguments.length === 0) { + throw new Error('pipeK requires at least one argument'); + } + return composeK.apply(this, reverse(arguments)); + }; + + /** + * Returns the string representation of the given value. `eval`'ing the output + * should result in a value equivalent to the input value. Many of the built-in + * `toString` methods do not satisfy this requirement. + * + * If the given value is an `[object Object]` with a `toString` method other + * than `Object.prototype.toString`, this method is invoked with no arguments + * to produce the return value. This means user-defined constructor functions + * can provide a suitable `toString` method. For example: + * + * function Point(x, y) { + * this.x = x; + * this.y = y; + * } + * + * Point.prototype.toString = function() { + * return 'new Point(' + this.x + ', ' + this.y + ')'; + * }; + * + * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)' + * + * @func + * @memberOf R + * @since v0.14.0 + * @category String + * @sig * -> String + * @param {*} val + * @return {String} + * @example + * + * R.toString(42); //=> '42' + * R.toString('abc'); //=> '"abc"' + * R.toString([1, 2, 3]); //=> '[1, 2, 3]' + * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}' + * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' + */ + var toString = _curry1(function toString(val) { + return _toString(val, []); + }); + + /** + * Returns a new list without values in the first argument. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [a] -> [a] -> [a] + * @param {Array} list1 The values to be removed from `list2`. + * @param {Array} list2 The array to remove values from. + * @return {Array} The new array without values in `list1`. + * @see R.transduce, R.difference + * @example + * + * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4] + */ + var without = _curry2(function (xs, list) { + return reject(flip(_contains)(xs), list); + }); + + // A simple Set type that honours R.equals semantics + /* globals Set */ + // until we figure out why jsdoc chokes on this + // @param item The item to add to the Set + // @returns {boolean} true if the item did not exist prior, otherwise false + // + // + // @param item The item to check for existence in the Set + // @returns {boolean} true if the item exists in the Set, otherwise false + // + // + // Combines the logic for checking whether an item is a member of the set and + // for adding a new item to the set. + // + // @param item The item to check or add to the Set instance. + // @param shouldAdd If true, the item will be added to the set if it doesn't + // already exist. + // @param set The set instance to check or add to. + // @return {boolean} true if the item already existed, otherwise false. + // + // distinguish between +0 and -0 + // these types can all utilise the native Set + // set._items['boolean'] holds a two element array + // representing [ falseExists, trueExists ] + // compare functions for reference equality + /* falls through */ + // reduce the search size of heterogeneous sets by creating buckets + // for each type. + // scan through all previously applied items + var _Set = function () { + function _Set() { + /* globals Set */ + this._nativeSet = typeof Set === 'function' ? new Set() : null; + this._items = {}; + } + // until we figure out why jsdoc chokes on this + // @param item The item to add to the Set + // @returns {boolean} true if the item did not exist prior, otherwise false + // + _Set.prototype.add = function (item) { + return !hasOrAdd(item, true, this); + }; + // + // @param item The item to check for existence in the Set + // @returns {boolean} true if the item exists in the Set, otherwise false + // + _Set.prototype.has = function (item) { + return hasOrAdd(item, false, this); + }; + // + // Combines the logic for checking whether an item is a member of the set and + // for adding a new item to the set. + // + // @param item The item to check or add to the Set instance. + // @param shouldAdd If true, the item will be added to the set if it doesn't + // already exist. + // @param set The set instance to check or add to. + // @return {boolean} true if the item already existed, otherwise false. + // + function hasOrAdd(item, shouldAdd, set) { + var type = typeof item; + var prevSize, newSize; + switch (type) { + case 'string': + case 'number': + // distinguish between +0 and -0 + if (item === 0 && 1 / item === -Infinity) { + if (set._items['-0']) { + return true; + } else { + if (shouldAdd) { + set._items['-0'] = true; + } + return false; + } + } + // these types can all utilise the native Set + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = {}; + set._items[type][item] = true; + } + return false; + } else if (item in set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type][item] = true; + } + return false; + } + } + case 'boolean': + // set._items['boolean'] holds a two element array + // representing [ falseExists, trueExists ] + if (type in set._items) { + var bIdx = item ? 1 : 0; + if (set._items[type][bIdx]) { + return true; + } else { + if (shouldAdd) { + set._items[type][bIdx] = true; + } + return false; + } + } else { + if (shouldAdd) { + set._items[type] = item ? [ + false, + true + ] : [ + true, + false + ]; + } + return false; + } + case 'function': + // compare functions for reference equality + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + if (!_contains(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + case 'undefined': + if (set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type] = true; + } + return false; + } + case 'object': + if (item === null) { + if (!set._items['null']) { + if (shouldAdd) { + set._items['null'] = true; + } + return false; + } + return true; + } + /* falls through */ + default: + // reduce the search size of heterogeneous sets by creating buckets + // for each type. + type = Object.prototype.toString.call(item); + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + // scan through all previously applied items + if (!_contains(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + } + return _Set; + }(); + + /** + * A function which calls the two provided functions and returns the `&&` + * of the results. + * It returns the result of the first function if it is false-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * false-y value. + * + * In addition to functions, `R.both` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f A predicate + * @param {Function} g Another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. + * @see R.and + * @example + * + * var gt10 = R.gt(R.__, 10) + * var lt20 = R.lt(R.__, 20) + * var f = R.both(gt10, lt20); + * f(15); //=> true + * f(30); //=> false + */ + var both = _curry2(function both(f, g) { + return _isFunction(f) ? function _both() { + return f.apply(this, arguments) && g.apply(this, arguments); + } : lift(and)(f, g); + }); + + /** + * Takes a function `f` and returns a function `g` such that if called with the same arguments + * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`. + * + * `R.complement` may be applied to any functor + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> *) -> (*... -> Boolean) + * @param {Function} f + * @return {Function} + * @see R.not + * @example + * + * var isNotNil = R.complement(R.isNil); + * isNil(null); //=> true + * isNotNil(null); //=> false + * isNil(7); //=> false + * isNotNil(7); //=> true + */ + var complement = lift(not); + + /** + * Returns the result of concatenating the given lists or strings. + * + * Note: `R.concat` expects both arguments to be of the same type, + * unlike the native `Array.prototype.concat` method. It will throw + * an error if you `concat` an Array with a non-Array value. + * + * Dispatches to the `concat` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] -> [a] + * @sig String -> String -> String + * @param {Array|String} firstList The first list + * @param {Array|String} secondList The second list + * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of + * `secondList`. + * + * @example + * + * R.concat('ABC', 'DEF'); // 'ABCDEF' + * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + * R.concat([], []); //=> [] + */ + var concat = _curry2(function concat(a, b) { + if (_isArray(a)) { + if (_isArray(b)) { + return a.concat(b); + } + throw new TypeError(toString(b) + ' is not an array'); + } + if (_isString(a)) { + if (_isString(b)) { + return a + b; + } + throw new TypeError(toString(b) + ' is not a string'); + } + if (a != null && _isFunction(a['fantasy-land/concat'])) { + return a['fantasy-land/concat'](b); + } + if (a != null && _isFunction(a.concat)) { + return a.concat(b); + } + throw new TypeError(toString(a) + ' does not have a method named "concat" or "fantasy-land/concat"'); + }); + + /** + * A function wrapping calls to the two functions in an `||` operation, + * returning the result of the first function if it is truth-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * truth-y value. + * + * In addition to functions, `R.either` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f a predicate + * @param {Function} g another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together. + * @see R.or + * @example + * + * var gt10 = x => x > 10; + * var even = x => x % 2 === 0; + * var f = R.either(gt10, even); + * f(101); //=> true + * f(8); //=> true + */ + var either = _curry2(function either(f, g) { + return _isFunction(f) ? function _either() { + return f.apply(this, arguments) || g.apply(this, arguments); + } : lift(or)(f, g); + }); + + /** + * Turns a named method with a specified arity into a function that can be + * called directly supplied with arguments and a target object. + * + * The returned function is curried and accepts `arity + 1` parameters where + * the final parameter is the target object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *) + * @param {Number} arity Number of arguments the returned function should take + * before the target object. + * @param {String} method Name of the method to call. + * @return {Function} A new curried function. + * @see R.construct + * @example + * + * var sliceFrom = R.invoker(1, 'slice'); + * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm' + * var sliceFrom6 = R.invoker(2, 'slice')(6); + * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh' + * @symb R.invoker(0, 'method')(o) = o['method']() + * @symb R.invoker(1, 'method')(a, o) = o['method'](a) + * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b) + */ + var invoker = _curry2(function invoker(arity, method) { + return curryN(arity + 1, function () { + var target = arguments[arity]; + if (target != null && _isFunction(target[method])) { + return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity)); + } + throw new TypeError(toString(target) + ' does not have a method named "' + method + '"'); + }); + }); + + /** + * Returns a string made by inserting the `separator` between each element and + * concatenating all the elements into a single string. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig String -> [a] -> String + * @param {Number|String} separator The string used to separate the elements. + * @param {Array} xs The elements to join into a string. + * @return {String} str The string made by concatenating `xs` with `separator`. + * @see R.split + * @example + * + * var spacer = R.join(' '); + * spacer(['a', 2, 3.4]); //=> 'a 2 3.4' + * R.join('|', [1, 2, 3]); //=> '1|2|3' + */ + var join = invoker(1, 'join'); + + /** + * Creates a new function that, when invoked, caches the result of calling `fn` + * for a given argument set and returns the result. Subsequent calls to the + * memoized `fn` with the same argument set will not result in an additional + * call to `fn`; instead, the cached result for that set of arguments will be + * returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (*... -> a) -> (*... -> a) + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @see R.memoizeWith + * @example + * + * let count = 0; + * const factorial = R.memoize(n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ + var memoize = memoizeWith(function () { + return toString(arguments); + }); + + /** + * Splits a string into an array of strings based on the given + * separator. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig (String | RegExp) -> String -> [String] + * @param {String|RegExp} sep The pattern. + * @param {String} str The string to separate into an array. + * @return {Array} The array of strings from `str` separated by `str`. + * @see R.join + * @example + * + * var pathComponents = R.split('/'); + * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node'] + * + * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] + */ + var split = invoker(1, 'split'); + + /** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifferenceWith, R.difference, R.differenceWith + * @example + * + * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] + * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2] + */ + var symmetricDifference = _curry2(function symmetricDifference(list1, list2) { + return concat(difference(list1, list2), difference(list2, list1)); + }); + + /** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. Duplication is determined according to the value + * returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifference, R.difference, R.differenceWith + * @example + * + * var eqA = R.eqBy(R.prop('a')); + * var l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; + * var l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}]; + * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] + */ + var symmetricDifferenceWith = _curry3(function symmetricDifferenceWith(pred, list1, list2) { + return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1)); + }); + + /** + * Determines whether a given string matches a given regular expression. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category String + * @sig RegExp -> String -> Boolean + * @param {RegExp} pattern + * @param {String} str + * @return {Boolean} + * @see R.match + * @example + * + * R.test(/^x/, 'xyz'); //=> true + * R.test(/^y/, 'xyz'); //=> false + */ + var test = _curry2(function test(pattern, str) { + if (!_isRegExp(pattern)) { + throw new TypeError('\u2018test\u2019 requires a value of type RegExp as its first argument; received ' + toString(pattern)); + } + return _cloneRegExp(pattern).test(str); + }); + + /** + * The lower case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to lower case. + * @return {String} The lower case version of `str`. + * @see R.toUpper + * @example + * + * R.toLower('XYZ'); //=> 'xyz' + */ + var toLower = invoker(0, 'toLowerCase'); + + /** + * The upper case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to upper case. + * @return {String} The upper case version of `str`. + * @see R.toLower + * @example + * + * R.toUpper('abc'); //=> 'ABC' + */ + var toUpper = invoker(0, 'toUpperCase'); + + /** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied function to + * each list element. Prefers the first item if the supplied function produces + * the same value on two items. [`R.equals`](#equals) is used for comparison. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> b) -> [a] -> [a] + * @param {Function} fn A function used to produce a value to use during comparisons. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10] + */ + var uniqBy = _curry2(function uniqBy(fn, list) { + var set = new _Set(); + var result = []; + var idx = 0; + var appliedItem, item; + while (idx < list.length) { + item = list[idx]; + appliedItem = fn(item); + if (set.add(appliedItem)) { + result.push(item); + } + idx += 1; + } + return result; + }); + + /** + * Returns a new list containing only one copy of each element in the original + * list. [`R.equals`](#equals) is used to determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniq([1, 1, 2, 1]); //=> [1, 2] + * R.uniq([1, '1']); //=> [1, '1'] + * R.uniq([[42], [42]]); //=> [[42]] + */ + var uniq = uniqBy(identity); + + /** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The list of elements found in both `list1` and `list2`. + * @see R.innerJoin + * @example + * + * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3] + */ + var intersection = _curry2(function intersection(list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + return uniq(_filter(flip(_contains)(lookupList), filteredList)); + }); + + /** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @example + * + * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4] + */ + var union = _curry2(compose(uniq, _concat)); + + var R = { + F: F, + T: T, + __: __, + add: add, + addIndex: addIndex, + adjust: adjust, + all: all, + allPass: allPass, + always: always, + and: and, + any: any, + anyPass: anyPass, + ap: ap, + aperture: aperture, + append: append, + apply: apply, + applySpec: applySpec, + ascend: ascend, + assoc: assoc, + assocPath: assocPath, + binary: binary, + bind: bind, + both: both, + call: call, + chain: chain, + clamp: clamp, + clone: clone, + comparator: comparator, + complement: complement, + compose: compose, + composeK: composeK, + composeP: composeP, + concat: concat, + cond: cond, + construct: construct, + constructN: constructN, + contains: contains, + converge: converge, + countBy: countBy, + curry: curry, + curryN: curryN, + dec: dec, + defaultTo: defaultTo, + descend: descend, + difference: difference, + differenceWith: differenceWith, + dissoc: dissoc, + dissocPath: dissocPath, + divide: divide, + drop: drop, + dropLast: dropLast, + dropLastWhile: dropLastWhile, + dropRepeats: dropRepeats, + dropRepeatsWith: dropRepeatsWith, + dropWhile: dropWhile, + either: either, + empty: empty, + endsWith: endsWith, + eqBy: eqBy, + eqProps: eqProps, + equals: equals, + evolve: evolve, + filter: filter, + find: find, + findIndex: findIndex, + findLast: findLast, + findLastIndex: findLastIndex, + flatten: flatten, + flip: flip, + forEach: forEach, + forEachObjIndexed: forEachObjIndexed, + fromPairs: fromPairs, + groupBy: groupBy, + groupWith: groupWith, + gt: gt, + gte: gte, + has: has, + hasIn: hasIn, + head: head, + identical: identical, + identity: identity, + ifElse: ifElse, + inc: inc, + indexBy: indexBy, + indexOf: indexOf, + init: init, + innerJoin: innerJoin, + insert: insert, + insertAll: insertAll, + intersection: intersection, + intersectionWith: intersectionWith, + intersperse: intersperse, + into: into, + invert: invert, + invertObj: invertObj, + invoker: invoker, + is: is, + isEmpty: isEmpty, + isNil: isNil, + join: join, + juxt: juxt, + keys: keys, + keysIn: keysIn, + last: last, + lastIndexOf: lastIndexOf, + length: length, + lens: lens, + lensIndex: lensIndex, + lensPath: lensPath, + lensProp: lensProp, + lift: lift, + liftN: liftN, + lt: lt, + lte: lte, + map: map, + mapAccum: mapAccum, + mapAccumRight: mapAccumRight, + mapObjIndexed: mapObjIndexed, + match: match, + mathMod: mathMod, + max: max, + maxBy: maxBy, + mean: mean, + median: median, + memoize: memoize, + memoizeWith: memoizeWith, + merge: merge, + mergeAll: mergeAll, + mergeDeepLeft: mergeDeepLeft, + mergeDeepRight: mergeDeepRight, + mergeDeepWith: mergeDeepWith, + mergeDeepWithKey: mergeDeepWithKey, + mergeWith: mergeWith, + mergeWithKey: mergeWithKey, + min: min, + minBy: minBy, + modulo: modulo, + multiply: multiply, + nAry: nAry, + negate: negate, + none: none, + not: not, + nth: nth, + nthArg: nthArg, + o: o, + objOf: objOf, + of: of, + omit: omit, + once: once, + or: or, + over: over, + pair: pair, + partial: partial, + partialRight: partialRight, + partition: partition, + path: path, + pathEq: pathEq, + pathOr: pathOr, + pathSatisfies: pathSatisfies, + pick: pick, + pickAll: pickAll, + pickBy: pickBy, + pipe: pipe, + pipeK: pipeK, + pipeP: pipeP, + pluck: pluck, + prepend: prepend, + product: product, + project: project, + prop: prop, + propEq: propEq, + propIs: propIs, + propOr: propOr, + propSatisfies: propSatisfies, + props: props, + range: range, + reduce: reduce, + reduceBy: reduceBy, + reduceRight: reduceRight, + reduceWhile: reduceWhile, + reduced: reduced, + reject: reject, + remove: remove, + repeat: repeat, + replace: replace, + reverse: reverse, + scan: scan, + sequence: sequence, + set: set, + slice: slice, + sort: sort, + sortBy: sortBy, + sortWith: sortWith, + split: split, + splitAt: splitAt, + splitEvery: splitEvery, + splitWhen: splitWhen, + startsWith: startsWith, + subtract: subtract, + sum: sum, + symmetricDifference: symmetricDifference, + symmetricDifferenceWith: symmetricDifferenceWith, + tail: tail, + take: take, + takeLast: takeLast, + takeLastWhile: takeLastWhile, + takeWhile: takeWhile, + tap: tap, + test: test, + times: times, + toLower: toLower, + toPairs: toPairs, + toPairsIn: toPairsIn, + toString: toString, + toUpper: toUpper, + transduce: transduce, + transpose: transpose, + traverse: traverse, + trim: trim, + tryCatch: tryCatch, + type: type, + unapply: unapply, + unary: unary, + uncurryN: uncurryN, + unfold: unfold, + union: union, + unionWith: unionWith, + uniq: uniq, + uniqBy: uniqBy, + uniqWith: uniqWith, + unless: unless, + unnest: unnest, + until: until, + update: update, + useWith: useWith, + values: values, + valuesIn: valuesIn, + view: view, + when: when, + where: where, + whereEq: whereEq, + without: without, + xprod: xprod, + zip: zip, + zipObj: zipObj, + zipWith: zipWith + }; + /* eslint-env amd */ + + /* TEST_ENTRY_POINT */ + + if (typeof exports === 'object') { + module.exports = R; + } else if (typeof define === 'function' && define.amd) { + define(function() { return R; }); + } else { + this.R = R; + } + +}.call(this)); diff --git a/node_modules/ramda/dist/ramda.min.js b/node_modules/ramda/dist/ramda.min.js new file mode 100644 index 0000000..0956058 --- /dev/null +++ b/node_modules/ramda/dist/ramda.min.js @@ -0,0 +1,7 @@ +// Ramda v0.24.1 +// https://github.com/ramda/ramda +// (c) 2013-2017 Scott Sauyet, Michael Hurley, and David Chambers +// Ramda may be freely distributed under the MIT license. + +(function(){"use strict";var t={"@@functional/placeholder":!0},n=function(t,n){for(var r=0,e=n.length-(t-1),u=new Array(e>=0?e:0);e>r;)u[r]=Array.prototype.slice.call(n,r,r+t),r+=1;return u},r=function(t,n){switch(t){case 0:return function(){return n.apply(this,arguments)};case 1:return function(t){return n.apply(this,arguments)};case 2:return function(t,r){return n.apply(this,arguments)};case 3:return function(t,r,e){return n.apply(this,arguments)};case 4:return function(t,r,e,u){return n.apply(this,arguments)};case 5:return function(t,r,e,u,i){return n.apply(this,arguments)};case 6:return function(t,r,e,u,i,o){return n.apply(this,arguments)};case 7:return function(t,r,e,u,i,o,c){return n.apply(this,arguments)};case 8:return function(t,r,e,u,i,o,c,a){return n.apply(this,arguments)};case 9:return function(t,r,e,u,i,o,c,a,s){return n.apply(this,arguments)};case 10:return function(t,r,e,u,i,o,c,a,s,f){return n.apply(this,arguments)};default:throw new Error("First argument to _arity must be a non-negative integer no greater than ten")}},e=function(t){for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r},u=function(t){return new RegExp(t.source,(t.global?"g":"")+(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.sticky?"y":"")+(t.unicode?"u":""))},i=function(t){return function(){return!t.apply(this,arguments)}},o=function(t,n){t=t||[],n=n||[];var r,e=t.length,u=n.length,i=[];for(r=0;e>r;)i[i.length]=t[r],r+=1;for(r=0;u>r;)i[i.length]=n[r],r+=1;return i},c=function(t,n,r){for(var e=0,u=r.length;u>e;){if(t(n,r[e]))return!0;e+=1}return!1},a=function(t,n){for(var r=n.length-1;r>=0&&t(n[r]);)r-=1;return Array.prototype.slice.call(n,0,r+1)},s=function(t,n){for(var r=0,e=n.length,u=[];e>r;)t(n[r])&&(u[u.length]=n[r]),r+=1;return u},f=function(t){return{"@@transducer/value":t,"@@transducer/reduced":!0}},l=function(t){var n=String(t).match(/^function (\w*)/);return null==n?"":n[1]},p=function(t,n){return Object.prototype.hasOwnProperty.call(n,t)},h=function(t){return t},y=function(){var t=Object.prototype.toString;return"[object Arguments]"===t.call(arguments)?function(n){return"[object Arguments]"===t.call(n)}:function(t){return p("callee",t)}}(),g=Array.isArray||function(t){return null!=t&&t.length>=0&&"[object Array]"===Object.prototype.toString.call(t)},d=function(t){return"[object Function]"===Object.prototype.toString.call(t)},m=Number.isInteger||function(t){return t<<0===t},v=function(t){return"[object Number]"===Object.prototype.toString.call(t)},w=function(t){return"[object Object]"===Object.prototype.toString.call(t)},b=function(t){return null!=t&&"object"==typeof t&&t["@@functional/placeholder"]===!0},x=function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},j=function(t){return"[object String]"===Object.prototype.toString.call(t)},A=function(t){return"function"==typeof t["@@transducer/step"]},O=function(t,n){for(var r=0,e=n.length,u=Array(e);e>r;)u[r]=t(n[r]),r+=1;return u},S=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var n=Object(t),r=1,e=arguments.length;e>r;){var u=arguments[r];if(null!=u)for(var i in u)p(i,u)&&(n[i]=u[i]);r+=1}return n},E=function(t){return[t]},_=function(t,n){return function(){return n.call(this,t.apply(this,arguments))}},q=function(t,n){return function(){var r=this;return t.apply(r,arguments).then(function(t){return n.call(r,t)})}},N=function(t){var n=t.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return'"'+n.replace(/"/g,'\\"')+'"'},k=function(t){return t&&t["@@transducer/reduced"]?t:{"@@transducer/value":t,"@@transducer/reduced":!0}},I=function(){var t=function(t){return(10>t?"0":"")+t};return"function"==typeof Date.prototype.toISOString?function(t){return t.toISOString()}:function(n){return n.getUTCFullYear()+"-"+t(n.getUTCMonth()+1)+"-"+t(n.getUTCDate())+"T"+t(n.getUTCHours())+":"+t(n.getUTCMinutes())+":"+t(n.getUTCSeconds())+"."+(n.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z"}}(),W={init:function(){return this.xf["@@transducer/init"]()},result:function(t){return this.xf["@@transducer/result"](t)}},C=function(){function t(t){this.f=t}return t.prototype["@@transducer/init"]=function(){throw new Error("init not implemented on XWrap")},t.prototype["@@transducer/result"]=function(t){return t},t.prototype["@@transducer/step"]=function(t,n){return this.f(t,n)},function(n){return new t(n)}}(),P="function"==typeof Object.assign?Object.assign:S,T=function(t,n){return function(){var r=arguments.length;if(0===r)return n();var e=arguments[r-1];return g(e)||"function"!=typeof e[t]?n.apply(this,arguments):e[t].apply(e,Array.prototype.slice.call(arguments,0,r-1))}},F=function(t){return function n(r){return 0===arguments.length||b(r)?n:t.apply(this,arguments)}},B=function(t){return function n(r,e){switch(arguments.length){case 0:return n;case 1:return b(r)?n:F(function(n){return t(r,n)});default:return b(r)&&b(e)?n:b(r)?F(function(n){return t(n,e)}):b(e)?F(function(n){return t(r,n)}):t(r,e)}}},R=function(t){return function n(r,e,u){switch(arguments.length){case 0:return n;case 1:return b(r)?n:B(function(n,e){return t(r,n,e)});case 2:return b(r)&&b(e)?n:b(r)?B(function(n,r){return t(n,e,r)}):b(e)?B(function(n,e){return t(r,n,e)}):F(function(n){return t(r,e,n)});default:return b(r)&&b(e)&&b(u)?n:b(r)&&b(e)?B(function(n,r){return t(n,r,u)}):b(r)&&b(u)?B(function(n,r){return t(n,e,r)}):b(e)&&b(u)?B(function(n,e){return t(r,n,e)}):b(r)?F(function(n){return t(n,e,u)}):b(e)?F(function(n){return t(r,n,u)}):b(u)?F(function(n){return t(r,e,n)}):t(r,e,u)}}},U=function Xu(t,n,e){return function(){for(var u=[],i=0,o=t,c=0;c=arguments.length)?a=n[c]:(a=arguments[i],i+=1),u[c]=a,b(a)||(o-=1),c+=1}return 0>=o?e.apply(this,u):r(o,Xu(t,u,e))}},D=function(t,n,r){return function(){if(0===arguments.length)return r();var e=Array.prototype.slice.call(arguments,0),u=e.pop();if(!g(u)){for(var i=0;i0?t.hasOwnProperty(0)&&t.hasOwnProperty(t.length-1):!1:!1}),L=function(t){return function n(r){for(var e,u,i,o=[],c=0,a=r.length;a>c;){if(M(r[c]))for(e=t?n(r[c]):r[c],i=0,u=e.length;u>i;)o[o.length]=e[i],i+=1;else o[o.length]=r[c];c+=1}return o}},z=function(){function t(t,n){this.xf=n,this.f=t,this.all=!0}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.all&&(t=this.xf["@@transducer/step"](t,!0)),this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.f(n)||(this.all=!1,t=k(this.xf["@@transducer/step"](t,!1))),t},B(function(n,r){return new t(n,r)})}(),K=function(){function t(t,n){this.xf=n,this.f=t,this.any=!1}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.any||(t=this.xf["@@transducer/step"](t,!1)),this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.f(n)&&(this.any=!0,t=k(this.xf["@@transducer/step"](t,!0))),t},B(function(n,r){return new t(n,r)})}(),V=function(){function t(t,n){this.xf=n,this.pos=0,this.full=!1,this.acc=new Array(t)}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.acc=null,this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.store(n),this.full?this.xf["@@transducer/step"](t,this.getCopy()):t},t.prototype.store=function(t){this.acc[this.pos]=t,this.pos+=1,this.pos===this.acc.length&&(this.pos=0,this.full=!0)},t.prototype.getCopy=function(){return o(Array.prototype.slice.call(this.acc,this.pos),Array.prototype.slice.call(this.acc,0,this.pos))},B(function(n,r){return new t(n,r)})}(),$=function(){function t(t,n){this.xf=n,this.n=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){return this.n>0?(this.n-=1,t):this.xf["@@transducer/step"](t,n)},B(function(n,r){return new t(n,r)})}(),H=function(){function t(t,n){this.xf=n,this.pos=0,this.full=!1,this.acc=new Array(t)}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.acc=null,this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.full&&(t=this.xf["@@transducer/step"](t,this.acc[this.pos])),this.store(n),t},t.prototype.store=function(t){this.acc[this.pos]=t,this.pos+=1,this.pos===this.acc.length&&(this.pos=0,this.full=!0)},B(function(n,r){return new t(n,r)})}(),J=function(){function t(t,n){this.xf=n,this.pred=t,this.lastValue=void 0,this.seenFirstValue=!1}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){var r=!1;return this.seenFirstValue?this.pred(this.lastValue,n)&&(r=!0):this.seenFirstValue=!0,this.lastValue=n,r?t:this.xf["@@transducer/step"](t,n)},B(function(n,r){return new t(n,r)})}(),X=function(){function t(t,n){this.xf=n,this.f=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){if(this.f){if(this.f(n))return t;this.f=null}return this.xf["@@transducer/step"](t,n)},B(function(n,r){return new t(n,r)})}(),Y=function(){function t(t,n){this.xf=n,this.f=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){return this.f(n)?this.xf["@@transducer/step"](t,n):t},B(function(n,r){return new t(n,r)})}(),Z=function(){function t(t,n){this.xf=n,this.f=t,this.found=!1}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.found||(t=this.xf["@@transducer/step"](t,void 0)),this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.f(n)&&(this.found=!0,t=k(this.xf["@@transducer/step"](t,n))),t},B(function(n,r){return new t(n,r)})}(),G=function(){function t(t,n){this.xf=n,this.f=t,this.idx=-1,this.found=!1}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.found||(t=this.xf["@@transducer/step"](t,-1)),this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.idx+=1,this.f(n)&&(this.found=!0,t=k(this.xf["@@transducer/step"](t,this.idx))),t},B(function(n,r){return new t(n,r)})}(),Q=function(){function t(t,n){this.xf=n,this.f=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.xf["@@transducer/result"](this.xf["@@transducer/step"](t,this.last))},t.prototype["@@transducer/step"]=function(t,n){return this.f(n)&&(this.last=n),t},B(function(n,r){return new t(n,r)})}(),tt=function(){function t(t,n){this.xf=n,this.f=t,this.idx=-1,this.lastIdx=-1}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.xf["@@transducer/result"](this.xf["@@transducer/step"](t,this.lastIdx))},t.prototype["@@transducer/step"]=function(t,n){return this.idx+=1,this.f(n)&&(this.lastIdx=this.idx),t},B(function(n,r){return new t(n,r)})}(),nt=function(){function t(t,n){this.xf=n,this.f=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){return this.xf["@@transducer/step"](t,this.f(n))},B(function(n,r){return new t(n,r)})}(),rt=function(){function t(t,n,r,e){this.valueFn=t,this.valueAcc=n,this.keyFn=r,this.xf=e,this.inputs={}}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){var n;for(n in this.inputs)if(p(n,this.inputs)&&(t=this.xf["@@transducer/step"](t,this.inputs[n]),t["@@transducer/reduced"])){t=t["@@transducer/value"];break}return this.inputs=null,this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){var r=this.keyFn(n);return this.inputs[r]=this.inputs[r]||[r,this.valueAcc],this.inputs[r][1]=this.valueFn(this.inputs[r][1],n),t},U(4,[],function(n,r,e,u){return new t(n,r,e,u)})}(),et=function(){function t(t,n){this.xf=n,this.n=t,this.i=0}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){this.i+=1;var r=0===this.n?t:this.xf["@@transducer/step"](t,n);return this.n>=0&&this.i>=this.n?k(r):r},B(function(n,r){return new t(n,r)})}(),ut=function(){function t(t,n){this.xf=n,this.f=t}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=W.result,t.prototype["@@transducer/step"]=function(t,n){return this.f(n)?this.xf["@@transducer/step"](t,n):k(t)},B(function(n,r){return new t(n,r)})}(),it=B(function(t,n){return Number(t)+Number(n)}),ot=R(function(t,n,r){if(n>=r.length||n<-r.length)return r;var e=0>n?r.length:0,u=e+n,i=o(r);return i[u]=t(r[u]),i}),ct=B(D(["all"],z,function(t,n){for(var r=0;re?-1:e>u?1:0}),gt=R(function(t,n,r){var e={};for(var u in r)e[u]=r[u];return e[t]=n,e}),dt=B(function(t,n){return r(t.length,function(){return t.apply(n,arguments)})}),mt=R(function(t,n,r){if(t>n)throw new Error("min must not be greater than max in clamp(min, max, value)");return t>r?t:r>n?n:r}),vt=F(function(t){return function(n,r){return t(n,r)?-1:t(r,n)?1:0}}),wt=B(function(t,n){return 1===t?F(n):r(t,U(t,[],n))}),bt=it(-1),xt=B(function(t,n){return null==n||n!==n?t:n}),jt=R(function(t,n,r){var e=t(n),u=t(r);return e>u?-1:u>e?1:0}),At=R(function(t,n,r){for(var e=[],u=0,i=n.length;i>u;)c(t,n[u],r)||c(t,n[u],e)||e.push(n[u]),u+=1;return e}),Ot=B(function(t,n){var r={};for(var e in n)r[e]=n[e];return delete r[t],r}),St=B(function(t,n){return t/n}),Et=B(D(["dropWhile"],X,function(t,n){for(var r=0,e=n.length;e>r&&t(n[r]);)r+=1;return Array.prototype.slice.call(n,r)})),_t=F(function(t){return null!=t&&"function"==typeof t["fantasy-land/empty"]?t["fantasy-land/empty"]():null!=t&&null!=t.constructor&&"function"==typeof t.constructor["fantasy-land/empty"]?t.constructor["fantasy-land/empty"]():null!=t&&"function"==typeof t.empty?t.empty():null!=t&&null!=t.constructor&&"function"==typeof t.constructor.empty?t.constructor.empty():g(t)?[]:j(t)?"":w(t)?{}:y(t)?function(){return arguments}():void 0}),qt=B(function Yu(t,n){var r,e,u,i={};for(e in n)r=t[e],u=typeof r,i[e]="function"===u?r(n[e]):r&&"object"===u?Yu(r,n[e]):n[e];return i}),Nt=B(D(["find"],Z,function(t,n){for(var r=0,e=n.length;e>r;){if(t(n[r]))return n[r];r+=1}})),kt=B(D([],G,function(t,n){for(var r=0,e=n.length;e>r;){if(t(n[r]))return r;r+=1}return-1})),It=B(D([],Q,function(t,n){for(var r=n.length-1;r>=0;){if(t(n[r]))return n[r];r-=1}})),Wt=B(D([],tt,function(t,n){for(var r=n.length-1;r>=0;){if(t(n[r]))return r;r-=1}return-1})),Ct=F(L(!0)),Pt=B(T("forEach",function(t,n){for(var r=n.length,e=0;r>e;)t(n[e]),e+=1;return n})),Tt=F(function(t){for(var n={},r=0;re;){for(var i=e+1;u>i&&t(n[i-1],n[i]);)i+=1;r.push(n.slice(e,i)),e=i}return r}),Bt=B(function(t,n){return t>n}),Rt=B(function(t,n){return t>=n}),Ut=B(p),Dt=B(function(t,n){return t in n}),Mt=B(function(t,n){return t===n?0!==t||1/t===1/n:t!==t&&n!==n}),Lt=F(h),zt=R(function(t,n,r){return wt(Math.max(t.length,n.length,r.length),function(){return t.apply(this,arguments)?n.apply(this,arguments):r.apply(this,arguments)})}),Kt=it(1),Vt=R(function(t,n,r){return s(function(n){return c(t,n,r)},n)}),$t=R(function(t,n,r){t=t=0?t:r.length;var e=Array.prototype.slice.call(r,0);return e.splice(t,0,n),e}),Ht=R(function(t,n,r){return t=t=0?t:r.length,[].concat(Array.prototype.slice.call(r,0,t),n,Array.prototype.slice.call(r,t))}),Jt=B(T("intersperse",function(t,n){for(var r=[],e=0,u=n.length;u>e;)e===u-1?r.push(n[e]):r.push(n[e],t),e+=1;return r})),Xt=B(function(t,n){return null!=n&&n.constructor===t||n instanceof t}),Yt=F(function(t){return null==t}),Zt=function(){var t=!{toString:null}.propertyIsEnumerable("toString"),n=["constructor","valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],r=function(){return arguments.propertyIsEnumerable("length")}(),e=function(t,n){for(var r=0;r=0;)i=n[o],p(i,u)&&!e(c,i)&&(c[c.length]=i),o-=1;return c}:function(t){return Object(t)!==t?[]:Object.keys(t)})}(),Gt=F(function(t){var n,r=[];for(n in t)r[r.length]=n;return r}),Qt=F(function(t){return null!=t&&v(t.length)?t.length:NaN}),tn=B(function(t,n){return n>t}),nn=B(function(t,n){return n>=t}),rn=R(function(t,n,r){for(var e=0,u=r.length,i=[],o=[n];u>e;)o=t(o[0],r[e]),i[e]=o[1],e+=1;return[o[0],i]}),en=R(function(t,n,r){for(var e=r.length-1,u=[],i=[n];e>=0;)i=t(r[e],i[0]),u[e]=i[1],e-=1;return[u,i[0]]}),un=B(function(t,n){return n.match(t)||[]}),on=B(function(t,n){return m(t)?!m(n)||1>n?NaN:(t%n+n)%n:NaN}),cn=B(function(t,n){return n>t?n:t}),an=R(function(t,n,r){return t(r)>t(n)?r:n}),sn=B(function(t,n){var e={};return r(n.length,function(){var r=t.apply(this,arguments);return p(r,e)||(e[r]=n.apply(this,arguments)),e[r]})}),fn=B(function(t,n){return P({},t,n)}),ln=F(function(t){return P.apply(null,[{}].concat(t))}),pn=R(function(t,n,r){var e,u={};for(e in n)p(e,n)&&(u[e]=p(e,r)?t(e,n[e],r[e]):n[e]);for(e in r)p(e,r)&&!p(e,u)&&(u[e]=r[e]);return u}),hn=B(function(t,n){return t>n?n:t}),yn=R(function(t,n,r){return t(r)t?n.length+t:t;return j(n)?n.charAt(r):n[r]}),jn=F(function(t){var n=0>t?1:t+1;return wt(n,function(){return xn(t,arguments)})}),An=R(function(t,n,r){return t(n(r))}),On=B(function(t,n){var r={};return r[t]=n,r}),Sn=F(E),En=F(function(t){var n,e=!1;return r(t.length,function(){return e?n:(e=!0,n=t.apply(this,arguments))})}),_n=B(function(t,n){return t||n}),qn=function(){var t=function(n){return{value:n,map:function(r){return t(r(n))}}};return R(function(n,r,e){return n(function(n){return t(r(n))})(e).value})}(),Nn=B(function(t,n){return[t,n]}),kn=B(function(t,n){for(var r=n,e=0;e0&&t(kn(n,r))}),Cn=B(function(t,n){for(var r={},e=0;ee;){var i=t[e];r[i]=n[i],e+=1}return r}),Tn=B(function(t,n){var r={};for(var e in n)t(n[e],e,n)&&(r[e]=n[e]);return r}),Fn=B(function(t,n){return o([t],n)}),Bn=B(function(t,n){return n[t]}),Rn=R(function(t,n,r){return Xt(t,r[n])}),Un=R(function(t,n,r){return null!=r&&p(n,r)?r[n]:t}),Dn=R(function(t,n,r){return t(r[n])}),Mn=B(function(t,n){for(var r=t.length,e=[],u=0;r>u;)e[u]=n[t[u]],u+=1;return e}),Ln=B(function(t,n){if(!v(t)||!v(n))throw new TypeError("Both arguments to range must be numbers");for(var r=[],e=t;n>e;)r.push(e),e+=1;return r}),zn=R(function(t,n,r){for(var e=r.length-1;e>=0;)n=t(r[e],n),e-=1;return n}),Kn=F(k),Vn=R(function(t,n,r){var e=Array.prototype.slice.call(r,0);return e.splice(t,n),e}),$n=R(function(t,n,r){return r.replace(t,n)}),Hn=F(function(t){return j(t)?t.split("").reverse().join(""):Array.prototype.slice.call(t,0).reverse()}),Jn=R(function(t,n,r){for(var e=0,u=r.length,i=[n];u>e;)n=t(n,r[e]),i[e+1]=n,e+=1;return i}),Xn=R(function(t,n,r){return qn(t,at(n),r)}),Yn=R(T("slice",function(t,n,r){return Array.prototype.slice.call(r,t,n)})),Zn=B(function(t,n){return Array.prototype.slice.call(n,0).sort(t)}),Gn=B(function(t,n){return Array.prototype.slice.call(n,0).sort(function(n,r){var e=t(n),u=t(r);return u>e?-1:e>u?1:0})}),Qn=B(function(t,n){return Array.prototype.slice.call(n,0).sort(function(n,r){for(var e=0,u=0;0===e&&u=t)throw new Error("First argument to splitEvery must be a positive integer");for(var r=[],e=0;er&&!t(n[r]);)u.push(n[r]),r+=1;return[u,Array.prototype.slice.call(n,r)]}),er=B(function(t,n){return Number(t)-Number(n)}),ur=F(T("tail",Yn(1,1/0))),ir=B(D(["take"],et,function(t,n){return Yn(0,0>t?1/0:t,n)})),or=B(function(t,n){for(var r=n.length-1;r>=0&&t(n[r]);)r-=1;return Array.prototype.slice.call(n,r+1)}),cr=B(D(["takeWhile"],ut,function(t,n){for(var r=0,e=n.length;e>r&&t(n[r]);)r+=1;return Array.prototype.slice.call(n,0,r)})),ar=B(function(t,n){return t(n),n}),sr=B(function(t,n){var r,e=Number(n),u=0;if(0>e||isNaN(e))throw new RangeError("n must be a non-negative number");for(r=new Array(e);e>u;)r[u]=t(u),u+=1;return r}),fr=F(function(t){var n=[];for(var r in t)p(r,t)&&(n[n.length]=[r,t[r]]);return n}),lr=F(function(t){var n=[];for(var r in t)n[n.length]=[r,t[r]];return n}),pr=F(function(t){for(var n=0,r=[];n=e&&"function"==typeof u;)r=e===t?arguments.length:i+u.length,u=u.apply(this,Array.prototype.slice.call(arguments,i,r)),e+=1,i=r;return u})}),wr=B(function(t,n){for(var r=t(n),e=[];r&&r.length;)e[e.length]=r[0],r=t(r[1]);return e}),br=B(function(t,n){for(var r,e=0,u=n.length,i=[];u>e;)r=n[e],c(t,r,i)||(i[i.length]=r),e+=1;return i}),xr=R(function(t,n,r){return t(r)?r:n(r)}),jr=R(function(t,n,r){for(var e=r;!t(e);)e=n(e);return e}),Ar=R(function(t,n,r){return ot(at(n),t,r)}),Or=B(function(t,n){return wt(n.length,function(){for(var r=[],e=0;eu;)e[u]=t[n[u]],u+=1;return e}),Er=F(function(t){var n,r=[];for(n in t)r[r.length]=t[n];return r}),_r=function(){var t=function(t){return{value:t,"fantasy-land/map":function(){return this}}};return B(function(n,r){return n(t)(r).value})}(),qr=R(function(t,n,r){return t(r)?n(r):r}),Nr=B(function(t,n){for(var r in t)if(p(r,t)&&!t[r](n[r]))return!1;return!0}),kr=B(function(t,n){for(var r,e=0,u=t.length,i=n.length,o=[];u>e;){for(r=0;i>r;)o[o.length]=[t[e],n[r]],r+=1;e+=1}return o}),Ir=B(function(t,n){for(var r=[],e=0,u=Math.min(t.length,n.length);u>e;)r[e]=[t[e],n[e]],e+=1;return r}),Wr=B(function(t,n){for(var r=0,e=Math.min(t.length,n.length),u={};e>r;)u[t[r]]=n[r],r+=1;return u}),Cr=R(function(t,n,r){for(var e=[],u=0,i=Math.min(n.length,r.length);i>u;)e[u]=t(n[u],r[u]),u+=1;return e}),Pr=at(!1),Tr=at(!0),Fr=function Zu(t,n,r,e){var i=function(u){for(var i=n.length,o=0;i>o;){if(t===n[o])return r[o];o+=1}n[o+1]=t,r[o+1]=u;for(var c in t)u[c]=e?Zu(t[c],n,r,!0):t[c];return u};switch(gr(t)){case"Object":return i({});case"Array":return i([]);case"Date":return new Date(t.valueOf());case"RegExp":return u(t);default:return t}},Br=function(t){return B(function(n,e){return r(Math.max(0,n.length-e.length),function(){return n.apply(this,t(e,arguments))})})},Rr=function(t,n){return ir(t=0;){if(r[o]===t)return u[o]===n;o-=1}for(r.push(t),u.push(n),o=i.length-1;o>=0;){var c=i[o];if(!p(c,n)||!Gu(n[c],t[c],r,u))return!1;o-=1}return r.pop(),u.pop(),!0},Dr=function(){function t(t,n,r){for(var e=0,u=r.length;u>e;){if(n=t["@@transducer/step"](n,r[e]),n&&n["@@transducer/reduced"]){n=n["@@transducer/value"];break}e+=1}return t["@@transducer/result"](n)}function n(t,n,r){for(var e=r.next();!e.done;){if(n=t["@@transducer/step"](n,e.value),n&&n["@@transducer/reduced"]){n=n["@@transducer/value"];break}e=r.next()}return t["@@transducer/result"](n)}function r(t,n,r,e){return t["@@transducer/result"](r[e](dt(t["@@transducer/step"],t),n))}var e="undefined"!=typeof Symbol?Symbol.iterator:"@@iterator";return function(u,i,o){if("function"==typeof u&&(u=C(u)),M(o))return t(u,i,o);if("function"==typeof o["fantasy-land/reduce"])return r(u,i,o,"fantasy-land/reduce");if(null!=o[e])return n(u,i,o[e]());if("function"==typeof o.next)return n(u,i,o);if("function"==typeof o.reduce)return r(u,i,o,"reduce");throw new TypeError("reduce: list must be array or iterable")}}(),Mr=function(){var t={"@@transducer/init":Array,"@@transducer/step":function(t,n){return t.push(n),t},"@@transducer/result":h},n={"@@transducer/init":String,"@@transducer/step":function(t,n){return t+n},"@@transducer/result":h},r={"@@transducer/init":Object,"@@transducer/step":function(t,n){return P(t,M(n)?On(n[0],n[1]):n)},"@@transducer/result":h};return function(e){if(A(e))return e;if(M(e))return t;if("string"==typeof e)return n;if("object"==typeof e)return r;throw new Error("Cannot create transformer for "+e)}}(),Lr=function(){function t(t,n){this.f=t,this.retained=[],this.xf=n}return t.prototype["@@transducer/init"]=W.init,t.prototype["@@transducer/result"]=function(t){return this.retained=null,this.xf["@@transducer/result"](t)},t.prototype["@@transducer/step"]=function(t,n){return this.f(n)?this.retain(t,n):this.flush(t,n)},t.prototype.flush=function(t,n){return t=Dr(this.xf["@@transducer/step"],t,this.retained),this.retained=[],this.xf["@@transducer/step"](t,n)},t.prototype.retain=function(t,n){return this.retained.push(n),t},B(function(n,r){return new t(n,r)})}(),zr=F(function(t){return wt(t.length,function(){var n=0,r=arguments[0],e=arguments[arguments.length-1],u=Array.prototype.slice.call(arguments,0);return u[0]=function(){var t=r.apply(this,o(arguments,[n,e]));return n+=1,t},t.apply(this,u)})}),Kr=R(function Qu(t,n,r){if(0===t.length)return n;var e=t[0];if(t.length>1){var u=!Yt(r)&&p(e,r)?r[e]:m(t[1])?[]:{};n=Qu(Array.prototype.slice.call(t,1),n,u)}if(m(e)&&g(r)){var i=[].concat(r);return i[e]=n,i}return gt(e,n,r)}),Vr=F(function(t){return mn(2,t)}),$r=F(function(t){return null!=t&&"function"==typeof t.clone?t.clone():Fr(t,[],[],!0)}),Hr=F(function(t){return wt(t.length,t)}),Jr=B(function ti(t,n){switch(t.length){case 0:return n;case 1:return m(t[0])?Vn(t[0],1,n):Ot(t[0],n);default:var r=t[0],e=Array.prototype.slice.call(t,1);return null==n[r]?n:m(t[0])?Ar(r,ti(e,n[r]),n):gt(r,ti(e,n[r]),n)}}),Xr=B(D(["drop"],$,function(t,n){return Yn(Math.max(0,t),1/0,n)})),Yr=B(D([],H,Rr)),Zr=B(D([],Lr,a)),Gr=B(function(t,n){return Ur(t,n,[],[])}),Qr=B(D(["filter"],Y,function(t,n){return w(n)?Dr(function(r,e){return t(n[e])&&(r[e]=n[e]),r},{},Zt(n)):s(t,n)})),te=F(function(t){return Hr(function(n,r){var e=Array.prototype.slice.call(arguments,0);return e[0]=r,e[1]=n,t.apply(this,e)})}),ne=B(function(t,n){for(var r=Zt(n),e=0;er.length?(e=n,u=r):(e=r,u=n);for(var i=[],o=0;oe;){var i=n[e],o=t[i],c=p(o,u)?u[o]:u[o]=[];c[c.length]=i,e+=1}return u}),ce=F(function(t){for(var n=Zt(t),r=n.length,e=0,u={};r>e;){var i=n[e];u[t[i]]=i,e+=1}return u}),ae=F(function(t){return null!=t&&Gr(t,_t(t))}),se=xn(-1),fe=B(function(t,n){if("function"!=typeof n.lastIndexOf||g(n)){for(var r=n.length-1;r>=0;){if(Gr(n[r],t))return r;r-=1}return-1}return n.lastIndexOf(t)}),le=B(D(["fantasy-land/map","map"],nt,function(t,n){switch(Object.prototype.toString.call(n)){case"[object Function]":return wt(n.length,function(){return t.call(this,n.apply(this,arguments))});case"[object Object]":return Dr(function(r,e){return r[e]=t(n[e]),r},{},Zt(n));default:return O(t,n)}})),pe=B(function(t,n){return Dr(function(r,e){return r[e]=t(n[e],e,n),r},{},Zt(n))}),he=R(function ni(t,n,r){return pn(function(n,r,e){return w(r)&&w(e)?ni(t,r,e):t(n,r,e)},n,r)}),ye=R(function(t,n,r){return pn(function(n,r,e){return t(r,e)},n,r)}),ge=Br(o),de=Br(te(o)),me=R(function(t,n,r){return Gr(kn(t,r),n)}),ve=B(function(t,n){return le(Bn(t),n)}),we=Or(O,[Pn,Lt]),be=R(function(t,n,r){return Gr(n,r[t])}),xe=R(Dr),je=U(4,[],D([],rt,function(t,n,r,e){return Dr(function(e,u){var i=r(u);return e[i]=t(p(i,e)?e[i]:n,u),e},{},e)})),Ae=U(4,[],function(t,n,r,e){ +return Dr(function(r,e){return t(r,e)?n(r,e):k(r)},r,e)}),Oe=B(function(t,n){return Qr(i(t),n)}),Se=B(function(t,n){return sr(at(t),n)}),Ee=B(function(t,n){return Gr(ir(t.length,n),t)}),_e=xe(it,0),qe=B(function(t,n){return Xr(t>=0?n.length-t:0,n)}),Ne=wt(4,function(t,n,r,e){return Dr(t("function"==typeof n?C(n):n),r,e)}),ke=R(function(t,n,r){return br(t,o(n,r))}),Ie=B(function(t,n){return Nr(le(Gr,t),n)}),We=function(){var t=function(t){return{"@@transducer/init":W.init,"@@transducer/result":function(n){return t["@@transducer/result"](n)},"@@transducer/step":function(n,r){var e=t["@@transducer/step"](n,r);return e["@@transducer/reduced"]?f(e):e}}};return function(n){var r=t(n);return{"@@transducer/init":W.init,"@@transducer/result":function(t){return r["@@transducer/result"](t)},"@@transducer/step":function(t,n){return M(n)?Dr(r,t,n):Dr(r,t,[n])}}}}(),Ce=function(t,n,r){var e,u;if("function"==typeof t.indexOf)switch(typeof n){case"number":if(0===n){for(e=1/n;rn;){if(!t[n].apply(this,arguments))return!1;n+=1}return!0})}),Fe=F(function(t){return wt(xe(cn,0,ve("length",t)),function(){for(var n=0,r=t.length;r>n;){if(t[n].apply(this,arguments))return!0;n+=1}return!1})}),Be=B(function(t,n){return"function"==typeof n["fantasy-land/ap"]?n["fantasy-land/ap"](t):"function"==typeof t.ap?t.ap(n):"function"==typeof t?function(r){return t(r)(n(r))}:Dr(function(t,r){return o(t,le(r,n))},[],t)}),Re=F(function ri(t){return t=le(function(t){return"function"==typeof t?t:ri(t)},t),wt(xe(cn,0,ve("length",Sr(t))),function(){var n=arguments;return le(function(t){return ht(t,n)},t)})}),Ue=Hr(function(t){return t.apply(this,Array.prototype.slice.call(arguments,1))}),De=B(D(["fantasy-land/chain","chain"],Pe,function(t,n){return"function"==typeof n?function(r){return t(n(r))(r)}:L(!1)(le(t,n))})),Me=F(function(t){var n=xe(cn,0,le(function(t){return t[0].length},t));return r(n,function(){for(var n=0;n10)throw new Error("Constructor with greater than ten arguments");return 0===t?function(){return new n}:Hr(mn(t,function(t,r,e,u,i,o,c,a,s,f){switch(arguments.length){case 1:return new n(t);case 2:return new n(t,r);case 3:return new n(t,r,e);case 4:return new n(t,r,e,u);case 5:return new n(t,r,e,u,i);case 6:return new n(t,r,e,u,i,o);case 7:return new n(t,r,e,u,i,o,c);case 8:return new n(t,r,e,u,i,o,c,a);case 9:return new n(t,r,e,u,i,o,c,a,s);case 10:return new n(t,r,e,u,i,o,c,a,s,f)}}))}),ze=B(function(t,n){return wt(xe(cn,0,ve("length",n)),function(){var r=arguments,e=this;return t.apply(e,O(function(t){return t.apply(e,r)},n))})}),Ke=je(function(t,n){return t+1},0),Ve=B(D([],J,function(t,n){var r=[],e=1,u=n.length;if(0!==u)for(r[0]=n[0];u>e;)t(se(r),n[e])||(r[r.length]=n[e]),e+=1;return r})),$e=B(function(t,n){return Gr(qe(t.length,n),t)}),He=R(function(t,n,r){return Gr(t(n),t(r))}),Je=R(function(t,n,r){return Gr(n[t],r[t])}),Xe=B(T("groupBy",je(function(t,n){return null==t&&(t=[]),t.push(n),t},null))),Ye=je(function(t,n){return n},null),Ze=B(function(t,n){return"function"!=typeof n.indexOf||g(n)?Ce(n,t,0):n.indexOf(t)}),Ge=F(function(t){return ze(function(){return Array.prototype.slice.call(arguments,0)},t)}),Qe=B(function(t,n){return function(r){return function(e){return le(function(t){return n(t,e)},r(t(e)))}}}),tu=F(function(t){return Qe(xn(t),Ar(t))}),nu=F(function(t){return Qe(kn(t),Kr(t))}),ru=F(function(t){return Qe(Bn(t),gt(t))}),eu=B(function(t,n){var r=wt(t,n);return wt(t,function(){return Dr(Be,le(r,arguments[0]),Array.prototype.slice.call(arguments,1))})}),uu=F(function(t){return _e(t)/t.length}),iu=F(function(t){var n=t.length;if(0===n)return NaN;var r=2-n%2,e=(n-r)/2;return uu(Array.prototype.slice.call(t,0).sort(function(t,n){return n>t?-1:t>n?1:0}).slice(e,e+r))}),ou=B(function(t,n){return he(function(t,n,r){return n},t,n)}),cu=B(function(t,n){return he(function(t,n,r){return r},t,n)}),au=R(function(t,n,r){return he(function(n,r,e){return t(r,e)},n,r)}),su=Ge([Qr,Oe]),fu=function(){if(0===arguments.length)throw new Error("pipe requires at least one argument");return r(arguments[0].length,xe(_,arguments[0],ur(arguments)))},lu=function(){if(0===arguments.length)throw new Error("pipeP requires at least one argument");return r(arguments[0].length,xe(q,arguments[0],ur(arguments)))},pu=xe(dn,1),hu=B(function(t,n){return"function"==typeof n.sequence?n.sequence(t):zn(function(t,n){return Be(le(Fn,t),n)},t([]),n)}),yu=R(function(t,n,r){return"function"==typeof r["fantasy-land/traverse"]?r["fantasy-land/traverse"](n,t):hu(t,le(n,r))}),gu=De(h),du=function(t,n){return Ce(n,t,0)>=0},mu=function ei(t,n){var r=function(r){var e=n.concat([t]);return du(r,e)?"":ei(r,e)},e=function(t,n){return O(function(n){return N(n)+": "+r(t[n])},n.slice().sort())};switch(Object.prototype.toString.call(t)){case"[object Arguments]":return"(function() { return arguments; }("+O(r,t).join(", ")+"))";case"[object Array]":return"["+O(r,t).concat(e(t,Oe(function(t){return/^\d+$/.test(t)},Zt(t)))).join(", ")+"]";case"[object Boolean]":return"object"==typeof t?"new Boolean("+r(t.valueOf())+")":t.toString();case"[object Date]":return"new Date("+(isNaN(t.valueOf())?r(NaN):N(I(t)))+")";case"[object Null]":return"null";case"[object Number]":return"object"==typeof t?"new Number("+r(t.valueOf())+")":1/t===-(1/0)?"-0":t.toString(10);case"[object String]":return"object"==typeof t?"new String("+r(t.valueOf())+")":N(t);case"[object Undefined]":return"undefined";default:if("function"==typeof t.toString){var u=t.toString();if("[object Object]"!==u)return u}return"{"+e(t,Zt(t)).join(", ")+"}"}},vu=function(){if(0===arguments.length)throw new Error("compose requires at least one argument");return fu.apply(this,Hn(arguments))},wu=function(){if(0===arguments.length)throw new Error("composeK requires at least one argument");var t=Array.prototype.slice.call(arguments),n=t.pop();return vu(vu.apply(this,le(De,t)),n)},bu=function(){if(0===arguments.length)throw new Error("composeP requires at least one argument");return lu.apply(this,Hn(arguments))},xu=F(function(t){return Le(t.length,t)}),ju=B(du),Au=B(function(t,n){for(var r=[],e=0,u=t.length;u>e;)du(t[e],n)||du(t[e],r)||(r[r.length]=t[e]),e+=1;return r}),Ou=F(D([],J(Gr),Ve(Gr))),Su=F(function(t){return eu(t.length,t)}),Eu=B(function(t,n){var r={};for(var e in n)du(e,t)||(r[e]=n[e]);return r}),_u=function(){if(0===arguments.length)throw new Error("pipeK requires at least one argument");return wu.apply(this,Hn(arguments))},qu=F(function(t){return mu(t,[])}),Nu=B(function(t,n){return Oe(te(du)(t),n)}),ku=function(){function t(){this._nativeSet="function"==typeof Set?new Set:null,this._items={}}function n(t,n,r){var e,u,i=typeof t;switch(i){case"string":case"number":return 0===t&&1/t===-(1/0)?r._items["-0"]?!0:(n&&(r._items["-0"]=!0),!1):null!==r._nativeSet?n?(e=r._nativeSet.size,r._nativeSet.add(t),u=r._nativeSet.size,u===e):r._nativeSet.has(t):i in r._items?t in r._items[i]?!0:(n&&(r._items[i][t]=!0),!1):(n&&(r._items[i]={},r._items[i][t]=!0),!1);case"boolean":if(i in r._items){var o=t?1:0;return r._items[i][o]?!0:(n&&(r._items[i][o]=!0),!1)}return n&&(r._items[i]=t?[!1,!0]:[!0,!1]),!1;case"function":return null!==r._nativeSet?n?(e=r._nativeSet.size,r._nativeSet.add(t),u=r._nativeSet.size,u===e):r._nativeSet.has(t):i in r._items?du(t,r._items[i])?!0:(n&&r._items[i].push(t),!1):(n&&(r._items[i]=[t]),!1);case"undefined":return r._items[i]?!0:(n&&(r._items[i]=!0),!1);case"object":if(null===t)return r._items["null"]?!0:(n&&(r._items["null"]=!0),!1);default:return i=Object.prototype.toString.call(t),i in r._items?du(t,r._items[i])?!0:(n&&r._items[i].push(t),!1):(n&&(r._items[i]=[t]),!1)}}return t.prototype.add=function(t){return!n(t,!0,this)},t.prototype.has=function(t){return n(t,!1,this)},t}(),Iu=B(function(t,n){return d(t)?function(){return t.apply(this,arguments)&&n.apply(this,arguments)}:Su(st)(t,n)}),Wu=Su(bn),Cu=B(function(t,n){if(g(t)){if(g(n))return t.concat(n);throw new TypeError(qu(n)+" is not an array")}if(j(t)){if(j(n))return t+n;throw new TypeError(qu(n)+" is not a string")}if(null!=t&&d(t["fantasy-land/concat"]))return t["fantasy-land/concat"](n);if(null!=t&&d(t.concat))return t.concat(n);throw new TypeError(qu(t)+' does not have a method named "concat" or "fantasy-land/concat"')}),Pu=B(function(t,n){return d(t)?function(){return t.apply(this,arguments)||n.apply(this,arguments)}:Su(_n)(t,n)}),Tu=B(function(t,n){return wt(t+1,function(){var r=arguments[t];if(null!=r&&d(r[n]))return r[n].apply(r,Array.prototype.slice.call(arguments,0,t));throw new TypeError(qu(r)+' does not have a method named "'+n+'"')})}),Fu=Tu(1,"join"),Bu=sn(function(){return qu(arguments)}),Ru=Tu(1,"split"),Uu=B(function(t,n){return Cu(Au(t,n),Au(n,t))}),Du=R(function(t,n,r){return Cu(At(t,n,r),At(t,r,n))}),Mu=B(function(t,n){if(!x(t))throw new TypeError("‘test’ requires a value of type RegExp as its first argument; received "+qu(t));return u(t).test(n)}),Lu=Tu(0,"toLowerCase"),zu=Tu(0,"toUpperCase"),Ku=B(function(t,n){for(var r,e,u=new ku,i=[],o=0;on.length?(r=t,e=n):(r=n,e=t),Vu(s(te(du)(r),e))}),Hu=B(vu(Vu,o)),Ju={F:Pr,T:Tr,__:t,add:it,addIndex:zr,adjust:ot,all:ct,allPass:Te,always:at,and:st,any:ft,anyPass:Fe,ap:Be,aperture:lt,append:pt,apply:ht,applySpec:Re,ascend:yt,assoc:gt,assocPath:Kr,binary:Vr,bind:dt,both:Iu,call:Ue,chain:De,clamp:mt,clone:$r,comparator:vt,complement:Wu,compose:vu,composeK:wu,composeP:bu,concat:Cu,cond:Me,construct:xu,constructN:Le,contains:ju,converge:ze,countBy:Ke,curry:Hr,curryN:wt,dec:bt,defaultTo:xt,descend:jt,difference:Au,differenceWith:At,dissoc:Ot,dissocPath:Jr,divide:St,drop:Xr,dropLast:Yr,dropLastWhile:Zr,dropRepeats:Ou,dropRepeatsWith:Ve,dropWhile:Et,either:Pu,empty:_t,endsWith:$e,eqBy:He,eqProps:Je,equals:Gr,evolve:qt,filter:Qr,find:Nt,findIndex:kt,findLast:It,findLastIndex:Wt,flatten:Ct,flip:te,forEach:Pt,forEachObjIndexed:ne,fromPairs:Tt,groupBy:Xe,groupWith:Ft,gt:Bt,gte:Rt,has:Ut,hasIn:Dt,head:re,identical:Mt,identity:Lt,ifElse:zt,inc:Kt,indexBy:Ye,indexOf:Ze,init:ee,innerJoin:Vt,insert:$t,insertAll:Ht,intersection:$u,intersectionWith:ue,intersperse:Jt,into:ie,invert:oe,invertObj:ce,invoker:Tu,is:Xt,isEmpty:ae,isNil:Yt,join:Fu,juxt:Ge,keys:Zt,keysIn:Gt,last:se,lastIndexOf:fe,length:Qt,lens:Qe,lensIndex:tu,lensPath:nu,lensProp:ru,lift:Su,liftN:eu,lt:tn,lte:nn,map:le,mapAccum:rn,mapAccumRight:en,mapObjIndexed:pe,match:un,mathMod:on,max:cn,maxBy:an,mean:uu,median:iu,memoize:Bu,memoizeWith:sn,merge:fn,mergeAll:ln,mergeDeepLeft:ou,mergeDeepRight:cu,mergeDeepWith:au,mergeDeepWithKey:he,mergeWith:ye,mergeWithKey:pn,min:hn,minBy:yn,modulo:gn,multiply:dn,nAry:mn,negate:vn,none:wn,not:bn,nth:xn,nthArg:jn,o:An,objOf:On,of:Sn,omit:Eu,once:En,or:_n,over:qn,pair:Nn,partial:ge,partialRight:de,partition:su,path:kn,pathEq:me,pathOr:In,pathSatisfies:Wn,pick:Cn,pickAll:Pn,pickBy:Tn,pipe:fu,pipeK:_u,pipeP:lu,pluck:ve,prepend:Fn,product:pu,project:we,prop:Bn,propEq:be,propIs:Rn,propOr:Un,propSatisfies:Dn,props:Mn,range:Ln,reduce:xe,reduceBy:je,reduceRight:zn,reduceWhile:Ae,reduced:Kn,reject:Oe,remove:Vn,repeat:Se,replace:$n,reverse:Hn,scan:Jn,sequence:hu,set:Xn,slice:Yn,sort:Zn,sortBy:Gn,sortWith:Qn,split:Ru,splitAt:tr,splitEvery:nr,splitWhen:rr,startsWith:Ee,subtract:er,sum:_e,symmetricDifference:Uu,symmetricDifferenceWith:Du,tail:ur,take:ir,takeLast:qe,takeLastWhile:or,takeWhile:cr,tap:ar,test:Mu,times:sr,toLower:Lu,toPairs:fr,toPairsIn:lr,toString:qu,toUpper:zu,transduce:Ne,transpose:pr,traverse:yu,trim:hr,tryCatch:yr,type:gr,unapply:dr,unary:mr,uncurryN:vr,unfold:wr,union:Hu,unionWith:ke,uniq:Vu,uniqBy:Ku,uniqWith:br,unless:xr,unnest:gu,until:jr,update:Ar,useWith:Or,values:Sr,valuesIn:Er,view:_r,when:qr,where:Nr,whereEq:Ie,without:Nu,xprod:kr,zip:Ir,zipObj:Wr,zipWith:Cr};"object"==typeof exports?module.exports=Ju:"function"==typeof define&&define.amd?define(function(){return Ju}):this.R=Ju}).call(this); diff --git a/node_modules/ramda/index.js b/node_modules/ramda/index.js new file mode 100644 index 0000000..1b7b302 --- /dev/null +++ b/node_modules/ramda/index.js @@ -0,0 +1,248 @@ +module.exports = { + F: require('./src/F'), + T: require('./src/T'), + __: require('./src/__'), + add: require('./src/add'), + addIndex: require('./src/addIndex'), + adjust: require('./src/adjust'), + all: require('./src/all'), + allPass: require('./src/allPass'), + always: require('./src/always'), + and: require('./src/and'), + any: require('./src/any'), + anyPass: require('./src/anyPass'), + ap: require('./src/ap'), + aperture: require('./src/aperture'), + append: require('./src/append'), + apply: require('./src/apply'), + applySpec: require('./src/applySpec'), + ascend: require('./src/ascend'), + assoc: require('./src/assoc'), + assocPath: require('./src/assocPath'), + binary: require('./src/binary'), + bind: require('./src/bind'), + both: require('./src/both'), + call: require('./src/call'), + chain: require('./src/chain'), + clamp: require('./src/clamp'), + clone: require('./src/clone'), + comparator: require('./src/comparator'), + complement: require('./src/complement'), + compose: require('./src/compose'), + composeK: require('./src/composeK'), + composeP: require('./src/composeP'), + concat: require('./src/concat'), + cond: require('./src/cond'), + construct: require('./src/construct'), + constructN: require('./src/constructN'), + contains: require('./src/contains'), + converge: require('./src/converge'), + countBy: require('./src/countBy'), + curry: require('./src/curry'), + curryN: require('./src/curryN'), + dec: require('./src/dec'), + defaultTo: require('./src/defaultTo'), + descend: require('./src/descend'), + difference: require('./src/difference'), + differenceWith: require('./src/differenceWith'), + dissoc: require('./src/dissoc'), + dissocPath: require('./src/dissocPath'), + divide: require('./src/divide'), + drop: require('./src/drop'), + dropLast: require('./src/dropLast'), + dropLastWhile: require('./src/dropLastWhile'), + dropRepeats: require('./src/dropRepeats'), + dropRepeatsWith: require('./src/dropRepeatsWith'), + dropWhile: require('./src/dropWhile'), + either: require('./src/either'), + empty: require('./src/empty'), + endsWith: require('./src/endsWith'), + eqBy: require('./src/eqBy'), + eqProps: require('./src/eqProps'), + equals: require('./src/equals'), + evolve: require('./src/evolve'), + filter: require('./src/filter'), + find: require('./src/find'), + findIndex: require('./src/findIndex'), + findLast: require('./src/findLast'), + findLastIndex: require('./src/findLastIndex'), + flatten: require('./src/flatten'), + flip: require('./src/flip'), + forEach: require('./src/forEach'), + forEachObjIndexed: require('./src/forEachObjIndexed'), + fromPairs: require('./src/fromPairs'), + groupBy: require('./src/groupBy'), + groupWith: require('./src/groupWith'), + gt: require('./src/gt'), + gte: require('./src/gte'), + has: require('./src/has'), + hasIn: require('./src/hasIn'), + head: require('./src/head'), + identical: require('./src/identical'), + identity: require('./src/identity'), + ifElse: require('./src/ifElse'), + inc: require('./src/inc'), + indexBy: require('./src/indexBy'), + indexOf: require('./src/indexOf'), + init: require('./src/init'), + innerJoin: require('./src/innerJoin'), + insert: require('./src/insert'), + insertAll: require('./src/insertAll'), + intersection: require('./src/intersection'), + intersectionWith: require('./src/intersectionWith'), + intersperse: require('./src/intersperse'), + into: require('./src/into'), + invert: require('./src/invert'), + invertObj: require('./src/invertObj'), + invoker: require('./src/invoker'), + is: require('./src/is'), + isEmpty: require('./src/isEmpty'), + isNil: require('./src/isNil'), + join: require('./src/join'), + juxt: require('./src/juxt'), + keys: require('./src/keys'), + keysIn: require('./src/keysIn'), + last: require('./src/last'), + lastIndexOf: require('./src/lastIndexOf'), + length: require('./src/length'), + lens: require('./src/lens'), + lensIndex: require('./src/lensIndex'), + lensPath: require('./src/lensPath'), + lensProp: require('./src/lensProp'), + lift: require('./src/lift'), + liftN: require('./src/liftN'), + lt: require('./src/lt'), + lte: require('./src/lte'), + map: require('./src/map'), + mapAccum: require('./src/mapAccum'), + mapAccumRight: require('./src/mapAccumRight'), + mapObjIndexed: require('./src/mapObjIndexed'), + match: require('./src/match'), + mathMod: require('./src/mathMod'), + max: require('./src/max'), + maxBy: require('./src/maxBy'), + mean: require('./src/mean'), + median: require('./src/median'), + memoize: require('./src/memoize'), + memoizeWith: require('./src/memoizeWith'), + merge: require('./src/merge'), + mergeAll: require('./src/mergeAll'), + mergeDeepLeft: require('./src/mergeDeepLeft'), + mergeDeepRight: require('./src/mergeDeepRight'), + mergeDeepWith: require('./src/mergeDeepWith'), + mergeDeepWithKey: require('./src/mergeDeepWithKey'), + mergeWith: require('./src/mergeWith'), + mergeWithKey: require('./src/mergeWithKey'), + min: require('./src/min'), + minBy: require('./src/minBy'), + modulo: require('./src/modulo'), + multiply: require('./src/multiply'), + nAry: require('./src/nAry'), + negate: require('./src/negate'), + none: require('./src/none'), + not: require('./src/not'), + nth: require('./src/nth'), + nthArg: require('./src/nthArg'), + o: require('./src/o'), + objOf: require('./src/objOf'), + of: require('./src/of'), + omit: require('./src/omit'), + once: require('./src/once'), + or: require('./src/or'), + over: require('./src/over'), + pair: require('./src/pair'), + partial: require('./src/partial'), + partialRight: require('./src/partialRight'), + partition: require('./src/partition'), + path: require('./src/path'), + pathEq: require('./src/pathEq'), + pathOr: require('./src/pathOr'), + pathSatisfies: require('./src/pathSatisfies'), + pick: require('./src/pick'), + pickAll: require('./src/pickAll'), + pickBy: require('./src/pickBy'), + pipe: require('./src/pipe'), + pipeK: require('./src/pipeK'), + pipeP: require('./src/pipeP'), + pluck: require('./src/pluck'), + prepend: require('./src/prepend'), + product: require('./src/product'), + project: require('./src/project'), + prop: require('./src/prop'), + propEq: require('./src/propEq'), + propIs: require('./src/propIs'), + propOr: require('./src/propOr'), + propSatisfies: require('./src/propSatisfies'), + props: require('./src/props'), + range: require('./src/range'), + reduce: require('./src/reduce'), + reduceBy: require('./src/reduceBy'), + reduceRight: require('./src/reduceRight'), + reduceWhile: require('./src/reduceWhile'), + reduced: require('./src/reduced'), + reject: require('./src/reject'), + remove: require('./src/remove'), + repeat: require('./src/repeat'), + replace: require('./src/replace'), + reverse: require('./src/reverse'), + scan: require('./src/scan'), + sequence: require('./src/sequence'), + set: require('./src/set'), + slice: require('./src/slice'), + sort: require('./src/sort'), + sortBy: require('./src/sortBy'), + sortWith: require('./src/sortWith'), + split: require('./src/split'), + splitAt: require('./src/splitAt'), + splitEvery: require('./src/splitEvery'), + splitWhen: require('./src/splitWhen'), + startsWith: require('./src/startsWith'), + subtract: require('./src/subtract'), + sum: require('./src/sum'), + symmetricDifference: require('./src/symmetricDifference'), + symmetricDifferenceWith: require('./src/symmetricDifferenceWith'), + tail: require('./src/tail'), + take: require('./src/take'), + takeLast: require('./src/takeLast'), + takeLastWhile: require('./src/takeLastWhile'), + takeWhile: require('./src/takeWhile'), + tap: require('./src/tap'), + test: require('./src/test'), + times: require('./src/times'), + toLower: require('./src/toLower'), + toPairs: require('./src/toPairs'), + toPairsIn: require('./src/toPairsIn'), + toString: require('./src/toString'), + toUpper: require('./src/toUpper'), + transduce: require('./src/transduce'), + transpose: require('./src/transpose'), + traverse: require('./src/traverse'), + trim: require('./src/trim'), + tryCatch: require('./src/tryCatch'), + type: require('./src/type'), + unapply: require('./src/unapply'), + unary: require('./src/unary'), + uncurryN: require('./src/uncurryN'), + unfold: require('./src/unfold'), + union: require('./src/union'), + unionWith: require('./src/unionWith'), + uniq: require('./src/uniq'), + uniqBy: require('./src/uniqBy'), + uniqWith: require('./src/uniqWith'), + unless: require('./src/unless'), + unnest: require('./src/unnest'), + until: require('./src/until'), + update: require('./src/update'), + useWith: require('./src/useWith'), + values: require('./src/values'), + valuesIn: require('./src/valuesIn'), + view: require('./src/view'), + when: require('./src/when'), + where: require('./src/where'), + whereEq: require('./src/whereEq'), + without: require('./src/without'), + xprod: require('./src/xprod'), + zip: require('./src/zip'), + zipObj: require('./src/zipObj'), + zipWith: require('./src/zipWith') +}; diff --git a/node_modules/ramda/package.json b/node_modules/ramda/package.json new file mode 100644 index 0000000..5cbc93c --- /dev/null +++ b/node_modules/ramda/package.json @@ -0,0 +1,112 @@ +{ + "_from": "ramda@0.24.1", + "_id": "ramda@0.24.1", + "_inBundle": false, + "_integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=", + "_location": "/ramda", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "ramda@0.24.1", + "name": "ramda", + "escapedName": "ramda", + "rawSpec": "0.24.1", + "saveSpec": null, + "fetchSpec": "0.24.1" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "_shasum": "c3b7755197f35b8dc3502228262c4c91ddb6b857", + "_spec": "ramda@0.24.1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "author": { + "name": "Scott Sauyet", + "email": "scott@sauyet.com", + "url": "scott.sauyet.com" + }, + "bugs": { + "url": "https://github.com/ramda/ramda/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Michael Hurley", + "email": "mh@buzzdecafe.com", + "url": "http://buzzdecafe.com" + }, + { + "name": "Scott Sauyet", + "email": "scott@sauyet.com", + "url": "http://fr.umio.us" + }, + { + "name": "David Chambers", + "email": "dc@davidchambers.me", + "url": "http://davidchambers.me" + }, + { + "name": "Graeme Yeates", + "email": "yeatesgraeme@gmail.com", + "url": "https://github.com/megawac" + } + ], + "dependencies": {}, + "deprecated": false, + "description": "A practical functional library for JavaScript programmers.", + "devDependencies": { + "acorn": "0.9.x", + "benchmark": "~1.0.0", + "browserify": "10.x.x", + "cli-table": "0.3.x", + "commander": "2.5.x", + "dox": "latest", + "envvar": "1.x.x", + "escodegen": "1.4.x", + "eslint": "^2.11.0", + "handlebars": "3.0.x", + "istanbul": "^0.4.x", + "js-yaml": "^3.2.5", + "jsverify": "^0.7.3", + "mocha": "2.x.x", + "q": "^1.1.1", + "ramda": "0.17.x", + "rimraf": "~2.3.2", + "sanctuary": "0.7.x", + "sinon": "^1.17.4", + "testem": "0.9.x", + "uglify-js": "2.4.x", + "xyz": "1.0.x" + }, + "files": [ + "index.js", + "src", + "dist" + ], + "homepage": "http://ramdajs.com/", + "license": "MIT", + "main": "index.js", + "name": "ramda", + "repository": { + "type": "git", + "url": "git://github.com/ramda/ramda.git" + }, + "scripts": { + "bench": "scripts/benchRunner", + "bookmarklet": "scripts/bookmarklet", + "browser_test": "testem ci", + "build": "make && make dist/ramda.min.js", + "clean": "rimraf dist/* coverage/*", + "coverage": "istanbul cover node_modules/.bin/_mocha -- --reporter spec", + "lint": "eslint scripts/bookmarklet scripts/build src/*.js src/internal/*.js test/*.js test/**/*.js lib/sauce/*.js lib/bench/*.js", + "postbrowser_test": "npm run posttest", + "postcoverage": "npm run posttest", + "posttest": "git checkout -- dist", + "prebrowser_test": "npm run pretest", + "precoverage": "npm run pretest", + "test": "mocha --reporter spec" + }, + "version": "0.24.1" +} diff --git a/node_modules/ramda/src/F.js b/node_modules/ramda/src/F.js new file mode 100644 index 0000000..ef2ad19 --- /dev/null +++ b/node_modules/ramda/src/F.js @@ -0,0 +1,19 @@ +var always = require('./always'); + + +/** + * A function that always returns `false`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.always, R.T + * @example + * + * R.F(); //=> false + */ +module.exports = always(false); diff --git a/node_modules/ramda/src/T.js b/node_modules/ramda/src/T.js new file mode 100644 index 0000000..fc15477 --- /dev/null +++ b/node_modules/ramda/src/T.js @@ -0,0 +1,19 @@ +var always = require('./always'); + + +/** + * A function that always returns `true`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.always, R.F + * @example + * + * R.T(); //=> true + */ +module.exports = always(true); diff --git a/node_modules/ramda/src/__.js b/node_modules/ramda/src/__.js new file mode 100644 index 0000000..b6b7499 --- /dev/null +++ b/node_modules/ramda/src/__.js @@ -0,0 +1,27 @@ +/** + * A special placeholder value used to specify "gaps" within curried functions, + * allowing partial application of any combination of arguments, regardless of + * their positions. + * + * If `g` is a curried ternary function and `_` is `R.__`, the following are + * equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2, _)(1, 3)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @constant + * @memberOf R + * @since v0.6.0 + * @category Function + * @example + * + * var greet = R.replace('{name}', R.__, 'Hello, {name}!'); + * greet('Alice'); //=> 'Hello, Alice!' + */ +module.exports = {'@@functional/placeholder': true}; diff --git a/node_modules/ramda/src/add.js b/node_modules/ramda/src/add.js new file mode 100644 index 0000000..934e25c --- /dev/null +++ b/node_modules/ramda/src/add.js @@ -0,0 +1,23 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Adds two values. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a + * @param {Number} b + * @return {Number} + * @see R.subtract + * @example + * + * R.add(2, 3); //=> 5 + * R.add(7)(10); //=> 17 + */ +module.exports = _curry2(function add(a, b) { + return Number(a) + Number(b); +}); diff --git a/node_modules/ramda/src/addIndex.js b/node_modules/ramda/src/addIndex.js new file mode 100644 index 0000000..982beee --- /dev/null +++ b/node_modules/ramda/src/addIndex.js @@ -0,0 +1,43 @@ +var _concat = require('./internal/_concat'); +var _curry1 = require('./internal/_curry1'); +var curryN = require('./curryN'); + + +/** + * Creates a new list iteration function from an existing one by adding two new + * parameters to its callback function: the current index, and the entire list. + * + * This would turn, for instance, [`R.map`](#map) function into one that + * more closely resembles `Array.prototype.map`. Note that this will only work + * for functions in which the iteration callback function is the first + * parameter, and where the list is the last parameter. (This latter might be + * unimportant if the list parameter is not used.) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Function + * @category List + * @sig ((a ... -> b) ... -> [a] -> *) -> (a ..., Int, [a] -> b) ... -> [a] -> *) + * @param {Function} fn A list iteration function that does not pass index or list to its callback + * @return {Function} An altered list iteration function that passes (item, index, list) to its callback + * @example + * + * var mapIndexed = R.addIndex(R.map); + * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); + * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] + */ +module.exports = _curry1(function addIndex(fn) { + return curryN(fn.length, function() { + var idx = 0; + var origFn = arguments[0]; + var list = arguments[arguments.length - 1]; + var args = Array.prototype.slice.call(arguments, 0); + args[0] = function() { + var result = origFn.apply(this, _concat(arguments, [idx, list])); + idx += 1; + return result; + }; + return fn.apply(this, args); + }); +}); diff --git a/node_modules/ramda/src/adjust.js b/node_modules/ramda/src/adjust.js new file mode 100644 index 0000000..ca69bf8 --- /dev/null +++ b/node_modules/ramda/src/adjust.js @@ -0,0 +1,39 @@ +var _concat = require('./internal/_concat'); +var _curry3 = require('./internal/_curry3'); + + +/** + * Applies a function to the value at the given index of an array, returning a + * new copy of the array with the element at the given index replaced with the + * result of the function application. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig (a -> a) -> Number -> [a] -> [a] + * @param {Function} fn The function to apply. + * @param {Number} idx The index. + * @param {Array|Arguments} list An array-like object whose value + * at the supplied index will be replaced. + * @return {Array} A copy of the supplied array-like object with + * the element at index `idx` replaced with the value + * returned by applying `fn` to the existing element. + * @see R.update + * @example + * + * R.adjust(R.add(10), 1, [1, 2, 3]); //=> [1, 12, 3] + * R.adjust(R.add(10))(1)([1, 2, 3]); //=> [1, 12, 3] + * @symb R.adjust(f, -1, [a, b]) = [a, f(b)] + * @symb R.adjust(f, 0, [a, b]) = [f(a), b] + */ +module.exports = _curry3(function adjust(fn, idx, list) { + if (idx >= list.length || idx < -list.length) { + return list; + } + var start = idx < 0 ? list.length : 0; + var _idx = start + idx; + var _list = _concat(list); + _list[_idx] = fn(list[_idx]); + return _list; +}); diff --git a/node_modules/ramda/src/all.js b/node_modules/ramda/src/all.js new file mode 100644 index 0000000..dc8ca5d --- /dev/null +++ b/node_modules/ramda/src/all.js @@ -0,0 +1,39 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xall = require('./internal/_xall'); + + +/** + * Returns `true` if all elements of the list match the predicate, `false` if + * there are any that don't. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by every element, `false` + * otherwise. + * @see R.any, R.none, R.transduce + * @example + * + * var equals3 = R.equals(3); + * R.all(equals3)([3, 3, 3, 3]); //=> true + * R.all(equals3)([3, 3, 1, 3]); //=> false + */ +module.exports = _curry2(_dispatchable(['all'], _xall, function all(fn, list) { + var idx = 0; + while (idx < list.length) { + if (!fn(list[idx])) { + return false; + } + idx += 1; + } + return true; +})); diff --git a/node_modules/ramda/src/allPass.js b/node_modules/ramda/src/allPass.js new file mode 100644 index 0000000..4896a9a --- /dev/null +++ b/node_modules/ramda/src/allPass.js @@ -0,0 +1,45 @@ +var _curry1 = require('./internal/_curry1'); +var curryN = require('./curryN'); +var max = require('./max'); +var pluck = require('./pluck'); +var reduce = require('./reduce'); + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if every one of the provided predicates is satisfied + * by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.anyPass + * @example + * + * var isQueen = R.propEq('rank', 'Q'); + * var isSpade = R.propEq('suit', '♠︎'); + * var isQueenOfSpades = R.allPass([isQueen, isSpade]); + * + * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false + * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true + */ +module.exports = _curry1(function allPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function() { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (!preds[idx].apply(this, arguments)) { + return false; + } + idx += 1; + } + return true; + }); +}); diff --git a/node_modules/ramda/src/always.js b/node_modules/ramda/src/always.js new file mode 100644 index 0000000..6615090 --- /dev/null +++ b/node_modules/ramda/src/always.js @@ -0,0 +1,27 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Returns a function that always returns the given value. Note that for + * non-primitives the value returned is a reference to the original value. + * + * This function is known as `const`, `constant`, or `K` (for K combinator) in + * other languages and libraries. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> (* -> a) + * @param {*} val The value to wrap in a function + * @return {Function} A Function :: * -> val. + * @example + * + * var t = R.always('Tee'); + * t(); //=> 'Tee' + */ +module.exports = _curry1(function always(val) { + return function() { + return val; + }; +}); diff --git a/node_modules/ramda/src/and.js b/node_modules/ramda/src/and.js new file mode 100644 index 0000000..0151429 --- /dev/null +++ b/node_modules/ramda/src/and.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if both arguments are `true`; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if it is falsy, otherwise the second argument. + * @see R.both + * @example + * + * R.and(true, true); //=> true + * R.and(true, false); //=> false + * R.and(false, true); //=> false + * R.and(false, false); //=> false + */ +module.exports = _curry2(function and(a, b) { + return a && b; +}); diff --git a/node_modules/ramda/src/any.js b/node_modules/ramda/src/any.js new file mode 100644 index 0000000..9b8a7c5 --- /dev/null +++ b/node_modules/ramda/src/any.js @@ -0,0 +1,40 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xany = require('./internal/_xany'); + + +/** + * Returns `true` if at least one of elements of the list match the predicate, + * `false` otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false` + * otherwise. + * @see R.all, R.none, R.transduce + * @example + * + * var lessThan0 = R.flip(R.lt)(0); + * var lessThan2 = R.flip(R.lt)(2); + * R.any(lessThan0)([1, 2]); //=> false + * R.any(lessThan2)([1, 2]); //=> true + */ +module.exports = _curry2(_dispatchable(['any'], _xany, function any(fn, list) { + var idx = 0; + while (idx < list.length) { + if (fn(list[idx])) { + return true; + } + idx += 1; + } + return false; +})); diff --git a/node_modules/ramda/src/anyPass.js b/node_modules/ramda/src/anyPass.js new file mode 100644 index 0000000..22dc166 --- /dev/null +++ b/node_modules/ramda/src/anyPass.js @@ -0,0 +1,46 @@ +var _curry1 = require('./internal/_curry1'); +var curryN = require('./curryN'); +var max = require('./max'); +var pluck = require('./pluck'); +var reduce = require('./reduce'); + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if at least one of the provided predicates is + * satisfied by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.allPass + * @example + * + * var isClub = R.propEq('suit', '♣'); + * var isSpade = R.propEq('suit', '♠'); + * var isBlackCard = R.anyPass([isClub, isSpade]); + * + * isBlackCard({rank: '10', suit: '♣'}); //=> true + * isBlackCard({rank: 'Q', suit: '♠'}); //=> true + * isBlackCard({rank: 'Q', suit: '♦'}); //=> false + */ +module.exports = _curry1(function anyPass(preds) { + return curryN(reduce(max, 0, pluck('length', preds)), function() { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (preds[idx].apply(this, arguments)) { + return true; + } + idx += 1; + } + return false; + }); +}); diff --git a/node_modules/ramda/src/ap.js b/node_modules/ramda/src/ap.js new file mode 100644 index 0000000..3b10e51 --- /dev/null +++ b/node_modules/ramda/src/ap.js @@ -0,0 +1,39 @@ +var _concat = require('./internal/_concat'); +var _curry2 = require('./internal/_curry2'); +var _reduce = require('./internal/_reduce'); +var map = require('./map'); + + +/** + * ap applies a list of functions to a list of values. + * + * Dispatches to the `ap` method of the second argument, if present. Also + * treats curried functions as applicatives. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig [a -> b] -> [a] -> [b] + * @sig Apply f => f (a -> b) -> f a -> f b + * @param {*} applyF + * @param {*} applyX + * @return {*} + * @example + * + * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6] + * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"] + * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)] + */ +module.exports = _curry2(function ap(applyF, applyX) { + return ( + typeof applyX['fantasy-land/ap'] === 'function' ? + applyX['fantasy-land/ap'](applyF) : + typeof applyF.ap === 'function' ? + applyF.ap(applyX) : + typeof applyF === 'function' ? + function(x) { return applyF(x)(applyX(x)); } : + // else + _reduce(function(acc, f) { return _concat(acc, map(f, applyX)); }, [], applyF) + ); +}); diff --git a/node_modules/ramda/src/aperture.js b/node_modules/ramda/src/aperture.js new file mode 100644 index 0000000..a65d833 --- /dev/null +++ b/node_modules/ramda/src/aperture.js @@ -0,0 +1,28 @@ +var _aperture = require('./internal/_aperture'); +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xaperture = require('./internal/_xaperture'); + + +/** + * Returns a new list, composed of n-tuples of consecutive elements. If `n` is + * greater than the length of the list, an empty list is returned. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @param {Number} n The size of the tuples to create + * @param {Array} list The list to split into `n`-length tuples + * @return {Array} The resulting list of `n`-length tuples + * @see R.transduce + * @example + * + * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] + * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] + * R.aperture(7, [1, 2, 3, 4, 5]); //=> [] + */ +module.exports = _curry2(_dispatchable([], _xaperture, _aperture)); diff --git a/node_modules/ramda/src/append.js b/node_modules/ramda/src/append.js new file mode 100644 index 0000000..474d447 --- /dev/null +++ b/node_modules/ramda/src/append.js @@ -0,0 +1,27 @@ +var _concat = require('./internal/_concat'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new list containing the contents of the given list, followed by + * the given element. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The element to add to the end of the new list. + * @param {Array} list The list of elements to add a new item to. + * list. + * @return {Array} A new list containing the elements of the old list followed by `el`. + * @see R.prepend + * @example + * + * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests'] + * R.append('tests', []); //=> ['tests'] + * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] + */ +module.exports = _curry2(function append(el, list) { + return _concat(list, [el]); +}); diff --git a/node_modules/ramda/src/apply.js b/node_modules/ramda/src/apply.js new file mode 100644 index 0000000..d053b3c --- /dev/null +++ b/node_modules/ramda/src/apply.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Applies function `fn` to the argument list `args`. This is useful for + * creating a fixed-arity function from a variadic function. `fn` should be a + * bound function if context is significant. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> a) -> [*] -> a + * @param {Function} fn The function which will be called with `args` + * @param {Array} args The arguments to call `fn` with + * @return {*} result The result, equivalent to `fn(...args)` + * @see R.call, R.unapply + * @example + * + * var nums = [1, 2, 3, -99, 42, 6, 7]; + * R.apply(Math.max, nums); //=> 42 + * @symb R.apply(f, [a, b, c]) = f(a, b, c) + */ +module.exports = _curry2(function apply(fn, args) { + return fn.apply(this, args); +}); diff --git a/node_modules/ramda/src/applySpec.js b/node_modules/ramda/src/applySpec.js new file mode 100644 index 0000000..ba76be2 --- /dev/null +++ b/node_modules/ramda/src/applySpec.js @@ -0,0 +1,44 @@ +var _curry1 = require('./internal/_curry1'); +var apply = require('./apply'); +var curryN = require('./curryN'); +var map = require('./map'); +var max = require('./max'); +var pluck = require('./pluck'); +var reduce = require('./reduce'); +var values = require('./values'); + + +/** + * Given a spec object recursively mapping properties to functions, creates a + * function producing an object of the same structure, by mapping each property + * to the result of calling its associated function with the supplied arguments. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v}) + * @param {Object} spec an object recursively mapping properties to functions for + * producing the values for these properties. + * @return {Function} A function that returns an object of the same structure + * as `spec', with each property set to the value returned by calling its + * associated function with the supplied arguments. + * @see R.converge, R.juxt + * @example + * + * var getMetrics = R.applySpec({ + * sum: R.add, + * nested: { mul: R.multiply } + * }); + * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } + * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } } + */ +module.exports = _curry1(function applySpec(spec) { + spec = map(function(v) { return typeof v == 'function' ? v : applySpec(v); }, + spec); + return curryN(reduce(max, 0, pluck('length', values(spec))), + function() { + var args = arguments; + return map(function(f) { return apply(f, args); }, spec); + }); +}); diff --git a/node_modules/ramda/src/ascend.js b/node_modules/ramda/src/ascend.js new file mode 100644 index 0000000..bc5cc3c --- /dev/null +++ b/node_modules/ramda/src/ascend.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Makes an ascending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0` + * @see R.descend + * @example + * + * var byAge = R.ascend(R.prop('age')); + * var people = [ + * // ... + * ]; + * var peopleByYoungestFirst = R.sort(byAge, people); + */ +module.exports = _curry3(function ascend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; +}); diff --git a/node_modules/ramda/src/assoc.js b/node_modules/ramda/src/assoc.js new file mode 100644 index 0000000..a012355 --- /dev/null +++ b/node_modules/ramda/src/assoc.js @@ -0,0 +1,31 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Makes a shallow clone of an object, setting or overriding the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig String -> a -> {k: v} -> {k: v} + * @param {String} prop The property name to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except for the changed property. + * @see R.dissoc + * @example + * + * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} + */ +module.exports = _curry3(function assoc(prop, val, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + result[prop] = val; + return result; +}); diff --git a/node_modules/ramda/src/assocPath.js b/node_modules/ramda/src/assocPath.js new file mode 100644 index 0000000..b0285fb --- /dev/null +++ b/node_modules/ramda/src/assocPath.js @@ -0,0 +1,49 @@ +var _curry3 = require('./internal/_curry3'); +var _has = require('./internal/_has'); +var _isArray = require('./internal/_isArray'); +var _isInteger = require('./internal/_isInteger'); +var assoc = require('./assoc'); +var isNil = require('./isNil'); + + +/** + * Makes a shallow clone of an object, setting or overriding the nodes required + * to create the given path, and placing the specific value at the tail end of + * that path. Note that this copies and flattens prototype properties onto the + * new object as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> {a} + * @param {Array} path the path to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except along the specified path. + * @see R.dissocPath + * @example + * + * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}} + * + * // Any missing or non-object keys in path will be overridden + * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} + */ +module.exports = _curry3(function assocPath(path, val, obj) { + if (path.length === 0) { + return val; + } + var idx = path[0]; + if (path.length > 1) { + var nextObj = (!isNil(obj) && _has(idx, obj)) ? obj[idx] : _isInteger(path[1]) ? [] : {}; + val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj); + } + if (_isInteger(idx) && _isArray(obj)) { + var arr = [].concat(obj); + arr[idx] = val; + return arr; + } else { + return assoc(idx, val, obj); + } +}); diff --git a/node_modules/ramda/src/binary.js b/node_modules/ramda/src/binary.js new file mode 100644 index 0000000..9bafb5b --- /dev/null +++ b/node_modules/ramda/src/binary.js @@ -0,0 +1,35 @@ +var _curry1 = require('./internal/_curry1'); +var nAry = require('./nAry'); + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 2 parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> c) -> (a, b -> c) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 2. + * @see R.nAry, R.unary + * @example + * + * var takesThreeArgs = function(a, b, c) { + * return [a, b, c]; + * }; + * takesThreeArgs.length; //=> 3 + * takesThreeArgs(1, 2, 3); //=> [1, 2, 3] + * + * var takesTwoArgs = R.binary(takesThreeArgs); + * takesTwoArgs.length; //=> 2 + * // Only 2 arguments are passed to the wrapped function + * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] + * @symb R.binary(f)(a, b, c) = f(a, b) + */ +module.exports = _curry1(function binary(fn) { + return nAry(2, fn); +}); diff --git a/node_modules/ramda/src/bind.js b/node_modules/ramda/src/bind.js new file mode 100644 index 0000000..e90e2c6 --- /dev/null +++ b/node_modules/ramda/src/bind.js @@ -0,0 +1,31 @@ +var _arity = require('./internal/_arity'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a function that is bound to a context. + * Note: `R.bind` does not provide the additional argument-binding capabilities of + * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Function + * @category Object + * @sig (* -> *) -> {*} -> (* -> *) + * @param {Function} fn The function to bind to context + * @param {Object} thisObj The context to bind `fn` to + * @return {Function} A function that will execute in the context of `thisObj`. + * @see R.partial + * @example + * + * var log = R.bind(console.log, console); + * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} + * // logs {a: 2} + * @symb R.bind(f, o)(a, b) = f.call(o, a, b) + */ +module.exports = _curry2(function bind(fn, thisObj) { + return _arity(fn.length, function() { + return fn.apply(thisObj, arguments); + }); +}); diff --git a/node_modules/ramda/src/both.js b/node_modules/ramda/src/both.js new file mode 100644 index 0000000..0e0faf5 --- /dev/null +++ b/node_modules/ramda/src/both.js @@ -0,0 +1,41 @@ +var _curry2 = require('./internal/_curry2'); +var _isFunction = require('./internal/_isFunction'); +var and = require('./and'); +var lift = require('./lift'); + + +/** + * A function which calls the two provided functions and returns the `&&` + * of the results. + * It returns the result of the first function if it is false-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * false-y value. + * + * In addition to functions, `R.both` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f A predicate + * @param {Function} g Another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. + * @see R.and + * @example + * + * var gt10 = R.gt(R.__, 10) + * var lt20 = R.lt(R.__, 20) + * var f = R.both(gt10, lt20); + * f(15); //=> true + * f(30); //=> false + */ +module.exports = _curry2(function both(f, g) { + return _isFunction(f) ? + function _both() { + return f.apply(this, arguments) && g.apply(this, arguments); + } : + lift(and)(f, g); +}); diff --git a/node_modules/ramda/src/call.js b/node_modules/ramda/src/call.js new file mode 100644 index 0000000..6808d6c --- /dev/null +++ b/node_modules/ramda/src/call.js @@ -0,0 +1,38 @@ +var curry = require('./curry'); + + +/** + * Returns the result of calling its first argument with the remaining + * arguments. This is occasionally useful as a converging function for + * [`R.converge`](#converge): the first branch can produce a function while the + * remaining branches produce values to be passed to that function as its + * arguments. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig (*... -> a),*... -> a + * @param {Function} fn The function to apply to the remaining arguments. + * @param {...*} args Any number of positional arguments. + * @return {*} + * @see R.apply + * @example + * + * R.call(R.add, 1, 2); //=> 3 + * + * var indentN = R.pipe(R.times(R.always(' ')), + * R.join(''), + * R.replace(/^(?!$)/gm)); + * + * var format = R.converge(R.call, [ + * R.pipe(R.prop('indent'), indentN), + * R.prop('value') + * ]); + * + * format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' + * @symb R.call(f, a, b) = f(a, b) + */ +module.exports = curry(function call(fn) { + return fn.apply(this, Array.prototype.slice.call(arguments, 1)); +}); diff --git a/node_modules/ramda/src/chain.js b/node_modules/ramda/src/chain.js new file mode 100644 index 0000000..2cbfec2 --- /dev/null +++ b/node_modules/ramda/src/chain.js @@ -0,0 +1,35 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _makeFlat = require('./internal/_makeFlat'); +var _xchain = require('./internal/_xchain'); +var map = require('./map'); + + +/** + * `chain` maps a function over a list and concatenates the results. `chain` + * is also known as `flatMap` in some libraries + * + * Dispatches to the `chain` method of the second argument, if present, + * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain m => (a -> m b) -> m a -> m b + * @param {Function} fn The function to map with + * @param {Array} list The list to map over + * @return {Array} The result of flat-mapping `list` with `fn` + * @example + * + * var duplicate = n => [n, n]; + * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] + * + * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1] + */ +module.exports = _curry2(_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) { + if (typeof monad === 'function') { + return function(x) { return fn(monad(x))(x); }; + } + return _makeFlat(false)(map(fn, monad)); +})); diff --git a/node_modules/ramda/src/clamp.js b/node_modules/ramda/src/clamp.js new file mode 100644 index 0000000..4e1680f --- /dev/null +++ b/node_modules/ramda/src/clamp.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + +/** + * Restricts a number to be within a range. + * + * Also works for other ordered types such as Strings and Dates. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Relation + * @sig Ord a => a -> a -> a -> a + * @param {Number} minimum The lower limit of the clamp (inclusive) + * @param {Number} maximum The upper limit of the clamp (inclusive) + * @param {Number} value Value to be clamped + * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise + * @example + * + * R.clamp(1, 10, -5) // => 1 + * R.clamp(1, 10, 15) // => 10 + * R.clamp(1, 10, 4) // => 4 + */ +module.exports = _curry3(function clamp(min, max, value) { + if (min > max) { + throw new Error('min must not be greater than max in clamp(min, max, value)'); + } + return value < min ? min : + value > max ? max : + value; +}); diff --git a/node_modules/ramda/src/clone.js b/node_modules/ramda/src/clone.js new file mode 100644 index 0000000..4f48366 --- /dev/null +++ b/node_modules/ramda/src/clone.js @@ -0,0 +1,30 @@ +var _clone = require('./internal/_clone'); +var _curry1 = require('./internal/_curry1'); + + +/** + * Creates a deep copy of the value which may contain (nested) `Array`s and + * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are + * assigned by reference rather than copied + * + * Dispatches to a `clone` method if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {*} -> {*} + * @param {*} value The object or array to clone + * @return {*} A deeply cloned copy of `val` + * @example + * + * var objects = [{}, {}, {}]; + * var objectsClone = R.clone(objects); + * objects === objectsClone; //=> false + * objects[0] === objectsClone[0]; //=> false + */ +module.exports = _curry1(function clone(value) { + return value != null && typeof value.clone === 'function' ? + value.clone() : + _clone(value, [], [], true); +}); diff --git a/node_modules/ramda/src/comparator.js b/node_modules/ramda/src/comparator.js new file mode 100644 index 0000000..fcf1854 --- /dev/null +++ b/node_modules/ramda/src/comparator.js @@ -0,0 +1,28 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Makes a comparator function out of a function that reports whether the first + * element is less than the second. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a, b -> Boolean) -> (a, b -> Number) + * @param {Function} pred A predicate function of arity two which will return `true` if the first argument + * is less than the second, `false` otherwise + * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0` + * @example + * + * var byAge = R.comparator((a, b) => a.age < b.age); + * var people = [ + * // ... + * ]; + * var peopleByIncreasingAge = R.sort(byAge, people); + */ +module.exports = _curry1(function comparator(pred) { + return function(a, b) { + return pred(a, b) ? -1 : pred(b, a) ? 1 : 0; + }; +}); diff --git a/node_modules/ramda/src/complement.js b/node_modules/ramda/src/complement.js new file mode 100644 index 0000000..4418751 --- /dev/null +++ b/node_modules/ramda/src/complement.js @@ -0,0 +1,27 @@ +var lift = require('./lift'); +var not = require('./not'); + + +/** + * Takes a function `f` and returns a function `g` such that if called with the same arguments + * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`. + * + * `R.complement` may be applied to any functor + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> *) -> (*... -> Boolean) + * @param {Function} f + * @return {Function} + * @see R.not + * @example + * + * var isNotNil = R.complement(R.isNil); + * isNil(null); //=> true + * isNotNil(null); //=> false + * isNil(7); //=> false + * isNotNil(7); //=> true + */ +module.exports = lift(not); diff --git a/node_modules/ramda/src/compose.js b/node_modules/ramda/src/compose.js new file mode 100644 index 0000000..0f4dbe8 --- /dev/null +++ b/node_modules/ramda/src/compose.js @@ -0,0 +1,34 @@ +var pipe = require('./pipe'); +var reverse = require('./reverse'); + + +/** + * Performs right-to-left function composition. The rightmost function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of compose is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipe + * @example + * + * var classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName + * var yellGreeting = R.compose(R.toUpper, classyGreeting); + * yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 + * + * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b))) + */ +module.exports = function compose() { + if (arguments.length === 0) { + throw new Error('compose requires at least one argument'); + } + return pipe.apply(this, reverse(arguments)); +}; diff --git a/node_modules/ramda/src/composeK.js b/node_modules/ramda/src/composeK.js new file mode 100644 index 0000000..b1778ba --- /dev/null +++ b/node_modules/ramda/src/composeK.js @@ -0,0 +1,43 @@ +var chain = require('./chain'); +var compose = require('./compose'); +var map = require('./map'); + + +/** + * Returns the right-to-left Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), R.chain(f))`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipeK + * @example + * + * // get :: String -> Object -> Maybe * + * var get = R.curry((propName, obj) => Maybe(obj[propName])) + * + * // getStateCode :: Maybe String -> Maybe String + * var getStateCode = R.composeK( + * R.compose(Maybe.of, R.toUpper), + * get('state'), + * get('address'), + * get('user'), + * ); + * getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY") + * getStateCode({}); //=> Maybe.Nothing() + * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a))) + */ +module.exports = function composeK() { + if (arguments.length === 0) { + throw new Error('composeK requires at least one argument'); + } + var init = Array.prototype.slice.call(arguments); + var last = init.pop(); + return compose(compose.apply(this, map(chain, init)), last); +}; diff --git a/node_modules/ramda/src/composeP.js b/node_modules/ramda/src/composeP.js new file mode 100644 index 0000000..e0d22e9 --- /dev/null +++ b/node_modules/ramda/src/composeP.js @@ -0,0 +1,44 @@ +var pipeP = require('./pipeP'); +var reverse = require('./reverse'); + + +/** + * Performs right-to-left composition of one or more Promise-returning + * functions. The rightmost function may have any arity; the remaining + * functions must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z) + * @param {...Function} functions The functions to compose + * @return {Function} + * @see R.pipeP + * @example + * + * var db = { + * users: { + * JOE: { + * name: 'Joe', + * followers: ['STEVE', 'SUZY'] + * } + * } + * } + * + * // We'll pretend to do a db lookup which returns a promise + * var lookupUser = (userId) => Promise.resolve(db.users[userId]) + * var lookupFollowers = (user) => Promise.resolve(user.followers) + * lookupUser('JOE').then(lookupFollowers) + * + * // followersForUser :: String -> Promise [UserId] + * var followersForUser = R.composeP(lookupFollowers, lookupUser); + * followersForUser('JOE').then(followers => console.log('Followers:', followers)) + * // Followers: ["STEVE","SUZY"] + */ +module.exports = function composeP() { + if (arguments.length === 0) { + throw new Error('composeP requires at least one argument'); + } + return pipeP.apply(this, reverse(arguments)); +}; diff --git a/node_modules/ramda/src/concat.js b/node_modules/ramda/src/concat.js new file mode 100644 index 0000000..2e01e94 --- /dev/null +++ b/node_modules/ramda/src/concat.js @@ -0,0 +1,54 @@ +var _curry2 = require('./internal/_curry2'); +var _isArray = require('./internal/_isArray'); +var _isFunction = require('./internal/_isFunction'); +var _isString = require('./internal/_isString'); +var toString = require('./toString'); + + +/** + * Returns the result of concatenating the given lists or strings. + * + * Note: `R.concat` expects both arguments to be of the same type, + * unlike the native `Array.prototype.concat` method. It will throw + * an error if you `concat` an Array with a non-Array value. + * + * Dispatches to the `concat` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] -> [a] + * @sig String -> String -> String + * @param {Array|String} firstList The first list + * @param {Array|String} secondList The second list + * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of + * `secondList`. + * + * @example + * + * R.concat('ABC', 'DEF'); // 'ABCDEF' + * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + * R.concat([], []); //=> [] + */ +module.exports = _curry2(function concat(a, b) { + if (_isArray(a)) { + if (_isArray(b)) { + return a.concat(b); + } + throw new TypeError(toString(b) + ' is not an array'); + } + if (_isString(a)) { + if (_isString(b)) { + return a + b; + } + throw new TypeError(toString(b) + ' is not a string'); + } + if (a != null && _isFunction(a['fantasy-land/concat'])) { + return a['fantasy-land/concat'](b); + } + if (a != null && _isFunction(a.concat)) { + return a.concat(b); + } + throw new TypeError(toString(a) + ' does not have a method named "concat" or "fantasy-land/concat"'); +}); diff --git a/node_modules/ramda/src/cond.js b/node_modules/ramda/src/cond.js new file mode 100644 index 0000000..a96822a --- /dev/null +++ b/node_modules/ramda/src/cond.js @@ -0,0 +1,47 @@ +var _arity = require('./internal/_arity'); +var _curry1 = require('./internal/_curry1'); +var map = require('./map'); +var max = require('./max'); +var reduce = require('./reduce'); + + +/** + * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic. + * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments + * to `fn` are applied to each of the predicates in turn until one returns a + * "truthy" value, at which point `fn` returns the result of applying its + * arguments to the corresponding transformer. If none of the predicates + * matches, `fn` returns undefined. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Logic + * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *) + * @param {Array} pairs A list of [predicate, transformer] + * @return {Function} + * @example + * + * var fn = R.cond([ + * [R.equals(0), R.always('water freezes at 0°C')], + * [R.equals(100), R.always('water boils at 100°C')], + * [R.T, temp => 'nothing special happens at ' + temp + '°C'] + * ]); + * fn(0); //=> 'water freezes at 0°C' + * fn(50); //=> 'nothing special happens at 50°C' + * fn(100); //=> 'water boils at 100°C' + */ +module.exports = _curry1(function cond(pairs) { + var arity = reduce(max, + 0, + map(function(pair) { return pair[0].length; }, pairs)); + return _arity(arity, function() { + var idx = 0; + while (idx < pairs.length) { + if (pairs[idx][0].apply(this, arguments)) { + return pairs[idx][1].apply(this, arguments); + } + idx += 1; + } + }); +}); diff --git a/node_modules/ramda/src/construct.js b/node_modules/ramda/src/construct.js new file mode 100644 index 0000000..43dd68f --- /dev/null +++ b/node_modules/ramda/src/construct.js @@ -0,0 +1,39 @@ +var _curry1 = require('./internal/_curry1'); +var constructN = require('./constructN'); + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> {*}) -> (* -> {*}) + * @param {Function} fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @see R.invoker + * @example + * + * // Constructor function + * function Animal(kind) { + * this.kind = kind; + * }; + * Animal.prototype.sighting = function() { + * return "It's a " + this.kind + "!"; + * } + * + * var AnimalConstructor = R.construct(Animal) + * + * // Notice we no longer need the 'new' keyword: + * AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}}; + * + * var animalTypes = ["Lion", "Tiger", "Bear"]; + * var animalSighting = R.invoker(0, 'sighting'); + * var sightNewAnimal = R.compose(animalSighting, AnimalConstructor); + * R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] + */ +module.exports = _curry1(function construct(Fn) { + return constructN(Fn.length, Fn); +}); diff --git a/node_modules/ramda/src/constructN.js b/node_modules/ramda/src/constructN.js new file mode 100644 index 0000000..0258cc9 --- /dev/null +++ b/node_modules/ramda/src/constructN.js @@ -0,0 +1,62 @@ +var _curry2 = require('./internal/_curry2'); +var curry = require('./curry'); +var nAry = require('./nAry'); + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. The arity of the function + * returned is specified to allow using variadic constructor functions. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Function + * @sig Number -> (* -> {*}) -> (* -> {*}) + * @param {Number} n The arity of the constructor function. + * @param {Function} Fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @example + * + * // Variadic Constructor function + * function Salad() { + * this.ingredients = arguments; + * }; + * Salad.prototype.recipe = function() { + * var instructions = R.map((ingredient) => ( + * 'Add a whollop of ' + ingredient, this.ingredients) + * ) + * return R.join('\n', instructions) + * } + * + * var ThreeLayerSalad = R.constructN(3, Salad) + * + * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments. + * var salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup') + * console.log(salad.recipe()); + * // Add a whollop of Mayonnaise + * // Add a whollop of Potato Chips + * // Add a whollop of Potato Ketchup + */ +module.exports = _curry2(function constructN(n, Fn) { + if (n > 10) { + throw new Error('Constructor with greater than ten arguments'); + } + if (n === 0) { + return function() { return new Fn(); }; + } + return curry(nAry(n, function($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) { + switch (arguments.length) { + case 1: return new Fn($0); + case 2: return new Fn($0, $1); + case 3: return new Fn($0, $1, $2); + case 4: return new Fn($0, $1, $2, $3); + case 5: return new Fn($0, $1, $2, $3, $4); + case 6: return new Fn($0, $1, $2, $3, $4, $5); + case 7: return new Fn($0, $1, $2, $3, $4, $5, $6); + case 8: return new Fn($0, $1, $2, $3, $4, $5, $6, $7); + case 9: return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8); + case 10: return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9); + } + })); +}); diff --git a/node_modules/ramda/src/contains.js b/node_modules/ramda/src/contains.js new file mode 100644 index 0000000..d0c6ae7 --- /dev/null +++ b/node_modules/ramda/src/contains.js @@ -0,0 +1,25 @@ +var _contains = require('./internal/_contains'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if the specified value is equal, in [`R.equals`](#equals) + * terms, to at least one element of the given list; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Boolean + * @param {Object} a The item to compare against. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. + * @see R.any + * @example + * + * R.contains(3, [1, 2, 3]); //=> true + * R.contains(4, [1, 2, 3]); //=> false + * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true + * R.contains([42], [[42]]); //=> true + */ +module.exports = _curry2(_contains); diff --git a/node_modules/ramda/src/converge.js b/node_modules/ramda/src/converge.js new file mode 100644 index 0000000..e5f3b92 --- /dev/null +++ b/node_modules/ramda/src/converge.js @@ -0,0 +1,44 @@ +var _curry2 = require('./internal/_curry2'); +var _map = require('./internal/_map'); +var curryN = require('./curryN'); +var max = require('./max'); +var pluck = require('./pluck'); +var reduce = require('./reduce'); + + +/** + * Accepts a converging function and a list of branching functions and returns + * a new function. When invoked, this new function is applied to some + * arguments, each branching function is applied to those same arguments. The + * results of each branching function are passed as arguments to the converging + * function to produce the return value. + * + * @func + * @memberOf R + * @since v0.4.2 + * @category Function + * @sig (x1 -> x2 -> ... -> z) -> [(a -> b -> ... -> x1), (a -> b -> ... -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} after A function. `after` will be invoked with the return values of + * `fn1` and `fn2` as its arguments. + * @param {Array} functions A list of functions. + * @return {Function} A new function. + * @see R.useWith + * @example + * + * var average = R.converge(R.divide, [R.sum, R.length]) + * average([1, 2, 3, 4, 5, 6, 7]) //=> 4 + * + * var strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) + * strangeConcat("Yodel") //=> "YODELyodel" + * + * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b)) + */ +module.exports = _curry2(function converge(after, fns) { + return curryN(reduce(max, 0, pluck('length', fns)), function() { + var args = arguments; + var context = this; + return after.apply(context, _map(function(fn) { + return fn.apply(context, args); + }, fns)); + }); +}); diff --git a/node_modules/ramda/src/countBy.js b/node_modules/ramda/src/countBy.js new file mode 100644 index 0000000..396a926 --- /dev/null +++ b/node_modules/ramda/src/countBy.js @@ -0,0 +1,28 @@ +var reduceBy = require('./reduceBy'); + + +/** + * Counts the elements of a list according to how many match each value of a + * key generated by the supplied function. Returns an object mapping the keys + * produced by `fn` to the number of occurrences in the list. Note that all + * keys are coerced to strings because of how JavaScript objects work. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> String) -> [a] -> {*} + * @param {Function} fn The function used to map values to keys. + * @param {Array} list The list to count elements from. + * @return {Object} An object mapping keys to number of occurrences in the list. + * @example + * + * var numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2]; + * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1} + * + * var letters = ['a', 'b', 'A', 'a', 'B', 'c']; + * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} + */ +module.exports = reduceBy(function(acc, elem) { return acc + 1; }, 0); diff --git a/node_modules/ramda/src/curry.js b/node_modules/ramda/src/curry.js new file mode 100644 index 0000000..22d22e0 --- /dev/null +++ b/node_modules/ramda/src/curry.js @@ -0,0 +1,48 @@ +var _curry1 = require('./internal/_curry1'); +var curryN = require('./curryN'); + + +/** + * Returns a curried equivalent of the provided function. The curried function + * has two unusual capabilities. First, its arguments needn't be provided one + * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> a) -> (* -> a) + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curryN + * @example + * + * var addFourNumbers = (a, b, c, d) => a + b + c + d; + * + * var curriedAddFourNumbers = R.curry(addFourNumbers); + * var f = curriedAddFourNumbers(1, 2); + * var g = f(3); + * g(4); //=> 10 + */ +module.exports = _curry1(function curry(fn) { + return curryN(fn.length, fn); +}); diff --git a/node_modules/ramda/src/curryN.js b/node_modules/ramda/src/curryN.js new file mode 100644 index 0000000..a05f41d --- /dev/null +++ b/node_modules/ramda/src/curryN.js @@ -0,0 +1,54 @@ +var _arity = require('./internal/_arity'); +var _curry1 = require('./internal/_curry1'); +var _curry2 = require('./internal/_curry2'); +var _curryN = require('./internal/_curryN'); + + +/** + * Returns a curried equivalent of the provided function, with the specified + * arity. The curried function has two unusual capabilities. First, its + * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.5.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curry + * @example + * + * var sumArgs = (...args) => R.sum(args); + * + * var curriedAddFourNumbers = R.curryN(4, sumArgs); + * var f = curriedAddFourNumbers(1, 2); + * var g = f(3); + * g(4); //=> 10 + */ +module.exports = _curry2(function curryN(length, fn) { + if (length === 1) { + return _curry1(fn); + } + return _arity(length, _curryN(length, [], fn)); +}); diff --git a/node_modules/ramda/src/dec.js b/node_modules/ramda/src/dec.js new file mode 100644 index 0000000..215ac35 --- /dev/null +++ b/node_modules/ramda/src/dec.js @@ -0,0 +1,19 @@ +var add = require('./add'); + + +/** + * Decrements its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n - 1 + * @see R.inc + * @example + * + * R.dec(42); //=> 41 + */ +module.exports = add(-1); diff --git a/node_modules/ramda/src/defaultTo.js b/node_modules/ramda/src/defaultTo.js new file mode 100644 index 0000000..c6efd5b --- /dev/null +++ b/node_modules/ramda/src/defaultTo.js @@ -0,0 +1,28 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns the second argument if it is not `null`, `undefined` or `NaN`; + * otherwise the first argument is returned. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Logic + * @sig a -> b -> a | b + * @param {a} default The default value. + * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`. + * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value + * @example + * + * var defaultTo42 = R.defaultTo(42); + * + * defaultTo42(null); //=> 42 + * defaultTo42(undefined); //=> 42 + * defaultTo42('Ramda'); //=> 'Ramda' + * // parseInt('string') results in NaN + * defaultTo42(parseInt('string')); //=> 42 + */ +module.exports = _curry2(function defaultTo(d, v) { + return v == null || v !== v ? d : v; +}); diff --git a/node_modules/ramda/src/descend.js b/node_modules/ramda/src/descend.js new file mode 100644 index 0000000..6ca40c7 --- /dev/null +++ b/node_modules/ramda/src/descend.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Makes a descending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0` + * @see R.ascend + * @example + * + * var byAge = R.descend(R.prop('age')); + * var people = [ + * // ... + * ]; + * var peopleByOldestFirst = R.sort(byAge, people); + */ +module.exports = _curry3(function descend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa > bb ? -1 : aa < bb ? 1 : 0; +}); diff --git a/node_modules/ramda/src/difference.js b/node_modules/ramda/src/difference.js new file mode 100644 index 0000000..7071db1 --- /dev/null +++ b/node_modules/ramda/src/difference.js @@ -0,0 +1,36 @@ +var _contains = require('./internal/_contains'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Objects and Arrays are compared in terms of + * value equality, not reference equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without + * @example + * + * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] + * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] + * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] + */ +module.exports = _curry2(function difference(first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!_contains(first[idx], second) && !_contains(first[idx], out)) { + out[out.length] = first[idx]; + } + idx += 1; + } + return out; +}); diff --git a/node_modules/ramda/src/differenceWith.js b/node_modules/ramda/src/differenceWith.js new file mode 100644 index 0000000..1dc3db5 --- /dev/null +++ b/node_modules/ramda/src/differenceWith.js @@ -0,0 +1,39 @@ +var _containsWith = require('./internal/_containsWith'); +var _curry3 = require('./internal/_curry3'); + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith + * @example + * + * var cmp = (x, y) => x.a === y.a; + * var l1 = [{a: 1}, {a: 2}, {a: 3}]; + * var l2 = [{a: 3}, {a: 4}]; + * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] + */ +module.exports = _curry3(function differenceWith(pred, first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!_containsWith(pred, first[idx], second) && + !_containsWith(pred, first[idx], out)) { + out.push(first[idx]); + } + idx += 1; + } + return out; +}); diff --git a/node_modules/ramda/src/dissoc.js b/node_modules/ramda/src/dissoc.js new file mode 100644 index 0000000..f461608 --- /dev/null +++ b/node_modules/ramda/src/dissoc.js @@ -0,0 +1,27 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new object that does not contain a `prop` property. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Object + * @sig String -> {k: v} -> {k: v} + * @param {String} prop The name of the property to dissociate + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original but without the specified property + * @see R.assoc + * @example + * + * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} + */ +module.exports = _curry2(function dissoc(prop, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + delete result[prop]; + return result; +}); diff --git a/node_modules/ramda/src/dissocPath.js b/node_modules/ramda/src/dissocPath.js new file mode 100644 index 0000000..cf96b9d --- /dev/null +++ b/node_modules/ramda/src/dissocPath.js @@ -0,0 +1,45 @@ +var _curry2 = require('./internal/_curry2'); +var _isInteger = require('./internal/_isInteger'); +var assoc = require('./assoc'); +var dissoc = require('./dissoc'); +var remove = require('./remove'); +var update = require('./update'); + + +/** + * Makes a shallow clone of an object, omitting the property at the given path. + * Note that this copies and flattens prototype properties onto the new object + * as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.11.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {k: v} -> {k: v} + * @param {Array} path The path to the value to omit + * @param {Object} obj The object to clone + * @return {Object} A new object without the property at path + * @see R.assocPath + * @example + * + * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} + */ +module.exports = _curry2(function dissocPath(path, obj) { + switch (path.length) { + case 0: + return obj; + case 1: + return _isInteger(path[0]) ? remove(path[0], 1, obj) : dissoc(path[0], obj); + default: + var head = path[0]; + var tail = Array.prototype.slice.call(path, 1); + if (obj[head] == null) { + return obj; + } else if (_isInteger(path[0])) { + return update(head, dissocPath(tail, obj[head]), obj); + } else { + return assoc(head, dissocPath(tail, obj[head]), obj); + } + } +}); diff --git a/node_modules/ramda/src/divide.js b/node_modules/ramda/src/divide.js new file mode 100644 index 0000000..1829979 --- /dev/null +++ b/node_modules/ramda/src/divide.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Divides two numbers. Equivalent to `a / b`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a / b`. + * @see R.multiply + * @example + * + * R.divide(71, 100); //=> 0.71 + * + * var half = R.divide(R.__, 2); + * half(42); //=> 21 + * + * var reciprocal = R.divide(1); + * reciprocal(4); //=> 0.25 + */ +module.exports = _curry2(function divide(a, b) { return a / b; }); diff --git a/node_modules/ramda/src/drop.js b/node_modules/ramda/src/drop.js new file mode 100644 index 0000000..1503645 --- /dev/null +++ b/node_modules/ramda/src/drop.js @@ -0,0 +1,33 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xdrop = require('./internal/_xdrop'); +var slice = require('./slice'); + + +/** + * Returns all but the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `drop` method). + * + * Dispatches to the `drop` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} A copy of list without the first `n` elements + * @see R.take, R.transduce, R.dropLast, R.dropWhile + * @example + * + * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.drop(3, ['foo', 'bar', 'baz']); //=> [] + * R.drop(4, ['foo', 'bar', 'baz']); //=> [] + * R.drop(3, 'ramda'); //=> 'da' + */ +module.exports = _curry2(_dispatchable(['drop'], _xdrop, function drop(n, xs) { + return slice(Math.max(0, n), Infinity, xs); +})); diff --git a/node_modules/ramda/src/dropLast.js b/node_modules/ramda/src/dropLast.js new file mode 100644 index 0000000..8fd298b --- /dev/null +++ b/node_modules/ramda/src/dropLast.js @@ -0,0 +1,28 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _dropLast = require('./internal/_dropLast'); +var _xdropLast = require('./internal/_xdropLast'); + + +/** + * Returns a list containing all but the last `n` elements of the given `list`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements of `list` to skip. + * @param {Array} list The list of elements to consider. + * @return {Array} A copy of the list with only the first `list.length - n` elements + * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile + * @example + * + * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(3, 'ramda'); //=> 'ra' + */ +module.exports = _curry2(_dispatchable([], _xdropLast, _dropLast)); diff --git a/node_modules/ramda/src/dropLastWhile.js b/node_modules/ramda/src/dropLastWhile.js new file mode 100644 index 0000000..9713a59 --- /dev/null +++ b/node_modules/ramda/src/dropLastWhile.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _dropLastWhile = require('./internal/_dropLastWhile'); +var _xdropLastWhile = require('./internal/_xdropLastWhile'); + + +/** + * Returns a new list excluding all the tailing elements of a given list which + * satisfy the supplied predicate function. It passes each value from the right + * to the supplied predicate function, skipping elements until the predicate + * function returns a `falsy` value. The predicate function is applied to one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} predicate The function to be called on each element + * @param {Array} list The collection to iterate over. + * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`. + * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile + * @example + * + * var lteThree = x => x <= 3; + * + * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] + */ +module.exports = _curry2(_dispatchable([], _xdropLastWhile, _dropLastWhile)); diff --git a/node_modules/ramda/src/dropRepeats.js b/node_modules/ramda/src/dropRepeats.js new file mode 100644 index 0000000..3604eb2 --- /dev/null +++ b/node_modules/ramda/src/dropRepeats.js @@ -0,0 +1,26 @@ +var _curry1 = require('./internal/_curry1'); +var _dispatchable = require('./internal/_dispatchable'); +var _xdropRepeatsWith = require('./internal/_xdropRepeatsWith'); +var dropRepeatsWith = require('./dropRepeatsWith'); +var equals = require('./equals'); + + +/** + * Returns a new list without any consecutively repeating elements. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2] + */ +module.exports = _curry1(_dispatchable([], _xdropRepeatsWith(equals), dropRepeatsWith(equals))); diff --git a/node_modules/ramda/src/dropRepeatsWith.js b/node_modules/ramda/src/dropRepeatsWith.js new file mode 100644 index 0000000..ed31f4d --- /dev/null +++ b/node_modules/ramda/src/dropRepeatsWith.js @@ -0,0 +1,43 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xdropRepeatsWith = require('./internal/_xdropRepeatsWith'); +var last = require('./last'); + + +/** + * Returns a new list without any consecutively repeating elements. Equality is + * determined by applying the supplied predicate to each pair of consecutive elements. The + * first element in a series of equal elements will be preserved. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig (a, a -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * var l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; + * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] + */ +module.exports = _curry2(_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) { + var result = []; + var idx = 1; + var len = list.length; + if (len !== 0) { + result[0] = list[0]; + while (idx < len) { + if (!pred(last(result), list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + } + return result; +})); + diff --git a/node_modules/ramda/src/dropWhile.js b/node_modules/ramda/src/dropWhile.js new file mode 100644 index 0000000..c9391c4 --- /dev/null +++ b/node_modules/ramda/src/dropWhile.js @@ -0,0 +1,38 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xdropWhile = require('./internal/_xdropWhile'); + + +/** + * Returns a new list excluding the leading elements of a given list which + * satisfy the supplied predicate function. It passes each value to the supplied + * predicate function, skipping elements while the predicate function returns + * `true`. The predicate function is applied to one argument: *(value)*. + * + * Dispatches to the `dropWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.takeWhile, R.transduce, R.addIndex + * @example + * + * var lteTwo = x => x <= 2; + * + * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] + */ +module.exports = _curry2(_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, list) { + var idx = 0; + var len = list.length; + while (idx < len && pred(list[idx])) { + idx += 1; + } + return Array.prototype.slice.call(list, idx); +})); diff --git a/node_modules/ramda/src/either.js b/node_modules/ramda/src/either.js new file mode 100644 index 0000000..e9cc6ee --- /dev/null +++ b/node_modules/ramda/src/either.js @@ -0,0 +1,40 @@ +var _curry2 = require('./internal/_curry2'); +var _isFunction = require('./internal/_isFunction'); +var lift = require('./lift'); +var or = require('./or'); + + +/** + * A function wrapping calls to the two functions in an `||` operation, + * returning the result of the first function if it is truth-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * truth-y value. + * + * In addition to functions, `R.either` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f a predicate + * @param {Function} g another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together. + * @see R.or + * @example + * + * var gt10 = x => x > 10; + * var even = x => x % 2 === 0; + * var f = R.either(gt10, even); + * f(101); //=> true + * f(8); //=> true + */ +module.exports = _curry2(function either(f, g) { + return _isFunction(f) ? + function _either() { + return f.apply(this, arguments) || g.apply(this, arguments); + } : + lift(or)(f, g); +}); diff --git a/node_modules/ramda/src/empty.js b/node_modules/ramda/src/empty.js new file mode 100644 index 0000000..4251f23 --- /dev/null +++ b/node_modules/ramda/src/empty.js @@ -0,0 +1,51 @@ +var _curry1 = require('./internal/_curry1'); +var _isArguments = require('./internal/_isArguments'); +var _isArray = require('./internal/_isArray'); +var _isObject = require('./internal/_isObject'); +var _isString = require('./internal/_isString'); + + +/** + * Returns the empty value of its argument's type. Ramda defines the empty + * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other + * types are supported if they define `.empty` and/or + * `.prototype.empty`. + * + * Dispatches to the `empty` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> a + * @param {*} x + * @return {*} + * @example + * + * R.empty(Just(42)); //=> Nothing() + * R.empty([1, 2, 3]); //=> [] + * R.empty('unicorns'); //=> '' + * R.empty({x: 1, y: 2}); //=> {} + */ +module.exports = _curry1(function empty(x) { + return ( + (x != null && typeof x['fantasy-land/empty'] === 'function') ? + x['fantasy-land/empty']() : + (x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function') ? + x.constructor['fantasy-land/empty']() : + (x != null && typeof x.empty === 'function') ? + x.empty() : + (x != null && x.constructor != null && typeof x.constructor.empty === 'function') ? + x.constructor.empty() : + _isArray(x) ? + [] : + _isString(x) ? + '' : + _isObject(x) ? + {} : + _isArguments(x) ? + (function() { return arguments; }()) : + // else + void 0 + ); +}); diff --git a/node_modules/ramda/src/endsWith.js b/node_modules/ramda/src/endsWith.js new file mode 100644 index 0000000..e4f5c91 --- /dev/null +++ b/node_modules/ramda/src/endsWith.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); +var equals = require('./equals'); +var takeLast = require('./takeLast'); + +/** + * Checks if a list ends with the provided values + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> Boolean + * @sig String -> Boolean + * @param {*} suffix + * @param {*} list + * @return {Boolean} + * @example + * + * R.endsWith('c', 'abc') //=> true + * R.endsWith('b', 'abc') //=> false + * R.endsWith(['c'], ['a', 'b', 'c']) //=> true + * R.endsWith(['b'], ['a', 'b', 'c']) //=> false + */ +module.exports = _curry2(function(suffix, list) { + return equals(takeLast(suffix.length, list), suffix); +}); diff --git a/node_modules/ramda/src/eqBy.js b/node_modules/ramda/src/eqBy.js new file mode 100644 index 0000000..b30a9fd --- /dev/null +++ b/node_modules/ramda/src/eqBy.js @@ -0,0 +1,24 @@ +var _curry3 = require('./internal/_curry3'); +var equals = require('./equals'); + + +/** + * Takes a function and two values in its domain and returns `true` if the + * values map to the same value in the codomain; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Relation + * @sig (a -> b) -> a -> a -> Boolean + * @param {Function} f + * @param {*} x + * @param {*} y + * @return {Boolean} + * @example + * + * R.eqBy(Math.abs, 5, -5); //=> true + */ +module.exports = _curry3(function eqBy(f, x, y) { + return equals(f(x), f(y)); +}); diff --git a/node_modules/ramda/src/eqProps.js b/node_modules/ramda/src/eqProps.js new file mode 100644 index 0000000..a26eda5 --- /dev/null +++ b/node_modules/ramda/src/eqProps.js @@ -0,0 +1,28 @@ +var _curry3 = require('./internal/_curry3'); +var equals = require('./equals'); + + +/** + * Reports whether two objects have the same value, in [`R.equals`](#equals) + * terms, for the specified property. Useful as a curried predicate. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig k -> {k: v} -> {k: v} -> Boolean + * @param {String} prop The name of the property to compare + * @param {Object} obj1 + * @param {Object} obj2 + * @return {Boolean} + * + * @example + * + * var o1 = { a: 1, b: 2, c: 3, d: 4 }; + * var o2 = { a: 10, b: 20, c: 3, d: 40 }; + * R.eqProps('a', o1, o2); //=> false + * R.eqProps('c', o1, o2); //=> true + */ +module.exports = _curry3(function eqProps(prop, obj1, obj2) { + return equals(obj1[prop], obj2[prop]); +}); diff --git a/node_modules/ramda/src/equals.js b/node_modules/ramda/src/equals.js new file mode 100644 index 0000000..5cc2bbe --- /dev/null +++ b/node_modules/ramda/src/equals.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); +var _equals = require('./internal/_equals'); + + +/** + * Returns `true` if its arguments are equivalent, `false` otherwise. Handles + * cyclical data structures. + * + * Dispatches symmetrically to the `equals` methods of both arguments, if + * present. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> b -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * R.equals(1, 1); //=> true + * R.equals(1, '1'); //=> false + * R.equals([1, 2, 3], [1, 2, 3]); //=> true + * + * var a = {}; a.v = a; + * var b = {}; b.v = b; + * R.equals(a, b); //=> true + */ +module.exports = _curry2(function equals(a, b) { + return _equals(a, b, [], []); +}); diff --git a/node_modules/ramda/src/evolve.js b/node_modules/ramda/src/evolve.js new file mode 100644 index 0000000..1757dbf --- /dev/null +++ b/node_modules/ramda/src/evolve.js @@ -0,0 +1,42 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a new object by recursively evolving a shallow copy of `object`, + * according to the `transformation` functions. All non-primitive properties + * are copied by reference. + * + * A `transformation` function will not be invoked if its corresponding key + * does not exist in the evolved object. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {k: (v -> v)} -> {k: v} -> {k: v} + * @param {Object} transformations The object specifying transformation functions to apply + * to the object. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * var tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123}; + * var transformations = { + * firstName: R.trim, + * lastName: R.trim, // Will not get invoked. + * data: {elapsed: R.add(1), remaining: R.add(-1)} + * }; + * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} + */ +module.exports = _curry2(function evolve(transformations, object) { + var result = {}; + var transformation, key, type; + for (key in object) { + transformation = transformations[key]; + type = typeof transformation; + result[key] = type === 'function' ? transformation(object[key]) + : transformation && type === 'object' ? evolve(transformation, object[key]) + : object[key]; + } + return result; +}); diff --git a/node_modules/ramda/src/filter.js b/node_modules/ramda/src/filter.js new file mode 100644 index 0000000..7cef2b9 --- /dev/null +++ b/node_modules/ramda/src/filter.js @@ -0,0 +1,49 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _filter = require('./internal/_filter'); +var _isObject = require('./internal/_isObject'); +var _reduce = require('./internal/_reduce'); +var _xfilter = require('./internal/_xfilter'); +var keys = require('./keys'); + + +/** + * Takes a predicate and a `Filterable`, and returns a new filterable of the + * same type containing the members of the given filterable which satisfy the + * given predicate. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * Dispatches to the `filter` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} Filterable + * @see R.reject, R.transduce, R.addIndex + * @example + * + * var isEven = n => n % 2 === 0; + * + * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4] + * + * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +module.exports = _curry2(_dispatchable(['filter'], _xfilter, function(pred, filterable) { + return ( + _isObject(filterable) ? + _reduce(function(acc, key) { + if (pred(filterable[key])) { + acc[key] = filterable[key]; + } + return acc; + }, {}, keys(filterable)) : + // else + _filter(pred, filterable) + ); +})); diff --git a/node_modules/ramda/src/find.js b/node_modules/ramda/src/find.js new file mode 100644 index 0000000..acc3e2d --- /dev/null +++ b/node_modules/ramda/src/find.js @@ -0,0 +1,39 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xfind = require('./internal/_xfind'); + + +/** + * Returns the first element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Dispatches to the `find` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * var xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.find(R.propEq('a', 2))(xs); //=> {a: 2} + * R.find(R.propEq('a', 4))(xs); //=> undefined + */ +module.exports = _curry2(_dispatchable(['find'], _xfind, function find(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return list[idx]; + } + idx += 1; + } +})); diff --git a/node_modules/ramda/src/findIndex.js b/node_modules/ramda/src/findIndex.js new file mode 100644 index 0000000..fb9bfb1 --- /dev/null +++ b/node_modules/ramda/src/findIndex.js @@ -0,0 +1,38 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xfindIndex = require('./internal/_xfindIndex'); + + +/** + * Returns the index of the first element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * var xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.findIndex(R.propEq('a', 2))(xs); //=> 1 + * R.findIndex(R.propEq('a', 4))(xs); //=> -1 + */ +module.exports = _curry2(_dispatchable([], _xfindIndex, function findIndex(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return idx; + } + idx += 1; + } + return -1; +})); diff --git a/node_modules/ramda/src/findLast.js b/node_modules/ramda/src/findLast.js new file mode 100644 index 0000000..c878603 --- /dev/null +++ b/node_modules/ramda/src/findLast.js @@ -0,0 +1,36 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xfindLast = require('./internal/_xfindLast'); + + +/** + * Returns the last element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * var xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1} + * R.findLast(R.propEq('a', 4))(xs); //=> undefined + */ +module.exports = _curry2(_dispatchable([], _xfindLast, function findLast(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return list[idx]; + } + idx -= 1; + } +})); diff --git a/node_modules/ramda/src/findLastIndex.js b/node_modules/ramda/src/findLastIndex.js new file mode 100644 index 0000000..72b55f7 --- /dev/null +++ b/node_modules/ramda/src/findLastIndex.js @@ -0,0 +1,37 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xfindLastIndex = require('./internal/_xfindLastIndex'); + + +/** + * Returns the index of the last element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * var xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1 + * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 + */ +module.exports = _curry2(_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return idx; + } + idx -= 1; + } + return -1; +})); diff --git a/node_modules/ramda/src/flatten.js b/node_modules/ramda/src/flatten.js new file mode 100644 index 0000000..5fe6661 --- /dev/null +++ b/node_modules/ramda/src/flatten.js @@ -0,0 +1,22 @@ +var _curry1 = require('./internal/_curry1'); +var _makeFlat = require('./internal/_makeFlat'); + + +/** + * Returns a new list by pulling every item out of it (and all its sub-arrays) + * and putting them in a new array, depth-first. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] + * @param {Array} list The array to consider. + * @return {Array} The flattened list. + * @see R.unnest + * @example + * + * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); + * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + */ +module.exports = _curry1(_makeFlat(true)); diff --git a/node_modules/ramda/src/flip.js b/node_modules/ramda/src/flip.js new file mode 100644 index 0000000..2204a1d --- /dev/null +++ b/node_modules/ramda/src/flip.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); +var curry = require('./curry'); + + +/** + * Returns a new function much like the supplied one, except that the first two + * arguments' order is reversed. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> b -> c -> ... -> z) -> (b -> a -> c -> ... -> z) + * @param {Function} fn The function to invoke with its first two parameters reversed. + * @return {*} The result of invoking `fn` with its first two parameters' order reversed. + * @example + * + * var mergeThree = (a, b, c) => [].concat(a, b, c); + * + * mergeThree(1, 2, 3); //=> [1, 2, 3] + * + * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] + * @symb R.flip(f)(a, b, c) = f(b, a, c) + */ +module.exports = _curry1(function flip(fn) { + return curry(function(a, b) { + var args = Array.prototype.slice.call(arguments, 0); + args[0] = b; + args[1] = a; + return fn.apply(this, args); + }); +}); diff --git a/node_modules/ramda/src/forEach.js b/node_modules/ramda/src/forEach.js new file mode 100644 index 0000000..1fc0073 --- /dev/null +++ b/node_modules/ramda/src/forEach.js @@ -0,0 +1,47 @@ +var _checkForMethod = require('./internal/_checkForMethod'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Iterate over an input `list`, calling a provided function `fn` for each + * element in the list. + * + * `fn` receives one argument: *(value)*. + * + * Note: `R.forEach` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.forEach` method. For more + * details on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description + * + * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns + * the original array. In some libraries this function is named `each`. + * + * Dispatches to the `forEach` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> *) -> [a] -> [a] + * @param {Function} fn The function to invoke. Receives one argument, `value`. + * @param {Array} list The list to iterate over. + * @return {Array} The original list. + * @see R.addIndex + * @example + * + * var printXPlusFive = x => console.log(x + 5); + * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] + * // logs 6 + * // logs 7 + * // logs 8 + * @symb R.forEach(f, [a, b, c]) = [a, b, c] + */ +module.exports = _curry2(_checkForMethod('forEach', function forEach(fn, list) { + var len = list.length; + var idx = 0; + while (idx < len) { + fn(list[idx]); + idx += 1; + } + return list; +})); diff --git a/node_modules/ramda/src/forEachObjIndexed.js b/node_modules/ramda/src/forEachObjIndexed.js new file mode 100644 index 0000000..fa67250 --- /dev/null +++ b/node_modules/ramda/src/forEachObjIndexed.js @@ -0,0 +1,36 @@ +var _curry2 = require('./internal/_curry2'); +var keys = require('./keys'); + + +/** + * Iterate over an input `object`, calling a provided function `fn` for each + * key and value in the object. + * + * `fn` receives three argument: *(value, key, obj)*. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Object + * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a + * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`. + * @param {Object} obj The object to iterate over. + * @return {Object} The original object. + * @example + * + * var printKeyConcatValue = (value, key) => console.log(key + ':' + value); + * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2} + * // logs x:1 + * // logs y:2 + * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b} + */ +module.exports = _curry2(function forEachObjIndexed(fn, obj) { + var keyList = keys(obj); + var idx = 0; + while (idx < keyList.length) { + var key = keyList[idx]; + fn(obj[key], key, obj); + idx += 1; + } + return obj; +}); diff --git a/node_modules/ramda/src/fromPairs.js b/node_modules/ramda/src/fromPairs.js new file mode 100644 index 0000000..5e24e97 --- /dev/null +++ b/node_modules/ramda/src/fromPairs.js @@ -0,0 +1,28 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Creates a new object from a list key-value pairs. If a key appears in + * multiple pairs, the rightmost pair is included in the object. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [[k,v]] -> {k: v} + * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object. + * @return {Object} The object made by pairing up `keys` and `values`. + * @see R.toPairs, R.pair + * @example + * + * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} + */ +module.exports = _curry1(function fromPairs(pairs) { + var result = {}; + var idx = 0; + while (idx < pairs.length) { + result[pairs[idx][0]] = pairs[idx][1]; + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/groupBy.js b/node_modules/ramda/src/groupBy.js new file mode 100644 index 0000000..cfdabdc --- /dev/null +++ b/node_modules/ramda/src/groupBy.js @@ -0,0 +1,51 @@ +var _checkForMethod = require('./internal/_checkForMethod'); +var _curry2 = require('./internal/_curry2'); +var reduceBy = require('./reduceBy'); + +/** + * Splits a list into sub-lists stored in an object, based on the result of + * calling a String-returning function on each element, and grouping the + * results according to values returned. + * + * Dispatches to the `groupBy` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> String) -> [a] -> {String: [a]} + * @param {Function} fn Function :: a -> String + * @param {Array} list The array to group + * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements + * that produced that key when passed to `fn`. + * @see R.transduce + * @example + * + * var byGrade = R.groupBy(function(student) { + * var score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * var students = [{name: 'Abby', score: 84}, + * {name: 'Eddy', score: 58}, + * // ... + * {name: 'Jack', score: 69}]; + * byGrade(students); + * // { + * // 'A': [{name: 'Dianne', score: 99}], + * // 'B': [{name: 'Abby', score: 84}] + * // // ..., + * // 'F': [{name: 'Eddy', score: 58}] + * // } + */ +module.exports = _curry2(_checkForMethod('groupBy', reduceBy(function(acc, item) { + if (acc == null) { + acc = []; + } + acc.push(item); + return acc; +}, null))); diff --git a/node_modules/ramda/src/groupWith.js b/node_modules/ramda/src/groupWith.js new file mode 100644 index 0000000..5b1b728 --- /dev/null +++ b/node_modules/ramda/src/groupWith.js @@ -0,0 +1,46 @@ +var _curry2 = require('./internal/_curry2'); + +/** + * Takes a list and returns a list of lists where each sublist's elements are + * all satisfied pairwise comparison according to the provided function. + * Only adjacent elements are passed to the comparison function. + * + * @func + * @memberOf R + * @since v0.21.0 + * @category List + * @sig ((a, a) → Boolean) → [a] → [[a]] + * @param {Function} fn Function for determining whether two given (adjacent) + * elements should be in the same group + * @param {Array} list The array to group. Also accepts a string, which will be + * treated as a list of characters. + * @return {List} A list that contains sublists of elements, + * whose concatenations are equal to the original list. + * @example + * + * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] + * + * R.groupWith(R.eqBy(isVowel), 'aestiou') + * //=> ['ae', 'st', 'iou'] + */ +module.exports = _curry2(function(fn, list) { + var res = []; + var idx = 0; + var len = list.length; + while (idx < len) { + var nextidx = idx + 1; + while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) { + nextidx += 1; + } + res.push(list.slice(idx, nextidx)); + idx = nextidx; + } + return res; +}); diff --git a/node_modules/ramda/src/gt.js b/node_modules/ramda/src/gt.js new file mode 100644 index 0000000..70c647a --- /dev/null +++ b/node_modules/ramda/src/gt.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if the first argument is greater than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.lt + * @example + * + * R.gt(2, 1); //=> true + * R.gt(2, 2); //=> false + * R.gt(2, 3); //=> false + * R.gt('a', 'z'); //=> false + * R.gt('z', 'a'); //=> true + */ +module.exports = _curry2(function gt(a, b) { return a > b; }); diff --git a/node_modules/ramda/src/gte.js b/node_modules/ramda/src/gte.js new file mode 100644 index 0000000..d4a5d2d --- /dev/null +++ b/node_modules/ramda/src/gte.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if the first argument is greater than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.lte + * @example + * + * R.gte(2, 1); //=> true + * R.gte(2, 2); //=> true + * R.gte(2, 3); //=> false + * R.gte('a', 'z'); //=> false + * R.gte('z', 'a'); //=> true + */ +module.exports = _curry2(function gte(a, b) { return a >= b; }); diff --git a/node_modules/ramda/src/has.js b/node_modules/ramda/src/has.js new file mode 100644 index 0000000..fdbdd70 --- /dev/null +++ b/node_modules/ramda/src/has.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); +var _has = require('./internal/_has'); + + +/** + * Returns whether or not an object has an own property with the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * var hasName = R.has('name'); + * hasName({name: 'alice'}); //=> true + * hasName({name: 'bob'}); //=> true + * hasName({}); //=> false + * + * var point = {x: 0, y: 0}; + * var pointHas = R.has(R.__, point); + * pointHas('x'); //=> true + * pointHas('y'); //=> true + * pointHas('z'); //=> false + */ +module.exports = _curry2(_has); diff --git a/node_modules/ramda/src/hasIn.js b/node_modules/ramda/src/hasIn.js new file mode 100644 index 0000000..e6a54cc --- /dev/null +++ b/node_modules/ramda/src/hasIn.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns whether or not an object or its prototype chain has a property with + * the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * function Rectangle(width, height) { + * this.width = width; + * this.height = height; + * } + * Rectangle.prototype.area = function() { + * return this.width * this.height; + * }; + * + * var square = new Rectangle(2, 2); + * R.hasIn('width', square); //=> true + * R.hasIn('area', square); //=> true + */ +module.exports = _curry2(function hasIn(prop, obj) { + return prop in obj; +}); diff --git a/node_modules/ramda/src/head.js b/node_modules/ramda/src/head.js new file mode 100644 index 0000000..4be7bea --- /dev/null +++ b/node_modules/ramda/src/head.js @@ -0,0 +1,25 @@ +var nth = require('./nth'); + + +/** + * Returns the first element of the given list or string. In some libraries + * this function is named `first`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {Array|String} list + * @return {*} + * @see R.tail, R.init, R.last + * @example + * + * R.head(['fi', 'fo', 'fum']); //=> 'fi' + * R.head([]); //=> undefined + * + * R.head('abc'); //=> 'a' + * R.head(''); //=> '' + */ +module.exports = nth(0); diff --git a/node_modules/ramda/src/identical.js b/node_modules/ramda/src/identical.js new file mode 100644 index 0000000..9284857 --- /dev/null +++ b/node_modules/ramda/src/identical.js @@ -0,0 +1,36 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns true if its arguments are identical, false otherwise. Values are + * identical if they reference the same memory. `NaN` is identical to `NaN`; + * `0` and `-0` are not identical. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * var o = {}; + * R.identical(o, o); //=> true + * R.identical(1, 1); //=> true + * R.identical(1, '1'); //=> false + * R.identical([], []); //=> false + * R.identical(0, -0); //=> false + * R.identical(NaN, NaN); //=> true + */ +module.exports = _curry2(function identical(a, b) { + // SameValue algorithm + if (a === b) { // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return a !== 0 || 1 / a === 1 / b; + } else { + // Step 6.a: NaN == NaN + return a !== a && b !== b; + } +}); diff --git a/node_modules/ramda/src/identity.js b/node_modules/ramda/src/identity.js new file mode 100644 index 0000000..75f0f95 --- /dev/null +++ b/node_modules/ramda/src/identity.js @@ -0,0 +1,24 @@ +var _curry1 = require('./internal/_curry1'); +var _identity = require('./internal/_identity'); + + +/** + * A function that does nothing but return the parameter supplied to it. Good + * as a default or placeholder function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> a + * @param {*} x The value to return. + * @return {*} The input value, `x`. + * @example + * + * R.identity(1); //=> 1 + * + * var obj = {}; + * R.identity(obj) === obj; //=> true + * @symb R.identity(a) = a + */ +module.exports = _curry1(_identity); diff --git a/node_modules/ramda/src/ifElse.js b/node_modules/ramda/src/ifElse.js new file mode 100644 index 0000000..e0e4a1d --- /dev/null +++ b/node_modules/ramda/src/ifElse.js @@ -0,0 +1,36 @@ +var _curry3 = require('./internal/_curry3'); +var curryN = require('./curryN'); + + +/** + * Creates a function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *) + * @param {Function} condition A predicate function + * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value. + * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value. + * @return {Function} A new unary function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * @see R.unless, R.when + * @example + * + * var incCount = R.ifElse( + * R.has('count'), + * R.over(R.lensProp('count'), R.inc), + * R.assoc('count', 1) + * ); + * incCount({}); //=> { count: 1 } + * incCount({ count: 1 }); //=> { count: 2 } + */ +module.exports = _curry3(function ifElse(condition, onTrue, onFalse) { + return curryN(Math.max(condition.length, onTrue.length, onFalse.length), + function _ifElse() { + return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments); + } + ); +}); diff --git a/node_modules/ramda/src/inc.js b/node_modules/ramda/src/inc.js new file mode 100644 index 0000000..1f7a091 --- /dev/null +++ b/node_modules/ramda/src/inc.js @@ -0,0 +1,19 @@ +var add = require('./add'); + + +/** + * Increments its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n + 1 + * @see R.dec + * @example + * + * R.inc(42); //=> 43 + */ +module.exports = add(1); diff --git a/node_modules/ramda/src/indexBy.js b/node_modules/ramda/src/indexBy.js new file mode 100644 index 0000000..a888ac6 --- /dev/null +++ b/node_modules/ramda/src/indexBy.js @@ -0,0 +1,26 @@ +var reduceBy = require('./reduceBy'); + + +/** + * Given a function that generates a key, turns a list of objects into an + * object indexing the objects by the given key. Note that if multiple + * objects generate the same value for the indexing key only the last value + * will be included in the generated object. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> String) -> [{k: v}] -> {k: {k: v}} + * @param {Function} fn Function :: a -> String + * @param {Array} array The array of objects to index + * @return {Object} An object indexing each array element by the given property. + * @example + * + * var list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}]; + * R.indexBy(R.prop('id'), list); + * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} + */ +module.exports = reduceBy(function(acc, elem) { return elem; }, null); diff --git a/node_modules/ramda/src/indexOf.js b/node_modules/ramda/src/indexOf.js new file mode 100644 index 0000000..7257f25 --- /dev/null +++ b/node_modules/ramda/src/indexOf.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); +var _indexOf = require('./internal/_indexOf'); +var _isArray = require('./internal/_isArray'); + + +/** + * Returns the position of the first occurrence of an item in an array, or -1 + * if the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.lastIndexOf + * @example + * + * R.indexOf(3, [1,2,3,4]); //=> 2 + * R.indexOf(10, [1,2,3,4]); //=> -1 + */ +module.exports = _curry2(function indexOf(target, xs) { + return typeof xs.indexOf === 'function' && !_isArray(xs) ? + xs.indexOf(target) : + _indexOf(xs, target, 0); +}); diff --git a/node_modules/ramda/src/init.js b/node_modules/ramda/src/init.js new file mode 100644 index 0000000..f2fd5c8 --- /dev/null +++ b/node_modules/ramda/src/init.js @@ -0,0 +1,28 @@ +var slice = require('./slice'); + + +/** + * Returns all but the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.last, R.head, R.tail + * @example + * + * R.init([1, 2, 3]); //=> [1, 2] + * R.init([1, 2]); //=> [1] + * R.init([1]); //=> [] + * R.init([]); //=> [] + * + * R.init('abc'); //=> 'ab' + * R.init('ab'); //=> 'a' + * R.init('a'); //=> '' + * R.init(''); //=> '' + */ +module.exports = slice(0, -1); diff --git a/node_modules/ramda/src/innerJoin.js b/node_modules/ramda/src/innerJoin.js new file mode 100644 index 0000000..692ec15 --- /dev/null +++ b/node_modules/ramda/src/innerJoin.js @@ -0,0 +1,43 @@ +var _containsWith = require('./internal/_containsWith'); +var _curry3 = require('./internal/_curry3'); +var _filter = require('./internal/_filter'); + + +/** + * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list + * `xs'` comprising each of the elements of `xs` which is equal to one or more + * elements of `ys` according to `pred`. + * + * `pred` must be a binary function expecting an element from each list. + * + * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should + * not be significant, but since `xs'` is ordered the implementation guarantees + * that its values are in the same order as they appear in `xs`. Duplicates are + * not removed, so `xs'` may contain duplicates if `xs` contains duplicates. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Relation + * @sig (a -> b -> Boolean) -> [a] -> [b] -> [a] + * @param {Function} pred + * @param {Array} xs + * @param {Array} ys + * @return {Array} + * @see R.intersection + * @example + * + * R.innerJoin( + * (record, id) => record.id === id, + * [{id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'}], + * [177, 456, 999] + * ); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ +module.exports = _curry3(function innerJoin(pred, xs, ys) { + return _filter(function(x) { return _containsWith(pred, x, ys); }, xs); +}); diff --git a/node_modules/ramda/src/insert.js b/node_modules/ramda/src/insert.js new file mode 100644 index 0000000..70d8c44 --- /dev/null +++ b/node_modules/ramda/src/insert.js @@ -0,0 +1,28 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Inserts the supplied element into the list, at the specified `index`. _Note that + + * this is not destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} index The position to insert the element + * @param {*} elt The element to insert into the Array + * @param {Array} list The list to insert into + * @return {Array} A new Array with `elt` inserted at `index`. + * @example + * + * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4] + */ +module.exports = _curry3(function insert(idx, elt, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + var result = Array.prototype.slice.call(list, 0); + result.splice(idx, 0, elt); + return result; +}); diff --git a/node_modules/ramda/src/insertAll.js b/node_modules/ramda/src/insertAll.js new file mode 100644 index 0000000..10db9ea --- /dev/null +++ b/node_modules/ramda/src/insertAll.js @@ -0,0 +1,27 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Inserts the sub-list into the list, at the specified `index`. _Note that this is not + * destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig Number -> [a] -> [a] -> [a] + * @param {Number} index The position to insert the sub-list + * @param {Array} elts The sub-list to insert into the Array + * @param {Array} list The list to insert the sub-list into + * @return {Array} A new Array with `elts` inserted starting at `index`. + * @example + * + * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4] + */ +module.exports = _curry3(function insertAll(idx, elts, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + return [].concat(Array.prototype.slice.call(list, 0, idx), + elts, + Array.prototype.slice.call(list, idx)); +}); diff --git a/node_modules/ramda/src/internal/_Set.js b/node_modules/ramda/src/internal/_Set.js new file mode 100644 index 0000000..98966c6 --- /dev/null +++ b/node_modules/ramda/src/internal/_Set.js @@ -0,0 +1,171 @@ +var _contains = require('./_contains'); + + +// A simple Set type that honours R.equals semantics +module.exports = (function() { + function _Set() { + /* globals Set */ + this._nativeSet = typeof Set === 'function' ? new Set() : null; + this._items = {}; + } + + // until we figure out why jsdoc chokes on this + // @param item The item to add to the Set + // @returns {boolean} true if the item did not exist prior, otherwise false + // + _Set.prototype.add = function(item) { + return !hasOrAdd(item, true, this); + }; + + // + // @param item The item to check for existence in the Set + // @returns {boolean} true if the item exists in the Set, otherwise false + // + _Set.prototype.has = function(item) { + return hasOrAdd(item, false, this); + }; + + // + // Combines the logic for checking whether an item is a member of the set and + // for adding a new item to the set. + // + // @param item The item to check or add to the Set instance. + // @param shouldAdd If true, the item will be added to the set if it doesn't + // already exist. + // @param set The set instance to check or add to. + // @return {boolean} true if the item already existed, otherwise false. + // + function hasOrAdd(item, shouldAdd, set) { + var type = typeof item; + var prevSize, newSize; + switch (type) { + case 'string': + case 'number': + // distinguish between +0 and -0 + if (item === 0 && 1 / item === -Infinity) { + if (set._items['-0']) { + return true; + } else { + if (shouldAdd) { + set._items['-0'] = true; + } + return false; + } + } + // these types can all utilise the native Set + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = {}; + set._items[type][item] = true; + } + return false; + } else if (item in set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type][item] = true; + } + return false; + } + } + + case 'boolean': + // set._items['boolean'] holds a two element array + // representing [ falseExists, trueExists ] + if (type in set._items) { + var bIdx = item ? 1 : 0; + if (set._items[type][bIdx]) { + return true; + } else { + if (shouldAdd) { + set._items[type][bIdx] = true; + } + return false; + } + } else { + if (shouldAdd) { + set._items[type] = item ? [false, true] : [true, false]; + } + return false; + } + + case 'function': + // compare functions for reference equality + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + if (!_contains(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + + case 'undefined': + if (set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type] = true; + } + return false; + } + + case 'object': + if (item === null) { + if (!set._items['null']) { + if (shouldAdd) { + set._items['null'] = true; + } + return false; + } + return true; + } + /* falls through */ + default: + // reduce the search size of heterogeneous sets by creating buckets + // for each type. + type = Object.prototype.toString.call(item); + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + // scan through all previously applied items + if (!_contains(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + } + return _Set; +}()); diff --git a/node_modules/ramda/src/internal/_aperture.js b/node_modules/ramda/src/internal/_aperture.js new file mode 100644 index 0000000..d932c82 --- /dev/null +++ b/node_modules/ramda/src/internal/_aperture.js @@ -0,0 +1,10 @@ +module.exports = function _aperture(n, list) { + var idx = 0; + var limit = list.length - (n - 1); + var acc = new Array(limit >= 0 ? limit : 0); + while (idx < limit) { + acc[idx] = Array.prototype.slice.call(list, idx, idx + n); + idx += 1; + } + return acc; +}; diff --git a/node_modules/ramda/src/internal/_arity.js b/node_modules/ramda/src/internal/_arity.js new file mode 100644 index 0000000..ca64574 --- /dev/null +++ b/node_modules/ramda/src/internal/_arity.js @@ -0,0 +1,17 @@ +module.exports = function _arity(n, fn) { + /* eslint-disable no-unused-vars */ + switch (n) { + case 0: return function() { return fn.apply(this, arguments); }; + case 1: return function(a0) { return fn.apply(this, arguments); }; + case 2: return function(a0, a1) { return fn.apply(this, arguments); }; + case 3: return function(a0, a1, a2) { return fn.apply(this, arguments); }; + case 4: return function(a0, a1, a2, a3) { return fn.apply(this, arguments); }; + case 5: return function(a0, a1, a2, a3, a4) { return fn.apply(this, arguments); }; + case 6: return function(a0, a1, a2, a3, a4, a5) { return fn.apply(this, arguments); }; + case 7: return function(a0, a1, a2, a3, a4, a5, a6) { return fn.apply(this, arguments); }; + case 8: return function(a0, a1, a2, a3, a4, a5, a6, a7) { return fn.apply(this, arguments); }; + case 9: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) { return fn.apply(this, arguments); }; + case 10: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { return fn.apply(this, arguments); }; + default: throw new Error('First argument to _arity must be a non-negative integer no greater than ten'); + } +}; diff --git a/node_modules/ramda/src/internal/_arrayFromIterator.js b/node_modules/ramda/src/internal/_arrayFromIterator.js new file mode 100644 index 0000000..bc4ee0b --- /dev/null +++ b/node_modules/ramda/src/internal/_arrayFromIterator.js @@ -0,0 +1,8 @@ +module.exports = function _arrayFromIterator(iter) { + var list = []; + var next; + while (!(next = iter.next()).done) { + list.push(next.value); + } + return list; +}; diff --git a/node_modules/ramda/src/internal/_assign.js b/node_modules/ramda/src/internal/_assign.js new file mode 100644 index 0000000..bbbe2d7 --- /dev/null +++ b/node_modules/ramda/src/internal/_assign.js @@ -0,0 +1,4 @@ +var _objectAssign = require('./_objectAssign'); + +module.exports = + typeof Object.assign === 'function' ? Object.assign : _objectAssign; diff --git a/node_modules/ramda/src/internal/_checkForMethod.js b/node_modules/ramda/src/internal/_checkForMethod.js new file mode 100644 index 0000000..9a27e81 --- /dev/null +++ b/node_modules/ramda/src/internal/_checkForMethod.js @@ -0,0 +1,25 @@ +var _isArray = require('./_isArray'); + + +/** + * This checks whether a function has a [methodname] function. If it isn't an + * array it will execute that function otherwise it will default to the ramda + * implementation. + * + * @private + * @param {Function} fn ramda implemtation + * @param {String} methodname property to check for a custom implementation + * @return {Object} Whatever the return value of the method is. + */ +module.exports = function _checkForMethod(methodname, fn) { + return function() { + var length = arguments.length; + if (length === 0) { + return fn(); + } + var obj = arguments[length - 1]; + return (_isArray(obj) || typeof obj[methodname] !== 'function') ? + fn.apply(this, arguments) : + obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1)); + }; +}; diff --git a/node_modules/ramda/src/internal/_clone.js b/node_modules/ramda/src/internal/_clone.js new file mode 100644 index 0000000..28c0ebd --- /dev/null +++ b/node_modules/ramda/src/internal/_clone.js @@ -0,0 +1,40 @@ +var _cloneRegExp = require('./_cloneRegExp'); +var type = require('../type'); + + +/** + * Copies an object. + * + * @private + * @param {*} value The value to be copied + * @param {Array} refFrom Array containing the source references + * @param {Array} refTo Array containing the copied source references + * @param {Boolean} deep Whether or not to perform deep cloning. + * @return {*} The copied value. + */ +module.exports = function _clone(value, refFrom, refTo, deep) { + var copy = function copy(copiedValue) { + var len = refFrom.length; + var idx = 0; + while (idx < len) { + if (value === refFrom[idx]) { + return refTo[idx]; + } + idx += 1; + } + refFrom[idx + 1] = value; + refTo[idx + 1] = copiedValue; + for (var key in value) { + copiedValue[key] = deep ? + _clone(value[key], refFrom, refTo, true) : value[key]; + } + return copiedValue; + }; + switch (type(value)) { + case 'Object': return copy({}); + case 'Array': return copy([]); + case 'Date': return new Date(value.valueOf()); + case 'RegExp': return _cloneRegExp(value); + default: return value; + } +}; diff --git a/node_modules/ramda/src/internal/_cloneRegExp.js b/node_modules/ramda/src/internal/_cloneRegExp.js new file mode 100644 index 0000000..f654035 --- /dev/null +++ b/node_modules/ramda/src/internal/_cloneRegExp.js @@ -0,0 +1,7 @@ +module.exports = function _cloneRegExp(pattern) { + return new RegExp(pattern.source, (pattern.global ? 'g' : '') + + (pattern.ignoreCase ? 'i' : '') + + (pattern.multiline ? 'm' : '') + + (pattern.sticky ? 'y' : '') + + (pattern.unicode ? 'u' : '')); +}; diff --git a/node_modules/ramda/src/internal/_complement.js b/node_modules/ramda/src/internal/_complement.js new file mode 100644 index 0000000..25cdde4 --- /dev/null +++ b/node_modules/ramda/src/internal/_complement.js @@ -0,0 +1,5 @@ +module.exports = function _complement(f) { + return function() { + return !f.apply(this, arguments); + }; +}; diff --git a/node_modules/ramda/src/internal/_concat.js b/node_modules/ramda/src/internal/_concat.js new file mode 100644 index 0000000..3c0511d --- /dev/null +++ b/node_modules/ramda/src/internal/_concat.js @@ -0,0 +1,31 @@ +/** + * Private `concat` function to merge two array-like objects. + * + * @private + * @param {Array|Arguments} [set1=[]] An array-like object. + * @param {Array|Arguments} [set2=[]] An array-like object. + * @return {Array} A new, merged array. + * @example + * + * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + */ +module.exports = function _concat(set1, set2) { + set1 = set1 || []; + set2 = set2 || []; + var idx; + var len1 = set1.length; + var len2 = set2.length; + var result = []; + + idx = 0; + while (idx < len1) { + result[result.length] = set1[idx]; + idx += 1; + } + idx = 0; + while (idx < len2) { + result[result.length] = set2[idx]; + idx += 1; + } + return result; +}; diff --git a/node_modules/ramda/src/internal/_contains.js b/node_modules/ramda/src/internal/_contains.js new file mode 100644 index 0000000..9478d9b --- /dev/null +++ b/node_modules/ramda/src/internal/_contains.js @@ -0,0 +1,6 @@ +var _indexOf = require('./_indexOf'); + + +module.exports = function _contains(a, list) { + return _indexOf(list, a, 0) >= 0; +}; diff --git a/node_modules/ramda/src/internal/_containsWith.js b/node_modules/ramda/src/internal/_containsWith.js new file mode 100644 index 0000000..3d21830 --- /dev/null +++ b/node_modules/ramda/src/internal/_containsWith.js @@ -0,0 +1,12 @@ +module.exports = function _containsWith(pred, x, list) { + var idx = 0; + var len = list.length; + + while (idx < len) { + if (pred(x, list[idx])) { + return true; + } + idx += 1; + } + return false; +}; diff --git a/node_modules/ramda/src/internal/_createPartialApplicator.js b/node_modules/ramda/src/internal/_createPartialApplicator.js new file mode 100644 index 0000000..60af5c4 --- /dev/null +++ b/node_modules/ramda/src/internal/_createPartialApplicator.js @@ -0,0 +1,11 @@ +var _arity = require('./_arity'); +var _curry2 = require('./_curry2'); + + +module.exports = function _createPartialApplicator(concat) { + return _curry2(function(fn, args) { + return _arity(Math.max(0, fn.length - args.length), function() { + return fn.apply(this, concat(args, arguments)); + }); + }); +}; diff --git a/node_modules/ramda/src/internal/_curry1.js b/node_modules/ramda/src/internal/_curry1.js new file mode 100644 index 0000000..a3bb2a9 --- /dev/null +++ b/node_modules/ramda/src/internal/_curry1.js @@ -0,0 +1,20 @@ +var _isPlaceholder = require('./_isPlaceholder'); + + +/** + * Optimized internal one-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +module.exports = function _curry1(fn) { + return function f1(a) { + if (arguments.length === 0 || _isPlaceholder(a)) { + return f1; + } else { + return fn.apply(this, arguments); + } + }; +}; diff --git a/node_modules/ramda/src/internal/_curry2.js b/node_modules/ramda/src/internal/_curry2.js new file mode 100644 index 0000000..a884098 --- /dev/null +++ b/node_modules/ramda/src/internal/_curry2.js @@ -0,0 +1,28 @@ +var _curry1 = require('./_curry1'); +var _isPlaceholder = require('./_isPlaceholder'); + + +/** + * Optimized internal two-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +module.exports = function _curry2(fn) { + return function f2(a, b) { + switch (arguments.length) { + case 0: + return f2; + case 1: + return _isPlaceholder(a) ? f2 + : _curry1(function(_b) { return fn(a, _b); }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) ? f2 + : _isPlaceholder(a) ? _curry1(function(_a) { return fn(_a, b); }) + : _isPlaceholder(b) ? _curry1(function(_b) { return fn(a, _b); }) + : fn(a, b); + } + }; +}; diff --git a/node_modules/ramda/src/internal/_curry3.js b/node_modules/ramda/src/internal/_curry3.js new file mode 100644 index 0000000..e5994bd --- /dev/null +++ b/node_modules/ramda/src/internal/_curry3.js @@ -0,0 +1,38 @@ +var _curry1 = require('./_curry1'); +var _curry2 = require('./_curry2'); +var _isPlaceholder = require('./_isPlaceholder'); + + +/** + * Optimized internal three-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +module.exports = function _curry3(fn) { + return function f3(a, b, c) { + switch (arguments.length) { + case 0: + return f3; + case 1: + return _isPlaceholder(a) ? f3 + : _curry2(function(_b, _c) { return fn(a, _b, _c); }); + case 2: + return _isPlaceholder(a) && _isPlaceholder(b) ? f3 + : _isPlaceholder(a) ? _curry2(function(_a, _c) { return fn(_a, b, _c); }) + : _isPlaceholder(b) ? _curry2(function(_b, _c) { return fn(a, _b, _c); }) + : _curry1(function(_c) { return fn(a, b, _c); }); + default: + return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 + : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function(_a, _b) { return fn(_a, _b, c); }) + : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function(_a, _c) { return fn(_a, b, _c); }) + : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function(_b, _c) { return fn(a, _b, _c); }) + : _isPlaceholder(a) ? _curry1(function(_a) { return fn(_a, b, c); }) + : _isPlaceholder(b) ? _curry1(function(_b) { return fn(a, _b, c); }) + : _isPlaceholder(c) ? _curry1(function(_c) { return fn(a, b, _c); }) + : fn(a, b, c); + } + }; +}; diff --git a/node_modules/ramda/src/internal/_curryN.js b/node_modules/ramda/src/internal/_curryN.js new file mode 100644 index 0000000..80966eb --- /dev/null +++ b/node_modules/ramda/src/internal/_curryN.js @@ -0,0 +1,40 @@ +var _arity = require('./_arity'); +var _isPlaceholder = require('./_isPlaceholder'); + + +/** + * Internal curryN function. + * + * @private + * @category Function + * @param {Number} length The arity of the curried function. + * @param {Array} received An array of arguments received thus far. + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +module.exports = function _curryN(length, received, fn) { + return function() { + var combined = []; + var argsIdx = 0; + var left = length; + var combinedIdx = 0; + while (combinedIdx < received.length || argsIdx < arguments.length) { + var result; + if (combinedIdx < received.length && + (!_isPlaceholder(received[combinedIdx]) || + argsIdx >= arguments.length)) { + result = received[combinedIdx]; + } else { + result = arguments[argsIdx]; + argsIdx += 1; + } + combined[combinedIdx] = result; + if (!_isPlaceholder(result)) { + left -= 1; + } + combinedIdx += 1; + } + return left <= 0 ? fn.apply(this, combined) + : _arity(left, _curryN(length, combined, fn)); + }; +}; diff --git a/node_modules/ramda/src/internal/_dispatchable.js b/node_modules/ramda/src/internal/_dispatchable.js new file mode 100644 index 0000000..c65e1c8 --- /dev/null +++ b/node_modules/ramda/src/internal/_dispatchable.js @@ -0,0 +1,41 @@ +var _isArray = require('./_isArray'); +var _isTransformer = require('./_isTransformer'); + + +/** + * Returns a function that dispatches with different strategies based on the + * object in list position (last argument). If it is an array, executes [fn]. + * Otherwise, if it has a function with one of the given method names, it will + * execute that function (functor case). Otherwise, if it is a transformer, + * uses transducer [xf] to return a new transformer (transducer case). + * Otherwise, it will default to executing [fn]. + * + * @private + * @param {Array} methodNames properties to check for a custom implementation + * @param {Function} xf transducer to initialize if object is transformer + * @param {Function} fn default ramda implementation + * @return {Function} A function that dispatches on object in list position + */ +module.exports = function _dispatchable(methodNames, xf, fn) { + return function() { + if (arguments.length === 0) { + return fn(); + } + var args = Array.prototype.slice.call(arguments, 0); + var obj = args.pop(); + if (!_isArray(obj)) { + var idx = 0; + while (idx < methodNames.length) { + if (typeof obj[methodNames[idx]] === 'function') { + return obj[methodNames[idx]].apply(obj, args); + } + idx += 1; + } + if (_isTransformer(obj)) { + var transducer = xf.apply(null, args); + return transducer(obj); + } + } + return fn.apply(this, arguments); + }; +}; diff --git a/node_modules/ramda/src/internal/_dropLast.js b/node_modules/ramda/src/internal/_dropLast.js new file mode 100644 index 0000000..f8634f4 --- /dev/null +++ b/node_modules/ramda/src/internal/_dropLast.js @@ -0,0 +1,5 @@ +var take = require('../take'); + +module.exports = function dropLast(n, xs) { + return take(n < xs.length ? xs.length - n : 0, xs); +}; diff --git a/node_modules/ramda/src/internal/_dropLastWhile.js b/node_modules/ramda/src/internal/_dropLastWhile.js new file mode 100644 index 0000000..179bdf3 --- /dev/null +++ b/node_modules/ramda/src/internal/_dropLastWhile.js @@ -0,0 +1,7 @@ +module.exports = function dropLastWhile(pred, list) { + var idx = list.length - 1; + while (idx >= 0 && pred(list[idx])) { + idx -= 1; + } + return Array.prototype.slice.call(list, 0, idx + 1); +}; diff --git a/node_modules/ramda/src/internal/_equals.js b/node_modules/ramda/src/internal/_equals.js new file mode 100644 index 0000000..040623c --- /dev/null +++ b/node_modules/ramda/src/internal/_equals.js @@ -0,0 +1,114 @@ +var _arrayFromIterator = require('./_arrayFromIterator'); +var _functionName = require('./_functionName'); +var _has = require('./_has'); +var identical = require('../identical'); +var keys = require('../keys'); +var type = require('../type'); + + +module.exports = function _equals(a, b, stackA, stackB) { + if (identical(a, b)) { + return true; + } + + if (type(a) !== type(b)) { + return false; + } + + if (a == null || b == null) { + return false; + } + + if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') { + return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && + typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a); + } + + if (typeof a.equals === 'function' || typeof b.equals === 'function') { + return typeof a.equals === 'function' && a.equals(b) && + typeof b.equals === 'function' && b.equals(a); + } + + switch (type(a)) { + case 'Arguments': + case 'Array': + case 'Object': + if (typeof a.constructor === 'function' && + _functionName(a.constructor) === 'Promise') { + return a === b; + } + break; + case 'Boolean': + case 'Number': + case 'String': + if (!(typeof a === typeof b && identical(a.valueOf(), b.valueOf()))) { + return false; + } + break; + case 'Date': + if (!identical(a.valueOf(), b.valueOf())) { + return false; + } + break; + case 'Error': + return a.name === b.name && a.message === b.message; + case 'RegExp': + if (!(a.source === b.source && + a.global === b.global && + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky && + a.unicode === b.unicode)) { + return false; + } + break; + case 'Map': + case 'Set': + if (!_equals(_arrayFromIterator(a.entries()), _arrayFromIterator(b.entries()), stackA, stackB)) { + return false; + } + break; + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + break; + case 'ArrayBuffer': + break; + default: + // Values of other types are only equal if identical. + return false; + } + + var keysA = keys(a); + if (keysA.length !== keys(b).length) { + return false; + } + + var idx = stackA.length - 1; + while (idx >= 0) { + if (stackA[idx] === a) { + return stackB[idx] === b; + } + idx -= 1; + } + + stackA.push(a); + stackB.push(b); + idx = keysA.length - 1; + while (idx >= 0) { + var key = keysA[idx]; + if (!(_has(key, b) && _equals(b[key], a[key], stackA, stackB))) { + return false; + } + idx -= 1; + } + stackA.pop(); + stackB.pop(); + return true; +}; diff --git a/node_modules/ramda/src/internal/_filter.js b/node_modules/ramda/src/internal/_filter.js new file mode 100644 index 0000000..c9b7bd5 --- /dev/null +++ b/node_modules/ramda/src/internal/_filter.js @@ -0,0 +1,13 @@ +module.exports = function _filter(fn, list) { + var idx = 0; + var len = list.length; + var result = []; + + while (idx < len) { + if (fn(list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; +}; diff --git a/node_modules/ramda/src/internal/_flatCat.js b/node_modules/ramda/src/internal/_flatCat.js new file mode 100644 index 0000000..63cb474 --- /dev/null +++ b/node_modules/ramda/src/internal/_flatCat.js @@ -0,0 +1,32 @@ +var _forceReduced = require('./_forceReduced'); +var _isArrayLike = require('./_isArrayLike'); +var _reduce = require('./_reduce'); +var _xfBase = require('./_xfBase'); + +module.exports = (function() { + var preservingReduced = function(xf) { + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function(result) { + return xf['@@transducer/result'](result); + }, + '@@transducer/step': function(result, input) { + var ret = xf['@@transducer/step'](result, input); + return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret; + } + }; + }; + + return function _xcat(xf) { + var rxf = preservingReduced(xf); + return { + '@@transducer/init': _xfBase.init, + '@@transducer/result': function(result) { + return rxf['@@transducer/result'](result); + }, + '@@transducer/step': function(result, input) { + return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input); + } + }; + }; +}()); diff --git a/node_modules/ramda/src/internal/_forceReduced.js b/node_modules/ramda/src/internal/_forceReduced.js new file mode 100644 index 0000000..d20f9df --- /dev/null +++ b/node_modules/ramda/src/internal/_forceReduced.js @@ -0,0 +1,6 @@ +module.exports = function _forceReduced(x) { + return { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +}; diff --git a/node_modules/ramda/src/internal/_functionName.js b/node_modules/ramda/src/internal/_functionName.js new file mode 100644 index 0000000..2d5f2bf --- /dev/null +++ b/node_modules/ramda/src/internal/_functionName.js @@ -0,0 +1,5 @@ +module.exports = function _functionName(f) { + // String(x => x) evaluates to "x => x", so the pattern may not match. + var match = String(f).match(/^function (\w*)/); + return match == null ? '' : match[1]; +}; diff --git a/node_modules/ramda/src/internal/_functionsWith.js b/node_modules/ramda/src/internal/_functionsWith.js new file mode 100644 index 0000000..7ae5b3a --- /dev/null +++ b/node_modules/ramda/src/internal/_functionsWith.js @@ -0,0 +1,13 @@ +var _filter = require('./_filter'); + + +/** + * @private + * @param {Function} fn The strategy for extracting function names from an object + * @return {Function} A function that takes an object and returns an array of function names. + */ +module.exports = function _functionsWith(fn) { + return function(obj) { + return _filter(function(key) { return typeof obj[key] === 'function'; }, fn(obj)); + }; +}; diff --git a/node_modules/ramda/src/internal/_has.js b/node_modules/ramda/src/internal/_has.js new file mode 100644 index 0000000..60d0c82 --- /dev/null +++ b/node_modules/ramda/src/internal/_has.js @@ -0,0 +1,3 @@ +module.exports = function _has(prop, obj) { + return Object.prototype.hasOwnProperty.call(obj, prop); +}; diff --git a/node_modules/ramda/src/internal/_identity.js b/node_modules/ramda/src/internal/_identity.js new file mode 100644 index 0000000..6bb23f4 --- /dev/null +++ b/node_modules/ramda/src/internal/_identity.js @@ -0,0 +1 @@ +module.exports = function _identity(x) { return x; }; diff --git a/node_modules/ramda/src/internal/_indexOf.js b/node_modules/ramda/src/internal/_indexOf.js new file mode 100644 index 0000000..c1e9274 --- /dev/null +++ b/node_modules/ramda/src/internal/_indexOf.js @@ -0,0 +1,57 @@ +var equals = require('../equals'); + + +module.exports = function _indexOf(list, a, idx) { + var inf, item; + // Array.prototype.indexOf doesn't exist below IE9 + if (typeof list.indexOf === 'function') { + switch (typeof a) { + case 'number': + if (a === 0) { + // manually crawl the list to distinguish between +0 and -0 + inf = 1 / a; + while (idx < list.length) { + item = list[idx]; + if (item === 0 && 1 / item === inf) { + return idx; + } + idx += 1; + } + return -1; + } else if (a !== a) { + // NaN + while (idx < list.length) { + item = list[idx]; + if (typeof item === 'number' && item !== item) { + return idx; + } + idx += 1; + } + return -1; + } + // non-zero numbers can utilise Set + return list.indexOf(a, idx); + + // all these types can utilise Set + case 'string': + case 'boolean': + case 'function': + case 'undefined': + return list.indexOf(a, idx); + + case 'object': + if (a === null) { + // null can utilise Set + return list.indexOf(a, idx); + } + } + } + // anything else not covered above, defer to R.equals + while (idx < list.length) { + if (equals(list[idx], a)) { + return idx; + } + idx += 1; + } + return -1; +}; diff --git a/node_modules/ramda/src/internal/_isArguments.js b/node_modules/ramda/src/internal/_isArguments.js new file mode 100644 index 0000000..eb52bb6 --- /dev/null +++ b/node_modules/ramda/src/internal/_isArguments.js @@ -0,0 +1,9 @@ +var _has = require('./_has'); + + +module.exports = (function() { + var toString = Object.prototype.toString; + return toString.call(arguments) === '[object Arguments]' ? + function _isArguments(x) { return toString.call(x) === '[object Arguments]'; } : + function _isArguments(x) { return _has('callee', x); }; +}()); diff --git a/node_modules/ramda/src/internal/_isArray.js b/node_modules/ramda/src/internal/_isArray.js new file mode 100644 index 0000000..e8f0bb9 --- /dev/null +++ b/node_modules/ramda/src/internal/_isArray.js @@ -0,0 +1,17 @@ +/** + * Tests whether or not an object is an array. + * + * @private + * @param {*} val The object to test. + * @return {Boolean} `true` if `val` is an array, `false` otherwise. + * @example + * + * _isArray([]); //=> true + * _isArray(null); //=> false + * _isArray({}); //=> false + */ +module.exports = Array.isArray || function _isArray(val) { + return (val != null && + val.length >= 0 && + Object.prototype.toString.call(val) === '[object Array]'); +}; diff --git a/node_modules/ramda/src/internal/_isArrayLike.js b/node_modules/ramda/src/internal/_isArrayLike.js new file mode 100644 index 0000000..be504fa --- /dev/null +++ b/node_modules/ramda/src/internal/_isArrayLike.js @@ -0,0 +1,34 @@ +var _curry1 = require('./_curry1'); +var _isArray = require('./_isArray'); +var _isString = require('./_isString'); + + +/** + * Tests whether or not an object is similar to an array. + * + * @private + * @category Type + * @category List + * @sig * -> Boolean + * @param {*} x The object to test. + * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise. + * @example + * + * _isArrayLike([]); //=> true + * _isArrayLike(true); //=> false + * _isArrayLike({}); //=> false + * _isArrayLike({length: 10}); //=> false + * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true + */ +module.exports = _curry1(function isArrayLike(x) { + if (_isArray(x)) { return true; } + if (!x) { return false; } + if (typeof x !== 'object') { return false; } + if (_isString(x)) { return false; } + if (x.nodeType === 1) { return !!x.length; } + if (x.length === 0) { return true; } + if (x.length > 0) { + return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1); + } + return false; +}); diff --git a/node_modules/ramda/src/internal/_isFunction.js b/node_modules/ramda/src/internal/_isFunction.js new file mode 100644 index 0000000..4196d89 --- /dev/null +++ b/node_modules/ramda/src/internal/_isFunction.js @@ -0,0 +1,3 @@ +module.exports = function _isFunction(x) { + return Object.prototype.toString.call(x) === '[object Function]'; +}; diff --git a/node_modules/ramda/src/internal/_isInteger.js b/node_modules/ramda/src/internal/_isInteger.js new file mode 100644 index 0000000..2d08103 --- /dev/null +++ b/node_modules/ramda/src/internal/_isInteger.js @@ -0,0 +1,11 @@ +/** + * Determine if the passed argument is an integer. + * + * @private + * @param {*} n + * @category Type + * @return {Boolean} + */ +module.exports = Number.isInteger || function _isInteger(n) { + return (n << 0) === n; +}; diff --git a/node_modules/ramda/src/internal/_isNumber.js b/node_modules/ramda/src/internal/_isNumber.js new file mode 100644 index 0000000..f1b5a11 --- /dev/null +++ b/node_modules/ramda/src/internal/_isNumber.js @@ -0,0 +1,3 @@ +module.exports = function _isNumber(x) { + return Object.prototype.toString.call(x) === '[object Number]'; +}; diff --git a/node_modules/ramda/src/internal/_isObject.js b/node_modules/ramda/src/internal/_isObject.js new file mode 100644 index 0000000..28f9ca3 --- /dev/null +++ b/node_modules/ramda/src/internal/_isObject.js @@ -0,0 +1,3 @@ +module.exports = function _isObject(x) { + return Object.prototype.toString.call(x) === '[object Object]'; +}; diff --git a/node_modules/ramda/src/internal/_isPlaceholder.js b/node_modules/ramda/src/internal/_isPlaceholder.js new file mode 100644 index 0000000..d473d9d --- /dev/null +++ b/node_modules/ramda/src/internal/_isPlaceholder.js @@ -0,0 +1,5 @@ +module.exports = function _isPlaceholder(a) { + return a != null && + typeof a === 'object' && + a['@@functional/placeholder'] === true; +}; diff --git a/node_modules/ramda/src/internal/_isRegExp.js b/node_modules/ramda/src/internal/_isRegExp.js new file mode 100644 index 0000000..05b68b6 --- /dev/null +++ b/node_modules/ramda/src/internal/_isRegExp.js @@ -0,0 +1,3 @@ +module.exports = function _isRegExp(x) { + return Object.prototype.toString.call(x) === '[object RegExp]'; +}; diff --git a/node_modules/ramda/src/internal/_isString.js b/node_modules/ramda/src/internal/_isString.js new file mode 100644 index 0000000..2c9fd08 --- /dev/null +++ b/node_modules/ramda/src/internal/_isString.js @@ -0,0 +1,3 @@ +module.exports = function _isString(x) { + return Object.prototype.toString.call(x) === '[object String]'; +}; diff --git a/node_modules/ramda/src/internal/_isTransformer.js b/node_modules/ramda/src/internal/_isTransformer.js new file mode 100644 index 0000000..9e21fcc --- /dev/null +++ b/node_modules/ramda/src/internal/_isTransformer.js @@ -0,0 +1,3 @@ +module.exports = function _isTransformer(obj) { + return typeof obj['@@transducer/step'] === 'function'; +}; diff --git a/node_modules/ramda/src/internal/_makeFlat.js b/node_modules/ramda/src/internal/_makeFlat.js new file mode 100644 index 0000000..ebaa7a5 --- /dev/null +++ b/node_modules/ramda/src/internal/_makeFlat.js @@ -0,0 +1,33 @@ +var _isArrayLike = require('./_isArrayLike'); + + +/** + * `_makeFlat` is a helper function that returns a one-level or fully recursive + * function based on the flag passed in. + * + * @private + */ +module.exports = function _makeFlat(recursive) { + return function flatt(list) { + var value, jlen, j; + var result = []; + var idx = 0; + var ilen = list.length; + + while (idx < ilen) { + if (_isArrayLike(list[idx])) { + value = recursive ? flatt(list[idx]) : list[idx]; + j = 0; + jlen = value.length; + while (j < jlen) { + result[result.length] = value[j]; + j += 1; + } + } else { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; + }; +}; diff --git a/node_modules/ramda/src/internal/_map.js b/node_modules/ramda/src/internal/_map.js new file mode 100644 index 0000000..2b22f91 --- /dev/null +++ b/node_modules/ramda/src/internal/_map.js @@ -0,0 +1,10 @@ +module.exports = function _map(fn, functor) { + var idx = 0; + var len = functor.length; + var result = Array(len); + while (idx < len) { + result[idx] = fn(functor[idx]); + idx += 1; + } + return result; +}; diff --git a/node_modules/ramda/src/internal/_objectAssign.js b/node_modules/ramda/src/internal/_objectAssign.js new file mode 100644 index 0000000..17b223f --- /dev/null +++ b/node_modules/ramda/src/internal/_objectAssign.js @@ -0,0 +1,24 @@ +var _has = require('./_has'); + +// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign +module.exports = function _objectAssign(target) { + if (target == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + var idx = 1; + var length = arguments.length; + while (idx < length) { + var source = arguments[idx]; + if (source != null) { + for (var nextKey in source) { + if (_has(nextKey, source)) { + output[nextKey] = source[nextKey]; + } + } + } + idx += 1; + } + return output; +}; diff --git a/node_modules/ramda/src/internal/_of.js b/node_modules/ramda/src/internal/_of.js new file mode 100644 index 0000000..073116d --- /dev/null +++ b/node_modules/ramda/src/internal/_of.js @@ -0,0 +1 @@ +module.exports = function _of(x) { return [x]; }; diff --git a/node_modules/ramda/src/internal/_pipe.js b/node_modules/ramda/src/internal/_pipe.js new file mode 100644 index 0000000..3cb2a69 --- /dev/null +++ b/node_modules/ramda/src/internal/_pipe.js @@ -0,0 +1,5 @@ +module.exports = function _pipe(f, g) { + return function() { + return g.call(this, f.apply(this, arguments)); + }; +}; diff --git a/node_modules/ramda/src/internal/_pipeP.js b/node_modules/ramda/src/internal/_pipeP.js new file mode 100644 index 0000000..ddfd690 --- /dev/null +++ b/node_modules/ramda/src/internal/_pipeP.js @@ -0,0 +1,8 @@ +module.exports = function _pipeP(f, g) { + return function() { + var ctx = this; + return f.apply(ctx, arguments).then(function(x) { + return g.call(ctx, x); + }); + }; +}; diff --git a/node_modules/ramda/src/internal/_quote.js b/node_modules/ramda/src/internal/_quote.js new file mode 100644 index 0000000..fe93fe7 --- /dev/null +++ b/node_modules/ramda/src/internal/_quote.js @@ -0,0 +1,13 @@ +module.exports = function _quote(s) { + var escaped = s + .replace(/\\/g, '\\\\') + .replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace + .replace(/\f/g, '\\f') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\t/g, '\\t') + .replace(/\v/g, '\\v') + .replace(/\0/g, '\\0'); + + return '"' + escaped.replace(/"/g, '\\"') + '"'; +}; diff --git a/node_modules/ramda/src/internal/_reduce.js b/node_modules/ramda/src/internal/_reduce.js new file mode 100644 index 0000000..a7461ad --- /dev/null +++ b/node_modules/ramda/src/internal/_reduce.js @@ -0,0 +1,61 @@ +var _isArrayLike = require('./_isArrayLike'); +var _xwrap = require('./_xwrap'); +var bind = require('../bind'); + + +module.exports = (function() { + function _arrayReduce(xf, acc, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + acc = xf['@@transducer/step'](acc, list[idx]); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + idx += 1; + } + return xf['@@transducer/result'](acc); + } + + function _iterableReduce(xf, acc, iter) { + var step = iter.next(); + while (!step.done) { + acc = xf['@@transducer/step'](acc, step.value); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + step = iter.next(); + } + return xf['@@transducer/result'](acc); + } + + function _methodReduce(xf, acc, obj, methodName) { + return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc)); + } + + var symIterator = (typeof Symbol !== 'undefined') ? Symbol.iterator : '@@iterator'; + return function _reduce(fn, acc, list) { + if (typeof fn === 'function') { + fn = _xwrap(fn); + } + if (_isArrayLike(list)) { + return _arrayReduce(fn, acc, list); + } + if (typeof list['fantasy-land/reduce'] === 'function') { + return _methodReduce(fn, acc, list, 'fantasy-land/reduce'); + } + if (list[symIterator] != null) { + return _iterableReduce(fn, acc, list[symIterator]()); + } + if (typeof list.next === 'function') { + return _iterableReduce(fn, acc, list); + } + if (typeof list.reduce === 'function') { + return _methodReduce(fn, acc, list, 'reduce'); + } + + throw new TypeError('reduce: list must be array or iterable'); + }; +}()); diff --git a/node_modules/ramda/src/internal/_reduced.js b/node_modules/ramda/src/internal/_reduced.js new file mode 100644 index 0000000..a82bc0e --- /dev/null +++ b/node_modules/ramda/src/internal/_reduced.js @@ -0,0 +1,7 @@ +module.exports = function _reduced(x) { + return x && x['@@transducer/reduced'] ? x : + { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +}; diff --git a/node_modules/ramda/src/internal/_stepCat.js b/node_modules/ramda/src/internal/_stepCat.js new file mode 100644 index 0000000..8a8da9c --- /dev/null +++ b/node_modules/ramda/src/internal/_stepCat.js @@ -0,0 +1,48 @@ +var _assign = require('./_assign'); +var _identity = require('./_identity'); +var _isArrayLike = require('./_isArrayLike'); +var _isTransformer = require('./_isTransformer'); +var objOf = require('../objOf'); + + +module.exports = (function() { + var _stepCatArray = { + '@@transducer/init': Array, + '@@transducer/step': function(xs, x) { + xs.push(x); + return xs; + }, + '@@transducer/result': _identity + }; + var _stepCatString = { + '@@transducer/init': String, + '@@transducer/step': function(a, b) { return a + b; }, + '@@transducer/result': _identity + }; + var _stepCatObject = { + '@@transducer/init': Object, + '@@transducer/step': function(result, input) { + return _assign( + result, + _isArrayLike(input) ? objOf(input[0], input[1]) : input + ); + }, + '@@transducer/result': _identity + }; + + return function _stepCat(obj) { + if (_isTransformer(obj)) { + return obj; + } + if (_isArrayLike(obj)) { + return _stepCatArray; + } + if (typeof obj === 'string') { + return _stepCatString; + } + if (typeof obj === 'object') { + return _stepCatObject; + } + throw new Error('Cannot create transformer for ' + obj); + }; +}()); diff --git a/node_modules/ramda/src/internal/_toISOString.js b/node_modules/ramda/src/internal/_toISOString.js new file mode 100644 index 0000000..25126a1 --- /dev/null +++ b/node_modules/ramda/src/internal/_toISOString.js @@ -0,0 +1,22 @@ +/** + * Polyfill from . + */ +module.exports = (function() { + var pad = function pad(n) { return (n < 10 ? '0' : '') + n; }; + + return typeof Date.prototype.toISOString === 'function' ? + function _toISOString(d) { + return d.toISOString(); + } : + function _toISOString(d) { + return ( + d.getUTCFullYear() + '-' + + pad(d.getUTCMonth() + 1) + '-' + + pad(d.getUTCDate()) + 'T' + + pad(d.getUTCHours()) + ':' + + pad(d.getUTCMinutes()) + ':' + + pad(d.getUTCSeconds()) + '.' + + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z' + ); + }; +}()); diff --git a/node_modules/ramda/src/internal/_toString.js b/node_modules/ramda/src/internal/_toString.js new file mode 100644 index 0000000..3ec22c8 --- /dev/null +++ b/node_modules/ramda/src/internal/_toString.js @@ -0,0 +1,46 @@ +var _contains = require('./_contains'); +var _map = require('./_map'); +var _quote = require('./_quote'); +var _toISOString = require('./_toISOString'); +var keys = require('../keys'); +var reject = require('../reject'); + + +module.exports = function _toString(x, seen) { + var recur = function recur(y) { + var xs = seen.concat([x]); + return _contains(y, xs) ? '' : _toString(y, xs); + }; + + // mapPairs :: (Object, [String]) -> [String] + var mapPairs = function(obj, keys) { + return _map(function(k) { return _quote(k) + ': ' + recur(obj[k]); }, keys.slice().sort()); + }; + + switch (Object.prototype.toString.call(x)) { + case '[object Arguments]': + return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))'; + case '[object Array]': + return '[' + _map(recur, x).concat(mapPairs(x, reject(function(k) { return /^\d+$/.test(k); }, keys(x)))).join(', ') + ']'; + case '[object Boolean]': + return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString(); + case '[object Date]': + return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')'; + case '[object Null]': + return 'null'; + case '[object Number]': + return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10); + case '[object String]': + return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x); + case '[object Undefined]': + return 'undefined'; + default: + if (typeof x.toString === 'function') { + var repr = x.toString(); + if (repr !== '[object Object]') { + return repr; + } + } + return '{' + mapPairs(x, keys(x)).join(', ') + '}'; + } +}; diff --git a/node_modules/ramda/src/internal/_xall.js b/node_modules/ramda/src/internal/_xall.js new file mode 100644 index 0000000..ab827de --- /dev/null +++ b/node_modules/ramda/src/internal/_xall.js @@ -0,0 +1,28 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XAll(f, xf) { + this.xf = xf; + this.f = f; + this.all = true; + } + XAll.prototype['@@transducer/init'] = _xfBase.init; + XAll.prototype['@@transducer/result'] = function(result) { + if (this.all) { + result = this.xf['@@transducer/step'](result, true); + } + return this.xf['@@transducer/result'](result); + }; + XAll.prototype['@@transducer/step'] = function(result, input) { + if (!this.f(input)) { + this.all = false; + result = _reduced(this.xf['@@transducer/step'](result, false)); + } + return result; + }; + + return _curry2(function _xall(f, xf) { return new XAll(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xany.js b/node_modules/ramda/src/internal/_xany.js new file mode 100644 index 0000000..9471187 --- /dev/null +++ b/node_modules/ramda/src/internal/_xany.js @@ -0,0 +1,28 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XAny(f, xf) { + this.xf = xf; + this.f = f; + this.any = false; + } + XAny.prototype['@@transducer/init'] = _xfBase.init; + XAny.prototype['@@transducer/result'] = function(result) { + if (!this.any) { + result = this.xf['@@transducer/step'](result, false); + } + return this.xf['@@transducer/result'](result); + }; + XAny.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.any = true; + result = _reduced(this.xf['@@transducer/step'](result, true)); + } + return result; + }; + + return _curry2(function _xany(f, xf) { return new XAny(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xaperture.js b/node_modules/ramda/src/internal/_xaperture.js new file mode 100644 index 0000000..32f1560 --- /dev/null +++ b/node_modules/ramda/src/internal/_xaperture.js @@ -0,0 +1,36 @@ +var _concat = require('./_concat'); +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XAperture(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XAperture.prototype['@@transducer/init'] = _xfBase.init; + XAperture.prototype['@@transducer/result'] = function(result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XAperture.prototype['@@transducer/step'] = function(result, input) { + this.store(input); + return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; + }; + XAperture.prototype.store = function(input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + XAperture.prototype.getCopy = function() { + return _concat(Array.prototype.slice.call(this.acc, this.pos), + Array.prototype.slice.call(this.acc, 0, this.pos)); + }; + + return _curry2(function _xaperture(n, xf) { return new XAperture(n, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xchain.js b/node_modules/ramda/src/internal/_xchain.js new file mode 100644 index 0000000..e2f21b5 --- /dev/null +++ b/node_modules/ramda/src/internal/_xchain.js @@ -0,0 +1,8 @@ +var _curry2 = require('./_curry2'); +var _flatCat = require('./_flatCat'); +var map = require('../map'); + + +module.exports = _curry2(function _xchain(f, xf) { + return map(f, _flatCat(xf)); +}); diff --git a/node_modules/ramda/src/internal/_xdrop.js b/node_modules/ramda/src/internal/_xdrop.js new file mode 100644 index 0000000..8dad359 --- /dev/null +++ b/node_modules/ramda/src/internal/_xdrop.js @@ -0,0 +1,21 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XDrop(n, xf) { + this.xf = xf; + this.n = n; + } + XDrop.prototype['@@transducer/init'] = _xfBase.init; + XDrop.prototype['@@transducer/result'] = _xfBase.result; + XDrop.prototype['@@transducer/step'] = function(result, input) { + if (this.n > 0) { + this.n -= 1; + return result; + } + return this.xf['@@transducer/step'](result, input); + }; + + return _curry2(function _xdrop(n, xf) { return new XDrop(n, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xdropLast.js b/node_modules/ramda/src/internal/_xdropLast.js new file mode 100644 index 0000000..cee40ed --- /dev/null +++ b/node_modules/ramda/src/internal/_xdropLast.js @@ -0,0 +1,34 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XDropLast(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XDropLast.prototype['@@transducer/init'] = _xfBase.init; + XDropLast.prototype['@@transducer/result'] = function(result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XDropLast.prototype['@@transducer/step'] = function(result, input) { + if (this.full) { + result = this.xf['@@transducer/step'](result, this.acc[this.pos]); + } + this.store(input); + return result; + }; + XDropLast.prototype.store = function(input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + + return _curry2(function _xdropLast(n, xf) { return new XDropLast(n, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xdropLastWhile.js b/node_modules/ramda/src/internal/_xdropLastWhile.js new file mode 100644 index 0000000..7cf0890 --- /dev/null +++ b/node_modules/ramda/src/internal/_xdropLastWhile.js @@ -0,0 +1,35 @@ +var _curry2 = require('./_curry2'); +var _reduce = require('./_reduce'); +var _xfBase = require('./_xfBase'); + +module.exports = (function() { + function XDropLastWhile(fn, xf) { + this.f = fn; + this.retained = []; + this.xf = xf; + } + XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init; + XDropLastWhile.prototype['@@transducer/result'] = function(result) { + this.retained = null; + return this.xf['@@transducer/result'](result); + }; + XDropLastWhile.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) ? this.retain(result, input) + : this.flush(result, input); + }; + XDropLastWhile.prototype.flush = function(result, input) { + result = _reduce( + this.xf['@@transducer/step'], + result, + this.retained + ); + this.retained = []; + return this.xf['@@transducer/step'](result, input); + }; + XDropLastWhile.prototype.retain = function(result, input) { + this.retained.push(input); + return result; + }; + + return _curry2(function _xdropLastWhile(fn, xf) { return new XDropLastWhile(fn, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xdropRepeatsWith.js b/node_modules/ramda/src/internal/_xdropRepeatsWith.js new file mode 100644 index 0000000..58240c1 --- /dev/null +++ b/node_modules/ramda/src/internal/_xdropRepeatsWith.js @@ -0,0 +1,27 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XDropRepeatsWith(pred, xf) { + this.xf = xf; + this.pred = pred; + this.lastValue = undefined; + this.seenFirstValue = false; + } + + XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init; + XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result; + XDropRepeatsWith.prototype['@@transducer/step'] = function(result, input) { + var sameAsLast = false; + if (!this.seenFirstValue) { + this.seenFirstValue = true; + } else if (this.pred(this.lastValue, input)) { + sameAsLast = true; + } + this.lastValue = input; + return sameAsLast ? result : this.xf['@@transducer/step'](result, input); + }; + + return _curry2(function _xdropRepeatsWith(pred, xf) { return new XDropRepeatsWith(pred, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xdropWhile.js b/node_modules/ramda/src/internal/_xdropWhile.js new file mode 100644 index 0000000..529a973 --- /dev/null +++ b/node_modules/ramda/src/internal/_xdropWhile.js @@ -0,0 +1,23 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XDropWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XDropWhile.prototype['@@transducer/init'] = _xfBase.init; + XDropWhile.prototype['@@transducer/result'] = _xfBase.result; + XDropWhile.prototype['@@transducer/step'] = function(result, input) { + if (this.f) { + if (this.f(input)) { + return result; + } + this.f = null; + } + return this.xf['@@transducer/step'](result, input); + }; + + return _curry2(function _xdropWhile(f, xf) { return new XDropWhile(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xfBase.js b/node_modules/ramda/src/internal/_xfBase.js new file mode 100644 index 0000000..0f84131 --- /dev/null +++ b/node_modules/ramda/src/internal/_xfBase.js @@ -0,0 +1,8 @@ +module.exports = { + init: function() { + return this.xf['@@transducer/init'](); + }, + result: function(result) { + return this.xf['@@transducer/result'](result); + } +}; diff --git a/node_modules/ramda/src/internal/_xfilter.js b/node_modules/ramda/src/internal/_xfilter.js new file mode 100644 index 0000000..ed04700 --- /dev/null +++ b/node_modules/ramda/src/internal/_xfilter.js @@ -0,0 +1,17 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XFilter(f, xf) { + this.xf = xf; + this.f = f; + } + XFilter.prototype['@@transducer/init'] = _xfBase.init; + XFilter.prototype['@@transducer/result'] = _xfBase.result; + XFilter.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : result; + }; + + return _curry2(function _xfilter(f, xf) { return new XFilter(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xfind.js b/node_modules/ramda/src/internal/_xfind.js new file mode 100644 index 0000000..d14850e --- /dev/null +++ b/node_modules/ramda/src/internal/_xfind.js @@ -0,0 +1,28 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XFind(f, xf) { + this.xf = xf; + this.f = f; + this.found = false; + } + XFind.prototype['@@transducer/init'] = _xfBase.init; + XFind.prototype['@@transducer/result'] = function(result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, void 0); + } + return this.xf['@@transducer/result'](result); + }; + XFind.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, input)); + } + return result; + }; + + return _curry2(function _xfind(f, xf) { return new XFind(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xfindIndex.js b/node_modules/ramda/src/internal/_xfindIndex.js new file mode 100644 index 0000000..3c204e5 --- /dev/null +++ b/node_modules/ramda/src/internal/_xfindIndex.js @@ -0,0 +1,30 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XFindIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.found = false; + } + XFindIndex.prototype['@@transducer/init'] = _xfBase.init; + XFindIndex.prototype['@@transducer/result'] = function(result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, -1); + } + return this.xf['@@transducer/result'](result); + }; + XFindIndex.prototype['@@transducer/step'] = function(result, input) { + this.idx += 1; + if (this.f(input)) { + this.found = true; + result = _reduced(this.xf['@@transducer/step'](result, this.idx)); + } + return result; + }; + + return _curry2(function _xfindIndex(f, xf) { return new XFindIndex(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xfindLast.js b/node_modules/ramda/src/internal/_xfindLast.js new file mode 100644 index 0000000..5ab31c1 --- /dev/null +++ b/node_modules/ramda/src/internal/_xfindLast.js @@ -0,0 +1,22 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XFindLast(f, xf) { + this.xf = xf; + this.f = f; + } + XFindLast.prototype['@@transducer/init'] = _xfBase.init; + XFindLast.prototype['@@transducer/result'] = function(result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last)); + }; + XFindLast.prototype['@@transducer/step'] = function(result, input) { + if (this.f(input)) { + this.last = input; + } + return result; + }; + + return _curry2(function _xfindLast(f, xf) { return new XFindLast(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xfindLastIndex.js b/node_modules/ramda/src/internal/_xfindLastIndex.js new file mode 100644 index 0000000..a1e10ae --- /dev/null +++ b/node_modules/ramda/src/internal/_xfindLastIndex.js @@ -0,0 +1,25 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XFindLastIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.lastIdx = -1; + } + XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init; + XFindLastIndex.prototype['@@transducer/result'] = function(result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx)); + }; + XFindLastIndex.prototype['@@transducer/step'] = function(result, input) { + this.idx += 1; + if (this.f(input)) { + this.lastIdx = this.idx; + } + return result; + }; + + return _curry2(function _xfindLastIndex(f, xf) { return new XFindLastIndex(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xmap.js b/node_modules/ramda/src/internal/_xmap.js new file mode 100644 index 0000000..3d276a6 --- /dev/null +++ b/node_modules/ramda/src/internal/_xmap.js @@ -0,0 +1,17 @@ +var _curry2 = require('./_curry2'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XMap(f, xf) { + this.xf = xf; + this.f = f; + } + XMap.prototype['@@transducer/init'] = _xfBase.init; + XMap.prototype['@@transducer/result'] = _xfBase.result; + XMap.prototype['@@transducer/step'] = function(result, input) { + return this.xf['@@transducer/step'](result, this.f(input)); + }; + + return _curry2(function _xmap(f, xf) { return new XMap(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xreduceBy.js b/node_modules/ramda/src/internal/_xreduceBy.js new file mode 100644 index 0000000..667ded4 --- /dev/null +++ b/node_modules/ramda/src/internal/_xreduceBy.js @@ -0,0 +1,40 @@ +var _curryN = require('./_curryN'); +var _has = require('./_has'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XReduceBy(valueFn, valueAcc, keyFn, xf) { + this.valueFn = valueFn; + this.valueAcc = valueAcc; + this.keyFn = keyFn; + this.xf = xf; + this.inputs = {}; + } + XReduceBy.prototype['@@transducer/init'] = _xfBase.init; + XReduceBy.prototype['@@transducer/result'] = function(result) { + var key; + for (key in this.inputs) { + if (_has(key, this.inputs)) { + result = this.xf['@@transducer/step'](result, this.inputs[key]); + if (result['@@transducer/reduced']) { + result = result['@@transducer/value']; + break; + } + } + } + this.inputs = null; + return this.xf['@@transducer/result'](result); + }; + XReduceBy.prototype['@@transducer/step'] = function(result, input) { + var key = this.keyFn(input); + this.inputs[key] = this.inputs[key] || [key, this.valueAcc]; + this.inputs[key][1] = this.valueFn(this.inputs[key][1], input); + return result; + }; + + return _curryN(4, [], + function _xreduceBy(valueFn, valueAcc, keyFn, xf) { + return new XReduceBy(valueFn, valueAcc, keyFn, xf); + }); +}()); diff --git a/node_modules/ramda/src/internal/_xtake.js b/node_modules/ramda/src/internal/_xtake.js new file mode 100644 index 0000000..1d59117 --- /dev/null +++ b/node_modules/ramda/src/internal/_xtake.js @@ -0,0 +1,20 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + +module.exports = (function() { + function XTake(n, xf) { + this.xf = xf; + this.n = n; + this.i = 0; + } + XTake.prototype['@@transducer/init'] = _xfBase.init; + XTake.prototype['@@transducer/result'] = _xfBase.result; + XTake.prototype['@@transducer/step'] = function(result, input) { + this.i += 1; + var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input); + return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret; + }; + + return _curry2(function _xtake(n, xf) { return new XTake(n, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xtakeWhile.js b/node_modules/ramda/src/internal/_xtakeWhile.js new file mode 100644 index 0000000..7e1b513 --- /dev/null +++ b/node_modules/ramda/src/internal/_xtakeWhile.js @@ -0,0 +1,18 @@ +var _curry2 = require('./_curry2'); +var _reduced = require('./_reduced'); +var _xfBase = require('./_xfBase'); + + +module.exports = (function() { + function XTakeWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XTakeWhile.prototype['@@transducer/init'] = _xfBase.init; + XTakeWhile.prototype['@@transducer/result'] = _xfBase.result; + XTakeWhile.prototype['@@transducer/step'] = function(result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result); + }; + + return _curry2(function _xtakeWhile(f, xf) { return new XTakeWhile(f, xf); }); +}()); diff --git a/node_modules/ramda/src/internal/_xwrap.js b/node_modules/ramda/src/internal/_xwrap.js new file mode 100644 index 0000000..c96f9ec --- /dev/null +++ b/node_modules/ramda/src/internal/_xwrap.js @@ -0,0 +1,14 @@ +module.exports = (function() { + function XWrap(fn) { + this.f = fn; + } + XWrap.prototype['@@transducer/init'] = function() { + throw new Error('init not implemented on XWrap'); + }; + XWrap.prototype['@@transducer/result'] = function(acc) { return acc; }; + XWrap.prototype['@@transducer/step'] = function(acc, x) { + return this.f(acc, x); + }; + + return function _xwrap(fn) { return new XWrap(fn); }; +}()); diff --git a/node_modules/ramda/src/intersection.js b/node_modules/ramda/src/intersection.js new file mode 100644 index 0000000..a4703e3 --- /dev/null +++ b/node_modules/ramda/src/intersection.js @@ -0,0 +1,35 @@ +var _contains = require('./internal/_contains'); +var _curry2 = require('./internal/_curry2'); +var _filter = require('./internal/_filter'); +var flip = require('./flip'); +var uniq = require('./uniq'); + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The list of elements found in both `list1` and `list2`. + * @see R.innerJoin + * @example + * + * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3] + */ +module.exports = _curry2(function intersection(list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + return uniq(_filter(flip(_contains)(lookupList), filteredList)); +}); diff --git a/node_modules/ramda/src/intersectionWith.js b/node_modules/ramda/src/intersectionWith.js new file mode 100644 index 0000000..686a5bc --- /dev/null +++ b/node_modules/ramda/src/intersectionWith.js @@ -0,0 +1,60 @@ +var _containsWith = require('./internal/_containsWith'); +var _curry3 = require('./internal/_curry3'); +var uniqWith = require('./uniqWith'); + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate function that determines whether + * the two supplied elements are equal. + * @param {Array} list1 One list of items to compare + * @param {Array} list2 A second list of items to compare + * @return {Array} A new list containing those elements common to both lists. + * @see R.innerJoin + * @deprecated since v0.24.0 + * @example + * + * var buffaloSpringfield = [ + * {id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'} + * ]; + * var csny = [ + * {id: 204, name: 'David Crosby'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 539, name: 'Graham Nash'}, + * {id: 177, name: 'Neil Young'} + * ]; + * + * R.intersectionWith(R.eqBy(R.prop('id')), buffaloSpringfield, csny); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ +module.exports = _curry3(function intersectionWith(pred, list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + var results = []; + var idx = 0; + while (idx < filteredList.length) { + if (_containsWith(pred, filteredList[idx], lookupList)) { + results[results.length] = filteredList[idx]; + } + idx += 1; + } + return uniqWith(pred, results); +}); diff --git a/node_modules/ramda/src/intersperse.js b/node_modules/ramda/src/intersperse.js new file mode 100644 index 0000000..7df5dfb --- /dev/null +++ b/node_modules/ramda/src/intersperse.js @@ -0,0 +1,35 @@ +var _checkForMethod = require('./internal/_checkForMethod'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a new list with the separator interposed between elements. + * + * Dispatches to the `intersperse` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} separator The element to add to the list. + * @param {Array} list The list to be interposed. + * @return {Array} The new list. + * @example + * + * R.intersperse('n', ['ba', 'a', 'a']); //=> ['ba', 'n', 'a', 'n', 'a'] + */ +module.exports = _curry2(_checkForMethod('intersperse', function intersperse(separator, list) { + var out = []; + var idx = 0; + var length = list.length; + while (idx < length) { + if (idx === length - 1) { + out.push(list[idx]); + } else { + out.push(list[idx], separator); + } + idx += 1; + } + return out; +})); diff --git a/node_modules/ramda/src/into.js b/node_modules/ramda/src/into.js new file mode 100644 index 0000000..3c7cec5 --- /dev/null +++ b/node_modules/ramda/src/into.js @@ -0,0 +1,50 @@ +var _clone = require('./internal/_clone'); +var _curry3 = require('./internal/_curry3'); +var _isTransformer = require('./internal/_isTransformer'); +var _reduce = require('./internal/_reduce'); +var _stepCat = require('./internal/_stepCat'); + + +/** + * Transforms the items of the list with the transducer and appends the + * transformed items to the accumulator using an appropriate iterator function + * based on the accumulator type. + * + * The accumulator can be an array, string, object or a transformer. Iterated + * items will be appended to arrays and concatenated to strings. Objects will + * be merged directly or 2-item arrays will be merged as key, value pairs. + * + * The accumulator can also be a transformer object that provides a 2-arity + * reducing iterator function, step, 0-arity initial value function, init, and + * 1-arity result extraction function result. The step function is used as the + * iterator function in reduce. The result function is used to convert the + * final accumulator into the return type and in most cases is R.identity. The + * init function is used to provide the initial accumulator. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the + * transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig a -> (b -> b) -> [c] -> a + * @param {*} acc The initial accumulator value. + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @example + * + * var numbers = [1, 2, 3, 4]; + * var transducer = R.compose(R.map(R.add(1)), R.take(2)); + * + * R.into([], transducer, numbers); //=> [2, 3] + * + * var intoArray = R.into([]); + * intoArray(transducer, numbers); //=> [2, 3] + */ +module.exports = _curry3(function into(acc, xf, list) { + return _isTransformer(acc) ? + _reduce(xf(acc), acc['@@transducer/init'](), list) : + _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list); +}); diff --git a/node_modules/ramda/src/invert.js b/node_modules/ramda/src/invert.js new file mode 100644 index 0000000..1e8cc92 --- /dev/null +++ b/node_modules/ramda/src/invert.js @@ -0,0 +1,42 @@ +var _curry1 = require('./internal/_curry1'); +var _has = require('./internal/_has'); +var keys = require('./keys'); + + +/** + * Same as [`R.invertObj`](#invertObj), however this accounts for objects with + * duplicate values by putting the values into an array. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: [ s, ... ]} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object with keys in an array. + * @see R.invertObj + * @example + * + * var raceResultsByFirstName = { + * first: 'alice', + * second: 'jake', + * third: 'alice', + * }; + * R.invert(raceResultsByFirstName); + * //=> { 'alice': ['first', 'third'], 'jake':['second'] } + */ +module.exports = _curry1(function invert(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + var val = obj[key]; + var list = _has(val, out) ? out[val] : (out[val] = []); + list[list.length] = key; + idx += 1; + } + return out; +}); diff --git a/node_modules/ramda/src/invertObj.js b/node_modules/ramda/src/invertObj.js new file mode 100644 index 0000000..24a63bd --- /dev/null +++ b/node_modules/ramda/src/invertObj.js @@ -0,0 +1,44 @@ +var _curry1 = require('./internal/_curry1'); +var keys = require('./keys'); + + +/** + * Returns a new object with the keys of the given object as values, and the + * values of the given object, which are coerced to strings, as keys. Note + * that the last key found is preferred when handling the same value. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: s} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object + * @see R.invert + * @example + * + * var raceResults = { + * first: 'alice', + * second: 'jake' + * }; + * R.invertObj(raceResults); + * //=> { 'alice': 'first', 'jake':'second' } + * + * // Alternatively: + * var raceResults = ['alice', 'jake']; + * R.invertObj(raceResults); + * //=> { 'alice': '0', 'jake':'1' } + */ +module.exports = _curry1(function invertObj(obj) { + var props = keys(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + out[obj[key]] = key; + idx += 1; + } + return out; +}); diff --git a/node_modules/ramda/src/invoker.js b/node_modules/ramda/src/invoker.js new file mode 100644 index 0000000..829d655 --- /dev/null +++ b/node_modules/ramda/src/invoker.js @@ -0,0 +1,42 @@ +var _curry2 = require('./internal/_curry2'); +var _isFunction = require('./internal/_isFunction'); +var curryN = require('./curryN'); +var toString = require('./toString'); + + +/** + * Turns a named method with a specified arity into a function that can be + * called directly supplied with arguments and a target object. + * + * The returned function is curried and accepts `arity + 1` parameters where + * the final parameter is the target object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *) + * @param {Number} arity Number of arguments the returned function should take + * before the target object. + * @param {String} method Name of the method to call. + * @return {Function} A new curried function. + * @see R.construct + * @example + * + * var sliceFrom = R.invoker(1, 'slice'); + * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm' + * var sliceFrom6 = R.invoker(2, 'slice')(6); + * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh' + * @symb R.invoker(0, 'method')(o) = o['method']() + * @symb R.invoker(1, 'method')(a, o) = o['method'](a) + * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b) + */ +module.exports = _curry2(function invoker(arity, method) { + return curryN(arity + 1, function() { + var target = arguments[arity]; + if (target != null && _isFunction(target[method])) { + return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity)); + } + throw new TypeError(toString(target) + ' does not have a method named "' + method + '"'); + }); +}); diff --git a/node_modules/ramda/src/is.js b/node_modules/ramda/src/is.js new file mode 100644 index 0000000..0d9748f --- /dev/null +++ b/node_modules/ramda/src/is.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * See if an object (`val`) is an instance of the supplied constructor. This + * function will check up the inheritance chain, if any. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Type + * @sig (* -> {*}) -> a -> Boolean + * @param {Object} ctor A constructor + * @param {*} val The value to test + * @return {Boolean} + * @example + * + * R.is(Object, {}); //=> true + * R.is(Number, 1); //=> true + * R.is(Object, 1); //=> false + * R.is(String, 's'); //=> true + * R.is(String, new String('')); //=> true + * R.is(Object, new String('')); //=> true + * R.is(Object, 's'); //=> false + * R.is(Number, {}); //=> false + */ +module.exports = _curry2(function is(Ctor, val) { + return val != null && val.constructor === Ctor || val instanceof Ctor; +}); diff --git a/node_modules/ramda/src/isEmpty.js b/node_modules/ramda/src/isEmpty.js new file mode 100644 index 0000000..27fc832 --- /dev/null +++ b/node_modules/ramda/src/isEmpty.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var empty = require('./empty'); +var equals = require('./equals'); + + +/** + * Returns `true` if the given value is its type's empty value; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> Boolean + * @param {*} x + * @return {Boolean} + * @see R.empty + * @example + * + * R.isEmpty([1, 2, 3]); //=> false + * R.isEmpty([]); //=> true + * R.isEmpty(''); //=> true + * R.isEmpty(null); //=> false + * R.isEmpty({}); //=> true + * R.isEmpty({length: 0}); //=> false + */ +module.exports = _curry1(function isEmpty(x) { + return x != null && equals(x, empty(x)); +}); diff --git a/node_modules/ramda/src/isNil.js b/node_modules/ramda/src/isNil.js new file mode 100644 index 0000000..1ce59a5 --- /dev/null +++ b/node_modules/ramda/src/isNil.js @@ -0,0 +1,21 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Checks if the input value is `null` or `undefined`. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Type + * @sig * -> Boolean + * @param {*} x The value to test. + * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`. + * @example + * + * R.isNil(null); //=> true + * R.isNil(undefined); //=> true + * R.isNil(0); //=> false + * R.isNil([]); //=> false + */ +module.exports = _curry1(function isNil(x) { return x == null; }); diff --git a/node_modules/ramda/src/join.js b/node_modules/ramda/src/join.js new file mode 100644 index 0000000..2d4dce5 --- /dev/null +++ b/node_modules/ramda/src/join.js @@ -0,0 +1,23 @@ +var invoker = require('./invoker'); + + +/** + * Returns a string made by inserting the `separator` between each element and + * concatenating all the elements into a single string. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig String -> [a] -> String + * @param {Number|String} separator The string used to separate the elements. + * @param {Array} xs The elements to join into a string. + * @return {String} str The string made by concatenating `xs` with `separator`. + * @see R.split + * @example + * + * var spacer = R.join(' '); + * spacer(['a', 2, 3.4]); //=> 'a 2 3.4' + * R.join('|', [1, 2, 3]); //=> '1|2|3' + */ +module.exports = invoker(1, 'join'); diff --git a/node_modules/ramda/src/juxt.js b/node_modules/ramda/src/juxt.js new file mode 100644 index 0000000..f11e049 --- /dev/null +++ b/node_modules/ramda/src/juxt.js @@ -0,0 +1,24 @@ +var _curry1 = require('./internal/_curry1'); +var converge = require('./converge'); + + +/** + * juxt applies a list of functions to a list of values. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Function + * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n]) + * @param {Array} fns An array of functions + * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters. + * @see R.applySpec + * @example + * + * var getRange = R.juxt([Math.min, Math.max]); + * getRange(3, 4, 9, -3); //=> [-3, 9] + * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)] + */ +module.exports = _curry1(function juxt(fns) { + return converge(function() { return Array.prototype.slice.call(arguments, 0); }, fns); +}); diff --git a/node_modules/ramda/src/keys.js b/node_modules/ramda/src/keys.js new file mode 100644 index 0000000..55b0393 --- /dev/null +++ b/node_modules/ramda/src/keys.js @@ -0,0 +1,74 @@ +var _curry1 = require('./internal/_curry1'); +var _has = require('./internal/_has'); +var _isArguments = require('./internal/_isArguments'); + + +/** + * Returns a list containing the names of all the enumerable own properties of + * the supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own properties. + * @see R.keysIn, R.values + * @example + * + * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] + */ +module.exports = (function() { + // cover IE < 9 keys issues + var hasEnumBug = !({toString: null}).propertyIsEnumerable('toString'); + var nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + // Safari bug + var hasArgsEnumBug = (function() { + 'use strict'; + return arguments.propertyIsEnumerable('length'); + }()); + + var contains = function contains(list, item) { + var idx = 0; + while (idx < list.length) { + if (list[idx] === item) { + return true; + } + idx += 1; + } + return false; + }; + + return typeof Object.keys === 'function' && !hasArgsEnumBug ? + _curry1(function keys(obj) { + return Object(obj) !== obj ? [] : Object.keys(obj); + }) : + _curry1(function keys(obj) { + if (Object(obj) !== obj) { + return []; + } + var prop, nIdx; + var ks = []; + var checkArgsLength = hasArgsEnumBug && _isArguments(obj); + for (prop in obj) { + if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) { + ks[ks.length] = prop; + } + } + if (hasEnumBug) { + nIdx = nonEnumerableProps.length - 1; + while (nIdx >= 0) { + prop = nonEnumerableProps[nIdx]; + if (_has(prop, obj) && !contains(ks, prop)) { + ks[ks.length] = prop; + } + nIdx -= 1; + } + } + return ks; + }); +}()); diff --git a/node_modules/ramda/src/keysIn.js b/node_modules/ramda/src/keysIn.js new file mode 100644 index 0000000..5e56b39 --- /dev/null +++ b/node_modules/ramda/src/keysIn.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Returns a list containing the names of all the properties of the supplied + * object, including prototype properties. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own and prototype properties. + * @see R.keys, R.valuesIn + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.keysIn(f); //=> ['x', 'y'] + */ +module.exports = _curry1(function keysIn(obj) { + var prop; + var ks = []; + for (prop in obj) { + ks[ks.length] = prop; + } + return ks; +}); diff --git a/node_modules/ramda/src/last.js b/node_modules/ramda/src/last.js new file mode 100644 index 0000000..d30d857 --- /dev/null +++ b/node_modules/ramda/src/last.js @@ -0,0 +1,24 @@ +var nth = require('./nth'); + + +/** + * Returns the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.init, R.head, R.tail + * @example + * + * R.last(['fi', 'fo', 'fum']); //=> 'fum' + * R.last([]); //=> undefined + * + * R.last('abc'); //=> 'c' + * R.last(''); //=> '' + */ +module.exports = nth(-1); diff --git a/node_modules/ramda/src/lastIndexOf.js b/node_modules/ramda/src/lastIndexOf.js new file mode 100644 index 0000000..5ca86e0 --- /dev/null +++ b/node_modules/ramda/src/lastIndexOf.js @@ -0,0 +1,38 @@ +var _curry2 = require('./internal/_curry2'); +var _isArray = require('./internal/_isArray'); +var equals = require('./equals'); + + +/** + * Returns the position of the last occurrence of an item in an array, or -1 if + * the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.indexOf + * @example + * + * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 + * R.lastIndexOf(10, [1,2,3,4]); //=> -1 + */ +module.exports = _curry2(function lastIndexOf(target, xs) { + if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) { + return xs.lastIndexOf(target); + } else { + var idx = xs.length - 1; + while (idx >= 0) { + if (equals(xs[idx], target)) { + return idx; + } + idx -= 1; + } + return -1; + } +}); diff --git a/node_modules/ramda/src/length.js b/node_modules/ramda/src/length.js new file mode 100644 index 0000000..e5ef7e5 --- /dev/null +++ b/node_modules/ramda/src/length.js @@ -0,0 +1,22 @@ +var _curry1 = require('./internal/_curry1'); +var _isNumber = require('./internal/_isNumber'); + + +/** + * Returns the number of elements in the array by returning `list.length`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [a] -> Number + * @param {Array} list The array to inspect. + * @return {Number} The length of the array. + * @example + * + * R.length([]); //=> 0 + * R.length([1, 2, 3]); //=> 3 + */ +module.exports = _curry1(function length(list) { + return list != null && _isNumber(list.length) ? list.length : NaN; +}); diff --git a/node_modules/ramda/src/lens.js b/node_modules/ramda/src/lens.js new file mode 100644 index 0000000..4995981 --- /dev/null +++ b/node_modules/ramda/src/lens.js @@ -0,0 +1,39 @@ +var _curry2 = require('./internal/_curry2'); +var map = require('./map'); + + +/** + * Returns a lens for the given getter and setter functions. The getter "gets" + * the value of the focus; the setter "sets" the value of the focus. The setter + * should not mutate the data structure. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig (s -> a) -> ((a, s) -> s) -> Lens s a + * @param {Function} getter + * @param {Function} setter + * @return {Lens} + * @see R.view, R.set, R.over, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lens(R.prop('x'), R.assoc('x')); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +module.exports = _curry2(function lens(getter, setter) { + return function(toFunctorFn) { + return function(target) { + return map( + function(focus) { + return setter(focus, target); + }, + toFunctorFn(getter(target)) + ); + }; + }; +}); diff --git a/node_modules/ramda/src/lensIndex.js b/node_modules/ramda/src/lensIndex.js new file mode 100644 index 0000000..9f412e1 --- /dev/null +++ b/node_modules/ramda/src/lensIndex.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var lens = require('./lens'); +var nth = require('./nth'); +var update = require('./update'); + + +/** + * Returns a lens whose focus is the specified index. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Number -> Lens s a + * @param {Number} n + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var headLens = R.lensIndex(0); + * + * R.view(headLens, ['a', 'b', 'c']); //=> 'a' + * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] + * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c'] + */ +module.exports = _curry1(function lensIndex(n) { + return lens(nth(n), update(n)); +}); diff --git a/node_modules/ramda/src/lensPath.js b/node_modules/ramda/src/lensPath.js new file mode 100644 index 0000000..013e1e3 --- /dev/null +++ b/node_modules/ramda/src/lensPath.js @@ -0,0 +1,33 @@ +var _curry1 = require('./internal/_curry1'); +var assocPath = require('./assocPath'); +var lens = require('./lens'); +var path = require('./path'); + + +/** + * Returns a lens whose focus is the specified path. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @typedefn Idx = String | Int + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig [Idx] -> Lens s a + * @param {Array} path The path to use. + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var xHeadYLens = R.lensPath(['x', 0, 'y']); + * + * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> 2 + * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]} + * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} + */ +module.exports = _curry1(function lensPath(p) { + return lens(path(p), assocPath(p)); +}); diff --git a/node_modules/ramda/src/lensProp.js b/node_modules/ramda/src/lensProp.js new file mode 100644 index 0000000..4b854ac --- /dev/null +++ b/node_modules/ramda/src/lensProp.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var assoc = require('./assoc'); +var lens = require('./lens'); +var prop = require('./prop'); + + +/** + * Returns a lens whose focus is the specified property. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig String -> Lens s a + * @param {String} k + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * var xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +module.exports = _curry1(function lensProp(k) { + return lens(prop(k), assoc(k)); +}); diff --git a/node_modules/ramda/src/lift.js b/node_modules/ramda/src/lift.js new file mode 100644 index 0000000..9b372aa --- /dev/null +++ b/node_modules/ramda/src/lift.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var liftN = require('./liftN'); + + +/** + * "lifts" a function of arity > 1 so that it may "map over" a list, Function or other + * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.liftN + * @example + * + * var madd3 = R.lift((a, b, c) => a + b + c); + * + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + * + * var madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); + * + * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24] + */ +module.exports = _curry1(function lift(fn) { + return liftN(fn.length, fn); +}); diff --git a/node_modules/ramda/src/liftN.js b/node_modules/ramda/src/liftN.js new file mode 100644 index 0000000..dfb6b50 --- /dev/null +++ b/node_modules/ramda/src/liftN.js @@ -0,0 +1,30 @@ +var _curry2 = require('./internal/_curry2'); +var _reduce = require('./internal/_reduce'); +var ap = require('./ap'); +var curryN = require('./curryN'); +var map = require('./map'); + + +/** + * "lifts" a function to be the specified arity, so that it may "map over" that + * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig Number -> (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.lift, R.ap + * @example + * + * var madd3 = R.liftN(3, (...args) => R.sum(args)); + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + */ +module.exports = _curry2(function liftN(arity, fn) { + var lifted = curryN(arity, fn); + return curryN(arity, function() { + return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); + }); +}); diff --git a/node_modules/ramda/src/lt.js b/node_modules/ramda/src/lt.js new file mode 100644 index 0000000..115793e --- /dev/null +++ b/node_modules/ramda/src/lt.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if the first argument is less than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.gt + * @example + * + * R.lt(2, 1); //=> false + * R.lt(2, 2); //=> false + * R.lt(2, 3); //=> true + * R.lt('a', 'z'); //=> true + * R.lt('z', 'a'); //=> false + */ +module.exports = _curry2(function lt(a, b) { return a < b; }); diff --git a/node_modules/ramda/src/lte.js b/node_modules/ramda/src/lte.js new file mode 100644 index 0000000..f02bd48 --- /dev/null +++ b/node_modules/ramda/src/lte.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if the first argument is less than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.gte + * @example + * + * R.lte(2, 1); //=> false + * R.lte(2, 2); //=> true + * R.lte(2, 3); //=> true + * R.lte('a', 'z'); //=> true + * R.lte('z', 'a'); //=> false + */ +module.exports = _curry2(function lte(a, b) { return a <= b; }); diff --git a/node_modules/ramda/src/map.js b/node_modules/ramda/src/map.js new file mode 100644 index 0000000..29442bd --- /dev/null +++ b/node_modules/ramda/src/map.js @@ -0,0 +1,59 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _map = require('./internal/_map'); +var _reduce = require('./internal/_reduce'); +var _xmap = require('./internal/_xmap'); +var curryN = require('./curryN'); +var keys = require('./keys'); + + +/** + * Takes a function and + * a [functor](https://github.com/fantasyland/fantasy-land#functor), + * applies the function to each of the functor's values, and returns + * a functor of the same shape. + * + * Ramda provides suitable `map` implementations for `Array` and `Object`, + * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`. + * + * Dispatches to the `map` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * Also treats functions as functors and will compose them together. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => (a -> b) -> f a -> f b + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {Array} list The list to be iterated over. + * @return {Array} The new list. + * @see R.transduce, R.addIndex + * @example + * + * var double = x => x * 2; + * + * R.map(double, [1, 2, 3]); //=> [2, 4, 6] + * + * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} + * @symb R.map(f, [a, b]) = [f(a), f(b)] + * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) } + * @symb R.map(f, functor_o) = functor_o.map(f) + */ +module.exports = _curry2(_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) { + switch (Object.prototype.toString.call(functor)) { + case '[object Function]': + return curryN(functor.length, function() { + return fn.call(this, functor.apply(this, arguments)); + }); + case '[object Object]': + return _reduce(function(acc, key) { + acc[key] = fn(functor[key]); + return acc; + }, {}, keys(functor)); + default: + return _map(fn, functor); + } +})); diff --git a/node_modules/ramda/src/mapAccum.js b/node_modules/ramda/src/mapAccum.js new file mode 100644 index 0000000..2327d0b --- /dev/null +++ b/node_modules/ramda/src/mapAccum.js @@ -0,0 +1,49 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * The `mapAccum` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from left to right, and returning a final value of this + * accumulator together with the new list. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccumRight + * @example + * + * var digits = ['1', '2', '3', '4']; + * var appender = (a, b) => [a + b, a + b]; + * + * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']] + * @symb R.mapAccum(f, a, [b, c, d]) = [ + * f(f(f(a, b)[0], c)[0], d)[0], + * [ + * f(a, b)[1], + * f(f(a, b)[0], c)[1], + * f(f(f(a, b)[0], c)[0], d)[1] + * ] + * ] + */ +module.exports = _curry3(function mapAccum(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = []; + var tuple = [acc]; + while (idx < len) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx += 1; + } + return [tuple[0], result]; +}); diff --git a/node_modules/ramda/src/mapAccumRight.js b/node_modules/ramda/src/mapAccumRight.js new file mode 100644 index 0000000..ed9fa24 --- /dev/null +++ b/node_modules/ramda/src/mapAccumRight.js @@ -0,0 +1,51 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * The `mapAccumRight` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from right to left, and returning a final value of this + * accumulator together with the new list. + * + * Similar to [`mapAccum`](#mapAccum), except moves through the input list from + * the right to the left. + * + * The iterator function receives two arguments, *value* and *acc*, and should + * return a tuple *[value, acc]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (x-> acc -> (y, acc)) -> acc -> [x] -> ([y], acc) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccum + * @example + * + * var digits = ['1', '2', '3', '4']; + * var append = (a, b) => [a + b, a + b]; + * + * R.mapAccumRight(append, 5, digits); //=> [['12345', '2345', '345', '45'], '12345'] + * @symb R.mapAccumRight(f, a, [b, c, d]) = [ + * [ + * f(b, f(c, f(d, a)[0])[0])[1], + * f(c, f(d, a)[0])[1], + * f(d, a)[1], + * ] + * f(b, f(c, f(d, a)[0])[0])[0], + * ] + */ +module.exports = _curry3(function mapAccumRight(fn, acc, list) { + var idx = list.length - 1; + var result = []; + var tuple = [acc]; + while (idx >= 0) { + tuple = fn(list[idx], tuple[0]); + result[idx] = tuple[1]; + idx -= 1; + } + return [result, tuple[0]]; +}); diff --git a/node_modules/ramda/src/mapObjIndexed.js b/node_modules/ramda/src/mapObjIndexed.js new file mode 100644 index 0000000..76118bb --- /dev/null +++ b/node_modules/ramda/src/mapObjIndexed.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); +var _reduce = require('./internal/_reduce'); +var keys = require('./keys'); + + +/** + * An Object-specific version of [`map`](#map). The function is applied to three + * arguments: *(value, key, obj)*. If only the value is significant, use + * [`map`](#map) instead. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig ((*, String, Object) -> *) -> Object -> Object + * @param {Function} fn + * @param {Object} obj + * @return {Object} + * @see R.map + * @example + * + * var values = { x: 1, y: 2, z: 3 }; + * var prependKeyAndDouble = (num, key, obj) => key + (num * 2); + * + * R.mapObjIndexed(prependKeyAndDouble, values); //=> { x: 'x2', y: 'y4', z: 'z6' } + */ +module.exports = _curry2(function mapObjIndexed(fn, obj) { + return _reduce(function(acc, key) { + acc[key] = fn(obj[key], key, obj); + return acc; + }, {}, keys(obj)); +}); diff --git a/node_modules/ramda/src/match.js b/node_modules/ramda/src/match.js new file mode 100644 index 0000000..bedf6d8 --- /dev/null +++ b/node_modules/ramda/src/match.js @@ -0,0 +1,27 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Tests a regular expression against a String. Note that this function will + * return an empty array when there are no matches. This differs from + * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) + * which returns `null` when there are no matches. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig RegExp -> String -> [String | Undefined] + * @param {RegExp} rx A regular expression. + * @param {String} str The string to match against + * @return {Array} The list of matches or empty array. + * @see R.test + * @example + * + * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] + * R.match(/a/, 'b'); //=> [] + * R.match(/a/, null); //=> TypeError: null does not have a method named "match" + */ +module.exports = _curry2(function match(rx, str) { + return str.match(rx) || []; +}); diff --git a/node_modules/ramda/src/mathMod.js b/node_modules/ramda/src/mathMod.js new file mode 100644 index 0000000..d85b7e3 --- /dev/null +++ b/node_modules/ramda/src/mathMod.js @@ -0,0 +1,42 @@ +var _curry2 = require('./internal/_curry2'); +var _isInteger = require('./internal/_isInteger'); + + +/** + * `mathMod` behaves like the modulo operator should mathematically, unlike the + * `%` operator (and by extension, [`R.modulo`](#modulo)). So while + * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer + * arguments, and returns NaN when the modulus is zero or negative. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} m The dividend. + * @param {Number} p the modulus. + * @return {Number} The result of `b mod a`. + * @see R.modulo + * @example + * + * R.mathMod(-17, 5); //=> 3 + * R.mathMod(17, 5); //=> 2 + * R.mathMod(17, -5); //=> NaN + * R.mathMod(17, 0); //=> NaN + * R.mathMod(17.2, 5); //=> NaN + * R.mathMod(17, 5.3); //=> NaN + * + * var clock = R.mathMod(R.__, 12); + * clock(15); //=> 3 + * clock(24); //=> 0 + * + * var seventeenMod = R.mathMod(17); + * seventeenMod(3); //=> 2 + * seventeenMod(4); //=> 1 + * seventeenMod(10); //=> 7 + */ +module.exports = _curry2(function mathMod(m, p) { + if (!_isInteger(m)) { return NaN; } + if (!_isInteger(p) || p < 1) { return NaN; } + return ((m % p) + p) % p; +}); diff --git a/node_modules/ramda/src/max.js b/node_modules/ramda/src/max.js new file mode 100644 index 0000000..da3bb14 --- /dev/null +++ b/node_modules/ramda/src/max.js @@ -0,0 +1,21 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns the larger of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.maxBy, R.min + * @example + * + * R.max(789, 123); //=> 789 + * R.max('a', 'b'); //=> 'b' + */ +module.exports = _curry2(function max(a, b) { return b > a ? b : a; }); diff --git a/node_modules/ramda/src/maxBy.js b/node_modules/ramda/src/maxBy.js new file mode 100644 index 0000000..871854f --- /dev/null +++ b/node_modules/ramda/src/maxBy.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Takes a function and two values, and returns whichever value produces the + * larger result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.max, R.minBy + * @example + * + * // square :: Number -> Number + * var square = n => n * n; + * + * R.maxBy(square, -3, 2); //=> -3 + * + * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 + * R.reduce(R.maxBy(square), 0, []); //=> 0 + */ +module.exports = _curry3(function maxBy(f, a, b) { + return f(b) > f(a) ? b : a; +}); diff --git a/node_modules/ramda/src/mean.js b/node_modules/ramda/src/mean.js new file mode 100644 index 0000000..b15f9a8 --- /dev/null +++ b/node_modules/ramda/src/mean.js @@ -0,0 +1,23 @@ +var _curry1 = require('./internal/_curry1'); +var sum = require('./sum'); + + +/** + * Returns the mean of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.median + * @example + * + * R.mean([2, 7, 9]); //=> 6 + * R.mean([]); //=> NaN + */ +module.exports = _curry1(function mean(list) { + return sum(list) / list.length; +}); diff --git a/node_modules/ramda/src/median.js b/node_modules/ramda/src/median.js new file mode 100644 index 0000000..3a14260 --- /dev/null +++ b/node_modules/ramda/src/median.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); +var mean = require('./mean'); + + +/** + * Returns the median of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.mean + * @example + * + * R.median([2, 9, 7]); //=> 7 + * R.median([7, 2, 10, 9]); //=> 8 + * R.median([]); //=> NaN + */ +module.exports = _curry1(function median(list) { + var len = list.length; + if (len === 0) { + return NaN; + } + var width = 2 - len % 2; + var idx = (len - width) / 2; + return mean(Array.prototype.slice.call(list, 0).sort(function(a, b) { + return a < b ? -1 : a > b ? 1 : 0; + }).slice(idx, idx + width)); +}); diff --git a/node_modules/ramda/src/memoize.js b/node_modules/ramda/src/memoize.js new file mode 100644 index 0000000..0d45f36 --- /dev/null +++ b/node_modules/ramda/src/memoize.js @@ -0,0 +1,34 @@ +var memoizeWith = require('./memoizeWith'); +var toString = require('./toString'); + + +/** + * Creates a new function that, when invoked, caches the result of calling `fn` + * for a given argument set and returns the result. Subsequent calls to the + * memoized `fn` with the same argument set will not result in an additional + * call to `fn`; instead, the cached result for that set of arguments will be + * returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (*... -> a) -> (*... -> a) + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @see R.memoizeWith + * @example + * + * let count = 0; + * const factorial = R.memoize(n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ +module.exports = memoizeWith(function() { + return toString(arguments); +}); diff --git a/node_modules/ramda/src/memoizeWith.js b/node_modules/ramda/src/memoizeWith.js new file mode 100644 index 0000000..91205bd --- /dev/null +++ b/node_modules/ramda/src/memoizeWith.js @@ -0,0 +1,44 @@ +var _arity = require('./internal/_arity'); +var _curry2 = require('./internal/_curry2'); +var _has = require('./internal/_has'); + + +/** + * A customisable version of [`R.memoize`](#memoize). `memoizeWith` takes an + * additional function that will be applied to a given argument set and used to + * create the cache key under which the results of the function to be memoized + * will be stored. Care must be taken when implementing key generation to avoid + * clashes that may overwrite previous entries erroneously. + * + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (*... -> String) -> (*... -> a) -> (*... -> a) + * @param {Function} fn The function to generate the cache key. + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @see R.memoize + * @example + * + * let count = 0; + * const factorial = R.memoizeWith(R.identity, n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ +module.exports = _curry2(function memoizeWith(mFn, fn) { + var cache = {}; + return _arity(fn.length, function() { + var key = mFn.apply(this, arguments); + if (!_has(key, cache)) { + cache[key] = fn.apply(this, arguments); + } + return cache[key]; + }); +}); diff --git a/node_modules/ramda/src/merge.js b/node_modules/ramda/src/merge.js new file mode 100644 index 0000000..b439673 --- /dev/null +++ b/node_modules/ramda/src/merge.js @@ -0,0 +1,30 @@ +var _assign = require('./internal/_assign'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepRight, R.mergeWith, R.mergeWithKey + * @example + * + * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * var resetToDefault = R.merge(R.__, {x: 0}); + * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} + * @symb R.merge({ x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: 5, z: 3 } + */ +module.exports = _curry2(function merge(l, r) { + return _assign({}, l, r); +}); diff --git a/node_modules/ramda/src/mergeAll.js b/node_modules/ramda/src/mergeAll.js new file mode 100644 index 0000000..6f156bd --- /dev/null +++ b/node_modules/ramda/src/mergeAll.js @@ -0,0 +1,24 @@ +var _assign = require('./internal/_assign'); +var _curry1 = require('./internal/_curry1'); + + +/** + * Merges a list of objects together into one object. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig [{k: v}] -> {k: v} + * @param {Array} list An array of objects + * @return {Object} A merged object. + * @see R.reduce + * @example + * + * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3} + * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} + * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 } + */ +module.exports = _curry1(function mergeAll(list) { + return _assign.apply(null, [{}].concat(list)); +}); diff --git a/node_modules/ramda/src/mergeDeepLeft.js b/node_modules/ramda/src/mergeDeepLeft.js new file mode 100644 index 0000000..a4c5980 --- /dev/null +++ b/node_modules/ramda/src/mergeDeepLeft.js @@ -0,0 +1,30 @@ +var _curry2 = require('./internal/_curry2'); +var mergeDeepWithKey = require('./mergeDeepWithKey'); + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the first object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} + */ +module.exports = _curry2(function mergeDeepLeft(lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return lVal; + }, lObj, rObj); +}); diff --git a/node_modules/ramda/src/mergeDeepRight.js b/node_modules/ramda/src/mergeDeepRight.js new file mode 100644 index 0000000..e380355 --- /dev/null +++ b/node_modules/ramda/src/mergeDeepRight.js @@ -0,0 +1,30 @@ +var _curry2 = require('./internal/_curry2'); +var mergeDeepWithKey = require('./mergeDeepWithKey'); + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} + */ +module.exports = _curry2(function mergeDeepRight(lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return rVal; + }, lObj, rObj); +}); diff --git a/node_modules/ramda/src/mergeDeepWith.js b/node_modules/ramda/src/mergeDeepWith.js new file mode 100644 index 0000000..322e3fe --- /dev/null +++ b/node_modules/ramda/src/mergeDeepWith.js @@ -0,0 +1,36 @@ +var _curry3 = require('./internal/_curry3'); +var mergeDeepWithKey = require('./mergeDeepWithKey'); + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to associated values using the + * resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig (a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWith, R.mergeDeep, R.mergeDeepWithKey + * @example + * + * R.mergeDeepWith(R.concat, + * { a: true, c: { values: [10, 20] }}, + * { b: true, c: { values: [15, 35] }}); + * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} + */ +module.exports = _curry3(function mergeDeepWith(fn, lObj, rObj) { + return mergeDeepWithKey(function(k, lVal, rVal) { + return fn(lVal, rVal); + }, lObj, rObj); +}); diff --git a/node_modules/ramda/src/mergeDeepWithKey.js b/node_modules/ramda/src/mergeDeepWithKey.js new file mode 100644 index 0000000..db39c6a --- /dev/null +++ b/node_modules/ramda/src/mergeDeepWithKey.js @@ -0,0 +1,42 @@ +var _curry3 = require('./internal/_curry3'); +var _isObject = require('./internal/_isObject'); +var mergeWithKey = require('./mergeWithKey'); + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to the key and associated values + * using the resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig (String -> a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWithKey, R.mergeDeep, R.mergeDeepWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeDeepWithKey(concatValues, + * { a: true, c: { thing: 'foo', values: [10, 20] }}, + * { b: true, c: { thing: 'bar', values: [15, 35] }}); + * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} + */ +module.exports = _curry3(function mergeDeepWithKey(fn, lObj, rObj) { + return mergeWithKey(function(k, lVal, rVal) { + if (_isObject(lVal) && _isObject(rVal)) { + return mergeDeepWithKey(fn, lVal, rVal); + } else { + return fn(k, lVal, rVal); + } + }, lObj, rObj); +}); diff --git a/node_modules/ramda/src/mergeWith.js b/node_modules/ramda/src/mergeWith.js new file mode 100644 index 0000000..1156d01 --- /dev/null +++ b/node_modules/ramda/src/mergeWith.js @@ -0,0 +1,32 @@ +var _curry3 = require('./internal/_curry3'); +var mergeWithKey = require('./mergeWithKey'); + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the values + * associated with the key in each object, with the result being used as the + * value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig (a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWith, R.merge, R.mergeWithKey + * @example + * + * R.mergeWith(R.concat, + * { a: true, values: [10, 20] }, + * { b: true, values: [15, 35] }); + * //=> { a: true, b: true, values: [10, 20, 15, 35] } + */ +module.exports = _curry3(function mergeWith(fn, l, r) { + return mergeWithKey(function(_, _l, _r) { + return fn(_l, _r); + }, l, r); +}); diff --git a/node_modules/ramda/src/mergeWithKey.js b/node_modules/ramda/src/mergeWithKey.js new file mode 100644 index 0000000..75c44f6 --- /dev/null +++ b/node_modules/ramda/src/mergeWithKey.js @@ -0,0 +1,47 @@ +var _curry3 = require('./internal/_curry3'); +var _has = require('./internal/_has'); + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the key + * and the values associated with the key in each object, with the result being + * used as the value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig (String -> a -> a -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWithKey, R.merge, R.mergeWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeWithKey(concatValues, + * { a: true, thing: 'foo', values: [10, 20] }, + * { b: true, thing: 'bar', values: [15, 35] }); + * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } + * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 } + */ +module.exports = _curry3(function mergeWithKey(fn, l, r) { + var result = {}; + var k; + + for (k in l) { + if (_has(k, l)) { + result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k]; + } + } + + for (k in r) { + if (_has(k, r) && !(_has(k, result))) { + result[k] = r[k]; + } + } + + return result; +}); diff --git a/node_modules/ramda/src/min.js b/node_modules/ramda/src/min.js new file mode 100644 index 0000000..a39eb20 --- /dev/null +++ b/node_modules/ramda/src/min.js @@ -0,0 +1,21 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns the smaller of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.minBy, R.max + * @example + * + * R.min(789, 123); //=> 123 + * R.min('a', 'b'); //=> 'a' + */ +module.exports = _curry2(function min(a, b) { return b < a ? b : a; }); diff --git a/node_modules/ramda/src/minBy.js b/node_modules/ramda/src/minBy.js new file mode 100644 index 0000000..f45a3ba --- /dev/null +++ b/node_modules/ramda/src/minBy.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Takes a function and two values, and returns whichever value produces the + * smaller result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.min, R.maxBy + * @example + * + * // square :: Number -> Number + * var square = n => n * n; + * + * R.minBy(square, -3, 2); //=> 2 + * + * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 + * R.reduce(R.minBy(square), Infinity, []); //=> Infinity + */ +module.exports = _curry3(function minBy(f, a, b) { + return f(b) < f(a) ? b : a; +}); diff --git a/node_modules/ramda/src/modulo.js b/node_modules/ramda/src/modulo.js new file mode 100644 index 0000000..9a3b58b --- /dev/null +++ b/node_modules/ramda/src/modulo.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Divides the first parameter by the second and returns the remainder. Note + * that this function preserves the JavaScript-style behavior for modulo. For + * mathematical modulo see [`mathMod`](#mathMod). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The value to the divide. + * @param {Number} b The pseudo-modulus + * @return {Number} The result of `b % a`. + * @see R.mathMod + * @example + * + * R.modulo(17, 3); //=> 2 + * // JS behavior: + * R.modulo(-17, 3); //=> -2 + * R.modulo(17, -3); //=> 2 + * + * var isOdd = R.modulo(R.__, 2); + * isOdd(42); //=> 0 + * isOdd(21); //=> 1 + */ +module.exports = _curry2(function modulo(a, b) { return a % b; }); diff --git a/node_modules/ramda/src/multiply.js b/node_modules/ramda/src/multiply.js new file mode 100644 index 0000000..919a1be --- /dev/null +++ b/node_modules/ramda/src/multiply.js @@ -0,0 +1,24 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Multiplies two numbers. Equivalent to `a * b` but curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a * b`. + * @see R.divide + * @example + * + * var double = R.multiply(2); + * var triple = R.multiply(3); + * double(3); //=> 6 + * triple(4); //=> 12 + * R.multiply(2, 5); //=> 10 + */ +module.exports = _curry2(function multiply(a, b) { return a * b; }); diff --git a/node_modules/ramda/src/nAry.js b/node_modules/ramda/src/nAry.js new file mode 100644 index 0000000..a7dce50 --- /dev/null +++ b/node_modules/ramda/src/nAry.js @@ -0,0 +1,49 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly `n` parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} n The desired arity of the new function. + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity `n`. + * @see R.binary, R.unary + * @example + * + * var takesTwoArgs = (a, b) => [a, b]; + * + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * var takesOneArg = R.nAry(1, takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only `n` arguments are passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.nAry(0, f)(a, b) = f() + * @symb R.nAry(1, f)(a, b) = f(a) + * @symb R.nAry(2, f)(a, b) = f(a, b) + */ +module.exports = _curry2(function nAry(n, fn) { + switch (n) { + case 0: return function() {return fn.call(this);}; + case 1: return function(a0) {return fn.call(this, a0);}; + case 2: return function(a0, a1) {return fn.call(this, a0, a1);}; + case 3: return function(a0, a1, a2) {return fn.call(this, a0, a1, a2);}; + case 4: return function(a0, a1, a2, a3) {return fn.call(this, a0, a1, a2, a3);}; + case 5: return function(a0, a1, a2, a3, a4) {return fn.call(this, a0, a1, a2, a3, a4);}; + case 6: return function(a0, a1, a2, a3, a4, a5) {return fn.call(this, a0, a1, a2, a3, a4, a5);}; + case 7: return function(a0, a1, a2, a3, a4, a5, a6) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6);}; + case 8: return function(a0, a1, a2, a3, a4, a5, a6, a7) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);}; + case 9: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);}; + case 10: return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);}; + default: throw new Error('First argument to nAry must be a non-negative integer no greater than ten'); + } +}); diff --git a/node_modules/ramda/src/negate.js b/node_modules/ramda/src/negate.js new file mode 100644 index 0000000..9f3a6f2 --- /dev/null +++ b/node_modules/ramda/src/negate.js @@ -0,0 +1,18 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Negates its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} + * @example + * + * R.negate(42); //=> -42 + */ +module.exports = _curry1(function negate(n) { return -n; }); diff --git a/node_modules/ramda/src/none.js b/node_modules/ramda/src/none.js new file mode 100644 index 0000000..f17938c --- /dev/null +++ b/node_modules/ramda/src/none.js @@ -0,0 +1,30 @@ +var _complement = require('./internal/_complement'); +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xany = require('./internal/_xany'); +var any = require('./any'); + + +/** + * Returns `true` if no elements of the list match the predicate, `false` + * otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise. + * @see R.all, R.any + * @example + * + * var isEven = n => n % 2 === 0; + * + * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true + * R.none(isEven, [1, 3, 5, 7, 8, 11]); //=> false + */ +module.exports = _curry2(_complement(_dispatchable(['any'], _xany, any))); diff --git a/node_modules/ramda/src/not.js b/node_modules/ramda/src/not.js new file mode 100644 index 0000000..a47b80e --- /dev/null +++ b/node_modules/ramda/src/not.js @@ -0,0 +1,25 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * A function that returns the `!` of its argument. It will return `true` when + * passed false-y value, and `false` when passed a truth-y one. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig * -> Boolean + * @param {*} a any value + * @return {Boolean} the logical inverse of passed argument. + * @see R.complement + * @example + * + * R.not(true); //=> false + * R.not(false); //=> true + * R.not(0); //=> true + * R.not(1); //=> false + */ +module.exports = _curry1(function not(a) { + return !a; +}); diff --git a/node_modules/ramda/src/nth.js b/node_modules/ramda/src/nth.js new file mode 100644 index 0000000..c862f2b --- /dev/null +++ b/node_modules/ramda/src/nth.js @@ -0,0 +1,34 @@ +var _curry2 = require('./internal/_curry2'); +var _isString = require('./internal/_isString'); + + +/** + * Returns the nth element of the given list or string. If n is negative the + * element at index length + n is returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> a | Undefined + * @sig Number -> String -> String + * @param {Number} offset + * @param {*} list + * @return {*} + * @example + * + * var list = ['foo', 'bar', 'baz', 'quux']; + * R.nth(1, list); //=> 'bar' + * R.nth(-1, list); //=> 'quux' + * R.nth(-99, list); //=> undefined + * + * R.nth(2, 'abc'); //=> 'c' + * R.nth(3, 'abc'); //=> '' + * @symb R.nth(-1, [a, b, c]) = c + * @symb R.nth(0, [a, b, c]) = a + * @symb R.nth(1, [a, b, c]) = b + */ +module.exports = _curry2(function nth(offset, list) { + var idx = offset < 0 ? list.length + offset : offset; + return _isString(list) ? list.charAt(idx) : list[idx]; +}); diff --git a/node_modules/ramda/src/nthArg.js b/node_modules/ramda/src/nthArg.js new file mode 100644 index 0000000..6cf6785 --- /dev/null +++ b/node_modules/ramda/src/nthArg.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var curryN = require('./curryN'); +var nth = require('./nth'); + + +/** + * Returns a function which returns its nth argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig Number -> *... -> * + * @param {Number} n + * @return {Function} + * @example + * + * R.nthArg(1)('a', 'b', 'c'); //=> 'b' + * R.nthArg(-1)('a', 'b', 'c'); //=> 'c' + * @symb R.nthArg(-1)(a, b, c) = c + * @symb R.nthArg(0)(a, b, c) = a + * @symb R.nthArg(1)(a, b, c) = b + */ +module.exports = _curry1(function nthArg(n) { + var arity = n < 0 ? 1 : n + 1; + return curryN(arity, function() { + return nth(n, arguments); + }); +}); diff --git a/node_modules/ramda/src/o.js b/node_modules/ramda/src/o.js new file mode 100644 index 0000000..a51e5dd --- /dev/null +++ b/node_modules/ramda/src/o.js @@ -0,0 +1,31 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * `o` is a curried composition function that returns a unary function. + * Like [`compose`](#compose), `o` performs right-to-left function composition. + * Unlike [`compose`](#compose), the rightmost function passed to `o` will be + * invoked with only one argument. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (b -> c) -> (a -> b) -> a -> c + * @param {Function} f + * @param {Function} g + * @return {Function} + * @see R.compose, R.pipe + * @example + * + * var classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + lastName + * var yellGreeting = R.o(R.toUpper, classyGreeting); + * yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.o(R.multiply(10), R.add(10))(-4) //=> 60 + * + * @symb R.o(f, g, x) = f(g(x)) + */ +module.exports = _curry3(function o(f, g, x) { + return f(g(x)); +}); diff --git a/node_modules/ramda/src/objOf.js b/node_modules/ramda/src/objOf.js new file mode 100644 index 0000000..2081423 --- /dev/null +++ b/node_modules/ramda/src/objOf.js @@ -0,0 +1,28 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates an object containing a single key:value pair. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @sig String -> a -> {String:a} + * @param {String} key + * @param {*} val + * @return {Object} + * @see R.pair + * @example + * + * var matchPhrases = R.compose( + * R.objOf('must'), + * R.map(R.objOf('match_phrase')) + * ); + * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} + */ +module.exports = _curry2(function objOf(key, val) { + var obj = {}; + obj[key] = val; + return obj; +}); diff --git a/node_modules/ramda/src/of.js b/node_modules/ramda/src/of.js new file mode 100644 index 0000000..5927fb9 --- /dev/null +++ b/node_modules/ramda/src/of.js @@ -0,0 +1,23 @@ +var _curry1 = require('./internal/_curry1'); +var _of = require('./internal/_of'); + + +/** + * Returns a singleton array containing the value provided. + * + * Note this `of` is different from the ES6 `of`; See + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> [a] + * @param {*} x any value + * @return {Array} An array wrapping `x`. + * @example + * + * R.of(null); //=> [null] + * R.of([42]); //=> [[42]] + */ +module.exports = _curry1(_of); diff --git a/node_modules/ramda/src/omit.js b/node_modules/ramda/src/omit.js new file mode 100644 index 0000000..9e9e76c --- /dev/null +++ b/node_modules/ramda/src/omit.js @@ -0,0 +1,29 @@ +var _contains = require('./internal/_contains'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a partial copy of an object omitting the keys specified. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [String] -> {String: *} -> {String: *} + * @param {Array} names an array of String property names to omit from the new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with properties from `names` not on it. + * @see R.pick + * @example + * + * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} + */ +module.exports = _curry2(function omit(names, obj) { + var result = {}; + for (var prop in obj) { + if (!_contains(prop, names)) { + result[prop] = obj[prop]; + } + } + return result; +}); diff --git a/node_modules/ramda/src/once.js b/node_modules/ramda/src/once.js new file mode 100644 index 0000000..57b19d1 --- /dev/null +++ b/node_modules/ramda/src/once.js @@ -0,0 +1,35 @@ +var _arity = require('./internal/_arity'); +var _curry1 = require('./internal/_curry1'); + + +/** + * Accepts a function `fn` and returns a function that guards invocation of + * `fn` such that `fn` can only ever be called once, no matter how many times + * the returned function is invoked. The first value calculated is returned in + * subsequent invocations. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a... -> b) -> (a... -> b) + * @param {Function} fn The function to wrap in a call-only-once wrapper. + * @return {Function} The wrapped function. + * @example + * + * var addOneOnce = R.once(x => x + 1); + * addOneOnce(10); //=> 11 + * addOneOnce(addOneOnce(50)); //=> 11 + */ +module.exports = _curry1(function once(fn) { + var called = false; + var result; + return _arity(fn.length, function() { + if (called) { + return result; + } + called = true; + result = fn.apply(this, arguments); + return result; + }); +}); diff --git a/node_modules/ramda/src/or.js b/node_modules/ramda/src/or.js new file mode 100644 index 0000000..62e2b69 --- /dev/null +++ b/node_modules/ramda/src/or.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns `true` if one or both of its arguments are `true`. Returns `false` + * if both arguments are `false`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if truthy, otherwise the second argument. + * @see R.either + * @example + * + * R.or(true, true); //=> true + * R.or(true, false); //=> true + * R.or(false, true); //=> true + * R.or(false, false); //=> false + */ +module.exports = _curry2(function or(a, b) { + return a || b; +}); diff --git a/node_modules/ramda/src/over.js b/node_modules/ramda/src/over.js new file mode 100644 index 0000000..9c9bda8 --- /dev/null +++ b/node_modules/ramda/src/over.js @@ -0,0 +1,39 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the result of applying the given function to + * the focused value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> (a -> a) -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var headLens = R.lensIndex(0); + * + * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz'] + */ +module.exports = (function() { + // `Identity` is a functor that holds a single value, where `map` simply + // transforms the held value with the provided function. + var Identity = function(x) { + return {value: x, map: function(f) { return Identity(f(x)); }}; + }; + + return _curry3(function over(lens, f, x) { + // The value returned by the getter function is first transformed with `f`, + // then set as the value of an `Identity`. This is then mapped over with the + // setter function of the lens. + return lens(function(y) { return Identity(f(y)); })(x).value; + }); +}()); diff --git a/node_modules/ramda/src/pair.js b/node_modules/ramda/src/pair.js new file mode 100644 index 0000000..1fdefd3 --- /dev/null +++ b/node_modules/ramda/src/pair.js @@ -0,0 +1,20 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category List + * @sig a -> b -> (a,b) + * @param {*} fst + * @param {*} snd + * @return {Array} + * @see R.objOf, R.of + * @example + * + * R.pair('foo', 'bar'); //=> ['foo', 'bar'] + */ +module.exports = _curry2(function pair(fst, snd) { return [fst, snd]; }); diff --git a/node_modules/ramda/src/partial.js b/node_modules/ramda/src/partial.js new file mode 100644 index 0000000..108dbaa --- /dev/null +++ b/node_modules/ramda/src/partial.js @@ -0,0 +1,33 @@ +var _concat = require('./internal/_concat'); +var _createPartialApplicator = require('./internal/_createPartialApplicator'); + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided initially followed by the arguments provided to `g`. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partialRight + * @example + * + * var multiply2 = (a, b) => a * b; + * var double = R.partial(multiply2, [2]); + * double(2); //=> 4 + * + * var greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * var sayHello = R.partial(greet, ['Hello']); + * var sayHelloToMs = R.partial(sayHello, ['Ms.']); + * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d) + */ +module.exports = _createPartialApplicator(_concat); diff --git a/node_modules/ramda/src/partialRight.js b/node_modules/ramda/src/partialRight.js new file mode 100644 index 0000000..bade2ef --- /dev/null +++ b/node_modules/ramda/src/partialRight.js @@ -0,0 +1,30 @@ +var _concat = require('./internal/_concat'); +var _createPartialApplicator = require('./internal/_createPartialApplicator'); +var flip = require('./flip'); + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided to `g` followed by the arguments provided initially. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partial + * @example + * + * var greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * var greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']); + * + * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b) + */ +module.exports = _createPartialApplicator(flip(_concat)); diff --git a/node_modules/ramda/src/partition.js b/node_modules/ramda/src/partition.js new file mode 100644 index 0000000..f995305 --- /dev/null +++ b/node_modules/ramda/src/partition.js @@ -0,0 +1,30 @@ +var filter = require('./filter'); +var juxt = require('./juxt'); +var reject = require('./reject'); + + +/** + * Takes a predicate and a list or other `Filterable` object and returns the + * pair of filterable objects of the same type of elements which do and do not + * satisfy, the predicate, respectively. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a] + * @param {Function} pred A predicate to determine which side the element belongs to. + * @param {Array} filterable the list (or other filterable) to partition. + * @return {Array} An array, containing first the subset of elements that satisfy the + * predicate, and second the subset of elements that do not satisfy. + * @see R.filter, R.reject + * @example + * + * R.partition(R.contains('s'), ['sss', 'ttt', 'foo', 'bars']); + * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ] + * + * R.partition(R.contains('s'), { a: 'sss', b: 'ttt', foo: 'bars' }); + * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] + */ +module.exports = juxt([filter, reject]); diff --git a/node_modules/ramda/src/path.js b/node_modules/ramda/src/path.js new file mode 100644 index 0000000..2ff7301 --- /dev/null +++ b/node_modules/ramda/src/path.js @@ -0,0 +1,33 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Retrieve the value at a given path. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {a} -> a | Undefined + * @param {Array} path The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path`. + * @see R.prop + * @example + * + * R.path(['a', 'b'], {a: {b: 2}}); //=> 2 + * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined + */ +module.exports = _curry2(function path(paths, obj) { + var val = obj; + var idx = 0; + while (idx < paths.length) { + if (val == null) { + return; + } + val = val[paths[idx]]; + idx += 1; + } + return val; +}); diff --git a/node_modules/ramda/src/pathEq.js b/node_modules/ramda/src/pathEq.js new file mode 100644 index 0000000..264566e --- /dev/null +++ b/node_modules/ramda/src/pathEq.js @@ -0,0 +1,32 @@ +var _curry3 = require('./internal/_curry3'); +var equals = require('./equals'); +var path = require('./path'); + + +/** + * Determines whether a nested path on an object has a specific value, in + * [`R.equals`](#equals) terms. Most likely used to filter a list. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Relation + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> Boolean + * @param {Array} path The path of the nested property to use + * @param {*} val The value to compare the nested property with + * @param {Object} obj The object to check the nested property in + * @return {Boolean} `true` if the value equals the nested object property, + * `false` otherwise. + * @example + * + * var user1 = { address: { zipCode: 90210 } }; + * var user2 = { address: { zipCode: 55555 } }; + * var user3 = { name: 'Bob' }; + * var users = [ user1, user2, user3 ]; + * var isFamous = R.pathEq(['address', 'zipCode'], 90210); + * R.filter(isFamous, users); //=> [ user1 ] + */ +module.exports = _curry3(function pathEq(_path, val, obj) { + return equals(path(_path, obj), val); +}); diff --git a/node_modules/ramda/src/pathOr.js b/node_modules/ramda/src/pathOr.js new file mode 100644 index 0000000..a87f8a7 --- /dev/null +++ b/node_modules/ramda/src/pathOr.js @@ -0,0 +1,27 @@ +var _curry3 = require('./internal/_curry3'); +var defaultTo = require('./defaultTo'); +var path = require('./path'); + + +/** + * If the given, non-null object has a value at the given path, returns the + * value at that path. Otherwise returns the provided default value. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @typedefn Idx = String | Int + * @sig a -> [Idx] -> {a} -> a + * @param {*} d The default value. + * @param {Array} p The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path` of the supplied object or the default value. + * @example + * + * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2 + * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" + */ +module.exports = _curry3(function pathOr(d, p, obj) { + return defaultTo(d, path(p, obj)); +}); diff --git a/node_modules/ramda/src/pathSatisfies.js b/node_modules/ramda/src/pathSatisfies.js new file mode 100644 index 0000000..01788ab --- /dev/null +++ b/node_modules/ramda/src/pathSatisfies.js @@ -0,0 +1,26 @@ +var _curry3 = require('./internal/_curry3'); +var path = require('./path'); + + +/** + * Returns `true` if the specified object property at given path satisfies the + * given predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Logic + * @typedefn Idx = String | Int + * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean + * @param {Function} pred + * @param {Array} propPath + * @param {*} obj + * @return {Boolean} + * @see R.propSatisfies, R.path + * @example + * + * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true + */ +module.exports = _curry3(function pathSatisfies(pred, propPath, obj) { + return propPath.length > 0 && pred(path(propPath, obj)); +}); diff --git a/node_modules/ramda/src/pick.js b/node_modules/ramda/src/pick.js new file mode 100644 index 0000000..09c6d68 --- /dev/null +++ b/node_modules/ramda/src/pick.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a partial copy of an object containing only the keys specified. If + * the key does not exist, the property is ignored. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.omit, R.props + * @example + * + * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} + */ +module.exports = _curry2(function pick(names, obj) { + var result = {}; + var idx = 0; + while (idx < names.length) { + if (names[idx] in obj) { + result[names[idx]] = obj[names[idx]]; + } + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/pickAll.js b/node_modules/ramda/src/pickAll.js new file mode 100644 index 0000000..f4344c7 --- /dev/null +++ b/node_modules/ramda/src/pickAll.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Similar to `pick` except that this one includes a `key: undefined` pair for + * properties that don't exist. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.pick + * @example + * + * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} + */ +module.exports = _curry2(function pickAll(names, obj) { + var result = {}; + var idx = 0; + var len = names.length; + while (idx < len) { + var name = names[idx]; + result[name] = obj[name]; + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/pickBy.js b/node_modules/ramda/src/pickBy.js new file mode 100644 index 0000000..ec4db09 --- /dev/null +++ b/node_modules/ramda/src/pickBy.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a partial copy of an object containing only the keys that satisfy + * the supplied predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig (v, k -> Boolean) -> {k: v} -> {k: v} + * @param {Function} pred A predicate to determine whether or not a key + * should be included on the output object. + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties that satisfy `pred` + * on it. + * @see R.pick, R.filter + * @example + * + * var isUpperCase = (val, key) => key.toUpperCase() === key; + * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} + */ +module.exports = _curry2(function pickBy(test, obj) { + var result = {}; + for (var prop in obj) { + if (test(obj[prop], prop, obj)) { + result[prop] = obj[prop]; + } + } + return result; +}); diff --git a/node_modules/ramda/src/pipe.js b/node_modules/ramda/src/pipe.js new file mode 100644 index 0000000..96ce35c --- /dev/null +++ b/node_modules/ramda/src/pipe.js @@ -0,0 +1,36 @@ +var _arity = require('./internal/_arity'); +var _pipe = require('./internal/_pipe'); +var reduce = require('./reduce'); +var tail = require('./tail'); + + +/** + * Performs left-to-right function composition. The leftmost function may have + * any arity; the remaining functions must be unary. + * + * In some libraries this function is named `sequence`. + * + * **Note:** The result of pipe is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) + * @param {...Function} functions + * @return {Function} + * @see R.compose + * @example + * + * var f = R.pipe(Math.pow, R.negate, R.inc); + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b))) + */ +module.exports = function pipe() { + if (arguments.length === 0) { + throw new Error('pipe requires at least one argument'); + } + return _arity(arguments[0].length, + reduce(_pipe, arguments[0], tail(arguments))); +}; diff --git a/node_modules/ramda/src/pipeK.js b/node_modules/ramda/src/pipeK.js new file mode 100644 index 0000000..4fb6fad --- /dev/null +++ b/node_modules/ramda/src/pipeK.js @@ -0,0 +1,43 @@ +var composeK = require('./composeK'); +var reverse = require('./reverse'); + +/** + * Returns the left-to-right Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.pipeK(f, g, h)` is equivalent to `R.pipe(R.chain(f), R.chain(g), R.chain(h))`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z) + * @param {...Function} + * @return {Function} + * @see R.composeK + * @example + * + * // parseJson :: String -> Maybe * + * // get :: String -> Object -> Maybe * + * + * // getStateCode :: Maybe String -> Maybe String + * var getStateCode = R.pipeK( + * parseJson, + * get('user'), + * get('address'), + * get('state'), + * R.compose(Maybe.of, R.toUpper) + * ); + * + * getStateCode('{"user":{"address":{"state":"ny"}}}'); + * //=> Just('NY') + * getStateCode('[Invalid JSON]'); + * //=> Nothing() + * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a))) + */ +module.exports = function pipeK() { + if (arguments.length === 0) { + throw new Error('pipeK requires at least one argument'); + } + return composeK.apply(this, reverse(arguments)); +}; diff --git a/node_modules/ramda/src/pipeP.js b/node_modules/ramda/src/pipeP.js new file mode 100644 index 0000000..1d3563b --- /dev/null +++ b/node_modules/ramda/src/pipeP.js @@ -0,0 +1,31 @@ +var _arity = require('./internal/_arity'); +var _pipeP = require('./internal/_pipeP'); +var reduce = require('./reduce'); +var tail = require('./tail'); + + +/** + * Performs left-to-right composition of one or more Promise-returning + * functions. The leftmost function may have any arity; the remaining functions + * must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z) + * @param {...Function} functions + * @return {Function} + * @see R.composeP + * @example + * + * // followersForUser :: String -> Promise [User] + * var followersForUser = R.pipeP(db.getUserById, db.getFollowers); + */ +module.exports = function pipeP() { + if (arguments.length === 0) { + throw new Error('pipeP requires at least one argument'); + } + return _arity(arguments[0].length, + reduce(_pipeP, arguments[0], tail(arguments))); +}; diff --git a/node_modules/ramda/src/pluck.js b/node_modules/ramda/src/pluck.js new file mode 100644 index 0000000..e295a95 --- /dev/null +++ b/node_modules/ramda/src/pluck.js @@ -0,0 +1,33 @@ +var _curry2 = require('./internal/_curry2'); +var map = require('./map'); +var prop = require('./prop'); + + +/** + * Returns a new list by plucking the same named property off all objects in + * the list supplied. + * + * `pluck` will work on + * any [functor](https://github.com/fantasyland/fantasy-land#functor) in + * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => k -> f {k: v} -> f v + * @param {Number|String} key The key name to pluck off of each object. + * @param {Array} f The array or functor to consider. + * @return {Array} The list of values for the given key. + * @see R.props + * @example + * + * R.pluck('a')([{a: 1}, {a: 2}]); //=> [1, 2] + * R.pluck(0)([[1, 2], [3, 4]]); //=> [1, 3] + * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} + * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5] + * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5] + */ +module.exports = _curry2(function pluck(p, list) { + return map(prop(p), list); +}); diff --git a/node_modules/ramda/src/prepend.js b/node_modules/ramda/src/prepend.js new file mode 100644 index 0000000..82c025e --- /dev/null +++ b/node_modules/ramda/src/prepend.js @@ -0,0 +1,24 @@ +var _concat = require('./internal/_concat'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new list with the given element at the front, followed by the + * contents of the list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The item to add to the head of the output list. + * @param {Array} list The array to add to the tail of the output list. + * @return {Array} A new array. + * @see R.append + * @example + * + * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] + */ +module.exports = _curry2(function prepend(el, list) { + return _concat([el], list); +}); diff --git a/node_modules/ramda/src/product.js b/node_modules/ramda/src/product.js new file mode 100644 index 0000000..69f30f2 --- /dev/null +++ b/node_modules/ramda/src/product.js @@ -0,0 +1,20 @@ +var multiply = require('./multiply'); +var reduce = require('./reduce'); + + +/** + * Multiplies together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The product of all the numbers in the list. + * @see R.reduce + * @example + * + * R.product([2,4,6,8,100,1]); //=> 38400 + */ +module.exports = reduce(multiply, 1); diff --git a/node_modules/ramda/src/project.js b/node_modules/ramda/src/project.js new file mode 100644 index 0000000..63b5c3a --- /dev/null +++ b/node_modules/ramda/src/project.js @@ -0,0 +1,26 @@ +var _map = require('./internal/_map'); +var identity = require('./identity'); +var pickAll = require('./pickAll'); +var useWith = require('./useWith'); + + +/** + * Reasonable analog to SQL `select` statement. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @category Relation + * @sig [k] -> [{k: v}] -> [{k: v}] + * @param {Array} props The property names to project + * @param {Array} objs The objects to query + * @return {Array} An array of objects with just the `props` properties. + * @example + * + * var abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2}; + * var fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7}; + * var kids = [abby, fred]; + * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] + */ +module.exports = useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity diff --git a/node_modules/ramda/src/prop.js b/node_modules/ramda/src/prop.js new file mode 100644 index 0000000..3f1467a --- /dev/null +++ b/node_modules/ramda/src/prop.js @@ -0,0 +1,22 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a function that when supplied an object returns the indicated + * property of that object, if it exists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig s -> {s: a} -> a | Undefined + * @param {String} p The property name + * @param {Object} obj The object to query + * @return {*} The value at `obj.p`. + * @see R.path + * @example + * + * R.prop('x', {x: 100}); //=> 100 + * R.prop('x', {}); //=> undefined + */ +module.exports = _curry2(function prop(p, obj) { return obj[p]; }); diff --git a/node_modules/ramda/src/propEq.js b/node_modules/ramda/src/propEq.js new file mode 100644 index 0000000..e8db929 --- /dev/null +++ b/node_modules/ramda/src/propEq.js @@ -0,0 +1,31 @@ +var _curry3 = require('./internal/_curry3'); +var equals = require('./equals'); + + +/** + * Returns `true` if the specified object property is equal, in + * [`R.equals`](#equals) terms, to the given value; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig String -> a -> Object -> Boolean + * @param {String} name + * @param {*} val + * @param {*} obj + * @return {Boolean} + * @see R.equals, R.propSatisfies + * @example + * + * var abby = {name: 'Abby', age: 7, hair: 'blond'}; + * var fred = {name: 'Fred', age: 12, hair: 'brown'}; + * var rusty = {name: 'Rusty', age: 10, hair: 'brown'}; + * var alois = {name: 'Alois', age: 15, disposition: 'surly'}; + * var kids = [abby, fred, rusty, alois]; + * var hasBrownHair = R.propEq('hair', 'brown'); + * R.filter(hasBrownHair, kids); //=> [fred, rusty] + */ +module.exports = _curry3(function propEq(name, val, obj) { + return equals(val, obj[name]); +}); diff --git a/node_modules/ramda/src/propIs.js b/node_modules/ramda/src/propIs.js new file mode 100644 index 0000000..0e515a9 --- /dev/null +++ b/node_modules/ramda/src/propIs.js @@ -0,0 +1,27 @@ +var _curry3 = require('./internal/_curry3'); +var is = require('./is'); + + +/** + * Returns `true` if the specified object property is of the given type; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Type + * @sig Type -> String -> Object -> Boolean + * @param {Function} type + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.is, R.propSatisfies + * @example + * + * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true + * R.propIs(Number, 'x', {x: 'foo'}); //=> false + * R.propIs(Number, 'x', {}); //=> false + */ +module.exports = _curry3(function propIs(type, name, obj) { + return is(type, obj[name]); +}); diff --git a/node_modules/ramda/src/propOr.js b/node_modules/ramda/src/propOr.js new file mode 100644 index 0000000..b91c5dc --- /dev/null +++ b/node_modules/ramda/src/propOr.js @@ -0,0 +1,33 @@ +var _curry3 = require('./internal/_curry3'); +var _has = require('./internal/_has'); + + +/** + * If the given, non-null object has an own property with the specified name, + * returns the value of that property. Otherwise returns the provided default + * value. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Object + * @sig a -> String -> Object -> a + * @param {*} val The default value. + * @param {String} p The name of the property to return. + * @param {Object} obj The object to query. + * @return {*} The value of given property of the supplied object or the default value. + * @example + * + * var alice = { + * name: 'ALICE', + * age: 101 + * }; + * var favorite = R.prop('favoriteLibrary'); + * var favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary'); + * + * favorite(alice); //=> undefined + * favoriteWithDefault(alice); //=> 'Ramda' + */ +module.exports = _curry3(function propOr(val, p, obj) { + return (obj != null && _has(p, obj)) ? obj[p] : val; +}); diff --git a/node_modules/ramda/src/propSatisfies.js b/node_modules/ramda/src/propSatisfies.js new file mode 100644 index 0000000..56fb5b3 --- /dev/null +++ b/node_modules/ramda/src/propSatisfies.js @@ -0,0 +1,24 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Returns `true` if the specified object property satisfies the given + * predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Logic + * @sig (a -> Boolean) -> String -> {String: a} -> Boolean + * @param {Function} pred + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.propEq, R.propIs + * @example + * + * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true + */ +module.exports = _curry3(function propSatisfies(pred, name, obj) { + return pred(obj[name]); +}); diff --git a/node_modules/ramda/src/props.js b/node_modules/ramda/src/props.js new file mode 100644 index 0000000..ed588c6 --- /dev/null +++ b/node_modules/ramda/src/props.js @@ -0,0 +1,35 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Acts as multiple `prop`: array of keys in, array of values out. Preserves + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> [v] + * @param {Array} ps The property names to fetch + * @param {Object} obj The object to query + * @return {Array} The corresponding values or partially applied function. + * @example + * + * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2] + * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2] + * + * var fullName = R.compose(R.join(' '), R.props(['first', 'last'])); + * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' + */ +module.exports = _curry2(function props(ps, obj) { + var len = ps.length; + var out = []; + var idx = 0; + + while (idx < len) { + out[idx] = obj[ps[idx]]; + idx += 1; + } + + return out; +}); diff --git a/node_modules/ramda/src/range.js b/node_modules/ramda/src/range.js new file mode 100644 index 0000000..2343059 --- /dev/null +++ b/node_modules/ramda/src/range.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); +var _isNumber = require('./internal/_isNumber'); + + +/** + * Returns a list of numbers from `from` (inclusive) to `to` (exclusive). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> Number -> [Number] + * @param {Number} from The first number in the list. + * @param {Number} to One more than the last number in the list. + * @return {Array} The list of numbers in tthe set `[a, b)`. + * @example + * + * R.range(1, 5); //=> [1, 2, 3, 4] + * R.range(50, 53); //=> [50, 51, 52] + */ +module.exports = _curry2(function range(from, to) { + if (!(_isNumber(from) && _isNumber(to))) { + throw new TypeError('Both arguments to range must be numbers'); + } + var result = []; + var n = from; + while (n < to) { + result.push(n); + n += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/reduce.js b/node_modules/ramda/src/reduce.js new file mode 100644 index 0000000..56b03e3 --- /dev/null +++ b/node_modules/ramda/src/reduce.js @@ -0,0 +1,51 @@ +var _curry3 = require('./internal/_curry3'); +var _reduce = require('./internal/_reduce'); + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It may use + * [`R.reduced`](#reduced) to shortcut the iteration. + * + * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function + * is *(value, acc)*. + * + * Note: `R.reduce` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduce` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description + * + * Dispatches to the `reduce` method of the third argument, if present. When + * doing so, it is up to the user to handle the [`R.reduced`](#reduced) + * shortcuting, as this is not implemented by `reduce`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> a + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduced, R.addIndex, R.reduceRight + * @example + * + * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 + * - -10 + * / \ / \ + * - 4 -6 4 + * / \ / \ + * - 3 ==> -3 3 + * / \ / \ + * - 2 -1 2 + * / \ / \ + * 0 1 0 1 + * + * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d) + */ +module.exports = _curry3(_reduce); diff --git a/node_modules/ramda/src/reduceBy.js b/node_modules/ramda/src/reduceBy.js new file mode 100644 index 0000000..0e54dde --- /dev/null +++ b/node_modules/ramda/src/reduceBy.js @@ -0,0 +1,59 @@ +var _curryN = require('./internal/_curryN'); +var _dispatchable = require('./internal/_dispatchable'); +var _has = require('./internal/_has'); +var _reduce = require('./internal/_reduce'); +var _xreduceBy = require('./internal/_xreduceBy'); + + +/** + * Groups the elements of the list according to the result of calling + * the String-returning function `keyFn` on each element and reduces the elements + * of each group to a single value via the reducer function `valueFn`. + * + * This function is basically a more general [`groupBy`](#groupBy) function. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category List + * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a} + * @param {Function} valueFn The function that reduces the elements of each group to a single + * value. Receives two values, accumulator for a particular group and the current element. + * @param {*} acc The (initial) accumulator value for each group. + * @param {Function} keyFn The function that maps the list's element into a key. + * @param {Array} list The array to group. + * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of + * `valueFn` for elements which produced that key when passed to `keyFn`. + * @see R.groupBy, R.reduce + * @example + * + * var reduceToNamesBy = R.reduceBy((acc, student) => acc.concat(student.name), []); + * var namesByGrade = reduceToNamesBy(function(student) { + * var score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * var students = [{name: 'Lucy', score: 92}, + * {name: 'Drew', score: 85}, + * // ... + * {name: 'Bart', score: 62}]; + * namesByGrade(students); + * // { + * // 'A': ['Lucy'], + * // 'B': ['Drew'] + * // // ..., + * // 'F': ['Bart'] + * // } + */ +module.exports = _curryN(4, [], _dispatchable([], _xreduceBy, + function reduceBy(valueFn, valueAcc, keyFn, list) { + return _reduce(function(acc, elt) { + var key = keyFn(elt); + acc[key] = valueFn(_has(key, acc) ? acc[key] : valueAcc, elt); + return acc; + }, {}, list); + })); diff --git a/node_modules/ramda/src/reduceRight.js b/node_modules/ramda/src/reduceRight.js new file mode 100644 index 0000000..70c8d2a --- /dev/null +++ b/node_modules/ramda/src/reduceRight.js @@ -0,0 +1,53 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * Similar to [`reduce`](#reduce), except moves through the input list from the + * right to the left. + * + * The iterator function receives two values: *(value, acc)*, while the arguments' + * order of `reduce`'s iterator function is *(acc, value)*. + * + * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduceRight` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a, b -> b) -> b -> [a] -> b + * @param {Function} fn The iterator function. Receives two values, the current element from the array + * and the accumulator. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.addIndex + * @example + * + * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 + * - -2 + * / \ / \ + * 1 - 1 3 + * / \ / \ + * 2 - ==> 2 -1 + * / \ / \ + * 3 - 3 4 + * / \ / \ + * 4 0 4 0 + * + * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a))) + */ +module.exports = _curry3(function reduceRight(fn, acc, list) { + var idx = list.length - 1; + while (idx >= 0) { + acc = fn(list[idx], acc); + idx -= 1; + } + return acc; +}); diff --git a/node_modules/ramda/src/reduceWhile.js b/node_modules/ramda/src/reduceWhile.js new file mode 100644 index 0000000..4e01898 --- /dev/null +++ b/node_modules/ramda/src/reduceWhile.js @@ -0,0 +1,39 @@ +var _curryN = require('./internal/_curryN'); +var _reduce = require('./internal/_reduce'); +var _reduced = require('./internal/_reduced'); + + +/** + * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating + * through the list, successively calling the iterator function. `reduceWhile` + * also takes a predicate that is evaluated before each step. If the predicate + * returns `false`, it "short-circuits" the iteration and returns the current + * value of the accumulator. + * + * @func + * @memberOf R + * @since v0.22.0 + * @category List + * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} pred The predicate. It is passed the accumulator and the + * current element. + * @param {Function} fn The iterator function. Receives two values, the + * accumulator and the current element. + * @param {*} a The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced + * @example + * + * var isOdd = (acc, x) => x % 2 === 1; + * var xs = [1, 3, 5, 60, 777, 800]; + * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 + * + * var ys = [2, 4, 6] + * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111 + */ +module.exports = _curryN(4, [], function _reduceWhile(pred, fn, a, list) { + return _reduce(function(acc, x) { + return pred(acc, x) ? fn(acc, x) : _reduced(acc); + }, a, list); +}); diff --git a/node_modules/ramda/src/reduced.js b/node_modules/ramda/src/reduced.js new file mode 100644 index 0000000..a0db65a --- /dev/null +++ b/node_modules/ramda/src/reduced.js @@ -0,0 +1,29 @@ +var _curry1 = require('./internal/_curry1'); +var _reduced = require('./internal/_reduced'); + +/** + * Returns a value wrapped to indicate that it is the final value of the reduce + * and transduce functions. The returned value should be considered a black + * box: the internal structure is not guaranteed to be stable. + * + * Note: this optimization is unavailable to functions not explicitly listed + * above. For instance, it is not currently supported by + * [`reduceRight`](#reduceRight). + * + * @func + * @memberOf R + * @since v0.15.0 + * @category List + * @sig a -> * + * @param {*} x The final value of the reduce. + * @return {*} The wrapped value. + * @see R.reduce, R.transduce + * @example + * + * R.reduce( + * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), + * [], + * [1, 2, 3, 4, 5]) // [1, 2, 3] + */ + +module.exports = _curry1(_reduced); diff --git a/node_modules/ramda/src/reject.js b/node_modules/ramda/src/reject.js new file mode 100644 index 0000000..2410dff --- /dev/null +++ b/node_modules/ramda/src/reject.js @@ -0,0 +1,32 @@ +var _complement = require('./internal/_complement'); +var _curry2 = require('./internal/_curry2'); +var filter = require('./filter'); + + +/** + * The complement of [`filter`](#filter). + * + * Acts as a transducer if a transformer is given in list position. Filterable + * objects include plain objects or any object that has a filter method such + * as `Array`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} + * @see R.filter, R.transduce, R.addIndex + * @example + * + * var isOdd = (n) => n % 2 === 1; + * + * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4] + * + * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +module.exports = _curry2(function reject(pred, filterable) { + return filter(_complement(pred), filterable); +}); diff --git a/node_modules/ramda/src/remove.js b/node_modules/ramda/src/remove.js new file mode 100644 index 0000000..815682d --- /dev/null +++ b/node_modules/ramda/src/remove.js @@ -0,0 +1,27 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Removes the sub-list of `list` starting at index `start` and containing + * `count` elements. _Note that this is not destructive_: it returns a copy of + * the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} start The position to start removing elements + * @param {Number} count The number of elements to remove + * @param {Array} list The list to remove from + * @return {Array} A new Array with `count` elements from `start` removed. + * @example + * + * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8] + */ +module.exports = _curry3(function remove(start, count, list) { + var result = Array.prototype.slice.call(list, 0); + result.splice(start, count); + return result; +}); diff --git a/node_modules/ramda/src/repeat.js b/node_modules/ramda/src/repeat.js new file mode 100644 index 0000000..d33d560 --- /dev/null +++ b/node_modules/ramda/src/repeat.js @@ -0,0 +1,31 @@ +var _curry2 = require('./internal/_curry2'); +var always = require('./always'); +var times = require('./times'); + + +/** + * Returns a fixed list of size `n` containing a specified identical value. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig a -> n -> [a] + * @param {*} value The value to repeat. + * @param {Number} n The desired size of the output list. + * @return {Array} A new array containing `n` `value`s. + * @see R.times + * @example + * + * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi'] + * + * var obj = {}; + * var repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}] + * repeatedObjs[0] === repeatedObjs[1]; //=> true + * @symb R.repeat(a, 0) = [] + * @symb R.repeat(a, 1) = [a] + * @symb R.repeat(a, 2) = [a, a] + */ +module.exports = _curry2(function repeat(value, n) { + return times(always(value), n); +}); diff --git a/node_modules/ramda/src/replace.js b/node_modules/ramda/src/replace.js new file mode 100644 index 0000000..1cfdfd3 --- /dev/null +++ b/node_modules/ramda/src/replace.js @@ -0,0 +1,26 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Replace a substring or regex match in a string with a replacement. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category String + * @sig RegExp|String -> String -> String -> String + * @param {RegExp|String} pattern A regular expression or a substring to match. + * @param {String} replacement The string to replace the matches with. + * @param {String} str The String to do the search and replacement in. + * @return {String} The result. + * @example + * + * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo' + * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo' + * + * // Use the "g" (global) flag to replace all occurrences: + * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' + */ +module.exports = _curry3(function replace(regex, replacement, str) { + return str.replace(regex, replacement); +}); diff --git a/node_modules/ramda/src/reverse.js b/node_modules/ramda/src/reverse.js new file mode 100644 index 0000000..f3105ce --- /dev/null +++ b/node_modules/ramda/src/reverse.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); +var _isString = require('./internal/_isString'); + + +/** + * Returns a new list or string with the elements or characters in reverse + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {Array|String} list + * @return {Array|String} + * @example + * + * R.reverse([1, 2, 3]); //=> [3, 2, 1] + * R.reverse([1, 2]); //=> [2, 1] + * R.reverse([1]); //=> [1] + * R.reverse([]); //=> [] + * + * R.reverse('abc'); //=> 'cba' + * R.reverse('ab'); //=> 'ba' + * R.reverse('a'); //=> 'a' + * R.reverse(''); //=> '' + */ +module.exports = _curry1(function reverse(list) { + return _isString(list) ? list.split('').reverse().join('') : + Array.prototype.slice.call(list, 0).reverse(); +}); diff --git a/node_modules/ramda/src/scan.js b/node_modules/ramda/src/scan.js new file mode 100644 index 0000000..5eb901b --- /dev/null +++ b/node_modules/ramda/src/scan.js @@ -0,0 +1,35 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Scan is similar to [`reduce`](#reduce), but returns a list of successively + * reduced values from the left + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a,b -> a) -> a -> [b] -> [a] + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {Array} A list of all intermediately reduced values. + * @see R.reduce + * @example + * + * var numbers = [1, 2, 3, 4]; + * var factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24] + * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)] + */ +module.exports = _curry3(function scan(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = [acc]; + while (idx < len) { + acc = fn(acc, list[idx]); + result[idx + 1] = acc; + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/sequence.js b/node_modules/ramda/src/sequence.js new file mode 100644 index 0000000..2f9cfca --- /dev/null +++ b/node_modules/ramda/src/sequence.js @@ -0,0 +1,38 @@ +var _curry2 = require('./internal/_curry2'); +var ap = require('./ap'); +var map = require('./map'); +var prepend = require('./prepend'); +var reduceRight = require('./reduceRight'); + + +/** + * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) + * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an + * Applicative of Traversable. + * + * Dispatches to the `sequence` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a) + * @param {Function} of + * @param {*} traversable + * @return {*} + * @see R.traverse + * @example + * + * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) + * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() + * + * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] + * R.sequence(R.of, Nothing()); //=> [Nothing()] + */ +module.exports = _curry2(function sequence(of, traversable) { + return typeof traversable.sequence === 'function' ? + traversable.sequence(of) : + reduceRight(function(x, acc) { return ap(map(prepend, x), acc); }, + of([]), + traversable); +}); diff --git a/node_modules/ramda/src/set.js b/node_modules/ramda/src/set.js new file mode 100644 index 0000000..a83efe9 --- /dev/null +++ b/node_modules/ramda/src/set.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); +var always = require('./always'); +var over = require('./over'); + + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the given value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> a -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lensProp('x'); + * + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} + */ +module.exports = _curry3(function set(lens, v, x) { + return over(lens, always(v), x); +}); diff --git a/node_modules/ramda/src/slice.js b/node_modules/ramda/src/slice.js new file mode 100644 index 0000000..16f85b4 --- /dev/null +++ b/node_modules/ramda/src/slice.js @@ -0,0 +1,31 @@ +var _checkForMethod = require('./internal/_checkForMethod'); +var _curry3 = require('./internal/_curry3'); + + +/** + * Returns the elements of the given list or string (or object with a `slice` + * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). + * + * Dispatches to the `slice` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @sig Number -> Number -> String -> String + * @param {Number} fromIndex The start index (inclusive). + * @param {Number} toIndex The end index (exclusive). + * @param {*} list + * @return {*} + * @example + * + * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] + * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] + * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(0, 3, 'ramda'); //=> 'ram' + */ +module.exports = _curry3(_checkForMethod('slice', function slice(fromIndex, toIndex, list) { + return Array.prototype.slice.call(list, fromIndex, toIndex); +})); diff --git a/node_modules/ramda/src/sort.js b/node_modules/ramda/src/sort.js new file mode 100644 index 0000000..1132fc8 --- /dev/null +++ b/node_modules/ramda/src/sort.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a copy of the list, sorted according to the comparator function, + * which should accept two values at a time and return a negative number if the + * first value is smaller, a positive number if it's larger, and zero if they + * are equal. Please note that this is a **copy** of the list. It does not + * modify the original. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a,a -> Number) -> [a] -> [a] + * @param {Function} comparator A sorting function :: a -> b -> Int + * @param {Array} list The list to sort + * @return {Array} a new array with its elements sorted by the comparator function. + * @example + * + * var diff = function(a, b) { return a - b; }; + * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] + */ +module.exports = _curry2(function sort(comparator, list) { + return Array.prototype.slice.call(list, 0).sort(comparator); +}); diff --git a/node_modules/ramda/src/sortBy.js b/node_modules/ramda/src/sortBy.js new file mode 100644 index 0000000..7351e3b --- /dev/null +++ b/node_modules/ramda/src/sortBy.js @@ -0,0 +1,42 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Sorts the list according to the supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord b => (a -> b) -> [a] -> [a] + * @param {Function} fn + * @param {Array} list The list to sort. + * @return {Array} A new list sorted by the keys generated by `fn`. + * @example + * + * var sortByFirstItem = R.sortBy(R.prop(0)); + * var sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name'))); + * var pairs = [[-1, 1], [-2, 2], [-3, 3]]; + * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]] + * var alice = { + * name: 'ALICE', + * age: 101 + * }; + * var bob = { + * name: 'Bob', + * age: -10 + * }; + * var clara = { + * name: 'clara', + * age: 314.159 + * }; + * var people = [clara, bob, alice]; + * sortByNameCaseInsensitive(people); //=> [alice, bob, clara] + */ +module.exports = _curry2(function sortBy(fn, list) { + return Array.prototype.slice.call(list, 0).sort(function(a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; + }); +}); diff --git a/node_modules/ramda/src/sortWith.js b/node_modules/ramda/src/sortWith.js new file mode 100644 index 0000000..3dac50c --- /dev/null +++ b/node_modules/ramda/src/sortWith.js @@ -0,0 +1,46 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Sorts a list according to a list of comparators. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Relation + * @sig [a -> a -> Number] -> [a] -> [a] + * @param {Array} functions A list of comparator functions. + * @param {Array} list The list to sort. + * @return {Array} A new list sorted according to the comarator functions. + * @example + * + * var alice = { + * name: 'alice', + * age: 40 + * }; + * var bob = { + * name: 'bob', + * age: 30 + * }; + * var clara = { + * name: 'clara', + * age: 40 + * }; + * var people = [clara, bob, alice]; + * var ageNameSort = R.sortWith([ + * R.descend(R.prop('age')), + * R.ascend(R.prop('name')) + * ]); + * ageNameSort(people); //=> [alice, clara, bob] + */ +module.exports = _curry2(function sortWith(fns, list) { + return Array.prototype.slice.call(list, 0).sort(function(a, b) { + var result = 0; + var i = 0; + while (result === 0 && i < fns.length) { + result = fns[i](a, b); + i += 1; + } + return result; + }); +}); diff --git a/node_modules/ramda/src/split.js b/node_modules/ramda/src/split.js new file mode 100644 index 0000000..70c4318 --- /dev/null +++ b/node_modules/ramda/src/split.js @@ -0,0 +1,24 @@ +var invoker = require('./invoker'); + + +/** + * Splits a string into an array of strings based on the given + * separator. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig (String | RegExp) -> String -> [String] + * @param {String|RegExp} sep The pattern. + * @param {String} str The string to separate into an array. + * @return {Array} The array of strings from `str` separated by `str`. + * @see R.join + * @example + * + * var pathComponents = R.split('/'); + * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node'] + * + * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] + */ +module.exports = invoker(1, 'split'); diff --git a/node_modules/ramda/src/splitAt.js b/node_modules/ramda/src/splitAt.js new file mode 100644 index 0000000..9176e18 --- /dev/null +++ b/node_modules/ramda/src/splitAt.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); +var length = require('./length'); +var slice = require('./slice'); + + +/** + * Splits a given list or string at a given index. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig Number -> [a] -> [[a], [a]] + * @sig Number -> String -> [String, String] + * @param {Number} index The index where the array/string is split. + * @param {Array|String} array The array/string to be split. + * @return {Array} + * @example + * + * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] + * R.splitAt(5, 'hello world'); //=> ['hello', ' world'] + * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r'] + */ +module.exports = _curry2(function splitAt(index, array) { + return [slice(0, index, array), slice(index, length(array), array)]; +}); diff --git a/node_modules/ramda/src/splitEvery.js b/node_modules/ramda/src/splitEvery.js new file mode 100644 index 0000000..0f0d8f9 --- /dev/null +++ b/node_modules/ramda/src/splitEvery.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); +var slice = require('./slice'); + + +/** + * Splits a collection into slices of the specified length. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @sig Number -> String -> [String] + * @param {Number} n + * @param {Array} list + * @return {Array} + * @example + * + * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] + * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz'] + */ +module.exports = _curry2(function splitEvery(n, list) { + if (n <= 0) { + throw new Error('First argument to splitEvery must be a positive integer'); + } + var result = []; + var idx = 0; + while (idx < list.length) { + result.push(slice(idx, idx += n, list)); + } + return result; +}); diff --git a/node_modules/ramda/src/splitWhen.js b/node_modules/ramda/src/splitWhen.js new file mode 100644 index 0000000..4255251 --- /dev/null +++ b/node_modules/ramda/src/splitWhen.js @@ -0,0 +1,34 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Takes a list and a predicate and returns a pair of lists with the following properties: + * + * - the result of concatenating the two output lists is equivalent to the input list; + * - none of the elements of the first output list satisfies the predicate; and + * - if the second output list is non-empty, its first element satisfies the predicate. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [[a], [a]] + * @param {Function} pred The predicate that determines where the array is split. + * @param {Array} list The array to be split. + * @return {Array} + * @example + * + * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] + */ +module.exports = _curry2(function splitWhen(pred, list) { + var idx = 0; + var len = list.length; + var prefix = []; + + while (idx < len && !pred(list[idx])) { + prefix.push(list[idx]); + idx += 1; + } + + return [prefix, Array.prototype.slice.call(list, idx)]; +}); diff --git a/node_modules/ramda/src/startsWith.js b/node_modules/ramda/src/startsWith.js new file mode 100644 index 0000000..59a065d --- /dev/null +++ b/node_modules/ramda/src/startsWith.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); +var equals = require('./equals'); +var take = require('./take'); + +/** + * Checks if a list starts with the provided values + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> Boolean + * @sig String -> Boolean + * @param {*} prefix + * @param {*} list + * @return {Boolean} + * @example + * + * R.startsWith('a', 'abc') //=> true + * R.startsWith('b', 'abc') //=> false + * R.startsWith(['a'], ['a', 'b', 'c']) //=> true + * R.startsWith(['b'], ['a', 'b', 'c']) //=> false + */ +module.exports = _curry2(function(prefix, list) { + return equals(take(prefix.length, list), prefix); +}); diff --git a/node_modules/ramda/src/subtract.js b/node_modules/ramda/src/subtract.js new file mode 100644 index 0000000..8ee1201 --- /dev/null +++ b/node_modules/ramda/src/subtract.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Subtracts its second argument from its first argument. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a - b`. + * @see R.add + * @example + * + * R.subtract(10, 8); //=> 2 + * + * var minus5 = R.subtract(R.__, 5); + * minus5(17); //=> 12 + * + * var complementaryAngle = R.subtract(90); + * complementaryAngle(30); //=> 60 + * complementaryAngle(72); //=> 18 + */ +module.exports = _curry2(function subtract(a, b) { + return Number(a) - Number(b); +}); diff --git a/node_modules/ramda/src/sum.js b/node_modules/ramda/src/sum.js new file mode 100644 index 0000000..309d8e6 --- /dev/null +++ b/node_modules/ramda/src/sum.js @@ -0,0 +1,20 @@ +var add = require('./add'); +var reduce = require('./reduce'); + + +/** + * Adds together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The sum of all the numbers in the list. + * @see R.reduce + * @example + * + * R.sum([2,4,6,8,100,1]); //=> 121 + */ +module.exports = reduce(add, 0); diff --git a/node_modules/ramda/src/symmetricDifference.js b/node_modules/ramda/src/symmetricDifference.js new file mode 100644 index 0000000..28ba217 --- /dev/null +++ b/node_modules/ramda/src/symmetricDifference.js @@ -0,0 +1,26 @@ +var _curry2 = require('./internal/_curry2'); +var concat = require('./concat'); +var difference = require('./difference'); + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifferenceWith, R.difference, R.differenceWith + * @example + * + * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] + * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2] + */ +module.exports = _curry2(function symmetricDifference(list1, list2) { + return concat(difference(list1, list2), difference(list2, list1)); +}); diff --git a/node_modules/ramda/src/symmetricDifferenceWith.js b/node_modules/ramda/src/symmetricDifferenceWith.js new file mode 100644 index 0000000..077898a --- /dev/null +++ b/node_modules/ramda/src/symmetricDifferenceWith.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); +var concat = require('./concat'); +var differenceWith = require('./differenceWith'); + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. Duplication is determined according to the value + * returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifference, R.difference, R.differenceWith + * @example + * + * var eqA = R.eqBy(R.prop('a')); + * var l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; + * var l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}]; + * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] + */ +module.exports = _curry3(function symmetricDifferenceWith(pred, list1, list2) { + return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1)); +}); diff --git a/node_modules/ramda/src/tail.js b/node_modules/ramda/src/tail.js new file mode 100644 index 0000000..d43b05c --- /dev/null +++ b/node_modules/ramda/src/tail.js @@ -0,0 +1,33 @@ +var _checkForMethod = require('./internal/_checkForMethod'); +var _curry1 = require('./internal/_curry1'); +var slice = require('./slice'); + + +/** + * Returns all but the first element of the given list or string (or object + * with a `tail` method). + * + * Dispatches to the `slice` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.head, R.init, R.last + * @example + * + * R.tail([1, 2, 3]); //=> [2, 3] + * R.tail([1, 2]); //=> [2] + * R.tail([1]); //=> [] + * R.tail([]); //=> [] + * + * R.tail('abc'); //=> 'bc' + * R.tail('ab'); //=> 'b' + * R.tail('a'); //=> '' + * R.tail(''); //=> '' + */ +module.exports = _curry1(_checkForMethod('tail', slice(1, Infinity))); diff --git a/node_modules/ramda/src/take.js b/node_modules/ramda/src/take.js new file mode 100644 index 0000000..38427f3 --- /dev/null +++ b/node_modules/ramda/src/take.js @@ -0,0 +1,52 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xtake = require('./internal/_xtake'); +var slice = require('./slice'); + + +/** + * Returns the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `take` method). + * + * Dispatches to the `take` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} + * @see R.drop + * @example + * + * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(3, 'ramda'); //=> 'ram' + * + * var personnel = [ + * 'Dave Brubeck', + * 'Paul Desmond', + * 'Eugene Wright', + * 'Joe Morello', + * 'Gerry Mulligan', + * 'Bob Bates', + * 'Joe Dodge', + * 'Ron Crotty' + * ]; + * + * var takeFive = R.take(5); + * takeFive(personnel); + * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan'] + * @symb R.take(-1, [a, b]) = [a, b] + * @symb R.take(0, [a, b]) = [] + * @symb R.take(1, [a, b]) = [a] + * @symb R.take(2, [a, b]) = [a, b] + */ +module.exports = _curry2(_dispatchable(['take'], _xtake, function take(n, xs) { + return slice(0, n < 0 ? Infinity : n, xs); +})); diff --git a/node_modules/ramda/src/takeLast.js b/node_modules/ramda/src/takeLast.js new file mode 100644 index 0000000..ebf403f --- /dev/null +++ b/node_modules/ramda/src/takeLast.js @@ -0,0 +1,29 @@ +var _curry2 = require('./internal/_curry2'); +var drop = require('./drop'); + + +/** + * Returns a new list containing the last `n` elements of the given list. + * If `n > list.length`, returns a list of `list.length` elements. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements to return. + * @param {Array} xs The collection to consider. + * @return {Array} + * @see R.dropLast + * @example + * + * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(3, 'ramda'); //=> 'mda' + */ +module.exports = _curry2(function takeLast(n, xs) { + return drop(n >= 0 ? xs.length - n : 0, xs); +}); diff --git a/node_modules/ramda/src/takeLastWhile.js b/node_modules/ramda/src/takeLastWhile.js new file mode 100644 index 0000000..1ae618c --- /dev/null +++ b/node_modules/ramda/src/takeLastWhile.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new list containing the last `n` elements of a given list, passing + * each value to the supplied predicate function, and terminating when the + * predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.dropLastWhile, R.addIndex + * @example + * + * var isNotOne = x => x !== 1; + * + * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] + */ +module.exports = _curry2(function takeLastWhile(fn, list) { + var idx = list.length - 1; + while (idx >= 0 && fn(list[idx])) { + idx -= 1; + } + return Array.prototype.slice.call(list, idx + 1); +}); diff --git a/node_modules/ramda/src/takeWhile.js b/node_modules/ramda/src/takeWhile.js new file mode 100644 index 0000000..471cb03 --- /dev/null +++ b/node_modules/ramda/src/takeWhile.js @@ -0,0 +1,39 @@ +var _curry2 = require('./internal/_curry2'); +var _dispatchable = require('./internal/_dispatchable'); +var _xtakeWhile = require('./internal/_xtakeWhile'); + + +/** + * Returns a new list containing the first `n` elements of a given list, + * passing each value to the supplied predicate function, and terminating when + * the predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * Dispatches to the `takeWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @param {Function} fn The function called per iteration. + * @param {Array} list The collection to iterate over. + * @return {Array} A new array. + * @see R.dropWhile, R.transduce, R.addIndex + * @example + * + * var isNotFour = x => x !== 4; + * + * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] + */ +module.exports = _curry2(_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len && fn(list[idx])) { + idx += 1; + } + return Array.prototype.slice.call(list, 0, idx); +})); diff --git a/node_modules/ramda/src/tap.js b/node_modules/ramda/src/tap.js new file mode 100644 index 0000000..69e22c3 --- /dev/null +++ b/node_modules/ramda/src/tap.js @@ -0,0 +1,25 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Runs the given function with the supplied object, then returns the object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> *) -> a -> a + * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away. + * @param {*} x + * @return {*} `x`. + * @example + * + * var sayX = x => console.log('x is ' + x); + * R.tap(sayX, 100); //=> 100 + * // logs 'x is 100' + * @symb R.tap(f, a) = a + */ +module.exports = _curry2(function tap(fn, x) { + fn(x); + return x; +}); diff --git a/node_modules/ramda/src/test.js b/node_modules/ramda/src/test.js new file mode 100644 index 0000000..ae78540 --- /dev/null +++ b/node_modules/ramda/src/test.js @@ -0,0 +1,29 @@ +var _cloneRegExp = require('./internal/_cloneRegExp'); +var _curry2 = require('./internal/_curry2'); +var _isRegExp = require('./internal/_isRegExp'); +var toString = require('./toString'); + + +/** + * Determines whether a given string matches a given regular expression. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category String + * @sig RegExp -> String -> Boolean + * @param {RegExp} pattern + * @param {String} str + * @return {Boolean} + * @see R.match + * @example + * + * R.test(/^x/, 'xyz'); //=> true + * R.test(/^y/, 'xyz'); //=> false + */ +module.exports = _curry2(function test(pattern, str) { + if (!_isRegExp(pattern)) { + throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern)); + } + return _cloneRegExp(pattern).test(str); +}); diff --git a/node_modules/ramda/src/times.js b/node_modules/ramda/src/times.js new file mode 100644 index 0000000..49af254 --- /dev/null +++ b/node_modules/ramda/src/times.js @@ -0,0 +1,41 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Calls an input function `n` times, returning an array containing the results + * of those function calls. + * + * `fn` is passed one argument: The current value of `n`, which begins at `0` + * and is gradually incremented to `n - 1`. + * + * @func + * @memberOf R + * @since v0.2.3 + * @category List + * @sig (Number -> a) -> Number -> [a] + * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`. + * @param {Number} n A value between `0` and `n - 1`. Increments after each function call. + * @return {Array} An array containing the return values of all calls to `fn`. + * @see R.repeat + * @example + * + * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4] + * @symb R.times(f, 0) = [] + * @symb R.times(f, 1) = [f(0)] + * @symb R.times(f, 2) = [f(0), f(1)] + */ +module.exports = _curry2(function times(fn, n) { + var len = Number(n); + var idx = 0; + var list; + + if (len < 0 || isNaN(len)) { + throw new RangeError('n must be a non-negative number'); + } + list = new Array(len); + while (idx < len) { + list[idx] = fn(idx); + idx += 1; + } + return list; +}); diff --git a/node_modules/ramda/src/toLower.js b/node_modules/ramda/src/toLower.js new file mode 100644 index 0000000..eede0fe --- /dev/null +++ b/node_modules/ramda/src/toLower.js @@ -0,0 +1,19 @@ +var invoker = require('./invoker'); + + +/** + * The lower case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to lower case. + * @return {String} The lower case version of `str`. + * @see R.toUpper + * @example + * + * R.toLower('XYZ'); //=> 'xyz' + */ +module.exports = invoker(0, 'toLowerCase'); diff --git a/node_modules/ramda/src/toPairs.js b/node_modules/ramda/src/toPairs.js new file mode 100644 index 0000000..033228d --- /dev/null +++ b/node_modules/ramda/src/toPairs.js @@ -0,0 +1,31 @@ +var _curry1 = require('./internal/_curry1'); +var _has = require('./internal/_has'); + + +/** + * Converts an object into an array of key, value arrays. Only the object's + * own properties are used. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own properties. + * @see R.fromPairs + * @example + * + * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] + */ +module.exports = _curry1(function toPairs(obj) { + var pairs = []; + for (var prop in obj) { + if (_has(prop, obj)) { + pairs[pairs.length] = [prop, obj[prop]]; + } + } + return pairs; +}); diff --git a/node_modules/ramda/src/toPairsIn.js b/node_modules/ramda/src/toPairsIn.js new file mode 100644 index 0000000..3f1b2eb --- /dev/null +++ b/node_modules/ramda/src/toPairsIn.js @@ -0,0 +1,31 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Converts an object into an array of key, value arrays. The object's own + * properties and prototype properties are used. Note that the order of the + * output array is not guaranteed to be consistent across different JS + * platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own + * and prototype properties. + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.toPairsIn(f); //=> [['x','X'], ['y','Y']] + */ +module.exports = _curry1(function toPairsIn(obj) { + var pairs = []; + for (var prop in obj) { + pairs[pairs.length] = [prop, obj[prop]]; + } + return pairs; +}); diff --git a/node_modules/ramda/src/toString.js b/node_modules/ramda/src/toString.js new file mode 100644 index 0000000..e9aa904 --- /dev/null +++ b/node_modules/ramda/src/toString.js @@ -0,0 +1,41 @@ +var _curry1 = require('./internal/_curry1'); +var _toString = require('./internal/_toString'); + + +/** + * Returns the string representation of the given value. `eval`'ing the output + * should result in a value equivalent to the input value. Many of the built-in + * `toString` methods do not satisfy this requirement. + * + * If the given value is an `[object Object]` with a `toString` method other + * than `Object.prototype.toString`, this method is invoked with no arguments + * to produce the return value. This means user-defined constructor functions + * can provide a suitable `toString` method. For example: + * + * function Point(x, y) { + * this.x = x; + * this.y = y; + * } + * + * Point.prototype.toString = function() { + * return 'new Point(' + this.x + ', ' + this.y + ')'; + * }; + * + * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)' + * + * @func + * @memberOf R + * @since v0.14.0 + * @category String + * @sig * -> String + * @param {*} val + * @return {String} + * @example + * + * R.toString(42); //=> '42' + * R.toString('abc'); //=> '"abc"' + * R.toString([1, 2, 3]); //=> '[1, 2, 3]' + * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}' + * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' + */ +module.exports = _curry1(function toString(val) { return _toString(val, []); }); diff --git a/node_modules/ramda/src/toUpper.js b/node_modules/ramda/src/toUpper.js new file mode 100644 index 0000000..a72f4f2 --- /dev/null +++ b/node_modules/ramda/src/toUpper.js @@ -0,0 +1,19 @@ +var invoker = require('./invoker'); + + +/** + * The upper case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to upper case. + * @return {String} The upper case version of `str`. + * @see R.toLower + * @example + * + * R.toUpper('abc'); //=> 'ABC' + */ +module.exports = invoker(0, 'toUpperCase'); diff --git a/node_modules/ramda/src/transduce.js b/node_modules/ramda/src/transduce.js new file mode 100644 index 0000000..b1ee300 --- /dev/null +++ b/node_modules/ramda/src/transduce.js @@ -0,0 +1,55 @@ +var _reduce = require('./internal/_reduce'); +var _xwrap = require('./internal/_xwrap'); +var curryN = require('./curryN'); + + +/** + * Initializes a transducer using supplied iterator function. Returns a single + * item by iterating through the list, successively calling the transformed + * iterator function and passing it an accumulator value and the current value + * from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It will be + * wrapped as a transformer to initialize the transducer. A transformer can be + * passed directly in place of an iterator function. In both cases, iteration + * may be stopped early with the [`R.reduced`](#reduced) function. + * + * A transducer is a function that accepts a transformer and returns a + * transformer and can be composed directly. + * + * A transformer is an an object that provides a 2-arity reducing iterator + * function, step, 0-arity initial value function, init, and 1-arity result + * extraction function, result. The step function is used as the iterator + * function in reduce. The result function is used to convert the final + * accumulator into the return type and in most cases is + * [`R.identity`](#identity). The init function can be used to provide an + * initial accumulator, but is ignored by transduce. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. Wrapped as transformer, if necessary, and used to + * initialize the transducer + * @param {*} acc The initial accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced, R.into + * @example + * + * var numbers = [1, 2, 3, 4]; + * var transducer = R.compose(R.map(R.add(1)), R.take(2)); + * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] + * + * var isOdd = (x) => x % 2 === 1; + * var firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); + * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] + */ +module.exports = curryN(4, function transduce(xf, fn, acc, list) { + return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list); +}); diff --git a/node_modules/ramda/src/transpose.js b/node_modules/ramda/src/transpose.js new file mode 100644 index 0000000..ca2ad6e --- /dev/null +++ b/node_modules/ramda/src/transpose.js @@ -0,0 +1,44 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Transposes the rows and columns of a 2D list. + * When passed a list of `n` lists of length `x`, + * returns a list of `x` lists of length `n`. + * + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [[a]] -> [[a]] + * @param {Array} list A 2D list + * @return {Array} A 2D list + * @example + * + * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] + * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * + * // If some of the rows are shorter than the following rows, their elements are skipped: + * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] + * @symb R.transpose([[a], [b], [c]]) = [a, b, c] + * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] + * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] + */ +module.exports = _curry1(function transpose(outerlist) { + var i = 0; + var result = []; + while (i < outerlist.length) { + var innerlist = outerlist[i]; + var j = 0; + while (j < innerlist.length) { + if (typeof result[j] === 'undefined') { + result[j] = []; + } + result[j].push(innerlist[j]); + j += 1; + } + i += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/traverse.js b/node_modules/ramda/src/traverse.js new file mode 100644 index 0000000..9ab6c74 --- /dev/null +++ b/node_modules/ramda/src/traverse.js @@ -0,0 +1,36 @@ +var _curry3 = require('./internal/_curry3'); +var map = require('./map'); +var sequence = require('./sequence'); + + +/** + * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning + * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable), + * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative + * into an Applicative of Traversable. + * + * Dispatches to the `sequence` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b) + * @param {Function} of + * @param {Function} f + * @param {*} traversable + * @return {*} + * @see R.sequence + * @example + * + * // Returns `Nothing` if the given divisor is `0` + * safeDiv = n => d => d === 0 ? Nothing() : Just(n / d) + * + * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Just([5, 2.5, 2]) + * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Nothing + */ +module.exports = _curry3(function traverse(of, f, traversable) { + return typeof traversable['fantasy-land/traverse'] === 'function' ? + traversable['fantasy-land/traverse'](f, of) : + sequence(of, map(f, traversable)); +}); diff --git a/node_modules/ramda/src/trim.js b/node_modules/ramda/src/trim.js new file mode 100644 index 0000000..fb9e5f3 --- /dev/null +++ b/node_modules/ramda/src/trim.js @@ -0,0 +1,36 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Removes (strips) whitespace from both ends of the string. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category String + * @sig String -> String + * @param {String} str The string to trim. + * @return {String} Trimmed version of `str`. + * @example + * + * R.trim(' xyz '); //=> 'xyz' + * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] + */ +module.exports = (function() { + var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + + '\u2029\uFEFF'; + var zeroWidth = '\u200b'; + var hasProtoTrim = (typeof String.prototype.trim === 'function'); + if (!hasProtoTrim || (ws.trim() || !zeroWidth.trim())) { + return _curry1(function trim(str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); + }); + } else { + return _curry1(function trim(str) { + return str.trim(); + }); + } +}()); diff --git a/node_modules/ramda/src/tryCatch.js b/node_modules/ramda/src/tryCatch.js new file mode 100644 index 0000000..799603c --- /dev/null +++ b/node_modules/ramda/src/tryCatch.js @@ -0,0 +1,35 @@ +var _arity = require('./internal/_arity'); +var _concat = require('./internal/_concat'); +var _curry2 = require('./internal/_curry2'); + + +/** + * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned + * function evaluates the `tryer`; if it does not throw, it simply returns the + * result. If the `tryer` *does* throw, the returned function evaluates the + * `catcher` function and returns its result. Note that for effective + * composition with this function, both the `tryer` and `catcher` functions + * must return the same type of results. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a) + * @param {Function} tryer The function that may throw. + * @param {Function} catcher The function that will be evaluated if `tryer` throws. + * @return {Function} A new function that will catch exceptions and send then to the catcher. + * @example + * + * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true + * R.tryCatch(R.prop('x'), R.F)(null); //=> false + */ +module.exports = _curry2(function _tryCatch(tryer, catcher) { + return _arity(tryer.length, function() { + try { + return tryer.apply(this, arguments); + } catch (e) { + return catcher.apply(this, _concat([e], arguments)); + } + }); +}); diff --git a/node_modules/ramda/src/type.js b/node_modules/ramda/src/type.js new file mode 100644 index 0000000..b16855c --- /dev/null +++ b/node_modules/ramda/src/type.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Gives a single-word string description of the (native) type of a value, + * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not + * attempt to distinguish user Object types any further, reporting them all as + * 'Object'. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Type + * @sig (* -> {*}) -> String + * @param {*} val The value to test + * @return {String} + * @example + * + * R.type({}); //=> "Object" + * R.type(1); //=> "Number" + * R.type(false); //=> "Boolean" + * R.type('s'); //=> "String" + * R.type(null); //=> "Null" + * R.type([]); //=> "Array" + * R.type(/[A-z]/); //=> "RegExp" + * R.type(() => {}); //=> "Function" + */ +module.exports = _curry1(function type(val) { + return val === null ? 'Null' : + val === undefined ? 'Undefined' : + Object.prototype.toString.call(val).slice(8, -1); +}); diff --git a/node_modules/ramda/src/unapply.js b/node_modules/ramda/src/unapply.js new file mode 100644 index 0000000..b988cbc --- /dev/null +++ b/node_modules/ramda/src/unapply.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Takes a function `fn`, which takes a single array argument, and returns a + * function which: + * + * - takes any number of positional arguments; + * - passes these arguments to `fn` as an array; and + * - returns the result. + * + * In other words, `R.unapply` derives a variadic function from a function which + * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply). + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Function + * @sig ([*...] -> a) -> (*... -> a) + * @param {Function} fn + * @return {Function} + * @see R.apply + * @example + * + * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]' + * @symb R.unapply(f)(a, b) = f([a, b]) + */ +module.exports = _curry1(function unapply(fn) { + return function() { + return fn(Array.prototype.slice.call(arguments, 0)); + }; +}); diff --git a/node_modules/ramda/src/unary.js b/node_modules/ramda/src/unary.js new file mode 100644 index 0000000..b21c6d0 --- /dev/null +++ b/node_modules/ramda/src/unary.js @@ -0,0 +1,35 @@ +var _curry1 = require('./internal/_curry1'); +var nAry = require('./nAry'); + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 1 parameter. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> b) -> (a -> b) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 1. + * @see R.binary, R.nAry + * @example + * + * var takesTwoArgs = function(a, b) { + * return [a, b]; + * }; + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * var takesOneArg = R.unary(takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only 1 argument is passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.unary(f)(a, b, c) = f(a) + */ +module.exports = _curry1(function unary(fn) { + return nAry(1, fn); +}); diff --git a/node_modules/ramda/src/uncurryN.js b/node_modules/ramda/src/uncurryN.js new file mode 100644 index 0000000..8611e4f --- /dev/null +++ b/node_modules/ramda/src/uncurryN.js @@ -0,0 +1,38 @@ +var _curry2 = require('./internal/_curry2'); +var curryN = require('./curryN'); + + +/** + * Returns a function of arity `n` from a (manually) curried function. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Function + * @sig Number -> (a -> b) -> (a -> c) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to uncurry. + * @return {Function} A new function. + * @see R.curry + * @example + * + * var addFour = a => b => c => d => a + b + c + d; + * + * var uncurriedAddFour = R.uncurryN(4, addFour); + * uncurriedAddFour(1, 2, 3, 4); //=> 10 + */ +module.exports = _curry2(function uncurryN(depth, fn) { + return curryN(depth, function() { + var currentDepth = 1; + var value = fn; + var idx = 0; + var endIdx; + while (currentDepth <= depth && typeof value === 'function') { + endIdx = currentDepth === depth ? arguments.length : idx + value.length; + value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); + currentDepth += 1; + idx = endIdx; + } + return value; + }); +}); diff --git a/node_modules/ramda/src/unfold.js b/node_modules/ramda/src/unfold.js new file mode 100644 index 0000000..d3af149 --- /dev/null +++ b/node_modules/ramda/src/unfold.js @@ -0,0 +1,37 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Builds a list from a seed value. Accepts an iterator function, which returns + * either false to stop iteration or an array of length 2 containing the value + * to add to the resulting list and the seed to be used in the next call to the + * iterator function. + * + * The iterator function receives one argument: *(seed)*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a -> [b]) -> * -> [b] + * @param {Function} fn The iterator function. receives one argument, `seed`, and returns + * either false to quit iteration or an array of length two to proceed. The element + * at index 0 of this array will be added to the resulting array, and the element + * at index 1 will be passed to the next call to `fn`. + * @param {*} seed The seed value. + * @return {Array} The final list. + * @example + * + * var f = n => n > 50 ? false : [-n, n + 10]; + * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50] + * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...] + */ +module.exports = _curry2(function unfold(fn, seed) { + var pair = fn(seed); + var result = []; + while (pair && pair.length) { + result[result.length] = pair[0]; + pair = fn(pair[1]); + } + return result; +}); diff --git a/node_modules/ramda/src/union.js b/node_modules/ramda/src/union.js new file mode 100644 index 0000000..669298f --- /dev/null +++ b/node_modules/ramda/src/union.js @@ -0,0 +1,24 @@ +var _concat = require('./internal/_concat'); +var _curry2 = require('./internal/_curry2'); +var compose = require('./compose'); +var uniq = require('./uniq'); + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @example + * + * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4] + */ +module.exports = _curry2(compose(uniq, _concat)); diff --git a/node_modules/ramda/src/unionWith.js b/node_modules/ramda/src/unionWith.js new file mode 100644 index 0000000..6d9254d --- /dev/null +++ b/node_modules/ramda/src/unionWith.js @@ -0,0 +1,30 @@ +var _concat = require('./internal/_concat'); +var _curry3 = require('./internal/_curry3'); +var uniqWith = require('./uniqWith'); + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. Duplication is determined according to the value returned by + * applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> a -> Boolean) -> [*] -> [*] -> [*] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @see R.union + * @example + * + * var l1 = [{a: 1}, {a: 2}]; + * var l2 = [{a: 1}, {a: 4}]; + * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] + */ +module.exports = _curry3(function unionWith(pred, list1, list2) { + return uniqWith(pred, _concat(list1, list2)); +}); diff --git a/node_modules/ramda/src/uniq.js b/node_modules/ramda/src/uniq.js new file mode 100644 index 0000000..1501a86 --- /dev/null +++ b/node_modules/ramda/src/uniq.js @@ -0,0 +1,22 @@ +var identity = require('./identity'); +var uniqBy = require('./uniqBy'); + + +/** + * Returns a new list containing only one copy of each element in the original + * list. [`R.equals`](#equals) is used to determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniq([1, 1, 2, 1]); //=> [1, 2] + * R.uniq([1, '1']); //=> [1, '1'] + * R.uniq([[42], [42]]); //=> [[42]] + */ +module.exports = uniqBy(identity); diff --git a/node_modules/ramda/src/uniqBy.js b/node_modules/ramda/src/uniqBy.js new file mode 100644 index 0000000..1ada181 --- /dev/null +++ b/node_modules/ramda/src/uniqBy.js @@ -0,0 +1,38 @@ +var _Set = require('./internal/_Set'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied function to + * each list element. Prefers the first item if the supplied function produces + * the same value on two items. [`R.equals`](#equals) is used for comparison. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> b) -> [a] -> [a] + * @param {Function} fn A function used to produce a value to use during comparisons. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10] + */ +module.exports = _curry2(function uniqBy(fn, list) { + var set = new _Set(); + var result = []; + var idx = 0; + var appliedItem, item; + + while (idx < list.length) { + item = list[idx]; + appliedItem = fn(item); + if (set.add(appliedItem)) { + result.push(item); + } + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/uniqWith.js b/node_modules/ramda/src/uniqWith.js new file mode 100644 index 0000000..8553e72 --- /dev/null +++ b/node_modules/ramda/src/uniqWith.js @@ -0,0 +1,40 @@ +var _containsWith = require('./internal/_containsWith'); +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied predicate to + * two list elements. Prefers the first item if two items compare equal based + * on the predicate. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category List + * @sig (a, a -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * var strEq = R.eqBy(String); + * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2] + * R.uniqWith(strEq)([{}, {}]); //=> [{}] + * R.uniqWith(strEq)([1, '1', 1]); //=> [1] + * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] + */ +module.exports = _curry2(function uniqWith(pred, list) { + var idx = 0; + var len = list.length; + var result = []; + var item; + while (idx < len) { + item = list[idx]; + if (!_containsWith(pred, item, result)) { + result[result.length] = item; + } + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/unless.js b/node_modules/ramda/src/unless.js new file mode 100644 index 0000000..0676611 --- /dev/null +++ b/node_modules/ramda/src/unless.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is not satisfied, the function will return the result of + * calling the `whenFalseFn` function with the same argument. If the predicate + * is satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates + * to a falsy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenFalseFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`. + * @see R.ifElse, R.when + * @example + * + * let safeInc = R.unless(R.isNil, R.inc); + * safeInc(null); //=> null + * safeInc(1); //=> 2 + */ +module.exports = _curry3(function unless(pred, whenFalseFn, x) { + return pred(x) ? x : whenFalseFn(x); +}); diff --git a/node_modules/ramda/src/unnest.js b/node_modules/ramda/src/unnest.js new file mode 100644 index 0000000..6562d0a --- /dev/null +++ b/node_modules/ramda/src/unnest.js @@ -0,0 +1,22 @@ +var _identity = require('./internal/_identity'); +var chain = require('./chain'); + + +/** + * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from + * any [Chain](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain c => c (c a) -> c a + * @param {*} list + * @return {*} + * @see R.flatten, R.chain + * @example + * + * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] + * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] + */ +module.exports = chain(_identity); diff --git a/node_modules/ramda/src/until.js b/node_modules/ramda/src/until.js new file mode 100644 index 0000000..8c09c93 --- /dev/null +++ b/node_modules/ramda/src/until.js @@ -0,0 +1,29 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Takes a predicate, a transformation function, and an initial value, + * and returns a value of the same type as the initial value. + * It does so by applying the transformation until the predicate is satisfied, + * at which point it returns the satisfactory value. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} fn The iterator function + * @param {*} init Initial value + * @return {*} Final value that satisfies predicate + * @example + * + * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128 + */ +module.exports = _curry3(function until(pred, fn, init) { + var val = init; + while (!pred(val)) { + val = fn(val); + } + return val; +}); diff --git a/node_modules/ramda/src/update.js b/node_modules/ramda/src/update.js new file mode 100644 index 0000000..4678265 --- /dev/null +++ b/node_modules/ramda/src/update.js @@ -0,0 +1,30 @@ +var _curry3 = require('./internal/_curry3'); +var adjust = require('./adjust'); +var always = require('./always'); + + +/** + * Returns a new copy of the array with the element at the provided index + * replaced with the given value. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} idx The index to update. + * @param {*} x The value to exist at the given index of the returned array. + * @param {Array|Arguments} list The source array-like object to be updated. + * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`. + * @see R.adjust + * @example + * + * R.update(1, 11, [0, 1, 2]); //=> [0, 11, 2] + * R.update(1)(11)([0, 1, 2]); //=> [0, 11, 2] + * @symb R.update(-1, a, [b, c]) = [b, a] + * @symb R.update(0, a, [b, c]) = [a, c] + * @symb R.update(1, a, [b, c]) = [b, a] + */ +module.exports = _curry3(function update(idx, x, list) { + return adjust(always(x), idx, list); +}); diff --git a/node_modules/ramda/src/useWith.js b/node_modules/ramda/src/useWith.js new file mode 100644 index 0000000..c256704 --- /dev/null +++ b/node_modules/ramda/src/useWith.js @@ -0,0 +1,44 @@ +var _curry2 = require('./internal/_curry2'); +var curryN = require('./curryN'); + + +/** + * Accepts a function `fn` and a list of transformer functions and returns a + * new curried function. When the new function is invoked, it calls the + * function `fn` with parameters consisting of the result of calling each + * supplied handler on successive arguments to the new function. + * + * If more arguments are passed to the returned function than transformer + * functions, those arguments are passed directly to `fn` as additional + * parameters. If you expect additional arguments that don't need to be + * transformed, although you can ignore them, it's best to pass an identity + * function so that the new function reports the correct arity. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (x1 -> x2 -> ... -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} fn The function to wrap. + * @param {Array} transformers A list of transformer functions + * @return {Function} The wrapped function. + * @see R.converge + * @example + * + * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 + * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 + * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 + * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 + * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) + */ +module.exports = _curry2(function useWith(fn, transformers) { + return curryN(transformers.length, function() { + var args = []; + var idx = 0; + while (idx < transformers.length) { + args.push(transformers[idx].call(this, arguments[idx])); + idx += 1; + } + return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); + }); +}); diff --git a/node_modules/ramda/src/values.js b/node_modules/ramda/src/values.js new file mode 100644 index 0000000..519f7e6 --- /dev/null +++ b/node_modules/ramda/src/values.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); +var keys = require('./keys'); + + +/** + * Returns a list of all the enumerable own properties of the supplied object. + * Note that the order of the output array is not guaranteed across different + * JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own properties. + * @see R.valuesIn, R.keys + * @example + * + * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] + */ +module.exports = _curry1(function values(obj) { + var props = keys(obj); + var len = props.length; + var vals = []; + var idx = 0; + while (idx < len) { + vals[idx] = obj[props[idx]]; + idx += 1; + } + return vals; +}); diff --git a/node_modules/ramda/src/valuesIn.js b/node_modules/ramda/src/valuesIn.js new file mode 100644 index 0000000..6a0abe9 --- /dev/null +++ b/node_modules/ramda/src/valuesIn.js @@ -0,0 +1,32 @@ +var _curry1 = require('./internal/_curry1'); + + +/** + * Returns a list of all the properties, including prototype properties, of the + * supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own and prototype properties. + * @see R.values, R.keysIn + * @example + * + * var F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * var f = new F(); + * R.valuesIn(f); //=> ['X', 'Y'] + */ +module.exports = _curry1(function valuesIn(obj) { + var prop; + var vs = []; + for (prop in obj) { + vs[vs.length] = obj[prop]; + } + return vs; +}); diff --git a/node_modules/ramda/src/view.js b/node_modules/ramda/src/view.js new file mode 100644 index 0000000..fc020e9 --- /dev/null +++ b/node_modules/ramda/src/view.js @@ -0,0 +1,36 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Returns a "view" of the given data structure, determined by the given lens. + * The lens's focus determines which portion of the data structure is visible. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> s -> a + * @param {Lens} lens + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * var xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.view(xLens, {x: 4, y: 2}); //=> 4 + */ +module.exports = (function() { + // `Const` is a functor that effectively ignores the function given to `map`. + var Const = function(x) { + return {value: x, 'fantasy-land/map': function() { return this; }}; + }; + + return _curry2(function view(lens, x) { + // Using `Const` effectively ignores the setter function of the `lens`, + // leaving the value returned by the getter function unmodified. + return lens(Const)(x).value; + }); +}()); diff --git a/node_modules/ramda/src/when.js b/node_modules/ramda/src/when.js new file mode 100644 index 0000000..2b53f2c --- /dev/null +++ b/node_modules/ramda/src/when.js @@ -0,0 +1,34 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is satisfied, the function will return the result of calling + * the `whenTrueFn` function with the same argument. If the predicate is not + * satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenTrueFn A function to invoke when the `condition` + * evaluates to a truthy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenTrueFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`. + * @see R.ifElse, R.unless + * @example + * + * // truncate :: String -> String + * var truncate = R.when( + * R.propSatisfies(R.gt(R.__, 10), 'length'), + * R.pipe(R.take(10), R.append('…'), R.join('')) + * ); + * truncate('12345'); //=> '12345' + * truncate('0123456789ABC'); //=> '0123456789…' + */ +module.exports = _curry3(function when(pred, whenTrueFn, x) { + return pred(x) ? whenTrueFn(x) : x; +}); diff --git a/node_modules/ramda/src/where.js b/node_modules/ramda/src/where.js new file mode 100644 index 0000000..707ef09 --- /dev/null +++ b/node_modules/ramda/src/where.js @@ -0,0 +1,46 @@ +var _curry2 = require('./internal/_curry2'); +var _has = require('./internal/_has'); + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec. Each of the spec's own properties must be a predicate function. + * Each predicate is applied to the value of the corresponding property of the + * test object. `where` returns true if all the predicates return true, false + * otherwise. + * + * `where` is well suited to declaratively expressing constraints for other + * functions such as [`filter`](#filter) and [`find`](#find). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Object + * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @example + * + * // pred :: Object -> Boolean + * var pred = R.where({ + * a: R.equals('foo'), + * b: R.complement(R.equals('bar')), + * x: R.gt(R.__, 10), + * y: R.lt(R.__, 20) + * }); + * + * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true + * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false + */ +module.exports = _curry2(function where(spec, testObj) { + for (var prop in spec) { + if (_has(prop, spec) && !spec[prop](testObj[prop])) { + return false; + } + } + return true; +}); diff --git a/node_modules/ramda/src/whereEq.js b/node_modules/ramda/src/whereEq.js new file mode 100644 index 0000000..7b3bc80 --- /dev/null +++ b/node_modules/ramda/src/whereEq.js @@ -0,0 +1,37 @@ +var _curry2 = require('./internal/_curry2'); +var equals = require('./equals'); +var map = require('./map'); +var where = require('./where'); + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec, false otherwise. An object satisfies the spec if, for each of the + * spec's own properties, accessing that property of the object gives the same + * value (in [`R.equals`](#equals) terms) as accessing that property of the + * spec. + * + * `whereEq` is a specialization of [`where`](#where). + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @sig {String: *} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.where + * @example + * + * // pred :: Object -> Boolean + * var pred = R.whereEq({a: 1, b: 2}); + * + * pred({a: 1}); //=> false + * pred({a: 1, b: 2}); //=> true + * pred({a: 1, b: 2, c: 3}); //=> true + * pred({a: 1, b: 1}); //=> false + */ +module.exports = _curry2(function whereEq(spec, testObj) { + return where(map(equals, spec), testObj); +}); diff --git a/node_modules/ramda/src/without.js b/node_modules/ramda/src/without.js new file mode 100644 index 0000000..d7f9d1e --- /dev/null +++ b/node_modules/ramda/src/without.js @@ -0,0 +1,28 @@ +var _contains = require('./internal/_contains'); +var _curry2 = require('./internal/_curry2'); +var flip = require('./flip'); +var reject = require('./reject'); + + +/** + * Returns a new list without values in the first argument. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [a] -> [a] -> [a] + * @param {Array} list1 The values to be removed from `list2`. + * @param {Array} list2 The array to remove values from. + * @return {Array} The new array without values in `list1`. + * @see R.transduce, R.difference + * @example + * + * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4] + */ +module.exports = _curry2(function(xs, list) { + return reject(flip(_contains)(xs), list); +}); diff --git a/node_modules/ramda/src/xprod.js b/node_modules/ramda/src/xprod.js new file mode 100644 index 0000000..569a834 --- /dev/null +++ b/node_modules/ramda/src/xprod.js @@ -0,0 +1,37 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a new list out of the two supplied by creating each possible pair + * from the lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The list made by combining each possible pair from + * `as` and `bs` into pairs (`[a, b]`). + * @example + * + * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']] + * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]] + */ +module.exports = _curry2(function xprod(a, b) { // = xprodWith(prepend); (takes about 3 times as long...) + var idx = 0; + var ilen = a.length; + var j; + var jlen = b.length; + var result = []; + while (idx < ilen) { + j = 0; + while (j < jlen) { + result[result.length] = [a[idx], b[j]]; + j += 1; + } + idx += 1; + } + return result; +}); diff --git a/node_modules/ramda/src/zip.js b/node_modules/ramda/src/zip.js new file mode 100644 index 0000000..299c1ef --- /dev/null +++ b/node_modules/ramda/src/zip.js @@ -0,0 +1,32 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a new list out of the two supplied by pairing up equally-positioned + * items from both lists. The returned list is truncated to the length of the + * shorter of the two input lists. + * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`. + * @example + * + * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]] + */ +module.exports = _curry2(function zip(a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = [a[idx], b[idx]]; + idx += 1; + } + return rv; +}); diff --git a/node_modules/ramda/src/zipObj.js b/node_modules/ramda/src/zipObj.js new file mode 100644 index 0000000..b604282 --- /dev/null +++ b/node_modules/ramda/src/zipObj.js @@ -0,0 +1,30 @@ +var _curry2 = require('./internal/_curry2'); + + +/** + * Creates a new object out of a list of keys and a list of values. + * Key/value pairing is truncated to the length of the shorter of the two lists. + * Note: `zipObj` is equivalent to `pipe(zipWith(pair), fromPairs)`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [String] -> [*] -> {String: *} + * @param {Array} keys The array that will be properties on the output object. + * @param {Array} values The list of values on the output object. + * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`. + * @example + * + * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} + */ +module.exports = _curry2(function zipObj(keys, values) { + var idx = 0; + var len = Math.min(keys.length, values.length); + var out = {}; + while (idx < len) { + out[keys[idx]] = values[idx]; + idx += 1; + } + return out; +}); diff --git a/node_modules/ramda/src/zipWith.js b/node_modules/ramda/src/zipWith.js new file mode 100644 index 0000000..b8f786c --- /dev/null +++ b/node_modules/ramda/src/zipWith.js @@ -0,0 +1,37 @@ +var _curry3 = require('./internal/_curry3'); + + +/** + * Creates a new list out of the two supplied by applying the function to each + * equally-positioned pair in the lists. The returned list is truncated to the + * length of the shorter of the two input lists. + * + * @function + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a,b -> c) -> [a] -> [b] -> [c] + * @param {Function} fn The function used to combine the two elements into one value. + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by combining same-indexed elements of `list1` and `list2` + * using `fn`. + * @example + * + * var f = (x, y) => { + * // ... + * }; + * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']); + * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')] + * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)] + */ +module.exports = _curry3(function zipWith(fn, a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = fn(a[idx], b[idx]); + idx += 1; + } + return rv; +}); diff --git a/node_modules/readable-stream/.travis.yml b/node_modules/readable-stream/.travis.yml new file mode 100644 index 0000000..4099255 --- /dev/null +++ b/node_modules/readable-stream/.travis.yml @@ -0,0 +1,55 @@ +sudo: false +language: node_js +before_install: + - npm install -g npm@2 + - test $NPM_LEGACY && npm install -g npm@latest-3 || npm install npm -g +notifications: + email: false +matrix: + fast_finish: true + include: + - node_js: '0.8' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.10' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.11' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.12' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 1 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 2 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 3 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 4 + env: TASK=test + - node_js: 5 + env: TASK=test + - node_js: 6 + env: TASK=test + - node_js: 7 + env: TASK=test + - node_js: 8 + env: TASK=test + - node_js: 9 + env: TASK=test +script: "npm run $TASK" +env: + global: + - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= + - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/node_modules/readable-stream/CONTRIBUTING.md b/node_modules/readable-stream/CONTRIBUTING.md new file mode 100644 index 0000000..f478d58 --- /dev/null +++ b/node_modules/readable-stream/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +* (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +* (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +* (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +* (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + +## Moderation Policy + +The [Node.js Moderation Policy] applies to this WG. + +## Code of Conduct + +The [Node.js Code of Conduct][] applies to this WG. + +[Node.js Code of Conduct]: +https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md +[Node.js Moderation Policy]: +https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/node_modules/readable-stream/GOVERNANCE.md b/node_modules/readable-stream/GOVERNANCE.md new file mode 100644 index 0000000..16ffb93 --- /dev/null +++ b/node_modules/readable-stream/GOVERNANCE.md @@ -0,0 +1,136 @@ +### Streams Working Group + +The Node.js Streams is jointly governed by a Working Group +(WG) +that is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The readable-stream GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the readable-stream repository are +made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets occasionally on a Google Hangout On Air. A designated moderator +approved by the WG runs the meeting. Each meeting should be +published to YouTube. + +Items are added to the WG agenda that are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches; +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and sends it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus +Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision-making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require a majority consensus. See +"WG Membership" above. diff --git a/node_modules/readable-stream/LICENSE b/node_modules/readable-stream/LICENSE new file mode 100644 index 0000000..2873b3b --- /dev/null +++ b/node_modules/readable-stream/LICENSE @@ -0,0 +1,47 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" diff --git a/node_modules/readable-stream/README.md b/node_modules/readable-stream/README.md new file mode 100644 index 0000000..23fe3f3 --- /dev/null +++ b/node_modules/readable-stream/README.md @@ -0,0 +1,58 @@ +# readable-stream + +***Node-core v8.11.1 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) + + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) + + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) + +```bash +npm install --save readable-stream +``` + +***Node-core streams for userland*** + +This package is a mirror of the Streams2 and Streams3 implementations in +Node-core. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.11.1/docs/api/stream.html). + +If you want to guarantee a stable streams base, regardless of what version of +Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). + +As of version 2.0.0 **readable-stream** uses semantic versioning. + +# Streams Working Group + +`readable-stream` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + + +## Team Members + +* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> + - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B +* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> + - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 +* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> + - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D +* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> +* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> +* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> +* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> + - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E +* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com> diff --git a/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md new file mode 100644 index 0000000..83275f1 --- /dev/null +++ b/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md @@ -0,0 +1,60 @@ +# streams WG Meeting 2015-01-30 + +## Links + +* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg +* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 +* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ + +## Agenda + +Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. + +* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) +* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) +* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) +* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) + +## Minutes + +### adopt a charter + +* group: +1's all around + +### What versioning scheme should be adopted? +* group: +1’s 3.0.0 +* domenic+group: pulling in patches from other sources where appropriate +* mikeal: version independently, suggesting versions for io.js +* mikeal+domenic: work with TC to notify in advance of changes +simpler stream creation + +### streamline creation of streams +* sam: streamline creation of streams +* domenic: nice simple solution posted + but, we lose the opportunity to change the model + may not be backwards incompatible (double check keys) + + **action item:** domenic will check + +### remove implicit flowing of streams on(‘data’) +* add isFlowing / isPaused +* mikeal: worrying that we’re documenting polyfill methods – confuses users +* domenic: more reflective API is probably good, with warning labels for users +* new section for mad scientists (reflective stream access) +* calvin: name the “third state” +* mikeal: maybe borrow the name from whatwg? +* domenic: we’re missing the “third state” +* consensus: kind of difficult to name the third state +* mikeal: figure out differences in states / compat +* mathias: always flow on data – eliminates third state + * explore what it breaks + +**action items:** +* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) +* ask rod/build for infrastructure +* **chris**: explore the “flow on data” approach +* add isPaused/isFlowing +* add new docs section +* move isPaused to that section + + diff --git a/node_modules/readable-stream/duplex-browser.js b/node_modules/readable-stream/duplex-browser.js new file mode 100644 index 0000000..f8b2db8 --- /dev/null +++ b/node_modules/readable-stream/duplex-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_duplex.js'); diff --git a/node_modules/readable-stream/duplex.js b/node_modules/readable-stream/duplex.js new file mode 100644 index 0000000..46924cb --- /dev/null +++ b/node_modules/readable-stream/duplex.js @@ -0,0 +1 @@ +module.exports = require('./readable').Duplex diff --git a/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/readable-stream/lib/_stream_duplex.js new file mode 100644 index 0000000..a1ca813 --- /dev/null +++ b/node_modules/readable-stream/lib/_stream_duplex.js @@ -0,0 +1,131 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/readable-stream/lib/_stream_passthrough.js new file mode 100644 index 0000000..a9c8358 --- /dev/null +++ b/node_modules/readable-stream/lib/_stream_passthrough.js @@ -0,0 +1,47 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/readable-stream/lib/_stream_readable.js new file mode 100644 index 0000000..bf34ac6 --- /dev/null +++ b/node_modules/readable-stream/lib/_stream_readable.js @@ -0,0 +1,1019 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = require('./internal/streams/BufferList'); +var destroyImpl = require('./internal/streams/destroy'); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, unpipeInfo); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/readable-stream/lib/_stream_transform.js new file mode 100644 index 0000000..5d1f8b8 --- /dev/null +++ b/node_modules/readable-stream/lib/_stream_transform.js @@ -0,0 +1,214 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/readable-stream/lib/_stream_writable.js new file mode 100644 index 0000000..b3f4e85 --- /dev/null +++ b/node_modules/readable-stream/lib/_stream_writable.js @@ -0,0 +1,687 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = require('./internal/streams/destroy'); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = corkReq; + } else { + state.corkedRequestsFree = corkReq; + } +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/BufferList.js b/node_modules/readable-stream/lib/internal/streams/BufferList.js new file mode 100644 index 0000000..aefc68b --- /dev/null +++ b/node_modules/readable-stream/lib/internal/streams/BufferList.js @@ -0,0 +1,79 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = require('safe-buffer').Buffer; +var util = require('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + if (this.length === 1) return this.head.data; + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/destroy.js b/node_modules/readable-stream/lib/internal/streams/destroy.js new file mode 100644 index 0000000..5a0a0d8 --- /dev/null +++ b/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -0,0 +1,74 @@ +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + pna.nextTick(emitErrorNT, this, err); + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + pna.nextTick(emitErrorNT, _this, err); + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; \ No newline at end of file diff --git a/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/node_modules/readable-stream/lib/internal/streams/stream-browser.js new file mode 100644 index 0000000..9332a3f --- /dev/null +++ b/node_modules/readable-stream/lib/internal/streams/stream-browser.js @@ -0,0 +1 @@ +module.exports = require('events').EventEmitter; diff --git a/node_modules/readable-stream/lib/internal/streams/stream.js b/node_modules/readable-stream/lib/internal/streams/stream.js new file mode 100644 index 0000000..ce2ad5b --- /dev/null +++ b/node_modules/readable-stream/lib/internal/streams/stream.js @@ -0,0 +1 @@ +module.exports = require('stream'); diff --git a/node_modules/readable-stream/package.json b/node_modules/readable-stream/package.json new file mode 100644 index 0000000..581cc4a --- /dev/null +++ b/node_modules/readable-stream/package.json @@ -0,0 +1,81 @@ +{ + "_from": "readable-stream@^2.2.2", + "_id": "readable-stream@2.3.6", + "_inBundle": false, + "_integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "_location": "/readable-stream", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "readable-stream@^2.2.2", + "name": "readable-stream", + "escapedName": "readable-stream", + "rawSpec": "^2.2.2", + "saveSpec": null, + "fetchSpec": "^2.2.2" + }, + "_requiredBy": [ + "/concat-stream" + ], + "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "_shasum": "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf", + "_spec": "readable-stream@^2.2.2", + "_where": "/home/peter/www/prive/cypress-test/node_modules/concat-stream", + "browser": { + "util": false, + "./readable.js": "./readable-browser.js", + "./writable.js": "./writable-browser.js", + "./duplex.js": "./duplex-browser.js", + "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" + }, + "bugs": { + "url": "https://github.com/nodejs/readable-stream/issues" + }, + "bundleDependencies": false, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "deprecated": false, + "description": "Streams3, a user-land copy of the stream library from Node.js", + "devDependencies": { + "assert": "^1.4.0", + "babel-polyfill": "^6.9.1", + "buffer": "^4.9.0", + "lolex": "^2.3.2", + "nyc": "^6.4.0", + "tap": "^0.7.0", + "tape": "^4.8.0" + }, + "homepage": "https://github.com/nodejs/readable-stream#readme", + "keywords": [ + "readable", + "stream", + "pipe" + ], + "license": "MIT", + "main": "readable.js", + "name": "readable-stream", + "nyc": { + "include": [ + "lib/**.js" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/readable-stream.git" + }, + "scripts": { + "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", + "cover": "nyc npm test", + "report": "nyc report --reporter=lcov", + "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js" + }, + "version": "2.3.6" +} diff --git a/node_modules/readable-stream/passthrough.js b/node_modules/readable-stream/passthrough.js new file mode 100644 index 0000000..ffd791d --- /dev/null +++ b/node_modules/readable-stream/passthrough.js @@ -0,0 +1 @@ +module.exports = require('./readable').PassThrough diff --git a/node_modules/readable-stream/readable-browser.js b/node_modules/readable-stream/readable-browser.js new file mode 100644 index 0000000..e503725 --- /dev/null +++ b/node_modules/readable-stream/readable-browser.js @@ -0,0 +1,7 @@ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/readable-stream/readable.js b/node_modules/readable-stream/readable.js new file mode 100644 index 0000000..ec89ec5 --- /dev/null +++ b/node_modules/readable-stream/readable.js @@ -0,0 +1,19 @@ +var Stream = require('stream'); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = require('./lib/_stream_readable.js'); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = require('./lib/_stream_writable.js'); + exports.Duplex = require('./lib/_stream_duplex.js'); + exports.Transform = require('./lib/_stream_transform.js'); + exports.PassThrough = require('./lib/_stream_passthrough.js'); +} diff --git a/node_modules/readable-stream/transform.js b/node_modules/readable-stream/transform.js new file mode 100644 index 0000000..b1baba2 --- /dev/null +++ b/node_modules/readable-stream/transform.js @@ -0,0 +1 @@ +module.exports = require('./readable').Transform diff --git a/node_modules/readable-stream/writable-browser.js b/node_modules/readable-stream/writable-browser.js new file mode 100644 index 0000000..ebdde6a --- /dev/null +++ b/node_modules/readable-stream/writable-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_writable.js'); diff --git a/node_modules/readable-stream/writable.js b/node_modules/readable-stream/writable.js new file mode 100644 index 0000000..3211a6f --- /dev/null +++ b/node_modules/readable-stream/writable.js @@ -0,0 +1,8 @@ +var Stream = require("stream") +var Writable = require("./lib/_stream_writable.js") + +if (process.env.READABLE_STREAM === 'disable') { + module.exports = Stream && Stream.Writable || Writable +} else { + module.exports = Writable +} diff --git a/node_modules/repeating/index.js b/node_modules/repeating/index.js new file mode 100644 index 0000000..ccae0d7 --- /dev/null +++ b/node_modules/repeating/index.js @@ -0,0 +1,24 @@ +'use strict'; +var isFinite = require('is-finite'); + +module.exports = function (str, n) { + if (typeof str !== 'string') { + throw new TypeError('Expected `input` to be a string'); + } + + if (n < 0 || !isFinite(n)) { + throw new TypeError('Expected `count` to be a positive finite number'); + } + + var ret = ''; + + do { + if (n & 1) { + ret += str; + } + + str += str; + } while ((n >>= 1)); + + return ret; +}; diff --git a/node_modules/repeating/license b/node_modules/repeating/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/repeating/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/repeating/package.json b/node_modules/repeating/package.json new file mode 100644 index 0000000..ee5e1a9 --- /dev/null +++ b/node_modules/repeating/package.json @@ -0,0 +1,69 @@ +{ + "_from": "repeating@^2.0.0", + "_id": "repeating@2.0.1", + "_inBundle": false, + "_integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "_location": "/repeating", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "repeating@^2.0.0", + "name": "repeating", + "escapedName": "repeating", + "rawSpec": "^2.0.0", + "saveSpec": null, + "fetchSpec": "^2.0.0" + }, + "_requiredBy": [ + "/indent-string" + ], + "_resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "_shasum": "5214c53a926d3552707527fbab415dbc08d06dda", + "_spec": "repeating@^2.0.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/indent-string", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/repeating/issues" + }, + "bundleDependencies": false, + "dependencies": { + "is-finite": "^1.0.0" + }, + "deprecated": false, + "description": "Repeat a string - fast", + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/sindresorhus/repeating#readme", + "keywords": [ + "repeat", + "string", + "repeating", + "str", + "text", + "fill", + "pad" + ], + "license": "MIT", + "name": "repeating", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/repeating.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "2.0.1" +} diff --git a/node_modules/repeating/readme.md b/node_modules/repeating/readme.md new file mode 100644 index 0000000..06f0b69 --- /dev/null +++ b/node_modules/repeating/readme.md @@ -0,0 +1,30 @@ +# repeating [![Build Status](https://travis-ci.org/sindresorhus/repeating.svg?branch=master)](https://travis-ci.org/sindresorhus/repeating) + +> Repeat a string - fast + + +## Install + +``` +$ npm install --save repeating +``` + + +## Usage + +```js +const repeating = require('repeating'); + +repeating('unicorn ', 100); +//=> 'unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn unicorn ' +``` + + +## Related + +- [repeating-cli](https://github.com/sindresorhus/repeating-cli) - CLI for this module + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/request-progress/.editorconfig b/node_modules/request-progress/.editorconfig new file mode 100644 index 0000000..8bc4f10 --- /dev/null +++ b/node_modules/request-progress/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[package.json] +indent_size = 2 diff --git a/node_modules/request-progress/.jshintrc b/node_modules/request-progress/.jshintrc new file mode 100644 index 0000000..f2315d3 --- /dev/null +++ b/node_modules/request-progress/.jshintrc @@ -0,0 +1,63 @@ +{ + "predef": [ + "console", + "require", + "define", + "describe", + "it", + "before", + "beforeEach", + "after", + "afterEach" + ], + + "node": true, + "devel": true, + + "bitwise": true, + "curly": true, + "eqeqeq": false, + "forin": false, + "immed": true, + "latedef": false, + "newcap": true, + "noarg": true, + "noempty": false, + "nonew": true, + "plusplus": false, + "regexp": true, + "undef": true, + "unused": true, + "quotmark": "single", + "strict": true, + "trailing": true, + + "asi": false, + "boss": false, + "debug": false, + "eqnull": true, + "es5": false, + "esnext": false, + "evil": false, + "expr": true, + "funcscope": false, + "globalstrict": false, + "iterator": false, + "lastsemic": false, + "laxbreak": false, + "laxcomma": false, + "loopfunc": true, + "multistr": false, + "onecase": true, + "regexdash": false, + "scripturl": false, + "smarttabs": false, + "shadow": false, + "sub": false, + "supernew": false, + "validthis": false, + + "nomen": false, + "onevar": false, + "white": true +} diff --git a/node_modules/request-progress/.npmignore b/node_modules/request-progress/.npmignore new file mode 100644 index 0000000..7804a3b --- /dev/null +++ b/node_modules/request-progress/.npmignore @@ -0,0 +1,4 @@ +/node_modules +/npm-debug.* +/test/coverage + diff --git a/node_modules/request-progress/.travis.yml b/node_modules/request-progress/.travis.yml new file mode 100644 index 0000000..5dd2002 --- /dev/null +++ b/node_modules/request-progress/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "4" + - "5" +script: "npm run test-travis" diff --git a/node_modules/request-progress/LICENSE b/node_modules/request-progress/LICENSE new file mode 100644 index 0000000..92b561c --- /dev/null +++ b/node_modules/request-progress/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2012 IndigoUnited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/request-progress/README.md b/node_modules/request-progress/README.md new file mode 100644 index 0000000..72f9691 --- /dev/null +++ b/node_modules/request-progress/README.md @@ -0,0 +1,78 @@ +# request-progress + +[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url] + +[npm-url]:https://npmjs.org/package/request-progress +[downloads-image]:http://img.shields.io/npm/dm/request-progress.svg +[npm-image]:http://img.shields.io/npm/v/request-progress.svg +[travis-url]:https://travis-ci.org/IndigoUnited/node-request-progress +[travis-image]:http://img.shields.io/travis/IndigoUnited/node-request-progress/master.svg +[coveralls-url]:https://coveralls.io/r/IndigoUnited/node-request-progress +[coveralls-image]:https://img.shields.io/coveralls/IndigoUnited/node-request-progress/master.svg +[david-dm-url]:https://david-dm.org/IndigoUnited/node-request-progress +[david-dm-image]:https://img.shields.io/david/IndigoUnited/node-request-progress.svg +[david-dm-dev-url]:https://david-dm.org/IndigoUnited/node-request-progress#info=devDependencies +[david-dm-dev-image]:https://img.shields.io/david/dev/IndigoUnited/node-request-progress.svg + +Tracks the download progress of a request made with [request](https://github.com/mikeal/request), giving insight of various metrics including progress percentage, download speed and time remaining. + + +## Installation + +`$ npm install request-progress` + + +## Usage + +```js +var fs = require('fs'); +var request = require('request'); +var progress = require('request-progress'); + +// The options argument is optional so you can omit it +progress(request('https://az412801.vo.msecnd.net/vhd/VMBuild_20141027/VirtualBox/IE11/Windows/IE11.Win8.1.For.Windows.VirtualBox.zip'), { + // throttle: 2000, // Throttle the progress event to 2000ms, defaults to 1000ms + // delay: 1000, // Only start to emit after 1000ms delay, defaults to 0ms + // lengthHeader: 'x-transfer-length' // Length header to use, defaults to content-length +}) +.on('progress', function (state) { + // The state is an object that looks like this: + // { + // percent: 0.5, // Overall percent (between 0 to 1) + // speed: 554732, // The download speed in bytes/sec + // size: { + // total: 90044871, // The total payload size in bytes + // transferred: 27610959 // The transferred payload size in bytes + // }, + // time: { + // elapsed: 36.235, // The total elapsed seconds since the start (3 decimals) + // remaining: 81.403 // The remaining seconds to finish (3 decimals) + // } + // } + console.log('progress', state); +}) +.on('error', function (err) { + // Do something with err +}) +.on('end', function () { + // Do something after request finishes +}) +.pipe(fs.createWriteStream('IE11.Win8.1.For.Windows.VirtualBox.zip')); +``` + +If the request's response does not include the `content-length` header, the values of some metrics will be `null`. +Also `speed` and `time.remaining` will be `null` until it can be calculated. + +The `state` object emitted in the `progress` event is reused to avoid creating a new object for each event. +If you wish to peek the `state` object at any time, it is available in `request.progressState`. + + +## Tests + +`$ npm test` +`$ npm test-cov` to get coverage report + + +## License + +Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php). diff --git a/node_modules/request-progress/index.js b/node_modules/request-progress/index.js new file mode 100644 index 0000000..b5ea8e5 --- /dev/null +++ b/node_modules/request-progress/index.js @@ -0,0 +1,128 @@ +'use strict'; + +var throttle = require('throttleit'); + +function onRequest(context) { + // Reset dynamic stuff + context.startedAt = null; + + context.state = context.request.progressState = null; + + context.delayTimer && clearTimeout(context.delayTimer); + context.delayTimer = null; +} + +function onResponse(context, response) { + // Mark start timestamp + context.startedAt = Date.now(); + + // Create state + // Also expose the state throught the request + // See https://github.com/IndigoUnited/node-request-progress/pull/2/files + context.state = context.request.progressState = { + time: { + elapsed: 0, + remaining: null + }, + speed: null, + percent: null, + size: { + total: Number(response.headers[context.options.lengthHeader]) || null, + transferred: 0 + } + }; + + // Delay the progress report + context.delayTimer = setTimeout(function () { + context.delayTimer = null; + }, context.options.delay); +} + +function onData(context, data) { + context.state.size.transferred += data.length; + + !context.delayTimer && context.reportState(); +} + +function onEnd(context) { + /* istanbul ignore if */ + if (context.delayTimer) { + clearTimeout(context.delayTimer); + context.delayTimer = null; + } + + context.request.progressState = context.request.progressContext = null; +} + +function reportState(context) { + var state; + + // Do nothing if still within the initial delay or if already finished + if (context.delayTimer || !context.request.progressState) { + return; + } + + state = context.state; + state.time.elapsed = (Date.now() - context.startedAt) / 1000; + + // Calculate speed only if 1s has passed + if (state.time.elapsed >= 1) { + state.speed = state.size.transferred / state.time.elapsed; + } + + // Calculate percent & remaining only if we know the total size + if (state.size.total != null) { + state.percent = Math.min(state.size.transferred, state.size.total) / state.size.total; + + if (state.speed != null) { + state.time.remaining = state.percent !== 1 ? (state.size.total / state.speed) - state.time.elapsed : 0; + state.time.remaining = Math.round(state.time.remaining * 1000) / 1000; // Round to 4 decimals + } + } + + context.request.emit('progress', state); +} + + +function requestProgress(request, options) { + var context; + + if (request.progressContext) { + return request; + } + + if (request.response) { + throw new Error('Already got response, it\'s too late to track progress'); + } + + // Parse options + options = options || {}; + options.throttle = options.throttle == null ? 1000 : options.throttle; + options.delay = options.delay || 0; + options.lengthHeader = options.lengthHeader || 'content-length'; + + // Create context + context = {}; + context.request = request; + context.options = options; + context.reportState = throttle(reportState.bind(null, context), options.throttle); + // context.startedAt = null; + // context.state = null; + // context.delayTimer = null; + + // Attach listeners + request + .on('request', onRequest.bind(null, context)) + .on('response', function handleResponse(response) { + response.on('data', onData.bind(null, context)); + + return onResponse(context, response); + }) + .on('end', onEnd.bind(null, context)); + + request.progressContext = context; + + return request; +} + +module.exports = requestProgress; diff --git a/node_modules/request-progress/package.json b/node_modules/request-progress/package.json new file mode 100644 index 0000000..9a695f2 --- /dev/null +++ b/node_modules/request-progress/package.json @@ -0,0 +1,71 @@ +{ + "_from": "request-progress@3.0.0", + "_id": "request-progress@3.0.0", + "_inBundle": false, + "_integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "_location": "/request-progress", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "request-progress@3.0.0", + "name": "request-progress", + "escapedName": "request-progress", + "rawSpec": "3.0.0", + "saveSpec": null, + "fetchSpec": "3.0.0" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "_shasum": "4ca754081c7fec63f505e4faa825aa06cd669dbe", + "_spec": "request-progress@3.0.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "author": { + "name": "IndigoUnited", + "email": "hello@indigounited.com", + "url": "http://indigounited.com" + }, + "bugs": { + "url": "http://github.com/IndigoUnited/node-request-progress/issues" + }, + "bundleDependencies": false, + "dependencies": { + "throttleit": "^1.0.0" + }, + "deprecated": false, + "description": "Tracks the download progress of a request made with mikeal/request, giving insight of various metrics including progress percent, download speed and time remaining", + "devDependencies": { + "coveralls": "^2.11.6", + "expect.js": "^0.3.1", + "istanbul": "^0.4.1", + "mocha": "^3.0.2" + }, + "homepage": "https://github.com/IndigoUnited/node-request-progress#readme", + "keywords": [ + "progress", + "request", + "mikeal", + "size", + "bytes", + "percent", + "percentage", + "speed", + "eta", + "etr" + ], + "license": "MIT", + "main": "index.js", + "name": "request-progress", + "repository": { + "type": "git", + "url": "git://github.com/IndigoUnited/node-request-progress.git" + }, + "scripts": { + "test": "mocha --bail", + "test-cov": "istanbul cover --dir test/coverage _mocha -- --bail && echo open test/coverage/lcov-report/index.html", + "test-travis": "istanbul cover _mocha --report lcovonly -- --bail && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" + }, + "version": "3.0.0" +} diff --git a/node_modules/request-progress/test/test.js b/node_modules/request-progress/test/test.js new file mode 100644 index 0000000..5efc9cb --- /dev/null +++ b/node_modules/request-progress/test/test.js @@ -0,0 +1,385 @@ +'use strict'; + +var expect = require('expect.js'); +var EventEmitter = require('events').EventEmitter; +var progress = require('../'); + +function normalizeStates(states) { + states.forEach(function (state) { + state.time.elapsed = Math.round(state.time.elapsed), + state.time.remaining = state.time.remaining != null ? Math.round(state.time.remaining) : null; + state.speed = state.speed != null ? Math.round(state.speed) : null; + }); +} + +describe('request-progress', function () { + var request; + var states; + var response; + + beforeEach(function () { + states = []; + request = new EventEmitter(); + response = new EventEmitter(); + + request.on('progress', function (state) { + states.push(JSON.parse(JSON.stringify(state))); + }); + }); + + it('should emit the progress event with the correct state information', function (done) { + progress(request, { throttle: 0 }) + .on('end', function () { + normalizeStates(states); + + expect(states).to.eql([{ + percent: 0.5, + speed: null, + size: { total: 10, transferred: 5, }, + time: { elapsed: 0, remaining: null } + }, { + percent: 0.8, + speed: 7, + size: { total: 10, transferred: 8 }, + time: { elapsed: 1, remaining: 0 } + }, { + percent: 1, + speed: 8, + size: { total: 10, transferred: 10 }, + time: { elapsed: 1, remaining: 0 } + }]); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 10 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aaaaa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bbb')); + }, 1150); + + setTimeout(function () { + response.emit('data', new Buffer('cc')); + request.emit('end'); + }, 1250); + }); + + it('should provide request.progressState (and request.progressContext)', function (done) { + progress(request, { throttle: 0 }) + .on('end', function () { + expect(request.progressState).to.be(null); + expect(request.progressContext).to.be(null); + done(); + }); + + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be(undefined); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 2 } })); + + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be.an('object'); + + setTimeout(function () { + response.emit('data', new Buffer('a')); + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be.an('object'); + expect(request.progressState.percent).to.be(0.5); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('b')); + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be.an('object'); + expect(request.progressState.percent).to.be(1); + request.emit('end'); + }, 100); + }); + + it('should have a option.delay default of 0', function () { + progress(request); + expect(request.progressContext.options.delay).to.be(0); + }); + + it('should respect the passed option.delay', function (done) { + progress(request, { throttle: 0, delay: 250 }) + .on('end', function () { + expect(states).to.have.length(2); + expect(states[0].percent).to.be(0.6); + expect(states[1].percent).to.be(1); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 10 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bb')); + }, 200); + + setTimeout(function () { + response.emit('data', new Buffer('cc')); + }, 300); + + setTimeout(function () { + response.emit('data', new Buffer('dddd')); + request.emit('end'); + }, 400); + }); + + it('should have a option.throttle default of 1000', function () { + progress(request); + expect(request.progressContext.options.throttle).to.be(1000); + }); + + it('should respect the passed option.throttle', function (done) { + progress(request, { throttle: 300, delay: 0 }) + .on('end', function () { + expect(states).to.have.length(3); + expect(states[0].percent).to.be(0.2); + expect(states[1].percent).to.be(0.6); + expect(states[2].percent).to.be(0.9); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 10 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bb')); + }, 100); + + setTimeout(function () { + response.emit('data', new Buffer('cc')); + }, 300); + + setTimeout(function () { + response.emit('data', new Buffer('dd')); + }, 400); + + setTimeout(function () { + response.emit('data', new Buffer('e')); + }, 500); + + setTimeout(function () { + response.emit('data', new Buffer('bf')); + request.emit('end'); + }, 700); + }); + + it('should have a option.lengthHeader default of "content-length"', function () { + progress(request); + expect(request.progressContext.options.lengthHeader).to.be('content-length'); + }); + + it('should use option.lengthHeader', function (done) { + progress(request, { + throttle: 0, + lengthHeader: 'x-transfer-length' + }) + .on('end', function () { + expect(states).to.have.length(2); + expect(states[0].percent).to.be(0.5); + expect(states[0].size.total).to.be(10); + expect(states[1].percent).to.be(1); + expect(states[1].size.total).to.be(10); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { + headers: { 'x-transfer-length': 10, 'content-length': 5 } + })); + + setTimeout(function () { + response.emit('data', new Buffer('aaaaa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bbbbb')); + request.emit('end'); + }, 200); + }); + + it('should fail if response is already set', function () { + request.response = { headers: { 'content-length': 10 } }; + + expect(function () { + progress(request); + }).to.throwException(/too late/); + }); + + it('should deal with unknown content length', function (done) { + progress(request, { throttle: 0 }) + .on('end', function () { + normalizeStates(states); + + expect(states).to.eql([{ + percent: null, + speed: null, + size: { total: null, transferred: 5, }, + time: { elapsed: 0, remaining: null } + }, { + percent: null, + speed: 10, + size: { total: null, transferred: 12, }, + time: { elapsed: 1, remaining: null } + }]); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: {} })); + + setTimeout(function () { + response.emit('data', new Buffer('aaaaa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bbbbbbb')); + request.emit('end'); + }, 1150); + }); + + it('should deal with payloads higher than the content length', function (done) { + progress(request, { throttle: 0 }) + .on('end', function () { + normalizeStates(states); + + expect(states).to.eql([{ + percent: 0.5, + speed: null, + size: { total: 10, transferred: 5, }, + time: { elapsed: 0, remaining: null } + }, { + percent: 1, + speed: 10, + size: { total: 10, transferred: 12 }, + time: { elapsed: 1, remaining: 0 } + }]); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 10 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aaaaa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bbbbbbb')); + request.emit('end'); + }, 1150); + }); + + it('should not report after the request ends', function (done) { + progress(request, { throttle: 100 }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 10 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + }, 25); + + setTimeout(function () { + response.emit('data', new Buffer('bbbbbbbb')); + request.emit('end'); + }, 50); + + setTimeout(function () { + normalizeStates(states); + + expect(states).to.have.length(1); + expect(states[0].percent).to.be(0.2); + + done(); + }, 500); + }); + + it('should not generate duplicate progress events if called twice', function (done) { + progress(request, { throttle: 0 }); + progress(request, { throttle: 0 }) + .on('end', function () { + expect(states).to.have.length(1); + expect(states[0].percent).to.be(1); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 2 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + request.emit('end'); + }, 25); + }); + + it('should reset stuff on "request" event', function () { + progress(request, { throttle: 0 }); + + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be(undefined); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 2 } })); + + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be.an('object'); + + request.emit('request'); + + expect(request.progressContext).to.be.an('object'); + expect(request.progressState).to.be(null); + }); + + it('should hook into "data" event from the response and not the request', function (done) { + // See: https://github.com/IndigoUnited/node-request-progress/issues/20 + + progress(request, { throttle: 0 }) + .on('end', function () { + expect(states).to.have.length(2); + expect(states[0].percent).to.be(0.5); + expect(states[1].percent).to.be(1); + + done(); + }); + + request.emit('request'); + request.emit('response', Object.assign(response, { headers: { 'content-length': 4 } })); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + }, 25); + + setTimeout(function () { + request.emit('data', new Buffer('aa')); + }, 50); + + setTimeout(function () { + response.emit('data', new Buffer('aa')); + request.emit('end'); + }, 100); + }); +}); diff --git a/node_modules/request/CHANGELOG.md b/node_modules/request/CHANGELOG.md new file mode 100644 index 0000000..751514d --- /dev/null +++ b/node_modules/request/CHANGELOG.md @@ -0,0 +1,709 @@ +## Change Log + +### v2.87.0 (2018/05/21) +- [#2943](https://github.com/request/request/pull/2943) Replace hawk dependency with a local implemenation (#2943) (@hueniverse) + +### v2.86.0 (2018/05/15) +- [#2885](https://github.com/request/request/pull/2885) Remove redundant code (for Node.js 0.9.4 and below) and dependency (@ChALkeR) +- [#2942](https://github.com/request/request/pull/2942) Make Test GREEN Again! (@simov) +- [#2923](https://github.com/request/request/pull/2923) Alterations for failing CI tests (@gareth-robinson) + +### v2.85.0 (2018/03/12) +- [#2880](https://github.com/request/request/pull/2880) Revert "Update hawk to 7.0.7 (#2880)" (@simov) + +### v2.84.0 (2018/03/12) +- [#2793](https://github.com/request/request/pull/2793) Fixed calculation of oauth_body_hash, issue #2792 (@dvishniakov) +- [#2880](https://github.com/request/request/pull/2880) Update hawk to 7.0.7 (#2880) (@kornel-kedzierski) + +### v2.83.0 (2017/09/27) +- [#2776](https://github.com/request/request/pull/2776) Updating tough-cookie due to security fix. (#2776) (@karlnorling) + +### v2.82.0 (2017/09/19) +- [#2703](https://github.com/request/request/pull/2703) Add Node.js v8 to Travis CI (@ryysud) +- [#2751](https://github.com/request/request/pull/2751) Update of hawk and qs to latest version (#2751) (@Olivier-Moreau) +- [#2658](https://github.com/request/request/pull/2658) Fixed some text in README.md (#2658) (@Marketionist) +- [#2635](https://github.com/request/request/pull/2635) chore(package): update aws-sign2 to version 0.7.0 (#2635) (@greenkeeperio-bot) +- [#2641](https://github.com/request/request/pull/2641) Update README to simplify & update convenience methods (#2641) (@FredKSchott) +- [#2541](https://github.com/request/request/pull/2541) Add convenience method for HTTP OPTIONS (#2541) (@jamesseanwright) +- [#2605](https://github.com/request/request/pull/2605) Add promise support section to README (#2605) (@FredKSchott) +- [#2579](https://github.com/request/request/pull/2579) refactor(lint): replace eslint with standard (#2579) (@ahmadnassri) +- [#2598](https://github.com/request/request/pull/2598) Update codecov to version 2.0.2 🚀 (@greenkeeperio-bot) +- [#2590](https://github.com/request/request/pull/2590) Adds test-timing keepAlive test (@nicjansma) +- [#2589](https://github.com/request/request/pull/2589) fix tabulation on request example README.MD (@odykyi) +- [#2594](https://github.com/request/request/pull/2594) chore(dependencies): har-validator to 5.x [removes babel dep] (@ahmadnassri) + +### v2.81.0 (2017/03/09) +- [#2584](https://github.com/request/request/pull/2584) Security issue: Upgrade qs to version 6.4.0 (@sergejmueller) +- [#2578](https://github.com/request/request/pull/2578) safe-buffer doesn't zero-fill by default, its just a polyfill. (#2578) (@mikeal) +- [#2566](https://github.com/request/request/pull/2566) Timings: Tracks 'lookup', adds 'wait' time, fixes connection re-use (#2566) (@nicjansma) +- [#2574](https://github.com/request/request/pull/2574) Migrating to safe-buffer for improved security. (@mikeal) +- [#2573](https://github.com/request/request/pull/2573) fixes #2572 (@ahmadnassri) + +### v2.80.0 (2017/03/04) +- [#2571](https://github.com/request/request/pull/2571) Correctly format the Host header for IPv6 addresses (@JamesMGreene) +- [#2558](https://github.com/request/request/pull/2558) Update README.md example snippet (@FredKSchott) +- [#2221](https://github.com/request/request/pull/2221) Adding a simple Response object reference in argument specification (@calamarico) +- [#2452](https://github.com/request/request/pull/2452) Adds .timings array with DNC, TCP, request and response times (@nicjansma) +- [#2553](https://github.com/request/request/pull/2553) add ISSUE_TEMPLATE, move PR template (@FredKSchott) +- [#2539](https://github.com/request/request/pull/2539) Create PULL_REQUEST_TEMPLATE.md (@FredKSchott) +- [#2524](https://github.com/request/request/pull/2524) Update caseless to version 0.12.0 🚀 (@greenkeeperio-bot) +- [#2460](https://github.com/request/request/pull/2460) Fix wrong MIME type in example (@OwnageIsMagic) +- [#2514](https://github.com/request/request/pull/2514) Change tags to keywords in package.json (@humphd) +- [#2492](https://github.com/request/request/pull/2492) More lenient gzip decompression (@addaleax) + +### v2.79.0 (2016/11/18) +- [#2368](https://github.com/request/request/pull/2368) Fix typeof check in test-pool.js (@forivall) +- [#2394](https://github.com/request/request/pull/2394) Use `files` in package.json (@SimenB) +- [#2463](https://github.com/request/request/pull/2463) AWS support for session tokens for temporary credentials (@simov) +- [#2467](https://github.com/request/request/pull/2467) Migrate to uuid (@simov, @antialias) +- [#2459](https://github.com/request/request/pull/2459) Update taper to version 0.5.0 🚀 (@greenkeeperio-bot) +- [#2448](https://github.com/request/request/pull/2448) Make other connect timeout test more reliable too (@mscdex) + +### v2.78.0 (2016/11/03) +- [#2447](https://github.com/request/request/pull/2447) Always set request timeout on keep-alive connections (@mscdex) + +### v2.77.0 (2016/11/03) +- [#2439](https://github.com/request/request/pull/2439) Fix socket 'connect' listener handling (@mscdex) +- [#2442](https://github.com/request/request/pull/2442) 👻😱 Node.js 0.10 is unmaintained 😱👻 (@greenkeeperio-bot) +- [#2435](https://github.com/request/request/pull/2435) Add followOriginalHttpMethod to redirect to original HTTP method (@kirrg001) +- [#2414](https://github.com/request/request/pull/2414) Improve test-timeout reliability (@mscdex) + +### v2.76.0 (2016/10/25) +- [#2424](https://github.com/request/request/pull/2424) Handle buffers directly instead of using "bl" (@zertosh) +- [#2415](https://github.com/request/request/pull/2415) Re-enable timeout tests on Travis + other fixes (@mscdex) +- [#2431](https://github.com/request/request/pull/2431) Improve timeouts accuracy and node v6.8.0+ compatibility (@mscdex, @greenkeeperio-bot) +- [#2428](https://github.com/request/request/pull/2428) Update qs to version 6.3.0 🚀 (@greenkeeperio-bot) +- [#2420](https://github.com/request/request/pull/2420) change .on to .once, remove possible memory leaks (@duereg) +- [#2426](https://github.com/request/request/pull/2426) Remove "isFunction" helper in favor of "typeof" check (@zertosh) +- [#2425](https://github.com/request/request/pull/2425) Simplify "defer" helper creation (@zertosh) +- [#2402](https://github.com/request/request/pull/2402) form-data@2.1.1 breaks build 🚨 (@greenkeeperio-bot) +- [#2393](https://github.com/request/request/pull/2393) Update form-data to version 2.1.0 🚀 (@greenkeeperio-bot) + +### v2.75.0 (2016/09/17) +- [#2381](https://github.com/request/request/pull/2381) Drop support for Node 0.10 (@simov) +- [#2377](https://github.com/request/request/pull/2377) Update form-data to version 2.0.0 🚀 (@greenkeeperio-bot) +- [#2353](https://github.com/request/request/pull/2353) Add greenkeeper ignored packages (@simov) +- [#2351](https://github.com/request/request/pull/2351) Update karma-tap to version 3.0.1 🚀 (@greenkeeperio-bot) +- [#2348](https://github.com/request/request/pull/2348) form-data@1.0.1 breaks build 🚨 (@greenkeeperio-bot) +- [#2349](https://github.com/request/request/pull/2349) Check error type instead of string (@scotttrinh) + +### v2.74.0 (2016/07/22) +- [#2295](https://github.com/request/request/pull/2295) Update tough-cookie to 2.3.0 (@stash-sfdc) +- [#2280](https://github.com/request/request/pull/2280) Update karma-tap to version 2.0.1 🚀 (@greenkeeperio-bot) + +### v2.73.0 (2016/07/09) +- [#2240](https://github.com/request/request/pull/2240) Remove connectionErrorHandler to fix #1903 (@zarenner) +- [#2251](https://github.com/request/request/pull/2251) tape@4.6.0 breaks build 🚨 (@greenkeeperio-bot) +- [#2225](https://github.com/request/request/pull/2225) Update docs (@ArtskydJ) +- [#2203](https://github.com/request/request/pull/2203) Update browserify to version 13.0.1 🚀 (@greenkeeperio-bot) +- [#2275](https://github.com/request/request/pull/2275) Update karma to version 1.1.1 🚀 (@greenkeeperio-bot) +- [#2204](https://github.com/request/request/pull/2204) Add codecov.yml and disable PR comments (@simov) +- [#2212](https://github.com/request/request/pull/2212) Fix link to http.IncomingMessage documentation (@nazieb) +- [#2208](https://github.com/request/request/pull/2208) Update to form-data RC4 and pass null values to it (@simov) +- [#2207](https://github.com/request/request/pull/2207) Move aws4 require statement to the top (@simov) +- [#2199](https://github.com/request/request/pull/2199) Update karma-coverage to version 1.0.0 🚀 (@greenkeeperio-bot) +- [#2206](https://github.com/request/request/pull/2206) Update qs to version 6.2.0 🚀 (@greenkeeperio-bot) +- [#2205](https://github.com/request/request/pull/2205) Use server-destory to close hanging sockets in tests (@simov) +- [#2200](https://github.com/request/request/pull/2200) Update karma-cli to version 1.0.0 🚀 (@greenkeeperio-bot) + +### v2.72.0 (2016/04/17) +- [#2176](https://github.com/request/request/pull/2176) Do not try to pipe Gzip responses with no body (@simov) +- [#2175](https://github.com/request/request/pull/2175) Add 'delete' alias for the 'del' API method (@simov, @MuhanZou) +- [#2172](https://github.com/request/request/pull/2172) Add support for deflate content encoding (@czardoz) +- [#2169](https://github.com/request/request/pull/2169) Add callback option (@simov) +- [#2165](https://github.com/request/request/pull/2165) Check for self.req existence inside the write method (@simov) +- [#2167](https://github.com/request/request/pull/2167) Fix TravisCI badge reference master branch (@a0viedo) + +### v2.71.0 (2016/04/12) +- [#2164](https://github.com/request/request/pull/2164) Catch errors from the underlying http module (@simov) + +### v2.70.0 (2016/04/05) +- [#2147](https://github.com/request/request/pull/2147) Update eslint to version 2.5.3 🚀 (@simov, @greenkeeperio-bot) +- [#2009](https://github.com/request/request/pull/2009) Support JSON stringify replacer argument. (@elyobo) +- [#2142](https://github.com/request/request/pull/2142) Update eslint to version 2.5.1 🚀 (@greenkeeperio-bot) +- [#2128](https://github.com/request/request/pull/2128) Update browserify-istanbul to version 2.0.0 🚀 (@greenkeeperio-bot) +- [#2115](https://github.com/request/request/pull/2115) Update eslint to version 2.3.0 🚀 (@simov, @greenkeeperio-bot) +- [#2089](https://github.com/request/request/pull/2089) Fix badges (@simov) +- [#2092](https://github.com/request/request/pull/2092) Update browserify-istanbul to version 1.0.0 🚀 (@greenkeeperio-bot) +- [#2079](https://github.com/request/request/pull/2079) Accept read stream as body option (@simov) +- [#2070](https://github.com/request/request/pull/2070) Update bl to version 1.1.2 🚀 (@greenkeeperio-bot) +- [#2063](https://github.com/request/request/pull/2063) Up bluebird and oauth-sign (@simov) +- [#2058](https://github.com/request/request/pull/2058) Karma fixes for latest versions (@eiriksm) +- [#2057](https://github.com/request/request/pull/2057) Update contributing guidelines (@simov) +- [#2054](https://github.com/request/request/pull/2054) Update qs to version 6.1.0 🚀 (@greenkeeperio-bot) + +### v2.69.0 (2016/01/27) +- [#2041](https://github.com/request/request/pull/2041) restore aws4 as regular dependency (@rmg) + +### v2.68.0 (2016/01/27) +- [#2036](https://github.com/request/request/pull/2036) Add AWS Signature Version 4 (@simov, @mirkods) +- [#2022](https://github.com/request/request/pull/2022) Convert numeric multipart bodies to string (@simov, @feross) +- [#2024](https://github.com/request/request/pull/2024) Update har-validator dependency for nsp advisory #76 (@TylerDixon) +- [#2016](https://github.com/request/request/pull/2016) Update qs to version 6.0.2 🚀 (@greenkeeperio-bot) +- [#2007](https://github.com/request/request/pull/2007) Use the `extend` module instead of util._extend (@simov) +- [#2003](https://github.com/request/request/pull/2003) Update browserify to version 13.0.0 🚀 (@greenkeeperio-bot) +- [#1989](https://github.com/request/request/pull/1989) Update buffer-equal to version 1.0.0 🚀 (@greenkeeperio-bot) +- [#1956](https://github.com/request/request/pull/1956) Check form-data content-length value before setting up the header (@jongyoonlee) +- [#1958](https://github.com/request/request/pull/1958) Use IncomingMessage.destroy method (@simov) +- [#1952](https://github.com/request/request/pull/1952) Adds example for Tor proxy (@prometheansacrifice) +- [#1943](https://github.com/request/request/pull/1943) Update eslint to version 1.10.3 🚀 (@simov, @greenkeeperio-bot) +- [#1924](https://github.com/request/request/pull/1924) Update eslint to version 1.10.1 🚀 (@greenkeeperio-bot) +- [#1915](https://github.com/request/request/pull/1915) Remove content-length and transfer-encoding headers from defaultProxyHeaderWhiteList (@yaxia) + +### v2.67.0 (2015/11/19) +- [#1913](https://github.com/request/request/pull/1913) Update http-signature to version 1.1.0 🚀 (@greenkeeperio-bot) + +### v2.66.0 (2015/11/18) +- [#1906](https://github.com/request/request/pull/1906) Update README URLs based on HTTP redirects (@ReadmeCritic) +- [#1905](https://github.com/request/request/pull/1905) Convert typed arrays into regular buffers (@simov) +- [#1902](https://github.com/request/request/pull/1902) node-uuid@1.4.7 breaks build 🚨 (@greenkeeperio-bot) +- [#1894](https://github.com/request/request/pull/1894) Fix tunneling after redirection from https (Original: #1881) (@simov, @falms) +- [#1893](https://github.com/request/request/pull/1893) Update eslint to version 1.9.0 🚀 (@greenkeeperio-bot) +- [#1852](https://github.com/request/request/pull/1852) Update eslint to version 1.7.3 🚀 (@simov, @greenkeeperio-bot, @paulomcnally, @michelsalib, @arbaaz, @nsklkn, @LoicMahieu, @JoshWillik, @jzaefferer, @ryanwholey, @djchie, @thisconnect, @mgenereu, @acroca, @Sebmaster, @KoltesDigital) +- [#1876](https://github.com/request/request/pull/1876) Implement loose matching for har mime types (@simov) +- [#1875](https://github.com/request/request/pull/1875) Update bluebird to version 3.0.2 🚀 (@simov, @greenkeeperio-bot) +- [#1871](https://github.com/request/request/pull/1871) Update browserify to version 12.0.1 🚀 (@greenkeeperio-bot) +- [#1866](https://github.com/request/request/pull/1866) Add missing quotes on x-token property in README (@miguelmota) +- [#1874](https://github.com/request/request/pull/1874) Fix typo in README.md (@gswalden) +- [#1860](https://github.com/request/request/pull/1860) Improve referer header tests and docs (@simov) +- [#1861](https://github.com/request/request/pull/1861) Remove redundant call to Stream constructor (@watson) +- [#1857](https://github.com/request/request/pull/1857) Fix Referer header to point to the original host name (@simov) +- [#1850](https://github.com/request/request/pull/1850) Update karma-coverage to version 0.5.3 🚀 (@greenkeeperio-bot) +- [#1847](https://github.com/request/request/pull/1847) Use node's latest version when building (@simov) +- [#1836](https://github.com/request/request/pull/1836) Tunnel: fix wrong property name (@KoltesDigital) +- [#1820](https://github.com/request/request/pull/1820) Set href as request.js uses it (@mgenereu) +- [#1840](https://github.com/request/request/pull/1840) Update http-signature to version 1.0.2 🚀 (@greenkeeperio-bot) +- [#1845](https://github.com/request/request/pull/1845) Update istanbul to version 0.4.0 🚀 (@greenkeeperio-bot) + +### v2.65.0 (2015/10/11) +- [#1833](https://github.com/request/request/pull/1833) Update aws-sign2 to version 0.6.0 🚀 (@greenkeeperio-bot) +- [#1811](https://github.com/request/request/pull/1811) Enable loose cookie parsing in tough-cookie (@Sebmaster) +- [#1830](https://github.com/request/request/pull/1830) Bring back tilde ranges for all dependencies (@simov) +- [#1821](https://github.com/request/request/pull/1821) Implement support for RFC 2617 MD5-sess algorithm. (@BigDSK) +- [#1828](https://github.com/request/request/pull/1828) Updated qs dependency to 5.2.0 (@acroca) +- [#1818](https://github.com/request/request/pull/1818) Extract `readResponseBody` method out of `onRequestResponse` (@pvoisin) +- [#1819](https://github.com/request/request/pull/1819) Run stringify once (@mgenereu) +- [#1814](https://github.com/request/request/pull/1814) Updated har-validator to version 2.0.2 (@greenkeeperio-bot) +- [#1807](https://github.com/request/request/pull/1807) Updated tough-cookie to version 2.1.0 (@greenkeeperio-bot) +- [#1800](https://github.com/request/request/pull/1800) Add caret ranges for devDependencies, except eslint (@simov) +- [#1799](https://github.com/request/request/pull/1799) Updated karma-browserify to version 4.4.0 (@greenkeeperio-bot) +- [#1797](https://github.com/request/request/pull/1797) Updated tape to version 4.2.0 (@greenkeeperio-bot) +- [#1788](https://github.com/request/request/pull/1788) Pinned all dependencies (@greenkeeperio-bot) + +### v2.64.0 (2015/09/25) +- [#1787](https://github.com/request/request/pull/1787) npm ignore examples, release.sh and disabled.appveyor.yml (@thisconnect) +- [#1775](https://github.com/request/request/pull/1775) Fix typo in README.md (@djchie) +- [#1776](https://github.com/request/request/pull/1776) Changed word 'conjuction' to read 'conjunction' in README.md (@ryanwholey) +- [#1785](https://github.com/request/request/pull/1785) Revert: Set default application/json content-type when using json option #1772 (@simov) + +### v2.63.0 (2015/09/21) +- [#1772](https://github.com/request/request/pull/1772) Set default application/json content-type when using json option (@jzaefferer) + +### v2.62.0 (2015/09/15) +- [#1768](https://github.com/request/request/pull/1768) Add node 4.0 to the list of build targets (@simov) +- [#1767](https://github.com/request/request/pull/1767) Query strings now cooperate with unix sockets (@JoshWillik) +- [#1750](https://github.com/request/request/pull/1750) Revert doc about installation of tough-cookie added in #884 (@LoicMahieu) +- [#1746](https://github.com/request/request/pull/1746) Missed comma in Readme (@nsklkn) +- [#1743](https://github.com/request/request/pull/1743) Fix options not being initialized in defaults method (@simov) + +### v2.61.0 (2015/08/19) +- [#1721](https://github.com/request/request/pull/1721) Minor fix in README.md (@arbaaz) +- [#1733](https://github.com/request/request/pull/1733) Avoid useless Buffer transformation (@michelsalib) +- [#1726](https://github.com/request/request/pull/1726) Update README.md (@paulomcnally) +- [#1715](https://github.com/request/request/pull/1715) Fix forever option in node > 0.10 #1709 (@calibr) +- [#1716](https://github.com/request/request/pull/1716) Do not create Buffer from Object in setContentLength(iojs v3.0 issue) (@calibr) +- [#1711](https://github.com/request/request/pull/1711) Add ability to detect connect timeouts (@kevinburke) +- [#1712](https://github.com/request/request/pull/1712) Set certificate expiration to August 2, 2018 (@kevinburke) +- [#1700](https://github.com/request/request/pull/1700) debug() when JSON.parse() on a response body fails (@phillipj) + +### v2.60.0 (2015/07/21) +- [#1687](https://github.com/request/request/pull/1687) Fix caseless bug - content-type not being set for multipart/form-data (@simov, @garymathews) + +### v2.59.0 (2015/07/20) +- [#1671](https://github.com/request/request/pull/1671) Add tests and docs for using the agent, agentClass, agentOptions and forever options. + Forever option defaults to using http(s).Agent in node 0.12+ (@simov) +- [#1679](https://github.com/request/request/pull/1679) Fix - do not remove OAuth param when using OAuth realm (@simov, @jhalickman) +- [#1668](https://github.com/request/request/pull/1668) updated dependencies (@deamme) +- [#1656](https://github.com/request/request/pull/1656) Fix form method (@simov) +- [#1651](https://github.com/request/request/pull/1651) Preserve HEAD method when using followAllRedirects (@simov) +- [#1652](https://github.com/request/request/pull/1652) Update `encoding` option documentation in README.md (@daniel347x) +- [#1650](https://github.com/request/request/pull/1650) Allow content-type overriding when using the `form` option (@simov) +- [#1646](https://github.com/request/request/pull/1646) Clarify the nature of setting `ca` in `agentOptions` (@jeffcharles) + +### v2.58.0 (2015/06/16) +- [#1638](https://github.com/request/request/pull/1638) Use the `extend` module to deep extend in the defaults method (@simov) +- [#1631](https://github.com/request/request/pull/1631) Move tunnel logic into separate module (@simov) +- [#1634](https://github.com/request/request/pull/1634) Fix OAuth query transport_method (@simov) +- [#1603](https://github.com/request/request/pull/1603) Add codecov (@simov) + +### v2.57.0 (2015/05/31) +- [#1615](https://github.com/request/request/pull/1615) Replace '.client' with '.socket' as the former was deprecated in 2.2.0. (@ChALkeR) + +### v2.56.0 (2015/05/28) +- [#1610](https://github.com/request/request/pull/1610) Bump module dependencies (@simov) +- [#1600](https://github.com/request/request/pull/1600) Extract the querystring logic into separate module (@simov) +- [#1607](https://github.com/request/request/pull/1607) Re-generate certificates (@simov) +- [#1599](https://github.com/request/request/pull/1599) Move getProxyFromURI logic below the check for Invaild URI (#1595) (@simov) +- [#1598](https://github.com/request/request/pull/1598) Fix the way http verbs are defined in order to please intellisense IDEs (@simov, @flannelJesus) +- [#1591](https://github.com/request/request/pull/1591) A few minor fixes: (@simov) +- [#1584](https://github.com/request/request/pull/1584) Refactor test-default tests (according to comments in #1430) (@simov) +- [#1585](https://github.com/request/request/pull/1585) Fixing documentation regarding TLS options (#1583) (@mainakae) +- [#1574](https://github.com/request/request/pull/1574) Refresh the oauth_nonce on redirect (#1573) (@simov) +- [#1570](https://github.com/request/request/pull/1570) Discovered tests that weren't properly running (@seanstrom) +- [#1569](https://github.com/request/request/pull/1569) Fix pause before response arrives (@kevinoid) +- [#1558](https://github.com/request/request/pull/1558) Emit error instead of throw (@simov) +- [#1568](https://github.com/request/request/pull/1568) Fix stall when piping gzipped response (@kevinoid) +- [#1560](https://github.com/request/request/pull/1560) Update combined-stream (@apechimp) +- [#1543](https://github.com/request/request/pull/1543) Initial support for oauth_body_hash on json payloads (@simov, @aesopwolf) +- [#1541](https://github.com/request/request/pull/1541) Fix coveralls (@simov) +- [#1540](https://github.com/request/request/pull/1540) Fix recursive defaults for convenience methods (@simov) +- [#1536](https://github.com/request/request/pull/1536) More eslint style rules (@froatsnook) +- [#1533](https://github.com/request/request/pull/1533) Adding dependency status bar to README.md (@YasharF) +- [#1539](https://github.com/request/request/pull/1539) ensure the latest version of har-validator is included (@ahmadnassri) +- [#1516](https://github.com/request/request/pull/1516) forever+pool test (@devTristan) + +### v2.55.0 (2015/04/05) +- [#1520](https://github.com/request/request/pull/1520) Refactor defaults (@simov) +- [#1525](https://github.com/request/request/pull/1525) Delete request headers with undefined value. (@froatsnook) +- [#1521](https://github.com/request/request/pull/1521) Add promise tests (@simov) +- [#1518](https://github.com/request/request/pull/1518) Fix defaults (@simov) +- [#1515](https://github.com/request/request/pull/1515) Allow static invoking of convenience methods (@simov) +- [#1505](https://github.com/request/request/pull/1505) Fix multipart boundary extraction regexp (@simov) +- [#1510](https://github.com/request/request/pull/1510) Fix basic auth form data (@simov) + +### v2.54.0 (2015/03/24) +- [#1501](https://github.com/request/request/pull/1501) HTTP Archive 1.2 support (@ahmadnassri) +- [#1486](https://github.com/request/request/pull/1486) Add a test for the forever agent (@akshayp) +- [#1500](https://github.com/request/request/pull/1500) Adding handling for no auth method and null bearer (@philberg) +- [#1498](https://github.com/request/request/pull/1498) Add table of contents in readme (@simov) +- [#1477](https://github.com/request/request/pull/1477) Add support for qs options via qsOptions key (@simov) +- [#1496](https://github.com/request/request/pull/1496) Parameters encoded to base 64 should be decoded as UTF-8, not ASCII. (@albanm) +- [#1494](https://github.com/request/request/pull/1494) Update eslint (@froatsnook) +- [#1474](https://github.com/request/request/pull/1474) Require Colon in Basic Auth (@erykwalder) +- [#1481](https://github.com/request/request/pull/1481) Fix baseUrl and redirections. (@burningtree) +- [#1469](https://github.com/request/request/pull/1469) Feature/base url (@froatsnook) +- [#1459](https://github.com/request/request/pull/1459) Add option to time request/response cycle (including rollup of redirects) (@aaron-em) +- [#1468](https://github.com/request/request/pull/1468) Re-enable io.js/node 0.12 build (@simov, @mikeal, @BBB) +- [#1442](https://github.com/request/request/pull/1442) Fixed the issue with strictSSL tests on 0.12 & io.js by explicitly setting a cipher that matches the cert. (@BBB, @nickmccurdy, @demohi, @simov, @0x4139) +- [#1460](https://github.com/request/request/pull/1460) localAddress or proxy config is lost when redirecting (@simov, @0x4139) +- [#1453](https://github.com/request/request/pull/1453) Test on Node.js 0.12 and io.js with allowed failures (@nickmccurdy, @demohi) +- [#1426](https://github.com/request/request/pull/1426) Fixing tests to pass on io.js and node 0.12 (only test-https.js stiff failing) (@mikeal) +- [#1446](https://github.com/request/request/pull/1446) Missing HTTP referer header with redirects Fixes #1038 (@simov, @guimon) +- [#1428](https://github.com/request/request/pull/1428) Deprecate Node v0.8.x (@nylen) +- [#1436](https://github.com/request/request/pull/1436) Add ability to set a requester without setting default options (@tikotzky) +- [#1435](https://github.com/request/request/pull/1435) dry up verb methods (@sethpollack) +- [#1423](https://github.com/request/request/pull/1423) Allow fully qualified multipart content-type header (@simov) +- [#1430](https://github.com/request/request/pull/1430) Fix recursive requester (@tikotzky) +- [#1429](https://github.com/request/request/pull/1429) Throw error when making HEAD request with a body (@tikotzky) +- [#1419](https://github.com/request/request/pull/1419) Add note that the project is broken in 0.12.x (@nylen) +- [#1413](https://github.com/request/request/pull/1413) Fix basic auth (@simov) +- [#1397](https://github.com/request/request/pull/1397) Improve pipe-from-file tests (@nylen) + +### v2.53.0 (2015/02/02) +- [#1396](https://github.com/request/request/pull/1396) Do not rfc3986 escape JSON bodies (@nylen, @simov) +- [#1392](https://github.com/request/request/pull/1392) Improve `timeout` option description (@watson) + +### v2.52.0 (2015/02/02) +- [#1383](https://github.com/request/request/pull/1383) Add missing HTTPS options that were not being passed to tunnel (@brichard19) (@nylen) +- [#1388](https://github.com/request/request/pull/1388) Upgrade mime-types package version (@roderickhsiao) +- [#1389](https://github.com/request/request/pull/1389) Revise Setup Tunnel Function (@seanstrom) +- [#1374](https://github.com/request/request/pull/1374) Allow explicitly disabling tunneling for proxied https destinations (@nylen) +- [#1376](https://github.com/request/request/pull/1376) Use karma-browserify for tests. Add browser test coverage reporter. (@eiriksm) +- [#1366](https://github.com/request/request/pull/1366) Refactor OAuth into separate module (@simov) +- [#1373](https://github.com/request/request/pull/1373) Rewrite tunnel test to be pure Node.js (@nylen) +- [#1371](https://github.com/request/request/pull/1371) Upgrade test reporter (@nylen) +- [#1360](https://github.com/request/request/pull/1360) Refactor basic, bearer, digest auth logic into separate class (@simov) +- [#1354](https://github.com/request/request/pull/1354) Remove circular dependency from debugging code (@nylen) +- [#1351](https://github.com/request/request/pull/1351) Move digest auth into private prototype method (@simov) +- [#1352](https://github.com/request/request/pull/1352) Update hawk dependency to ~2.3.0 (@mridgway) +- [#1353](https://github.com/request/request/pull/1353) Correct travis-ci badge (@dogancelik) +- [#1349](https://github.com/request/request/pull/1349) Make sure we return on errored browser requests. (@eiriksm) +- [#1346](https://github.com/request/request/pull/1346) getProxyFromURI Extraction Refactor (@seanstrom) +- [#1337](https://github.com/request/request/pull/1337) Standardize test ports on 6767 (@nylen) +- [#1341](https://github.com/request/request/pull/1341) Emit FormData error events as Request error events (@nylen, @rwky) +- [#1343](https://github.com/request/request/pull/1343) Clean up readme badges, and add Travis and Coveralls badges (@nylen) +- [#1345](https://github.com/request/request/pull/1345) Update README.md (@Aaron-Hartwig) +- [#1338](https://github.com/request/request/pull/1338) Always wait for server.close() callback in tests (@nylen) +- [#1342](https://github.com/request/request/pull/1342) Add mock https server and redo start of browser tests for this purpose. (@eiriksm) +- [#1339](https://github.com/request/request/pull/1339) Improve auth docs (@nylen) +- [#1335](https://github.com/request/request/pull/1335) Add support for OAuth plaintext signature method (@simov) +- [#1332](https://github.com/request/request/pull/1332) Add clean script to remove test-browser.js after the tests run (@seanstrom) +- [#1327](https://github.com/request/request/pull/1327) Fix errors generating coverage reports. (@nylen) +- [#1330](https://github.com/request/request/pull/1330) Return empty buffer upon empty response body and encoding is set to null (@seanstrom) +- [#1326](https://github.com/request/request/pull/1326) Use faster container-based infrastructure on Travis (@nylen) +- [#1315](https://github.com/request/request/pull/1315) Implement rfc3986 option (@simov, @nylen, @apoco, @DullReferenceException, @mmalecki, @oliamb, @cliffcrosland, @LewisJEllis, @eiriksm, @poislagarde) +- [#1314](https://github.com/request/request/pull/1314) Detect urlencoded form data header via regex (@simov) +- [#1317](https://github.com/request/request/pull/1317) Improve OAuth1.0 server side flow example (@simov) + +### v2.51.0 (2014/12/10) +- [#1310](https://github.com/request/request/pull/1310) Revert changes introduced in https://github.com/request/request/pull/1282 (@simov) + +### v2.50.0 (2014/12/09) +- [#1308](https://github.com/request/request/pull/1308) Add browser test to keep track of browserify compability. (@eiriksm) +- [#1299](https://github.com/request/request/pull/1299) Add optional support for jsonReviver (@poislagarde) +- [#1277](https://github.com/request/request/pull/1277) Add Coveralls configuration (@simov) +- [#1307](https://github.com/request/request/pull/1307) Upgrade form-data, add back browserify compability. Fixes #455. (@eiriksm) +- [#1305](https://github.com/request/request/pull/1305) Fix typo in README.md (@LewisJEllis) +- [#1288](https://github.com/request/request/pull/1288) Update README.md to explain custom file use case (@cliffcrosland) + +### v2.49.0 (2014/11/28) +- [#1295](https://github.com/request/request/pull/1295) fix(proxy): no-proxy false positive (@oliamb) +- [#1292](https://github.com/request/request/pull/1292) Upgrade `caseless` to 0.8.1 (@mmalecki) +- [#1276](https://github.com/request/request/pull/1276) Set transfer encoding for multipart/related to chunked by default (@simov) +- [#1275](https://github.com/request/request/pull/1275) Fix multipart content-type headers detection (@simov) +- [#1269](https://github.com/request/request/pull/1269) adds streams example for review (@tbuchok) +- [#1238](https://github.com/request/request/pull/1238) Add examples README.md (@simov) + +### v2.48.0 (2014/11/12) +- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2) +- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen) +- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen) +- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen) +- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos) +- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen) +- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel) +- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen) +- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem) +- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen) +- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov) +- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser) + +### v2.47.0 (2014/10/26) +- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen) +- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott) +- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen) +- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request) +- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen) +- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser) +- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen) +- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen) +- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru) +- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott) +- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov) +- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen) +- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov) + +### v2.46.0 (2014/10/23) +- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu) +- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger) +- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen) +- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen) +- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott) +- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott) +- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott) +- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott) +- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen) +- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen) +- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica) +- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen) +- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress) +- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom) +- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott) +- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom) +- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom) +- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic) +- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom) +- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W) +- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen) +- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen) +- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok) +- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott) +- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom) +- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay) +- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay) +- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen) +- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott) +- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott) +- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen) +- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund) +- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock) +- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey) +- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott) +- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom) +- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott) +- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott) + +### v2.45.0 (2014/10/06) +- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen) +- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe) +- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom) +- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott) +- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen) +- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott) +- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott) +- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott) +- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott) +- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott) +- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday) +- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott) +- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott) +- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott) +- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott) +- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott) +- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott) +- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky) +- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan) +- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom) +- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid) +- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb) +- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167) +- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket) +- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom) +- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica) + +### v2.43.0 (2014/09/18) +- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood) +- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot) +- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp) +- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON) +- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen) + +### v2.42.0 (2014/09/04) +- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs) + +### v2.41.0 (2014/09/04) +- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker) +- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg) +- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts) +- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom) +- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom) +- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen) +- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen) +- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky) +- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen) +- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink) +- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin) +- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway) +- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott) +- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal) +- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz, @mafintosh, @lalitkapoor, @stash, @bobyrizov) +- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott) +- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki) +- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal) +- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19) +- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm) +- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl) + +### v2.40.0 (2014/08/06) +- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja) +- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree) +- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna) + +### v2.39.0 (2014/07/24) +- [#976](https://github.com/request/request/pull/976) Update README.md (@pvoznenko) + +### v2.38.0 (2014/07/22) +- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked) +- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung) +- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx) +- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen) +- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid) +- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu) +- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy) +- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow) + +### v2.37.0 (2014/07/07) +- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson) +- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne) +- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid) +- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd) +- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm) +- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm) +- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone) +- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob) + +### v2.35.0 (2014/05/17) +- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla) +- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof) +- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor) +- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn) +- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv) +- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny) +- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700) +- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody) +- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil) +- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND) +- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw) +- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor) + +### v2.34.0 (2014/02/18) +- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi) +- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor) +- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival) +- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul) +- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo) +- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo) + +### v2.32.0 (2014/01/16) +- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash) +- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov) +- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash) +- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor) +- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh) + +### v2.31.0 (2014/01/08) +- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick) +- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish) +- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay) +- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx) +- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay) +- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki) +- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium) +- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi) +- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow) +- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris) +- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort) +- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@unsetbit) +- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub) +- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak) +- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin) +- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink) +- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario) +- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87) +- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87) +- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren) +- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong) +- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario) +- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar) +- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm) +- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl) +- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo) +- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander) +- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker) +- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath) +- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK) +- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko) +- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek) +- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone) +- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn) +- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy) +- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette) +- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz) +- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub) +- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality) +- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando) +- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva) +- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath) +- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi) +- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway) +- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka) +- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway) +- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway) +- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun) +- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn) +- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen) +- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs) +- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1) +- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy) +- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins) +- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas) +- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH) +- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore) +- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs) +- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski) +- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin) +- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse) +- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya) +- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse) +- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn, @nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) +- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh) +- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann, @isaacs, @mscdex) +- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) +- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar) +- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack) +- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki) +- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf) +- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem) +- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen) +- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki) +- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki) +- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23) +- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro) +- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-) +- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan) +- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock) +- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy) +- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge) +- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge) +- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf) +- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall) +- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall) +- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins) +- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier) +- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman) +- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup) +- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf) +- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris) +- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo) +- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@CartoDB) +- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs) +- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs) +- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex) +- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs) +- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1) +- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs) +- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas, @vpulim) +- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono, @timshadel, @naholyr, @nanodocumet, @TehShrike) +- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry) +- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek) +- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock) +- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin) +- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh) +- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike) +- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet) +- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr) +- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel) +- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel) +- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges, @polotek, @zephrax, @jeromegn) +- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1) +- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter) +- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn) +- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax) +- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek) +- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso, @vpulim) +- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom) +- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup) +- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@vpulim) +- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs) +- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs) +- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs) +- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker) +- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay) +- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty) +- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63) +- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63) +- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack) +- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63) +- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes) +- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby) +- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou) +- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov) +- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes) +- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh) +- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace) +- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim) +- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy) +- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf) +- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson) +- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs) +- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom) +- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman) +- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden) +- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs) +- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@kkaefer) +- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr) +- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex) +- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs) +- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs) +- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough) +- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs) +- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup) +- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs, @aheckmann) +- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs) +- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs) +- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann) +- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod) +- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin) +- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort) +- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli) +- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers) \ No newline at end of file diff --git a/node_modules/request/LICENSE b/node_modules/request/LICENSE new file mode 100644 index 0000000..a4a9aee --- /dev/null +++ b/node_modules/request/LICENSE @@ -0,0 +1,55 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/request/README.md b/node_modules/request/README.md new file mode 100644 index 0000000..b91623d --- /dev/null +++ b/node_modules/request/README.md @@ -0,0 +1,1097 @@ + +# Request - Simplified HTTP client + +[![npm package](https://nodei.co/npm/request.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/request/) + +[![Build status](https://img.shields.io/travis/request/request/master.svg?style=flat-square)](https://travis-ci.org/request/request) +[![Coverage](https://img.shields.io/codecov/c/github/request/request.svg?style=flat-square)](https://codecov.io/github/request/request?branch=master) +[![Coverage](https://img.shields.io/coveralls/request/request.svg?style=flat-square)](https://coveralls.io/r/request/request) +[![Dependency Status](https://img.shields.io/david/request/request.svg?style=flat-square)](https://david-dm.org/request/request) +[![Known Vulnerabilities](https://snyk.io/test/npm/request/badge.svg?style=flat-square)](https://snyk.io/test/npm/request) +[![Gitter](https://img.shields.io/badge/gitter-join_chat-blue.svg?style=flat-square)](https://gitter.im/request/request?utm_source=badge) + + +## Super simple to use + +Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. + +```js +var request = require('request'); +request('http://www.google.com', function (error, response, body) { + console.log('error:', error); // Print the error if one occurred + console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received + console.log('body:', body); // Print the HTML for the Google homepage. +}); +``` + + +## Table of contents + +- [Streaming](#streaming) +- [Promises & Async/Await](#promises--asyncawait) +- [Forms](#forms) +- [HTTP Authentication](#http-authentication) +- [Custom HTTP Headers](#custom-http-headers) +- [OAuth Signing](#oauth-signing) +- [Proxies](#proxies) +- [Unix Domain Sockets](#unix-domain-sockets) +- [TLS/SSL Protocol](#tlsssl-protocol) +- [Support for HAR 1.2](#support-for-har-12) +- [**All Available Options**](#requestoptions-callback) + +Request also offers [convenience methods](#convenience-methods) like +`request.defaults` and `request.post`, and there are +lots of [usage examples](#examples) and several +[debugging techniques](#debugging). + + +--- + + +## Streaming + +You can stream any response to a file stream. + +```js +request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) +``` + +You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). + +```js +fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) +``` + +Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. + +```js +request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) +``` + +Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage). + +```js +request + .get('http://google.com/img.png') + .on('response', function(response) { + console.log(response.statusCode) // 200 + console.log(response.headers['content-type']) // 'image/png' + }) + .pipe(request.put('http://mysite.com/img.png')) +``` + +To easily handle errors when streaming requests, listen to the `error` event before piping: + +```js +request + .get('http://mysite.com/doodle.png') + .on('error', function(err) { + console.log(err) + }) + .pipe(fs.createWriteStream('doodle.png')) +``` + +Now let’s get fancy. + +```js +http.createServer(function (req, resp) { + if (req.url === '/doodle.png') { + if (req.method === 'PUT') { + req.pipe(request.put('http://mysite.com/doodle.png')) + } else if (req.method === 'GET' || req.method === 'HEAD') { + request.get('http://mysite.com/doodle.png').pipe(resp) + } + } +}) +``` + +You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: + +```js +http.createServer(function (req, resp) { + if (req.url === '/doodle.png') { + var x = request('http://mysite.com/doodle.png') + req.pipe(x) + x.pipe(resp) + } +}) +``` + +And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) + +```js +req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) +``` + +Also, none of this new functionality conflicts with requests previous features, it just expands them. + +```js +var r = request.defaults({'proxy':'http://localproxy.com'}) + +http.createServer(function (req, resp) { + if (req.url === '/doodle.png') { + r.get('http://google.com/doodle.png').pipe(resp) + } +}) +``` + +You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. + +[back to top](#table-of-contents) + + +--- + + +## Promises & Async/Await + +`request` supports both streaming and callback interfaces natively. If you'd like `request` to return a Promise instead, you can use an alternative interface wrapper for `request`. These wrappers can be useful if you prefer to work with Promises, or if you'd like to use `async`/`await` in ES2017. + +Several alternative interfaces are provided by the request team, including: +- [`request-promise`](https://github.com/request/request-promise) (uses [Bluebird](https://github.com/petkaantonov/bluebird) Promises) +- [`request-promise-native`](https://github.com/request/request-promise-native) (uses native Promises) +- [`request-promise-any`](https://github.com/request/request-promise-any) (uses [any-promise](https://www.npmjs.com/package/any-promise) Promises) + + +[back to top](#table-of-contents) + + +--- + + +## Forms + +`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. + + +#### application/x-www-form-urlencoded (URL-Encoded Forms) + +URL-encoded forms are simple. + +```js +request.post('http://service.com/upload', {form:{key:'value'}}) +// or +request.post('http://service.com/upload').form({key:'value'}) +// or +request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ }) +``` + + +#### multipart/form-data (Multipart Form Uploads) + +For `multipart/form-data` we use the [form-data](https://github.com/form-data/form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option. + + +```js +var formData = { + // Pass a simple key-value pair + my_field: 'my_value', + // Pass data via Buffers + my_buffer: Buffer.from([1, 2, 3]), + // Pass data via Streams + my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), + // Pass multiple values /w an Array + attachments: [ + fs.createReadStream(__dirname + '/attachment1.jpg'), + fs.createReadStream(__dirname + '/attachment2.jpg') + ], + // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS} + // Use case: for some types of streams, you'll need to provide "file"-related information manually. + // See the `form-data` README for more information about options: https://github.com/form-data/form-data + custom_file: { + value: fs.createReadStream('/dev/urandom'), + options: { + filename: 'topsecret.jpg', + contentType: 'image/jpeg' + } + } +}; +request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) { + if (err) { + return console.error('upload failed:', err); + } + console.log('Upload successful! Server responded with:', body); +}); +``` + +For advanced cases, you can access the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.) + +```js +// NOTE: Advanced use-case, for normal use see 'formData' usage above +var r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) {...}) +var form = r.form(); +form.append('my_field', 'my_value'); +form.append('my_buffer', Buffer.from([1, 2, 3])); +form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'}); +``` +See the [form-data README](https://github.com/form-data/form-data) for more information & examples. + + +#### multipart/related + +Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options. + +```js + request({ + method: 'PUT', + preambleCRLF: true, + postambleCRLF: true, + uri: 'http://service.com/upload', + multipart: [ + { + 'content-type': 'application/json', + body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) + }, + { body: 'I am an attachment' }, + { body: fs.createReadStream('image.png') } + ], + // alternatively pass an object containing additional options + multipart: { + chunked: false, + data: [ + { + 'content-type': 'application/json', + body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) + }, + { body: 'I am an attachment' } + ] + } + }, + function (error, response, body) { + if (error) { + return console.error('upload failed:', error); + } + console.log('Upload successful! Server responded with:', body); + }) +``` + +[back to top](#table-of-contents) + + +--- + + +## HTTP Authentication + +```js +request.get('http://some.server.com/').auth('username', 'password', false); +// or +request.get('http://some.server.com/', { + 'auth': { + 'user': 'username', + 'pass': 'password', + 'sendImmediately': false + } +}); +// or +request.get('http://some.server.com/').auth(null, null, true, 'bearerToken'); +// or +request.get('http://some.server.com/', { + 'auth': { + 'bearer': 'bearerToken' + } +}); +``` + +If passed as an option, `auth` should be a hash containing values: + +- `user` || `username` +- `pass` || `password` +- `sendImmediately` (optional) +- `bearer` (optional) + +The method form takes parameters +`auth(username, password, sendImmediately, bearer)`. + +`sendImmediately` defaults to `true`, which causes a basic or bearer +authentication header to be sent. If `sendImmediately` is `false`, then +`request` will retry with a proper authentication header after receiving a +`401` response from the server (which must contain a `WWW-Authenticate` header +indicating the required authentication method). + +Note that you can also specify basic authentication using the URL itself, as +detailed in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). Simply pass the +`user:password` before the host with an `@` sign: + +```js +var username = 'username', + password = 'password', + url = 'http://' + username + ':' + password + '@some.server.com'; + +request({url: url}, function (error, response, body) { + // Do more stuff with 'body' here +}); +``` + +Digest authentication is supported, but it only works with `sendImmediately` +set to `false`; otherwise `request` will send basic authentication on the +initial request, which will probably cause the request to fail. + +Bearer authentication is supported, and is activated when the `bearer` value is +available. The value may be either a `String` or a `Function` returning a +`String`. Using a function to supply the bearer token is particularly useful if +used in conjunction with `defaults` to allow a single function to supply the +last known token at the time of sending a request, or to compute one on the fly. + +[back to top](#table-of-contents) + + +--- + + +## Custom HTTP Headers + +HTTP Headers, such as `User-Agent`, can be set in the `options` object. +In the example below, we call the github API to find out the number +of stars and forks for the request repository. This requires a +custom `User-Agent` header as well as https. + +```js +var request = require('request'); + +var options = { + url: 'https://api.github.com/repos/request/request', + headers: { + 'User-Agent': 'request' + } +}; + +function callback(error, response, body) { + if (!error && response.statusCode == 200) { + var info = JSON.parse(body); + console.log(info.stargazers_count + " Stars"); + console.log(info.forks_count + " Forks"); + } +} + +request(options, callback); +``` + +[back to top](#table-of-contents) + + +--- + + +## OAuth Signing + +[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The +default signing algorithm is +[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2): + +```js +// OAuth1.0 - 3-legged server side flow (Twitter example) +// step 1 +var qs = require('querystring') + , oauth = + { callback: 'http://mysite.com/callback/' + , consumer_key: CONSUMER_KEY + , consumer_secret: CONSUMER_SECRET + } + , url = 'https://api.twitter.com/oauth/request_token' + ; +request.post({url:url, oauth:oauth}, function (e, r, body) { + // Ideally, you would take the body in the response + // and construct a URL that a user clicks on (like a sign in button). + // The verifier is only available in the response after a user has + // verified with twitter that they are authorizing your app. + + // step 2 + var req_data = qs.parse(body) + var uri = 'https://api.twitter.com/oauth/authenticate' + + '?' + qs.stringify({oauth_token: req_data.oauth_token}) + // redirect the user to the authorize uri + + // step 3 + // after the user is redirected back to your server + var auth_data = qs.parse(body) + , oauth = + { consumer_key: CONSUMER_KEY + , consumer_secret: CONSUMER_SECRET + , token: auth_data.oauth_token + , token_secret: req_data.oauth_token_secret + , verifier: auth_data.oauth_verifier + } + , url = 'https://api.twitter.com/oauth/access_token' + ; + request.post({url:url, oauth:oauth}, function (e, r, body) { + // ready to make signed requests on behalf of the user + var perm_data = qs.parse(body) + , oauth = + { consumer_key: CONSUMER_KEY + , consumer_secret: CONSUMER_SECRET + , token: perm_data.oauth_token + , token_secret: perm_data.oauth_token_secret + } + , url = 'https://api.twitter.com/1.1/users/show.json' + , qs = + { screen_name: perm_data.screen_name + , user_id: perm_data.user_id + } + ; + request.get({url:url, oauth:oauth, qs:qs, json:true}, function (e, r, user) { + console.log(user) + }) + }) +}) +``` + +For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make +the following changes to the OAuth options object: +* Pass `signature_method : 'RSA-SHA1'` +* Instead of `consumer_secret`, specify a `private_key` string in + [PEM format](http://how2ssl.com/articles/working_with_pem_files/) + +For [PLAINTEXT signing](http://oauth.net/core/1.0/#anchor22), make +the following changes to the OAuth options object: +* Pass `signature_method : 'PLAINTEXT'` + +To send OAuth parameters via query params or in a post body as described in The +[Consumer Request Parameters](http://oauth.net/core/1.0/#consumer_req_param) +section of the oauth1 spec: +* Pass `transport_method : 'query'` or `transport_method : 'body'` in the OAuth + options object. +* `transport_method` defaults to `'header'` + +To use [Request Body Hash](https://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html) you can either +* Manually generate the body hash and pass it as a string `body_hash: '...'` +* Automatically generate the body hash by passing `body_hash: true` + +[back to top](#table-of-contents) + + +--- + + +## Proxies + +If you specify a `proxy` option, then the request (and any subsequent +redirects) will be sent via a connection to the proxy server. + +If your endpoint is an `https` url, and you are using a proxy, then +request will send a `CONNECT` request to the proxy server *first*, and +then use the supplied connection to connect to the endpoint. + +That is, first it will make a request like: + +``` +HTTP/1.1 CONNECT endpoint-server.com:80 +Host: proxy-server.com +User-Agent: whatever user agent you specify +``` + +and then the proxy server make a TCP connection to `endpoint-server` +on port `80`, and return a response that looks like: + +``` +HTTP/1.1 200 OK +``` + +At this point, the connection is left open, and the client is +communicating directly with the `endpoint-server.com` machine. + +See [the wikipedia page on HTTP Tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel) +for more information. + +By default, when proxying `http` traffic, request will simply make a +standard proxied `http` request. This is done by making the `url` +section of the initial line of the request a fully qualified url to +the endpoint. + +For example, it will make a single request that looks like: + +``` +HTTP/1.1 GET http://endpoint-server.com/some-url +Host: proxy-server.com +Other-Headers: all go here + +request body or whatever +``` + +Because a pure "http over http" tunnel offers no additional security +or other features, it is generally simpler to go with a +straightforward HTTP proxy in this case. However, if you would like +to force a tunneling proxy, you may set the `tunnel` option to `true`. + +You can also make a standard proxied `http` request by explicitly setting +`tunnel : false`, but **note that this will allow the proxy to see the traffic +to/from the destination server**. + +If you are using a tunneling proxy, you may set the +`proxyHeaderWhiteList` to share certain headers with the proxy. + +You can also set the `proxyHeaderExclusiveList` to share certain +headers only with the proxy and not with destination host. + +By default, this set is: + +``` +accept +accept-charset +accept-encoding +accept-language +accept-ranges +cache-control +content-encoding +content-language +content-length +content-location +content-md5 +content-range +content-type +connection +date +expect +max-forwards +pragma +proxy-authorization +referer +te +transfer-encoding +user-agent +via +``` + +Note that, when using a tunneling proxy, the `proxy-authorization` +header and any headers from custom `proxyHeaderExclusiveList` are +*never* sent to the endpoint server, but only to the proxy server. + + +### Controlling proxy behaviour using environment variables + +The following environment variables are respected by `request`: + + * `HTTP_PROXY` / `http_proxy` + * `HTTPS_PROXY` / `https_proxy` + * `NO_PROXY` / `no_proxy` + +When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request. + +`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables. + +Here's some examples of valid `no_proxy` values: + + * `google.com` - don't proxy HTTP/HTTPS requests to Google. + * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google. + * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo! + * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether. + +[back to top](#table-of-contents) + + +--- + + +## UNIX Domain Sockets + +`request` supports making requests to [UNIX Domain Sockets](https://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme: + +```js +/* Pattern */ 'http://unix:SOCKET:PATH' +/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path') +``` + +Note: The `SOCKET` path is assumed to be absolute to the root of the host file system. + +[back to top](#table-of-contents) + + +--- + + +## TLS/SSL Protocol + +TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be +set directly in `options` object, in the `agentOptions` property of the `options` object, or even in `https.globalAgent.options`. Keep in mind that, although `agentOptions` allows for a slightly wider range of configurations, the recommended way is via `options` object directly, as using `agentOptions` or `https.globalAgent.options` would not be applied in the same way in proxied environments (as data travels through a TLS connection instead of an http/https agent). + +```js +var fs = require('fs') + , path = require('path') + , certFile = path.resolve(__dirname, 'ssl/client.crt') + , keyFile = path.resolve(__dirname, 'ssl/client.key') + , caFile = path.resolve(__dirname, 'ssl/ca.cert.pem') + , request = require('request'); + +var options = { + url: 'https://api.some-server.com/', + cert: fs.readFileSync(certFile), + key: fs.readFileSync(keyFile), + passphrase: 'password', + ca: fs.readFileSync(caFile) +}; + +request.get(options); +``` + +### Using `options.agentOptions` + +In the example below, we call an API that requires client side SSL certificate +(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol: + +```js +var fs = require('fs') + , path = require('path') + , certFile = path.resolve(__dirname, 'ssl/client.crt') + , keyFile = path.resolve(__dirname, 'ssl/client.key') + , request = require('request'); + +var options = { + url: 'https://api.some-server.com/', + agentOptions: { + cert: fs.readFileSync(certFile), + key: fs.readFileSync(keyFile), + // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format: + // pfx: fs.readFileSync(pfxFilePath), + passphrase: 'password', + securityOptions: 'SSL_OP_NO_SSLv3' + } +}; + +request.get(options); +``` + +It is able to force using SSLv3 only by specifying `secureProtocol`: + +```js +request.get({ + url: 'https://api.some-server.com/', + agentOptions: { + secureProtocol: 'SSLv3_method' + } +}); +``` + +It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs). +This can be useful, for example, when using self-signed certificates. +To require a different root certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`. +The certificate the domain presents must be signed by the root certificate specified: + +```js +request.get({ + url: 'https://api.some-server.com/', + agentOptions: { + ca: fs.readFileSync('ca.cert.pem') + } +}); +``` + +[back to top](#table-of-contents) + + +--- + +## Support for HAR 1.2 + +The `options.har` property will override the values: `url`, `method`, `qs`, `headers`, `form`, `formData`, `body`, `json`, as well as construct multipart data and read files from disk when `request.postData.params[].fileName` is present without a matching `value`. + +A validation step will check if the HAR Request format matches the latest spec (v1.2) and will skip parsing if not matching. + +```js + var request = require('request') + request({ + // will be ignored + method: 'GET', + uri: 'http://www.google.com', + + // HTTP Archive Request Object + har: { + url: 'http://www.mockbin.com/har', + method: 'POST', + headers: [ + { + name: 'content-type', + value: 'application/x-www-form-urlencoded' + } + ], + postData: { + mimeType: 'application/x-www-form-urlencoded', + params: [ + { + name: 'foo', + value: 'bar' + }, + { + name: 'hello', + value: 'world' + } + ] + } + } + }) + + // a POST request will be sent to http://www.mockbin.com + // with body an application/x-www-form-urlencoded body: + // foo=bar&hello=world +``` + +[back to top](#table-of-contents) + + +--- + +## request(options, callback) + +The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. + +- `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` +- `baseUrl` - fully qualified uri string used as the base url. Most useful with `request.defaults`, for example when you want to do many requests to the same domain. If `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/api/end/point?test=true`. When `baseUrl` is given, `uri` must also be a string. +- `method` - http method (default: `"GET"`) +- `headers` - http headers (default: `{}`) + +--- + +- `qs` - object containing querystring values to be appended to the `uri` +- `qsParseOptions` - object containing options to pass to the [qs.parse](https://github.com/hapijs/qs#parsing-objects) method. Alternatively pass options to the [querystring.parse](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}` +- `qsStringifyOptions` - object containing options to pass to the [qs.stringify](https://github.com/hapijs/qs#stringifying) method. Alternatively pass options to the [querystring.stringify](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`. For example, to change the way arrays are converted to query strings using the `qs` module pass the `arrayFormat` option with one of `indices|brackets|repeat` +- `useQuerystring` - if true, use `querystring` to stringify and parse + querystrings, otherwise use `qs` (default: `false`). Set this option to + `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the + default `foo[0]=bar&foo[1]=baz`. + +--- + +- `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer`, `String` or `ReadStream`. If `json` is `true`, then `body` must be a JSON-serializable object. +- `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above. +- `formData` - data to pass for a `multipart/form-data` request. See + [Forms](#forms) section above. +- `multipart` - array of objects which contain their own headers and `body` + attributes. Sends a `multipart/related` request. See [Forms](#forms) section + above. + - Alternatively you can pass in an object `{chunked: false, data: []}` where + `chunked` is used to specify whether the request is sent in + [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) + In non-chunked requests, data items with body streams are not allowed. +- `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request. +- `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request. +- `json` - sets `body` to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. +- `jsonReviver` - a [reviver function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) that will be passed to `JSON.parse()` when parsing a JSON response body. +- `jsonReplacer` - a [replacer function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) that will be passed to `JSON.stringify()` when stringifying a JSON request body. + +--- + +- `auth` - a hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above. +- `oauth` - options for OAuth HMAC-SHA1 signing. See documentation above. +- `hawk` - options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). +- `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`, and optionally `session` (note that this only works for services that require session as part of the canonical string). Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services). If you want to use AWS sign version 4 use the parameter `sign_version` with value `4` otherwise the default is version 2. If you are using SigV4, you can also include a `service` property that specifies the service name. **Note:** you need to `npm install aws4` first. +- `httpSignature` - options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. + +--- + +- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. +- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) +- `followOriginalHttpMethod` - by default we redirect to HTTP method GET. you can enable this property to redirect to the original HTTP method (default: `false`) +- `maxRedirects` - the maximum number of redirects to follow (default: `10`) +- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain. + +--- + +- `encoding` - encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). (**Note:** if you expect binary data, you should set `encoding: null`.) +- `gzip` - if `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below. +- `jar` - if `true`, remember cookies for future use (or define your custom cookie jar; see examples section) + +--- + +- `agent` - `http(s).Agent` instance to use +- `agentClass` - alternatively specify your agent's class name +- `agentOptions` - and pass its options. **Note:** for HTTPS see [tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback) and the [documentation above](#using-optionsagentoptions). +- `forever` - set to `true` to use the [forever-agent](https://github.com/request/forever-agent) **Note:** Defaults to `http(s).Agent({keepAlive:true})` in node 0.12+ +- `pool` - an object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as your options allow for it). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. **Note:** `pool` is used only when the `agent` option is not specified. + - A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`). + - Note that if you are sending multiple requests in a loop and creating + multiple new `pool` objects, `maxSockets` will not work as intended. To + work around this, either use [`request.defaults`](#requestdefaultsoptions) + with your pool options or create the pool object with the `maxSockets` + property outside of the loop. +- `timeout` - integer containing the number of milliseconds to wait for a +server to send response headers (and start the response body) before aborting +the request. Note that if the underlying TCP connection cannot be established, +the OS-wide TCP connection timeout will overrule the `timeout` option ([the +default in Linux can be anywhere from 20-120 seconds][linux-timeout]). + +[linux-timeout]: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout + +--- + +- `localAddress` - local interface to bind for network connections. +- `proxy` - an HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) +- `strictSSL` - if `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. +- `tunnel` - controls the behavior of + [HTTP `CONNECT` tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling) + as follows: + - `undefined` (default) - `true` if the destination is `https`, `false` otherwise + - `true` - always tunnel to the destination by making a `CONNECT` request to + the proxy + - `false` - request the destination as a `GET` request. +- `proxyHeaderWhiteList` - a whitelist of headers to send to a + tunneling proxy. +- `proxyHeaderExclusiveList` - a whitelist of headers to send + exclusively to a tunneling proxy and not to destination. + +--- + +- `time` - if `true`, the request-response cycle (including all redirects) is timed at millisecond resolution. When set, the following properties are added to the response object: + - `elapsedTime` Duration of the entire request/response in milliseconds (*deprecated*). + - `responseStartTime` Timestamp when the response began (in Unix Epoch milliseconds) (*deprecated*). + - `timingStart` Timestamp of the start of the request (in Unix Epoch milliseconds). + - `timings` Contains event timestamps in millisecond resolution relative to `timingStart`. If there were redirects, the properties reflect the timings of the final request in the redirect chain: + - `socket` Relative timestamp when the [`http`](https://nodejs.org/api/http.html#http_event_socket) module's `socket` event fires. This happens when the socket is assigned to the request. + - `lookup` Relative timestamp when the [`net`](https://nodejs.org/api/net.html#net_event_lookup) module's `lookup` event fires. This happens when the DNS has been resolved. + - `connect`: Relative timestamp when the [`net`](https://nodejs.org/api/net.html#net_event_connect) module's `connect` event fires. This happens when the server acknowledges the TCP connection. + - `response`: Relative timestamp when the [`http`](https://nodejs.org/api/http.html#http_event_response) module's `response` event fires. This happens when the first bytes are received from the server. + - `end`: Relative timestamp when the last bytes of the response are received. + - `timingPhases` Contains the durations of each request phase. If there were redirects, the properties reflect the timings of the final request in the redirect chain: + - `wait`: Duration of socket initialization (`timings.socket`) + - `dns`: Duration of DNS lookup (`timings.lookup` - `timings.socket`) + - `tcp`: Duration of TCP connection (`timings.connect` - `timings.socket`) + - `firstByte`: Duration of HTTP server response (`timings.response` - `timings.connect`) + - `download`: Duration of HTTP download (`timings.end` - `timings.response`) + - `total`: Duration entire HTTP round-trip (`timings.end`) + +- `har` - a [HAR 1.2 Request Object](http://www.softwareishard.com/blog/har-12-spec/#request), will be processed from HAR format into options overwriting matching values *(see the [HAR 1.2 section](#support-for-har-1.2) for details)* +- `callback` - alternatively pass the request's callback in the options object + +The callback argument gets 3 arguments: + +1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) +2. An [`http.IncomingMessage`](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object (Response object) +3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) + +[back to top](#table-of-contents) + + +--- + +## Convenience methods + +There are also shorthand methods for different HTTP METHODs and some other conveniences. + + +### request.defaults(options) + +This method **returns a wrapper** around the normal request API that defaults +to whatever options you pass to it. + +**Note:** `request.defaults()` **does not** modify the global request API; +instead, it **returns a wrapper** that has your default settings applied to it. + +**Note:** You can call `.defaults()` on the wrapper that is returned from +`request.defaults` to add/override defaults that were previously defaulted. + +For example: +```js +//requests using baseRequest() will set the 'x-token' header +var baseRequest = request.defaults({ + headers: {'x-token': 'my-token'} +}) + +//requests using specialRequest() will include the 'x-token' header set in +//baseRequest and will also include the 'special' header +var specialRequest = baseRequest.defaults({ + headers: {special: 'special value'} +}) +``` + +### request.METHOD() + +These HTTP method convenience functions act just like `request()` but with a default method already set for you: + +- *request.get()*: Defaults to `method: "GET"`. +- *request.post()*: Defaults to `method: "POST"`. +- *request.put()*: Defaults to `method: "PUT"`. +- *request.patch()*: Defaults to `method: "PATCH"`. +- *request.del() / request.delete()*: Defaults to `method: "DELETE"`. +- *request.head()*: Defaults to `method: "HEAD"`. +- *request.options()*: Defaults to `method: "OPTIONS"`. + +### request.cookie() + +Function that creates a new cookie. + +```js +request.cookie('key1=value1') +``` +### request.jar() + +Function that creates a new cookie jar. + +```js +request.jar() +``` + +[back to top](#table-of-contents) + + +--- + + +## Debugging + +There are at least three ways to debug the operation of `request`: + +1. Launch the node process like `NODE_DEBUG=request node script.js` + (`lib,request,otherlib` works too). + +2. Set `require('request').debug = true` at any time (this does the same thing + as #1). + +3. Use the [request-debug module](https://github.com/request/request-debug) to + view request and response headers and bodies. + +[back to top](#table-of-contents) + + +--- + +## Timeouts + +Most requests to external servers should have a timeout attached, in case the +server is not responding in a timely manner. Without a timeout, your code may +have a socket open/consume resources for minutes or more. + +There are two main types of timeouts: **connection timeouts** and **read +timeouts**. A connect timeout occurs if the timeout is hit while your client is +attempting to establish a connection to a remote machine (corresponding to the +[connect() call][connect] on the socket). A read timeout occurs any time the +server is too slow to send back a part of the response. + +These two situations have widely different implications for what went wrong +with the request, so it's useful to be able to distinguish them. You can detect +timeout errors by checking `err.code` for an 'ETIMEDOUT' value. Further, you +can detect whether the timeout was a connection timeout by checking if the +`err.connect` property is set to `true`. + +```js +request.get('http://10.255.255.1', {timeout: 1500}, function(err) { + console.log(err.code === 'ETIMEDOUT'); + // Set to `true` if the timeout was a connection timeout, `false` or + // `undefined` otherwise. + console.log(err.connect === true); + process.exit(0); +}); +``` + +[connect]: http://linux.die.net/man/2/connect + +## Examples: + +```js + var request = require('request') + , rand = Math.floor(Math.random()*100000000).toString() + ; + request( + { method: 'PUT' + , uri: 'http://mikeal.iriscouch.com/testjs/' + rand + , multipart: + [ { 'content-type': 'application/json' + , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) + } + , { body: 'I am an attachment' } + ] + } + , function (error, response, body) { + if(response.statusCode == 201){ + console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) + } else { + console.log('error: '+ response.statusCode) + console.log(body) + } + } + ) +``` + +For backwards-compatibility, response compression is not supported by default. +To accept gzip-compressed responses, set the `gzip` option to `true`. Note +that the body data passed through `request` is automatically decompressed +while the response object is unmodified and will contain compressed data if +the server sent a compressed response. + +```js + var request = require('request') + request( + { method: 'GET' + , uri: 'http://www.google.com' + , gzip: true + } + , function (error, response, body) { + // body is the decompressed response body + console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity')) + console.log('the decoded data is: ' + body) + } + ) + .on('data', function(data) { + // decompressed data as it is received + console.log('decoded chunk: ' + data) + }) + .on('response', function(response) { + // unmodified http.IncomingMessage object + response.on('data', function(data) { + // compressed data as it is received + console.log('received ' + data.length + ' bytes of compressed data') + }) + }) +``` + +Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). + +```js +var request = request.defaults({jar: true}) +request('http://www.google.com', function () { + request('http://images.google.com') +}) +``` + +To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) + +```js +var j = request.jar() +var request = request.defaults({jar:j}) +request('http://www.google.com', function () { + request('http://images.google.com') +}) +``` + +OR + +```js +var j = request.jar(); +var cookie = request.cookie('key1=value1'); +var url = 'http://www.google.com'; +j.setCookie(cookie, url); +request({url: url, jar: j}, function () { + request('http://images.google.com') +}) +``` + +To use a custom cookie store (such as a +[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore) +which supports saving to and restoring from JSON files), pass it as a parameter +to `request.jar()`: + +```js +var FileCookieStore = require('tough-cookie-filestore'); +// NOTE - currently the 'cookies.json' file must already exist! +var j = request.jar(new FileCookieStore('cookies.json')); +request = request.defaults({ jar : j }) +request('http://www.google.com', function() { + request('http://images.google.com') +}) +``` + +The cookie store must be a +[`tough-cookie`](https://github.com/SalesforceEng/tough-cookie) +store and it must support synchronous operations; see the +[`CookieStore` API docs](https://github.com/SalesforceEng/tough-cookie#cookiestore-api) +for details. + +To inspect your cookie jar after a request: + +```js +var j = request.jar() +request({url: 'http://www.google.com', jar: j}, function () { + var cookie_string = j.getCookieString(url); // "key1=value1; key2=value2; ..." + var cookies = j.getCookies(url); + // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...] +}) +``` + +[back to top](#table-of-contents) diff --git a/node_modules/request/index.js b/node_modules/request/index.js new file mode 100755 index 0000000..f9b480a --- /dev/null +++ b/node_modules/request/index.js @@ -0,0 +1,155 @@ +// Copyright 2010-2012 Mikeal Rogers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict' + +var extend = require('extend') +var cookies = require('./lib/cookies') +var helpers = require('./lib/helpers') + +var paramsHaveRequestBody = helpers.paramsHaveRequestBody + +// organize params for patch, post, put, head, del +function initParams (uri, options, callback) { + if (typeof options === 'function') { + callback = options + } + + var params = {} + if (typeof options === 'object') { + extend(params, options, {uri: uri}) + } else if (typeof uri === 'string') { + extend(params, {uri: uri}) + } else { + extend(params, uri) + } + + params.callback = callback || params.callback + return params +} + +function request (uri, options, callback) { + if (typeof uri === 'undefined') { + throw new Error('undefined is not a valid uri or options object.') + } + + var params = initParams(uri, options, callback) + + if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { + throw new Error('HTTP HEAD requests MUST NOT include a request body.') + } + + return new request.Request(params) +} + +function verbFunc (verb) { + var method = verb.toUpperCase() + return function (uri, options, callback) { + var params = initParams(uri, options, callback) + params.method = method + return request(params, params.callback) + } +} + +// define like this to please codeintel/intellisense IDEs +request.get = verbFunc('get') +request.head = verbFunc('head') +request.options = verbFunc('options') +request.post = verbFunc('post') +request.put = verbFunc('put') +request.patch = verbFunc('patch') +request.del = verbFunc('delete') +request['delete'] = verbFunc('delete') + +request.jar = function (store) { + return cookies.jar(store) +} + +request.cookie = function (str) { + return cookies.parse(str) +} + +function wrapRequestMethod (method, options, requester, verb) { + return function (uri, opts, callback) { + var params = initParams(uri, opts, callback) + + var target = {} + extend(true, target, options, params) + + target.pool = params.pool || options.pool + + if (verb) { + target.method = verb.toUpperCase() + } + + if (typeof requester === 'function') { + method = requester + } + + return method(target, target.callback) + } +} + +request.defaults = function (options, requester) { + var self = this + + options = options || {} + + if (typeof options === 'function') { + requester = options + options = {} + } + + var defaults = wrapRequestMethod(self, options, requester) + + var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete'] + verbs.forEach(function (verb) { + defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) + }) + + defaults.cookie = wrapRequestMethod(self.cookie, options, requester) + defaults.jar = self.jar + defaults.defaults = self.defaults + return defaults +} + +request.forever = function (agentOptions, optionsArg) { + var options = {} + if (optionsArg) { + extend(options, optionsArg) + } + if (agentOptions) { + options.agentOptions = agentOptions + } + + options.forever = true + return request.defaults(options) +} + +// Exports + +module.exports = request +request.Request = require('./request') +request.initParams = initParams + +// Backwards compatibility for request.debug +Object.defineProperty(request, 'debug', { + enumerable: true, + get: function () { + return request.Request.debug + }, + set: function (debug) { + request.Request.debug = debug + } +}) diff --git a/node_modules/request/lib/auth.js b/node_modules/request/lib/auth.js new file mode 100644 index 0000000..f5edf32 --- /dev/null +++ b/node_modules/request/lib/auth.js @@ -0,0 +1,167 @@ +'use strict' + +var caseless = require('caseless') +var uuid = require('uuid/v4') +var helpers = require('./helpers') + +var md5 = helpers.md5 +var toBase64 = helpers.toBase64 + +function Auth (request) { + // define all public properties here + this.request = request + this.hasAuth = false + this.sentAuth = false + this.bearerToken = null + this.user = null + this.pass = null +} + +Auth.prototype.basic = function (user, pass, sendImmediately) { + var self = this + if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { + self.request.emit('error', new Error('auth() received invalid user or password')) + } + self.user = user + self.pass = pass + self.hasAuth = true + var header = user + ':' + (pass || '') + if (sendImmediately || typeof sendImmediately === 'undefined') { + var authHeader = 'Basic ' + toBase64(header) + self.sentAuth = true + return authHeader + } +} + +Auth.prototype.bearer = function (bearer, sendImmediately) { + var self = this + self.bearerToken = bearer + self.hasAuth = true + if (sendImmediately || typeof sendImmediately === 'undefined') { + if (typeof bearer === 'function') { + bearer = bearer() + } + var authHeader = 'Bearer ' + (bearer || '') + self.sentAuth = true + return authHeader + } +} + +Auth.prototype.digest = function (method, path, authHeader) { + // TODO: More complete implementation of RFC 2617. + // - handle challenge.domain + // - support qop="auth-int" only + // - handle Authentication-Info (not necessarily?) + // - check challenge.stale (not necessarily?) + // - increase nc (not necessarily?) + // For reference: + // http://tools.ietf.org/html/rfc2617#section-3 + // https://github.com/bagder/curl/blob/master/lib/http_digest.c + + var self = this + + var challenge = {} + var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi + for (;;) { + var match = re.exec(authHeader) + if (!match) { + break + } + challenge[match[1]] = match[2] || match[3] + } + + /** + * RFC 2617: handle both MD5 and MD5-sess algorithms. + * + * If the algorithm directive's value is "MD5" or unspecified, then HA1 is + * HA1=MD5(username:realm:password) + * If the algorithm directive's value is "MD5-sess", then HA1 is + * HA1=MD5(MD5(username:realm:password):nonce:cnonce) + */ + var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) { + var ha1 = md5(user + ':' + realm + ':' + pass) + if (algorithm && algorithm.toLowerCase() === 'md5-sess') { + return md5(ha1 + ':' + nonce + ':' + cnonce) + } else { + return ha1 + } + } + + var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' + var nc = qop && '00000001' + var cnonce = qop && uuid().replace(/-/g, '') + var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce) + var ha2 = md5(method + ':' + path) + var digestResponse = qop + ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) + : md5(ha1 + ':' + challenge.nonce + ':' + ha2) + var authValues = { + username: self.user, + realm: challenge.realm, + nonce: challenge.nonce, + uri: path, + qop: qop, + response: digestResponse, + nc: nc, + cnonce: cnonce, + algorithm: challenge.algorithm, + opaque: challenge.opaque + } + + authHeader = [] + for (var k in authValues) { + if (authValues[k]) { + if (k === 'qop' || k === 'nc' || k === 'algorithm') { + authHeader.push(k + '=' + authValues[k]) + } else { + authHeader.push(k + '="' + authValues[k] + '"') + } + } + } + authHeader = 'Digest ' + authHeader.join(', ') + self.sentAuth = true + return authHeader +} + +Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { + var self = this + var request = self.request + + var authHeader + if (bearer === undefined && user === undefined) { + self.request.emit('error', new Error('no auth mechanism defined')) + } else if (bearer !== undefined) { + authHeader = self.bearer(bearer, sendImmediately) + } else { + authHeader = self.basic(user, pass, sendImmediately) + } + if (authHeader) { + request.setHeader('authorization', authHeader) + } +} + +Auth.prototype.onResponse = function (response) { + var self = this + var request = self.request + + if (!self.hasAuth || self.sentAuth) { return null } + + var c = caseless(response.headers) + + var authHeader = c.get('www-authenticate') + var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() + request.debug('reauth', authVerb) + + switch (authVerb) { + case 'basic': + return self.basic(self.user, self.pass, true) + + case 'bearer': + return self.bearer(self.bearerToken, true) + + case 'digest': + return self.digest(request.method, request.path, authHeader) + } +} + +exports.Auth = Auth diff --git a/node_modules/request/lib/cookies.js b/node_modules/request/lib/cookies.js new file mode 100644 index 0000000..bd5d46b --- /dev/null +++ b/node_modules/request/lib/cookies.js @@ -0,0 +1,38 @@ +'use strict' + +var tough = require('tough-cookie') + +var Cookie = tough.Cookie +var CookieJar = tough.CookieJar + +exports.parse = function (str) { + if (str && str.uri) { + str = str.uri + } + if (typeof str !== 'string') { + throw new Error('The cookie function only accepts STRING as param') + } + return Cookie.parse(str, {loose: true}) +} + +// Adapt the sometimes-Async api of tough.CookieJar to our requirements +function RequestJar (store) { + var self = this + self._jar = new CookieJar(store, {looseMode: true}) +} +RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) { + var self = this + return self._jar.setCookieSync(cookieOrStr, uri, options || {}) +} +RequestJar.prototype.getCookieString = function (uri) { + var self = this + return self._jar.getCookieStringSync(uri) +} +RequestJar.prototype.getCookies = function (uri) { + var self = this + return self._jar.getCookiesSync(uri) +} + +exports.jar = function (store) { + return new RequestJar(store) +} diff --git a/node_modules/request/lib/getProxyFromURI.js b/node_modules/request/lib/getProxyFromURI.js new file mode 100644 index 0000000..4633ba5 --- /dev/null +++ b/node_modules/request/lib/getProxyFromURI.js @@ -0,0 +1,79 @@ +'use strict' + +function formatHostname (hostname) { + // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' + return hostname.replace(/^\.*/, '.').toLowerCase() +} + +function parseNoProxyZone (zone) { + zone = zone.trim().toLowerCase() + + var zoneParts = zone.split(':', 2) + var zoneHost = formatHostname(zoneParts[0]) + var zonePort = zoneParts[1] + var hasPort = zone.indexOf(':') > -1 + + return {hostname: zoneHost, port: zonePort, hasPort: hasPort} +} + +function uriInNoProxy (uri, noProxy) { + var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') + var hostname = formatHostname(uri.hostname) + var noProxyList = noProxy.split(',') + + // iterate through the noProxyList until it finds a match. + return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { + var isMatchedAt = hostname.indexOf(noProxyZone.hostname) + var hostnameMatched = ( + isMatchedAt > -1 && + (isMatchedAt === hostname.length - noProxyZone.hostname.length) + ) + + if (noProxyZone.hasPort) { + return (port === noProxyZone.port) && hostnameMatched + } + + return hostnameMatched + }) +} + +function getProxyFromURI (uri) { + // Decide the proper request proxy to use based on the request URI object and the + // environmental variables (NO_PROXY, HTTP_PROXY, etc.) + // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) + + var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' + + // if the noProxy is a wildcard then return null + + if (noProxy === '*') { + return null + } + + // if the noProxy is not empty and the uri is found return null + + if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { + return null + } + + // Check for HTTP or HTTPS Proxy in environment Else default to null + + if (uri.protocol === 'http:') { + return process.env.HTTP_PROXY || + process.env.http_proxy || null + } + + if (uri.protocol === 'https:') { + return process.env.HTTPS_PROXY || + process.env.https_proxy || + process.env.HTTP_PROXY || + process.env.http_proxy || null + } + + // if none of that works, return null + // (What uri protocol are you using then?) + + return null +} + +module.exports = getProxyFromURI diff --git a/node_modules/request/lib/har.js b/node_modules/request/lib/har.js new file mode 100644 index 0000000..2f66030 --- /dev/null +++ b/node_modules/request/lib/har.js @@ -0,0 +1,205 @@ +'use strict' + +var fs = require('fs') +var qs = require('querystring') +var validate = require('har-validator') +var extend = require('extend') + +function Har (request) { + this.request = request +} + +Har.prototype.reducer = function (obj, pair) { + // new property ? + if (obj[pair.name] === undefined) { + obj[pair.name] = pair.value + return obj + } + + // existing? convert to array + var arr = [ + obj[pair.name], + pair.value + ] + + obj[pair.name] = arr + + return obj +} + +Har.prototype.prep = function (data) { + // construct utility properties + data.queryObj = {} + data.headersObj = {} + data.postData.jsonObj = false + data.postData.paramsObj = false + + // construct query objects + if (data.queryString && data.queryString.length) { + data.queryObj = data.queryString.reduce(this.reducer, {}) + } + + // construct headers objects + if (data.headers && data.headers.length) { + // loweCase header keys + data.headersObj = data.headers.reduceRight(function (headers, header) { + headers[header.name] = header.value + return headers + }, {}) + } + + // construct Cookie header + if (data.cookies && data.cookies.length) { + var cookies = data.cookies.map(function (cookie) { + return cookie.name + '=' + cookie.value + }) + + if (cookies.length) { + data.headersObj.cookie = cookies.join('; ') + } + } + + // prep body + function some (arr) { + return arr.some(function (type) { + return data.postData.mimeType.indexOf(type) === 0 + }) + } + + if (some([ + 'multipart/mixed', + 'multipart/related', + 'multipart/form-data', + 'multipart/alternative'])) { + // reset values + data.postData.mimeType = 'multipart/form-data' + } else if (some([ + 'application/x-www-form-urlencoded'])) { + if (!data.postData.params) { + data.postData.text = '' + } else { + data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) + + // always overwrite + data.postData.text = qs.stringify(data.postData.paramsObj) + } + } else if (some([ + 'text/json', + 'text/x-json', + 'application/json', + 'application/x-json'])) { + data.postData.mimeType = 'application/json' + + if (data.postData.text) { + try { + data.postData.jsonObj = JSON.parse(data.postData.text) + } catch (e) { + this.request.debug(e) + + // force back to text/plain + data.postData.mimeType = 'text/plain' + } + } + } + + return data +} + +Har.prototype.options = function (options) { + // skip if no har property defined + if (!options.har) { + return options + } + + var har = {} + extend(har, options.har) + + // only process the first entry + if (har.log && har.log.entries) { + har = har.log.entries[0] + } + + // add optional properties to make validation successful + har.url = har.url || options.url || options.uri || options.baseUrl || '/' + har.httpVersion = har.httpVersion || 'HTTP/1.1' + har.queryString = har.queryString || [] + har.headers = har.headers || [] + har.cookies = har.cookies || [] + har.postData = har.postData || {} + har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' + + har.bodySize = 0 + har.headersSize = 0 + har.postData.size = 0 + + if (!validate.request(har)) { + return options + } + + // clean up and get some utility properties + var req = this.prep(har) + + // construct new options + if (req.url) { + options.url = req.url + } + + if (req.method) { + options.method = req.method + } + + if (Object.keys(req.queryObj).length) { + options.qs = req.queryObj + } + + if (Object.keys(req.headersObj).length) { + options.headers = req.headersObj + } + + function test (type) { + return req.postData.mimeType.indexOf(type) === 0 + } + if (test('application/x-www-form-urlencoded')) { + options.form = req.postData.paramsObj + } else if (test('application/json')) { + if (req.postData.jsonObj) { + options.body = req.postData.jsonObj + options.json = true + } + } else if (test('multipart/form-data')) { + options.formData = {} + + req.postData.params.forEach(function (param) { + var attachment = {} + + if (!param.fileName && !param.fileName && !param.contentType) { + options.formData[param.name] = param.value + return + } + + // attempt to read from disk! + if (param.fileName && !param.value) { + attachment.value = fs.createReadStream(param.fileName) + } else if (param.value) { + attachment.value = param.value + } + + if (param.fileName) { + attachment.options = { + filename: param.fileName, + contentType: param.contentType ? param.contentType : null + } + } + + options.formData[param.name] = attachment + }) + } else { + if (req.postData.text) { + options.body = req.postData.text + } + } + + return options +} + +exports.Har = Har diff --git a/node_modules/request/lib/hawk.js b/node_modules/request/lib/hawk.js new file mode 100644 index 0000000..de48a98 --- /dev/null +++ b/node_modules/request/lib/hawk.js @@ -0,0 +1,89 @@ +'use strict' + +var crypto = require('crypto') + +function randomString (size) { + var bits = (size + 1) * 6 + var buffer = crypto.randomBytes(Math.ceil(bits / 8)) + var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '') + return string.slice(0, size) +} + +function calculatePayloadHash (payload, algorithm, contentType) { + var hash = crypto.createHash(algorithm) + hash.update('hawk.1.payload\n') + hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n') + hash.update(payload || '') + hash.update('\n') + return hash.digest('base64') +} + +exports.calculateMac = function (credentials, opts) { + var normalized = 'hawk.1.header\n' + + opts.ts + '\n' + + opts.nonce + '\n' + + (opts.method || '').toUpperCase() + '\n' + + opts.resource + '\n' + + opts.host.toLowerCase() + '\n' + + opts.port + '\n' + + (opts.hash || '') + '\n' + + if (opts.ext) { + normalized = normalized + opts.ext.replace('\\', '\\\\').replace('\n', '\\n') + } + + normalized = normalized + '\n' + + if (opts.app) { + normalized = normalized + opts.app + '\n' + (opts.dlg || '') + '\n' + } + + var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized) + var digest = hmac.digest('base64') + return digest +} + +exports.header = function (uri, method, opts) { + var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000) + var credentials = opts.credentials + if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) { + return '' + } + + if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) { + return '' + } + + var artifacts = { + ts: timestamp, + nonce: opts.nonce || randomString(6), + method: method, + resource: uri.pathname + (uri.search || ''), + host: uri.hostname, + port: uri.port || (uri.protocol === 'http:' ? 80 : 443), + hash: opts.hash, + ext: opts.ext, + app: opts.app, + dlg: opts.dlg + } + + if (!artifacts.hash && (opts.payload || opts.payload === '')) { + artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType) + } + + var mac = exports.calculateMac(credentials, artifacts) + + var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== '' + var header = 'Hawk id="' + credentials.id + + '", ts="' + artifacts.ts + + '", nonce="' + artifacts.nonce + + (artifacts.hash ? '", hash="' + artifacts.hash : '') + + (hasExt ? '", ext="' + artifacts.ext.replace(/\\/g, '\\\\').replace(/"/g, '\\"') : '') + + '", mac="' + mac + '"' + + if (artifacts.app) { + header = header + ', app="' + artifacts.app + (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"' + } + + return header +} diff --git a/node_modules/request/lib/helpers.js b/node_modules/request/lib/helpers.js new file mode 100644 index 0000000..8b2a7e6 --- /dev/null +++ b/node_modules/request/lib/helpers.js @@ -0,0 +1,66 @@ +'use strict' + +var jsonSafeStringify = require('json-stringify-safe') +var crypto = require('crypto') +var Buffer = require('safe-buffer').Buffer + +var defer = typeof setImmediate === 'undefined' + ? process.nextTick + : setImmediate + +function paramsHaveRequestBody (params) { + return ( + params.body || + params.requestBodyStream || + (params.json && typeof params.json !== 'boolean') || + params.multipart + ) +} + +function safeStringify (obj, replacer) { + var ret + try { + ret = JSON.stringify(obj, replacer) + } catch (e) { + ret = jsonSafeStringify(obj, replacer) + } + return ret +} + +function md5 (str) { + return crypto.createHash('md5').update(str).digest('hex') +} + +function isReadStream (rs) { + return rs.readable && rs.path && rs.mode +} + +function toBase64 (str) { + return Buffer.from(str || '', 'utf8').toString('base64') +} + +function copy (obj) { + var o = {} + Object.keys(obj).forEach(function (i) { + o[i] = obj[i] + }) + return o +} + +function version () { + var numbers = process.version.replace('v', '').split('.') + return { + major: parseInt(numbers[0], 10), + minor: parseInt(numbers[1], 10), + patch: parseInt(numbers[2], 10) + } +} + +exports.paramsHaveRequestBody = paramsHaveRequestBody +exports.safeStringify = safeStringify +exports.md5 = md5 +exports.isReadStream = isReadStream +exports.toBase64 = toBase64 +exports.copy = copy +exports.version = version +exports.defer = defer diff --git a/node_modules/request/lib/multipart.js b/node_modules/request/lib/multipart.js new file mode 100644 index 0000000..6a009bc --- /dev/null +++ b/node_modules/request/lib/multipart.js @@ -0,0 +1,112 @@ +'use strict' + +var uuid = require('uuid/v4') +var CombinedStream = require('combined-stream') +var isstream = require('isstream') +var Buffer = require('safe-buffer').Buffer + +function Multipart (request) { + this.request = request + this.boundary = uuid() + this.chunked = false + this.body = null +} + +Multipart.prototype.isChunked = function (options) { + var self = this + var chunked = false + var parts = options.data || options + + if (!parts.forEach) { + self.request.emit('error', new Error('Argument error, options.multipart.')) + } + + if (options.chunked !== undefined) { + chunked = options.chunked + } + + if (self.request.getHeader('transfer-encoding') === 'chunked') { + chunked = true + } + + if (!chunked) { + parts.forEach(function (part) { + if (typeof part.body === 'undefined') { + self.request.emit('error', new Error('Body attribute missing in multipart.')) + } + if (isstream(part.body)) { + chunked = true + } + }) + } + + return chunked +} + +Multipart.prototype.setHeaders = function (chunked) { + var self = this + + if (chunked && !self.request.hasHeader('transfer-encoding')) { + self.request.setHeader('transfer-encoding', 'chunked') + } + + var header = self.request.getHeader('content-type') + + if (!header || header.indexOf('multipart') === -1) { + self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) + } else { + if (header.indexOf('boundary') !== -1) { + self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') + } else { + self.request.setHeader('content-type', header + '; boundary=' + self.boundary) + } + } +} + +Multipart.prototype.build = function (parts, chunked) { + var self = this + var body = chunked ? new CombinedStream() : [] + + function add (part) { + if (typeof part === 'number') { + part = part.toString() + } + return chunked ? body.append(part) : body.push(Buffer.from(part)) + } + + if (self.request.preambleCRLF) { + add('\r\n') + } + + parts.forEach(function (part) { + var preamble = '--' + self.boundary + '\r\n' + Object.keys(part).forEach(function (key) { + if (key === 'body') { return } + preamble += key + ': ' + part[key] + '\r\n' + }) + preamble += '\r\n' + add(preamble) + add(part.body) + add('\r\n') + }) + add('--' + self.boundary + '--') + + if (self.request.postambleCRLF) { + add('\r\n') + } + + return body +} + +Multipart.prototype.onRequest = function (options) { + var self = this + + var chunked = self.isChunked(options) + var parts = options.data || options + + self.setHeaders(chunked) + self.chunked = chunked + self.body = self.build(parts, chunked) +} + +exports.Multipart = Multipart diff --git a/node_modules/request/lib/oauth.js b/node_modules/request/lib/oauth.js new file mode 100644 index 0000000..96de72b --- /dev/null +++ b/node_modules/request/lib/oauth.js @@ -0,0 +1,148 @@ +'use strict' + +var url = require('url') +var qs = require('qs') +var caseless = require('caseless') +var uuid = require('uuid/v4') +var oauth = require('oauth-sign') +var crypto = require('crypto') +var Buffer = require('safe-buffer').Buffer + +function OAuth (request) { + this.request = request + this.params = null +} + +OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) { + var oa = {} + for (var i in _oauth) { + oa['oauth_' + i] = _oauth[i] + } + if (!oa.oauth_version) { + oa.oauth_version = '1.0' + } + if (!oa.oauth_timestamp) { + oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString() + } + if (!oa.oauth_nonce) { + oa.oauth_nonce = uuid().replace(/-/g, '') + } + if (!oa.oauth_signature_method) { + oa.oauth_signature_method = 'HMAC-SHA1' + } + + var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase + delete oa.oauth_consumer_secret + delete oa.oauth_private_key + + var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase + delete oa.oauth_token_secret + + var realm = oa.oauth_realm + delete oa.oauth_realm + delete oa.oauth_transport_method + + var baseurl = uri.protocol + '//' + uri.host + uri.pathname + var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&')) + + oa.oauth_signature = oauth.sign( + oa.oauth_signature_method, + method, + baseurl, + params, + consumer_secret_or_private_key, // eslint-disable-line camelcase + token_secret // eslint-disable-line camelcase + ) + + if (realm) { + oa.realm = realm + } + + return oa +} + +OAuth.prototype.buildBodyHash = function (_oauth, body) { + if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) { + this.request.emit('error', new Error('oauth: ' + _oauth.signature_method + + ' signature_method not supported with body_hash signing.')) + } + + var shasum = crypto.createHash('sha1') + shasum.update(body || '') + var sha1 = shasum.digest('hex') + + return Buffer.from(sha1, 'hex').toString('base64') +} + +OAuth.prototype.concatParams = function (oa, sep, wrap) { + wrap = wrap || '' + + var params = Object.keys(oa).filter(function (i) { + return i !== 'realm' && i !== 'oauth_signature' + }).sort() + + if (oa.realm) { + params.splice(0, 0, 'realm') + } + params.push('oauth_signature') + + return params.map(function (i) { + return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap + }).join(sep) +} + +OAuth.prototype.onRequest = function (_oauth) { + var self = this + self.params = _oauth + + var uri = self.request.uri || {} + var method = self.request.method || '' + var headers = caseless(self.request.headers) + var body = self.request.body || '' + var qsLib = self.request.qsLib || qs + + var form + var query + var contentType = headers.get('content-type') || '' + var formContentType = 'application/x-www-form-urlencoded' + var transport = _oauth.transport_method || 'header' + + if (contentType.slice(0, formContentType.length) === formContentType) { + contentType = formContentType + form = body + } + if (uri.query) { + query = uri.query + } + if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) { + self.request.emit('error', new Error('oauth: transport_method of body requires POST ' + + 'and content-type ' + formContentType)) + } + + if (!form && typeof _oauth.body_hash === 'boolean') { + _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString()) + } + + var oa = self.buildParams(_oauth, uri, method, query, form, qsLib) + + switch (transport) { + case 'header': + self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"')) + break + + case 'query': + var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&') + self.request.uri = url.parse(href) + self.request.path = self.request.uri.path + break + + case 'body': + self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&') + break + + default: + self.request.emit('error', new Error('oauth: transport_method invalid')) + } +} + +exports.OAuth = OAuth diff --git a/node_modules/request/lib/querystring.js b/node_modules/request/lib/querystring.js new file mode 100644 index 0000000..4a32cd1 --- /dev/null +++ b/node_modules/request/lib/querystring.js @@ -0,0 +1,50 @@ +'use strict' + +var qs = require('qs') +var querystring = require('querystring') + +function Querystring (request) { + this.request = request + this.lib = null + this.useQuerystring = null + this.parseOptions = null + this.stringifyOptions = null +} + +Querystring.prototype.init = function (options) { + if (this.lib) { return } + + this.useQuerystring = options.useQuerystring + this.lib = (this.useQuerystring ? querystring : qs) + + this.parseOptions = options.qsParseOptions || {} + this.stringifyOptions = options.qsStringifyOptions || {} +} + +Querystring.prototype.stringify = function (obj) { + return (this.useQuerystring) + ? this.rfc3986(this.lib.stringify(obj, + this.stringifyOptions.sep || null, + this.stringifyOptions.eq || null, + this.stringifyOptions)) + : this.lib.stringify(obj, this.stringifyOptions) +} + +Querystring.prototype.parse = function (str) { + return (this.useQuerystring) + ? this.lib.parse(str, + this.parseOptions.sep || null, + this.parseOptions.eq || null, + this.parseOptions) + : this.lib.parse(str, this.parseOptions) +} + +Querystring.prototype.rfc3986 = function (str) { + return str.replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +Querystring.prototype.unescape = querystring.unescape + +exports.Querystring = Querystring diff --git a/node_modules/request/lib/redirect.js b/node_modules/request/lib/redirect.js new file mode 100644 index 0000000..b9150e7 --- /dev/null +++ b/node_modules/request/lib/redirect.js @@ -0,0 +1,154 @@ +'use strict' + +var url = require('url') +var isUrl = /^https?:/ + +function Redirect (request) { + this.request = request + this.followRedirect = true + this.followRedirects = true + this.followAllRedirects = false + this.followOriginalHttpMethod = false + this.allowRedirect = function () { return true } + this.maxRedirects = 10 + this.redirects = [] + this.redirectsFollowed = 0 + this.removeRefererHeader = false +} + +Redirect.prototype.onRequest = function (options) { + var self = this + + if (options.maxRedirects !== undefined) { + self.maxRedirects = options.maxRedirects + } + if (typeof options.followRedirect === 'function') { + self.allowRedirect = options.followRedirect + } + if (options.followRedirect !== undefined) { + self.followRedirects = !!options.followRedirect + } + if (options.followAllRedirects !== undefined) { + self.followAllRedirects = options.followAllRedirects + } + if (self.followRedirects || self.followAllRedirects) { + self.redirects = self.redirects || [] + } + if (options.removeRefererHeader !== undefined) { + self.removeRefererHeader = options.removeRefererHeader + } + if (options.followOriginalHttpMethod !== undefined) { + self.followOriginalHttpMethod = options.followOriginalHttpMethod + } +} + +Redirect.prototype.redirectTo = function (response) { + var self = this + var request = self.request + + var redirectTo = null + if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { + var location = response.caseless.get('location') + request.debug('redirect', location) + + if (self.followAllRedirects) { + redirectTo = location + } else if (self.followRedirects) { + switch (request.method) { + case 'PATCH': + case 'PUT': + case 'POST': + case 'DELETE': + // Do not follow redirects + break + default: + redirectTo = location + break + } + } + } else if (response.statusCode === 401) { + var authHeader = request._auth.onResponse(response) + if (authHeader) { + request.setHeader('authorization', authHeader) + redirectTo = request.uri + } + } + return redirectTo +} + +Redirect.prototype.onResponse = function (response) { + var self = this + var request = self.request + + var redirectTo = self.redirectTo(response) + if (!redirectTo || !self.allowRedirect.call(request, response)) { + return false + } + + request.debug('redirect to', redirectTo) + + // ignore any potential response body. it cannot possibly be useful + // to us at this point. + // response.resume should be defined, but check anyway before calling. Workaround for browserify. + if (response.resume) { + response.resume() + } + + if (self.redirectsFollowed >= self.maxRedirects) { + request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) + return false + } + self.redirectsFollowed += 1 + + if (!isUrl.test(redirectTo)) { + redirectTo = url.resolve(request.uri.href, redirectTo) + } + + var uriPrev = request.uri + request.uri = url.parse(redirectTo) + + // handle the case where we change protocol from https to http or vice versa + if (request.uri.protocol !== uriPrev.protocol) { + delete request.agent + } + + self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo }) + + if (self.followAllRedirects && request.method !== 'HEAD' && + response.statusCode !== 401 && response.statusCode !== 307) { + request.method = self.followOriginalHttpMethod ? request.method : 'GET' + } + // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 + delete request.src + delete request.req + delete request._started + if (response.statusCode !== 401 && response.statusCode !== 307) { + // Remove parameters from the previous response, unless this is the second request + // for a server that requires digest authentication. + delete request.body + delete request._form + if (request.headers) { + request.removeHeader('host') + request.removeHeader('content-type') + request.removeHeader('content-length') + if (request.uri.hostname !== request.originalHost.split(':')[0]) { + // Remove authorization if changing hostnames (but not if just + // changing ports or protocols). This matches the behavior of curl: + // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 + request.removeHeader('authorization') + } + } + } + + if (!self.removeRefererHeader) { + request.setHeader('referer', uriPrev.href) + } + + request.emit('redirect') + + request.init() + + return true +} + +exports.Redirect = Redirect diff --git a/node_modules/request/lib/tunnel.js b/node_modules/request/lib/tunnel.js new file mode 100644 index 0000000..4479003 --- /dev/null +++ b/node_modules/request/lib/tunnel.js @@ -0,0 +1,175 @@ +'use strict' + +var url = require('url') +var tunnel = require('tunnel-agent') + +var defaultProxyHeaderWhiteList = [ + 'accept', + 'accept-charset', + 'accept-encoding', + 'accept-language', + 'accept-ranges', + 'cache-control', + 'content-encoding', + 'content-language', + 'content-location', + 'content-md5', + 'content-range', + 'content-type', + 'connection', + 'date', + 'expect', + 'max-forwards', + 'pragma', + 'referer', + 'te', + 'user-agent', + 'via' +] + +var defaultProxyHeaderExclusiveList = [ + 'proxy-authorization' +] + +function constructProxyHost (uriObject) { + var port = uriObject.port + var protocol = uriObject.protocol + var proxyHost = uriObject.hostname + ':' + + if (port) { + proxyHost += port + } else if (protocol === 'https:') { + proxyHost += '443' + } else { + proxyHost += '80' + } + + return proxyHost +} + +function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) { + var whiteList = proxyHeaderWhiteList + .reduce(function (set, header) { + set[header.toLowerCase()] = true + return set + }, {}) + + return Object.keys(headers) + .filter(function (header) { + return whiteList[header.toLowerCase()] + }) + .reduce(function (set, header) { + set[header] = headers[header] + return set + }, {}) +} + +function constructTunnelOptions (request, proxyHeaders) { + var proxy = request.proxy + + var tunnelOptions = { + proxy: { + host: proxy.hostname, + port: +proxy.port, + proxyAuth: proxy.auth, + headers: proxyHeaders + }, + headers: request.headers, + ca: request.ca, + cert: request.cert, + key: request.key, + passphrase: request.passphrase, + pfx: request.pfx, + ciphers: request.ciphers, + rejectUnauthorized: request.rejectUnauthorized, + secureOptions: request.secureOptions, + secureProtocol: request.secureProtocol + } + + return tunnelOptions +} + +function constructTunnelFnName (uri, proxy) { + var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') + var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') + return [uriProtocol, proxyProtocol].join('Over') +} + +function getTunnelFn (request) { + var uri = request.uri + var proxy = request.proxy + var tunnelFnName = constructTunnelFnName(uri, proxy) + return tunnel[tunnelFnName] +} + +function Tunnel (request) { + this.request = request + this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList + this.proxyHeaderExclusiveList = [] + if (typeof request.tunnel !== 'undefined') { + this.tunnelOverride = request.tunnel + } +} + +Tunnel.prototype.isEnabled = function () { + var self = this + var request = self.request + // Tunnel HTTPS by default. Allow the user to override this setting. + + // If self.tunnelOverride is set (the user specified a value), use it. + if (typeof self.tunnelOverride !== 'undefined') { + return self.tunnelOverride + } + + // If the destination is HTTPS, tunnel. + if (request.uri.protocol === 'https:') { + return true + } + + // Otherwise, do not use tunnel. + return false +} + +Tunnel.prototype.setup = function (options) { + var self = this + var request = self.request + + options = options || {} + + if (typeof request.proxy === 'string') { + request.proxy = url.parse(request.proxy) + } + + if (!request.proxy || !request.tunnel) { + return false + } + + // Setup Proxy Header Exclusive List and White List + if (options.proxyHeaderWhiteList) { + self.proxyHeaderWhiteList = options.proxyHeaderWhiteList + } + if (options.proxyHeaderExclusiveList) { + self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList + } + + var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) + var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) + + // Setup Proxy Headers and Proxy Headers Host + // Only send the Proxy White Listed Header names + var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) + proxyHeaders.host = constructProxyHost(request.uri) + + proxyHeaderExclusiveList.forEach(request.removeHeader, request) + + // Set Agent from Tunnel Data + var tunnelFn = getTunnelFn(request) + var tunnelOptions = constructTunnelOptions(request, proxyHeaders) + request.agent = tunnelFn(tunnelOptions) + + return true +} + +Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList +Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList +exports.Tunnel = Tunnel diff --git a/node_modules/request/package.json b/node_modules/request/package.json new file mode 100644 index 0000000..e6b8d2b --- /dev/null +++ b/node_modules/request/package.json @@ -0,0 +1,115 @@ +{ + "_from": "request@2.88.0", + "_id": "request@2.88.0", + "_inBundle": false, + "_integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "_location": "/request", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "request@2.88.0", + "name": "request", + "escapedName": "request", + "rawSpec": "2.88.0", + "saveSpec": null, + "fetchSpec": "2.88.0" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "_shasum": "9c2fca4f7d35b592efe57c7f0a55e81052124fef", + "_spec": "request@2.88.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "author": { + "name": "Mikeal Rogers", + "email": "mikeal.rogers@gmail.com" + }, + "bugs": { + "url": "http://github.com/request/request/issues" + }, + "bundleDependencies": false, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "deprecated": false, + "description": "Simplified HTTP request client.", + "devDependencies": { + "bluebird": "^3.2.1", + "browserify": "^13.0.1", + "browserify-istanbul": "^2.0.0", + "buffer-equal": "^1.0.0", + "codecov": "^3.0.4", + "coveralls": "^3.0.2", + "function-bind": "^1.0.2", + "istanbul": "^0.4.0", + "karma": "^3.0.0", + "karma-browserify": "^5.0.1", + "karma-cli": "^1.0.0", + "karma-coverage": "^1.0.0", + "karma-phantomjs-launcher": "^1.0.0", + "karma-tap": "^3.0.1", + "phantomjs-prebuilt": "^2.1.3", + "rimraf": "^2.2.8", + "server-destroy": "^1.0.1", + "standard": "^9.0.0", + "tape": "^4.6.0", + "taper": "^0.5.0" + }, + "engines": { + "node": ">= 4" + }, + "files": [ + "lib/", + "index.js", + "request.js" + ], + "greenkeeper": { + "ignore": [ + "hawk", + "har-validator" + ] + }, + "homepage": "https://github.com/request/request#readme", + "keywords": [ + "http", + "simple", + "util", + "utility" + ], + "license": "Apache-2.0", + "main": "index.js", + "name": "request", + "repository": { + "type": "git", + "url": "git+https://github.com/request/request.git" + }, + "scripts": { + "lint": "standard", + "test": "npm run lint && npm run test-ci && npm run test-browser", + "test-browser": "node tests/browser/start.js", + "test-ci": "taper tests/test-*.js", + "test-cov": "istanbul cover tape tests/test-*.js" + }, + "version": "2.88.0" +} diff --git a/node_modules/request/request.js b/node_modules/request/request.js new file mode 100644 index 0000000..90bed4f --- /dev/null +++ b/node_modules/request/request.js @@ -0,0 +1,1551 @@ +'use strict' + +var http = require('http') +var https = require('https') +var url = require('url') +var util = require('util') +var stream = require('stream') +var zlib = require('zlib') +var aws2 = require('aws-sign2') +var aws4 = require('aws4') +var httpSignature = require('http-signature') +var mime = require('mime-types') +var caseless = require('caseless') +var ForeverAgent = require('forever-agent') +var FormData = require('form-data') +var extend = require('extend') +var isstream = require('isstream') +var isTypedArray = require('is-typedarray').strict +var helpers = require('./lib/helpers') +var cookies = require('./lib/cookies') +var getProxyFromURI = require('./lib/getProxyFromURI') +var Querystring = require('./lib/querystring').Querystring +var Har = require('./lib/har').Har +var Auth = require('./lib/auth').Auth +var OAuth = require('./lib/oauth').OAuth +var hawk = require('./lib/hawk') +var Multipart = require('./lib/multipart').Multipart +var Redirect = require('./lib/redirect').Redirect +var Tunnel = require('./lib/tunnel').Tunnel +var now = require('performance-now') +var Buffer = require('safe-buffer').Buffer + +var safeStringify = helpers.safeStringify +var isReadStream = helpers.isReadStream +var toBase64 = helpers.toBase64 +var defer = helpers.defer +var copy = helpers.copy +var version = helpers.version +var globalCookieJar = cookies.jar() + +var globalPool = {} + +function filterForNonReserved (reserved, options) { + // Filter out properties that are not reserved. + // Reserved values are passed in at call site. + + var object = {} + for (var i in options) { + var notReserved = (reserved.indexOf(i) === -1) + if (notReserved) { + object[i] = options[i] + } + } + return object +} + +function filterOutReservedFunctions (reserved, options) { + // Filter out properties that are functions and are reserved. + // Reserved values are passed in at call site. + + var object = {} + for (var i in options) { + var isReserved = !(reserved.indexOf(i) === -1) + var isFunction = (typeof options[i] === 'function') + if (!(isReserved && isFunction)) { + object[i] = options[i] + } + } + return object +} + +// Return a simpler request object to allow serialization +function requestToJSON () { + var self = this + return { + uri: self.uri, + method: self.method, + headers: self.headers + } +} + +// Return a simpler response object to allow serialization +function responseToJSON () { + var self = this + return { + statusCode: self.statusCode, + body: self.body, + headers: self.headers, + request: requestToJSON.call(self.request) + } +} + +function Request (options) { + // if given the method property in options, set property explicitMethod to true + + // extend the Request instance with any non-reserved properties + // remove any reserved functions from the options object + // set Request instance to be readable and writable + // call init + + var self = this + + // start with HAR, then override with additional options + if (options.har) { + self._har = new Har(self) + options = self._har.options(options) + } + + stream.Stream.call(self) + var reserved = Object.keys(Request.prototype) + var nonReserved = filterForNonReserved(reserved, options) + + extend(self, nonReserved) + options = filterOutReservedFunctions(reserved, options) + + self.readable = true + self.writable = true + if (options.method) { + self.explicitMethod = true + } + self._qs = new Querystring(self) + self._auth = new Auth(self) + self._oauth = new OAuth(self) + self._multipart = new Multipart(self) + self._redirect = new Redirect(self) + self._tunnel = new Tunnel(self) + self.init(options) +} + +util.inherits(Request, stream.Stream) + +// Debugging +Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) +function debug () { + if (Request.debug) { + console.error('REQUEST %s', util.format.apply(util, arguments)) + } +} +Request.prototype.debug = debug + +Request.prototype.init = function (options) { + // init() contains all the code to setup the request object. + // the actual outgoing request is not started until start() is called + // this function is called from both the constructor and on redirect. + var self = this + if (!options) { + options = {} + } + self.headers = self.headers ? copy(self.headers) : {} + + // Delete headers with value undefined since they break + // ClientRequest.OutgoingMessage.setHeader in node 0.12 + for (var headerName in self.headers) { + if (typeof self.headers[headerName] === 'undefined') { + delete self.headers[headerName] + } + } + + caseless.httpify(self, self.headers) + + if (!self.method) { + self.method = options.method || 'GET' + } + if (!self.localAddress) { + self.localAddress = options.localAddress + } + + self._qs.init(options) + + debug(options) + if (!self.pool && self.pool !== false) { + self.pool = globalPool + } + self.dests = self.dests || [] + self.__isRequestRequest = true + + // Protect against double callback + if (!self._callback && self.callback) { + self._callback = self.callback + self.callback = function () { + if (self._callbackCalled) { + return // Print a warning maybe? + } + self._callbackCalled = true + self._callback.apply(self, arguments) + } + self.on('error', self.callback.bind()) + self.on('complete', self.callback.bind(self, null)) + } + + // People use this property instead all the time, so support it + if (!self.uri && self.url) { + self.uri = self.url + delete self.url + } + + // If there's a baseUrl, then use it as the base URL (i.e. uri must be + // specified as a relative path and is appended to baseUrl). + if (self.baseUrl) { + if (typeof self.baseUrl !== 'string') { + return self.emit('error', new Error('options.baseUrl must be a string')) + } + + if (typeof self.uri !== 'string') { + return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) + } + + if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { + return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) + } + + // Handle all cases to make sure that there's only one slash between + // baseUrl and uri. + var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 + var uriStartsWithSlash = self.uri.indexOf('/') === 0 + + if (baseUrlEndsWithSlash && uriStartsWithSlash) { + self.uri = self.baseUrl + self.uri.slice(1) + } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { + self.uri = self.baseUrl + self.uri + } else if (self.uri === '') { + self.uri = self.baseUrl + } else { + self.uri = self.baseUrl + '/' + self.uri + } + delete self.baseUrl + } + + // A URI is needed by this point, emit error if we haven't been able to get one + if (!self.uri) { + return self.emit('error', new Error('options.uri is a required argument')) + } + + // If a string URI/URL was given, parse it into a URL object + if (typeof self.uri === 'string') { + self.uri = url.parse(self.uri) + } + + // Some URL objects are not from a URL parsed string and need href added + if (!self.uri.href) { + self.uri.href = url.format(self.uri) + } + + // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme + if (self.uri.protocol === 'unix:') { + return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) + } + + // Support Unix Sockets + if (self.uri.host === 'unix') { + self.enableUnixSocket() + } + + if (self.strictSSL === false) { + self.rejectUnauthorized = false + } + + if (!self.uri.pathname) { self.uri.pathname = '/' } + + if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { + // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar + // Detect and reject it as soon as possible + var faultyUri = url.format(self.uri) + var message = 'Invalid URI "' + faultyUri + '"' + if (Object.keys(options).length === 0) { + // No option ? This can be the sign of a redirect + // As this is a case where the user cannot do anything (they didn't call request directly with this URL) + // they should be warned that it can be caused by a redirection (can save some hair) + message += '. This can be caused by a crappy redirection.' + } + // This error was fatal + self.abort() + return self.emit('error', new Error(message)) + } + + if (!self.hasOwnProperty('proxy')) { + self.proxy = getProxyFromURI(self.uri) + } + + self.tunnel = self._tunnel.isEnabled() + if (self.proxy) { + self._tunnel.setup(options) + } + + self._redirect.onRequest(options) + + self.setHost = false + if (!self.hasHeader('host')) { + var hostHeaderName = self.originalHostHeaderName || 'host' + self.setHeader(hostHeaderName, self.uri.host) + // Drop :port suffix from Host header if known protocol. + if (self.uri.port) { + if ((self.uri.port === '80' && self.uri.protocol === 'http:') || + (self.uri.port === '443' && self.uri.protocol === 'https:')) { + self.setHeader(hostHeaderName, self.uri.hostname) + } + } + self.setHost = true + } + + self.jar(self._jar || options.jar) + + if (!self.uri.port) { + if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 } + } + + if (self.proxy && !self.tunnel) { + self.port = self.proxy.port + self.host = self.proxy.hostname + } else { + self.port = self.uri.port + self.host = self.uri.hostname + } + + if (options.form) { + self.form(options.form) + } + + if (options.formData) { + var formData = options.formData + var requestForm = self.form() + var appendFormValue = function (key, value) { + if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) { + requestForm.append(key, value.value, value.options) + } else { + requestForm.append(key, value) + } + } + for (var formKey in formData) { + if (formData.hasOwnProperty(formKey)) { + var formValue = formData[formKey] + if (formValue instanceof Array) { + for (var j = 0; j < formValue.length; j++) { + appendFormValue(formKey, formValue[j]) + } + } else { + appendFormValue(formKey, formValue) + } + } + } + } + + if (options.qs) { + self.qs(options.qs) + } + + if (self.uri.path) { + self.path = self.uri.path + } else { + self.path = self.uri.pathname + (self.uri.search || '') + } + + if (self.path.length === 0) { + self.path = '/' + } + + // Auth must happen last in case signing is dependent on other headers + if (options.aws) { + self.aws(options.aws) + } + + if (options.hawk) { + self.hawk(options.hawk) + } + + if (options.httpSignature) { + self.httpSignature(options.httpSignature) + } + + if (options.auth) { + if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { + options.auth.user = options.auth.username + } + if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { + options.auth.pass = options.auth.password + } + + self.auth( + options.auth.user, + options.auth.pass, + options.auth.sendImmediately, + options.auth.bearer + ) + } + + if (self.gzip && !self.hasHeader('accept-encoding')) { + self.setHeader('accept-encoding', 'gzip, deflate') + } + + if (self.uri.auth && !self.hasHeader('authorization')) { + var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) }) + self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) + } + + if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { + var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) }) + var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) + self.setHeader('proxy-authorization', authHeader) + } + + if (self.proxy && !self.tunnel) { + self.path = (self.uri.protocol + '//' + self.uri.host + self.path) + } + + if (options.json) { + self.json(options.json) + } + if (options.multipart) { + self.multipart(options.multipart) + } + + if (options.time) { + self.timing = true + + // NOTE: elapsedTime is deprecated in favor of .timings + self.elapsedTime = self.elapsedTime || 0 + } + + function setContentLength () { + if (isTypedArray(self.body)) { + self.body = Buffer.from(self.body) + } + + if (!self.hasHeader('content-length')) { + var length + if (typeof self.body === 'string') { + length = Buffer.byteLength(self.body) + } else if (Array.isArray(self.body)) { + length = self.body.reduce(function (a, b) { return a + b.length }, 0) + } else { + length = self.body.length + } + + if (length) { + self.setHeader('content-length', length) + } else { + self.emit('error', new Error('Argument error, options.body.')) + } + } + } + if (self.body && !isstream(self.body)) { + setContentLength() + } + + if (options.oauth) { + self.oauth(options.oauth) + } else if (self._oauth.params && self.hasHeader('authorization')) { + self.oauth(self._oauth.params) + } + + var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol + var defaultModules = {'http:': http, 'https:': https} + var httpModules = self.httpModules || {} + + self.httpModule = httpModules[protocol] || defaultModules[protocol] + + if (!self.httpModule) { + return self.emit('error', new Error('Invalid protocol: ' + protocol)) + } + + if (options.ca) { + self.ca = options.ca + } + + if (!self.agent) { + if (options.agentOptions) { + self.agentOptions = options.agentOptions + } + + if (options.agentClass) { + self.agentClass = options.agentClass + } else if (options.forever) { + var v = version() + // use ForeverAgent in node 0.10- only + if (v.major === 0 && v.minor <= 10) { + self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL + } else { + self.agentClass = self.httpModule.Agent + self.agentOptions = self.agentOptions || {} + self.agentOptions.keepAlive = true + } + } else { + self.agentClass = self.httpModule.Agent + } + } + + if (self.pool === false) { + self.agent = false + } else { + self.agent = self.agent || self.getNewAgent() + } + + self.on('pipe', function (src) { + if (self.ntick && self._started) { + self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) + } + self.src = src + if (isReadStream(src)) { + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', mime.lookup(src.path)) + } + } else { + if (src.headers) { + for (var i in src.headers) { + if (!self.hasHeader(i)) { + self.setHeader(i, src.headers[i]) + } + } + } + if (self._json && !self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') + } + if (src.method && !self.explicitMethod) { + self.method = src.method + } + } + + // self.on('pipe', function () { + // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') + // }) + }) + + defer(function () { + if (self._aborted) { + return + } + + var end = function () { + if (self._form) { + if (!self._auth.hasAuth) { + self._form.pipe(self) + } else if (self._auth.hasAuth && self._auth.sentAuth) { + self._form.pipe(self) + } + } + if (self._multipart && self._multipart.chunked) { + self._multipart.body.pipe(self) + } + if (self.body) { + if (isstream(self.body)) { + self.body.pipe(self) + } else { + setContentLength() + if (Array.isArray(self.body)) { + self.body.forEach(function (part) { + self.write(part) + }) + } else { + self.write(self.body) + } + self.end() + } + } else if (self.requestBodyStream) { + console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') + self.requestBodyStream.pipe(self) + } else if (!self.src) { + if (self._auth.hasAuth && !self._auth.sentAuth) { + self.end() + return + } + if (self.method !== 'GET' && typeof self.method !== 'undefined') { + self.setHeader('content-length', 0) + } + self.end() + } + } + + if (self._form && !self.hasHeader('content-length')) { + // Before ending the request, we had to compute the length of the whole form, asyncly + self.setHeader(self._form.getHeaders(), true) + self._form.getLength(function (err, length) { + if (!err && !isNaN(length)) { + self.setHeader('content-length', length) + } + end() + }) + } else { + end() + } + + self.ntick = true + }) +} + +Request.prototype.getNewAgent = function () { + var self = this + var Agent = self.agentClass + var options = {} + if (self.agentOptions) { + for (var i in self.agentOptions) { + options[i] = self.agentOptions[i] + } + } + if (self.ca) { + options.ca = self.ca + } + if (self.ciphers) { + options.ciphers = self.ciphers + } + if (self.secureProtocol) { + options.secureProtocol = self.secureProtocol + } + if (self.secureOptions) { + options.secureOptions = self.secureOptions + } + if (typeof self.rejectUnauthorized !== 'undefined') { + options.rejectUnauthorized = self.rejectUnauthorized + } + + if (self.cert && self.key) { + options.key = self.key + options.cert = self.cert + } + + if (self.pfx) { + options.pfx = self.pfx + } + + if (self.passphrase) { + options.passphrase = self.passphrase + } + + var poolKey = '' + + // different types of agents are in different pools + if (Agent !== self.httpModule.Agent) { + poolKey += Agent.name + } + + // ca option is only relevant if proxy or destination are https + var proxy = self.proxy + if (typeof proxy === 'string') { + proxy = url.parse(proxy) + } + var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' + + if (isHttps) { + if (options.ca) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.ca + } + + if (typeof options.rejectUnauthorized !== 'undefined') { + if (poolKey) { + poolKey += ':' + } + poolKey += options.rejectUnauthorized + } + + if (options.cert) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.cert.toString('ascii') + options.key.toString('ascii') + } + + if (options.pfx) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.pfx.toString('ascii') + } + + if (options.ciphers) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.ciphers + } + + if (options.secureProtocol) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.secureProtocol + } + + if (options.secureOptions) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.secureOptions + } + } + + if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { + // not doing anything special. Use the globalAgent + return self.httpModule.globalAgent + } + + // we're using a stored agent. Make sure it's protocol-specific + poolKey = self.uri.protocol + poolKey + + // generate a new agent for this setting if none yet exists + if (!self.pool[poolKey]) { + self.pool[poolKey] = new Agent(options) + // properly set maxSockets on new agents + if (self.pool.maxSockets) { + self.pool[poolKey].maxSockets = self.pool.maxSockets + } + } + + return self.pool[poolKey] +} + +Request.prototype.start = function () { + // start() is called once we are ready to send the outgoing HTTP request. + // this is usually called on the first write(), end() or on nextTick() + var self = this + + if (self.timing) { + // All timings will be relative to this request's startTime. In order to do this, + // we need to capture the wall-clock start time (via Date), immediately followed + // by the high-resolution timer (via now()). While these two won't be set + // at the _exact_ same time, they should be close enough to be able to calculate + // high-resolution, monotonically non-decreasing timestamps relative to startTime. + var startTime = new Date().getTime() + var startTimeNow = now() + } + + if (self._aborted) { + return + } + + self._started = true + self.method = self.method || 'GET' + self.href = self.uri.href + + if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { + self.setHeader('content-length', self.src.stat.size) + } + if (self._aws) { + self.aws(self._aws, true) + } + + // We have a method named auth, which is completely different from the http.request + // auth option. If we don't remove it, we're gonna have a bad time. + var reqOptions = copy(self) + delete reqOptions.auth + + debug('make request', self.uri.href) + + // node v6.8.0 now supports a `timeout` value in `http.request()`, but we + // should delete it for now since we handle timeouts manually for better + // consistency with node versions before v6.8.0 + delete reqOptions.timeout + + try { + self.req = self.httpModule.request(reqOptions) + } catch (err) { + self.emit('error', err) + return + } + + if (self.timing) { + self.startTime = startTime + self.startTimeNow = startTimeNow + + // Timing values will all be relative to startTime (by comparing to startTimeNow + // so we have an accurate clock) + self.timings = {} + } + + var timeout + if (self.timeout && !self.timeoutTimer) { + if (self.timeout < 0) { + timeout = 0 + } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) { + timeout = self.timeout + } + } + + self.req.on('response', self.onRequestResponse.bind(self)) + self.req.on('error', self.onRequestError.bind(self)) + self.req.on('drain', function () { + self.emit('drain') + }) + + self.req.on('socket', function (socket) { + // `._connecting` was the old property which was made public in node v6.1.0 + var isConnecting = socket._connecting || socket.connecting + if (self.timing) { + self.timings.socket = now() - self.startTimeNow + + if (isConnecting) { + var onLookupTiming = function () { + self.timings.lookup = now() - self.startTimeNow + } + + var onConnectTiming = function () { + self.timings.connect = now() - self.startTimeNow + } + + socket.once('lookup', onLookupTiming) + socket.once('connect', onConnectTiming) + + // clean up timing event listeners if needed on error + self.req.once('error', function () { + socket.removeListener('lookup', onLookupTiming) + socket.removeListener('connect', onConnectTiming) + }) + } + } + + var setReqTimeout = function () { + // This timeout sets the amount of time to wait *between* bytes sent + // from the server once connected. + // + // In particular, it's useful for erroring if the server fails to send + // data halfway through streaming a response. + self.req.setTimeout(timeout, function () { + if (self.req) { + self.abort() + var e = new Error('ESOCKETTIMEDOUT') + e.code = 'ESOCKETTIMEDOUT' + e.connect = false + self.emit('error', e) + } + }) + } + if (timeout !== undefined) { + // Only start the connection timer if we're actually connecting a new + // socket, otherwise if we're already connected (because this is a + // keep-alive connection) do not bother. This is important since we won't + // get a 'connect' event for an already connected socket. + if (isConnecting) { + var onReqSockConnect = function () { + socket.removeListener('connect', onReqSockConnect) + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null + setReqTimeout() + } + + socket.on('connect', onReqSockConnect) + + self.req.on('error', function (err) { // eslint-disable-line handle-callback-err + socket.removeListener('connect', onReqSockConnect) + }) + + // Set a timeout in memory - this block will throw if the server takes more + // than `timeout` to write the HTTP status and headers (corresponding to + // the on('response') event on the client). NB: this measures wall-clock + // time, not the time between bytes sent by the server. + self.timeoutTimer = setTimeout(function () { + socket.removeListener('connect', onReqSockConnect) + self.abort() + var e = new Error('ETIMEDOUT') + e.code = 'ETIMEDOUT' + e.connect = true + self.emit('error', e) + }, timeout) + } else { + // We're already connected + setReqTimeout() + } + } + self.emit('socket', socket) + }) + + self.emit('request', self.req) +} + +Request.prototype.onRequestError = function (error) { + var self = this + if (self._aborted) { + return + } + if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' && + self.agent.addRequestNoreuse) { + self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } + self.start() + self.req.end() + return + } + if (self.timeout && self.timeoutTimer) { + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null + } + self.emit('error', error) +} + +Request.prototype.onRequestResponse = function (response) { + var self = this + + if (self.timing) { + self.timings.response = now() - self.startTimeNow + } + + debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) + response.on('end', function () { + if (self.timing) { + self.timings.end = now() - self.startTimeNow + response.timingStart = self.startTime + + // fill in the blanks for any periods that didn't trigger, such as + // no lookup or connect due to keep alive + if (!self.timings.socket) { + self.timings.socket = 0 + } + if (!self.timings.lookup) { + self.timings.lookup = self.timings.socket + } + if (!self.timings.connect) { + self.timings.connect = self.timings.lookup + } + if (!self.timings.response) { + self.timings.response = self.timings.connect + } + + debug('elapsed time', self.timings.end) + + // elapsedTime includes all redirects + self.elapsedTime += Math.round(self.timings.end) + + // NOTE: elapsedTime is deprecated in favor of .timings + response.elapsedTime = self.elapsedTime + + // timings is just for the final fetch + response.timings = self.timings + + // pre-calculate phase timings as well + response.timingPhases = { + wait: self.timings.socket, + dns: self.timings.lookup - self.timings.socket, + tcp: self.timings.connect - self.timings.lookup, + firstByte: self.timings.response - self.timings.connect, + download: self.timings.end - self.timings.response, + total: self.timings.end + } + } + debug('response end', self.uri.href, response.statusCode, response.headers) + }) + + if (self._aborted) { + debug('aborted', self.uri.href) + response.resume() + return + } + + self.response = response + response.request = self + response.toJSON = responseToJSON + + // XXX This is different on 0.10, because SSL is strict by default + if (self.httpModule === https && + self.strictSSL && (!response.hasOwnProperty('socket') || + !response.socket.authorized)) { + debug('strict ssl error', self.uri.href) + var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' + self.emit('error', new Error('SSL Error: ' + sslErr)) + return + } + + // Save the original host before any redirect (if it changes, we need to + // remove any authorization headers). Also remember the case of the header + // name because lots of broken servers expect Host instead of host and we + // want the caller to be able to specify this. + self.originalHost = self.getHeader('host') + if (!self.originalHostHeaderName) { + self.originalHostHeaderName = self.hasHeader('host') + } + if (self.setHost) { + self.removeHeader('host') + } + if (self.timeout && self.timeoutTimer) { + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null + } + + var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar + var addCookie = function (cookie) { + // set the cookie if it's domain in the href's domain. + try { + targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) + } catch (e) { + self.emit('error', e) + } + } + + response.caseless = caseless(response.headers) + + if (response.caseless.has('set-cookie') && (!self._disableCookies)) { + var headerName = response.caseless.has('set-cookie') + if (Array.isArray(response.headers[headerName])) { + response.headers[headerName].forEach(addCookie) + } else { + addCookie(response.headers[headerName]) + } + } + + if (self._redirect.onResponse(response)) { + return // Ignore the rest of the response + } else { + // Be a good stream and emit end when the response is finished. + // Hack to emit end on close because of a core bug that never fires end + response.on('close', function () { + if (!self._ended) { + self.response.emit('end') + } + }) + + response.once('end', function () { + self._ended = true + }) + + var noBody = function (code) { + return ( + self.method === 'HEAD' || + // Informational + (code >= 100 && code < 200) || + // No Content + code === 204 || + // Not Modified + code === 304 + ) + } + + var responseContent + if (self.gzip && !noBody(response.statusCode)) { + var contentEncoding = response.headers['content-encoding'] || 'identity' + contentEncoding = contentEncoding.trim().toLowerCase() + + // Be more lenient with decoding compressed responses, since (very rarely) + // servers send slightly invalid gzip responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + var zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + } + + if (contentEncoding === 'gzip') { + responseContent = zlib.createGunzip(zlibOptions) + response.pipe(responseContent) + } else if (contentEncoding === 'deflate') { + responseContent = zlib.createInflate(zlibOptions) + response.pipe(responseContent) + } else { + // Since previous versions didn't check for Content-Encoding header, + // ignore any invalid values to preserve backwards-compatibility + if (contentEncoding !== 'identity') { + debug('ignoring unrecognized Content-Encoding ' + contentEncoding) + } + responseContent = response + } + } else { + responseContent = response + } + + if (self.encoding) { + if (self.dests.length !== 0) { + console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') + } else { + responseContent.setEncoding(self.encoding) + } + } + + if (self._paused) { + responseContent.pause() + } + + self.responseContent = responseContent + + self.emit('response', response) + + self.dests.forEach(function (dest) { + self.pipeDest(dest) + }) + + responseContent.on('data', function (chunk) { + if (self.timing && !self.responseStarted) { + self.responseStartTime = (new Date()).getTime() + + // NOTE: responseStartTime is deprecated in favor of .timings + response.responseStartTime = self.responseStartTime + } + self._destdata = true + self.emit('data', chunk) + }) + responseContent.once('end', function (chunk) { + self.emit('end', chunk) + }) + responseContent.on('error', function (error) { + self.emit('error', error) + }) + responseContent.on('close', function () { self.emit('close') }) + + if (self.callback) { + self.readResponseBody(response) + } else { // if no callback + self.on('end', function () { + if (self._aborted) { + debug('aborted', self.uri.href) + return + } + self.emit('complete', response) + }) + } + } + debug('finish init function', self.uri.href) +} + +Request.prototype.readResponseBody = function (response) { + var self = this + debug("reading response's body") + var buffers = [] + var bufferLength = 0 + var strings = [] + + self.on('data', function (chunk) { + if (!Buffer.isBuffer(chunk)) { + strings.push(chunk) + } else if (chunk.length) { + bufferLength += chunk.length + buffers.push(chunk) + } + }) + self.on('end', function () { + debug('end event', self.uri.href) + if (self._aborted) { + debug('aborted', self.uri.href) + // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request. + // This can lead to leaky behavior if the user retains a reference to the request object. + buffers = [] + bufferLength = 0 + return + } + + if (bufferLength) { + debug('has body', self.uri.href, bufferLength) + response.body = Buffer.concat(buffers, bufferLength) + if (self.encoding !== null) { + response.body = response.body.toString(self.encoding) + } + // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request. + // This can lead to leaky behavior if the user retains a reference to the request object. + buffers = [] + bufferLength = 0 + } else if (strings.length) { + // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. + // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). + if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { + strings[0] = strings[0].substring(1) + } + response.body = strings.join('') + } + + if (self._json) { + try { + response.body = JSON.parse(response.body, self._jsonReviver) + } catch (e) { + debug('invalid JSON received', self.uri.href) + } + } + debug('emitting complete', self.uri.href) + if (typeof response.body === 'undefined' && !self._json) { + response.body = self.encoding === null ? Buffer.alloc(0) : '' + } + self.emit('complete', response, response.body) + }) +} + +Request.prototype.abort = function () { + var self = this + self._aborted = true + + if (self.req) { + self.req.abort() + } else if (self.response) { + self.response.destroy() + } + + self.emit('abort') +} + +Request.prototype.pipeDest = function (dest) { + var self = this + var response = self.response + // Called after the response is received + if (dest.headers && !dest.headersSent) { + if (response.caseless.has('content-type')) { + var ctname = response.caseless.has('content-type') + if (dest.setHeader) { + dest.setHeader(ctname, response.headers[ctname]) + } else { + dest.headers[ctname] = response.headers[ctname] + } + } + + if (response.caseless.has('content-length')) { + var clname = response.caseless.has('content-length') + if (dest.setHeader) { + dest.setHeader(clname, response.headers[clname]) + } else { + dest.headers[clname] = response.headers[clname] + } + } + } + if (dest.setHeader && !dest.headersSent) { + for (var i in response.headers) { + // If the response content is being decoded, the Content-Encoding header + // of the response doesn't represent the piped content, so don't pass it. + if (!self.gzip || i !== 'content-encoding') { + dest.setHeader(i, response.headers[i]) + } + } + dest.statusCode = response.statusCode + } + if (self.pipefilter) { + self.pipefilter(response, dest) + } +} + +Request.prototype.qs = function (q, clobber) { + var self = this + var base + if (!clobber && self.uri.query) { + base = self._qs.parse(self.uri.query) + } else { + base = {} + } + + for (var i in q) { + base[i] = q[i] + } + + var qs = self._qs.stringify(base) + + if (qs === '') { + return self + } + + self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) + self.url = self.uri + self.path = self.uri.path + + if (self.uri.host === 'unix') { + self.enableUnixSocket() + } + + return self +} +Request.prototype.form = function (form) { + var self = this + if (form) { + if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { + self.setHeader('content-type', 'application/x-www-form-urlencoded') + } + self.body = (typeof form === 'string') + ? self._qs.rfc3986(form.toString('utf8')) + : self._qs.stringify(form).toString('utf8') + return self + } + // create form-data object + self._form = new FormData() + self._form.on('error', function (err) { + err.message = 'form-data: ' + err.message + self.emit('error', err) + self.abort() + }) + return self._form +} +Request.prototype.multipart = function (multipart) { + var self = this + + self._multipart.onRequest(multipart) + + if (!self._multipart.chunked) { + self.body = self._multipart.body + } + + return self +} +Request.prototype.json = function (val) { + var self = this + + if (!self.hasHeader('accept')) { + self.setHeader('accept', 'application/json') + } + + if (typeof self.jsonReplacer === 'function') { + self._jsonReplacer = self.jsonReplacer + } + + self._json = true + if (typeof val === 'boolean') { + if (self.body !== undefined) { + if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { + self.body = safeStringify(self.body, self._jsonReplacer) + } else { + self.body = self._qs.rfc3986(self.body) + } + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') + } + } + } else { + self.body = safeStringify(val, self._jsonReplacer) + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') + } + } + + if (typeof self.jsonReviver === 'function') { + self._jsonReviver = self.jsonReviver + } + + return self +} +Request.prototype.getHeader = function (name, headers) { + var self = this + var result, re, match + if (!headers) { + headers = self.headers + } + Object.keys(headers).forEach(function (key) { + if (key.length !== name.length) { + return + } + re = new RegExp(name, 'i') + match = key.match(re) + if (match) { + result = headers[key] + } + }) + return result +} +Request.prototype.enableUnixSocket = function () { + // Get the socket & request paths from the URL + var unixParts = this.uri.path.split(':') + var host = unixParts[0] + var path = unixParts[1] + // Apply unix properties to request + this.socketPath = host + this.uri.pathname = path + this.uri.path = path + this.uri.host = host + this.uri.hostname = host + this.uri.isUnix = true +} + +Request.prototype.auth = function (user, pass, sendImmediately, bearer) { + var self = this + + self._auth.onRequest(user, pass, sendImmediately, bearer) + + return self +} +Request.prototype.aws = function (opts, now) { + var self = this + + if (!now) { + self._aws = opts + return self + } + + if (opts.sign_version === 4 || opts.sign_version === '4') { + // use aws4 + var options = { + host: self.uri.host, + path: self.uri.path, + method: self.method, + headers: self.headers, + body: self.body + } + if (opts.service) { + options.service = opts.service + } + var signRes = aws4.sign(options, { + accessKeyId: opts.key, + secretAccessKey: opts.secret, + sessionToken: opts.session + }) + self.setHeader('authorization', signRes.headers.Authorization) + self.setHeader('x-amz-date', signRes.headers['X-Amz-Date']) + if (signRes.headers['X-Amz-Security-Token']) { + self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token']) + } + } else { + // default: use aws-sign2 + var date = new Date() + self.setHeader('date', date.toUTCString()) + var auth = { + key: opts.key, + secret: opts.secret, + verb: self.method.toUpperCase(), + date: date, + contentType: self.getHeader('content-type') || '', + md5: self.getHeader('content-md5') || '', + amazonHeaders: aws2.canonicalizeHeaders(self.headers) + } + var path = self.uri.path + if (opts.bucket && path) { + auth.resource = '/' + opts.bucket + path + } else if (opts.bucket && !path) { + auth.resource = '/' + opts.bucket + } else if (!opts.bucket && path) { + auth.resource = path + } else if (!opts.bucket && !path) { + auth.resource = '/' + } + auth.resource = aws2.canonicalizeResource(auth.resource) + self.setHeader('authorization', aws2.authorization(auth)) + } + + return self +} +Request.prototype.httpSignature = function (opts) { + var self = this + httpSignature.signRequest({ + getHeader: function (header) { + return self.getHeader(header, self.headers) + }, + setHeader: function (header, value) { + self.setHeader(header, value) + }, + method: self.method, + path: self.path + }, opts) + debug('httpSignature authorization', self.getHeader('authorization')) + + return self +} +Request.prototype.hawk = function (opts) { + var self = this + self.setHeader('Authorization', hawk.header(self.uri, self.method, opts)) +} +Request.prototype.oauth = function (_oauth) { + var self = this + + self._oauth.onRequest(_oauth) + + return self +} + +Request.prototype.jar = function (jar) { + var self = this + var cookies + + if (self._redirect.redirectsFollowed === 0) { + self.originalCookieHeader = self.getHeader('cookie') + } + + if (!jar) { + // disable cookies + cookies = false + self._disableCookies = true + } else { + var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar + var urihref = self.uri.href + // fetch cookie in the Specified host + if (targetCookieJar) { + cookies = targetCookieJar.getCookieString(urihref) + } + } + + // if need cookie and cookie is not empty + if (cookies && cookies.length) { + if (self.originalCookieHeader) { + // Don't overwrite existing Cookie header + self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) + } else { + self.setHeader('cookie', cookies) + } + } + self._jar = jar + return self +} + +// Stream API +Request.prototype.pipe = function (dest, opts) { + var self = this + + if (self.response) { + if (self._destdata) { + self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) + } else if (self._ended) { + self.emit('error', new Error('You cannot pipe after the response has been ended.')) + } else { + stream.Stream.prototype.pipe.call(self, dest, opts) + self.pipeDest(dest) + return dest + } + } else { + self.dests.push(dest) + stream.Stream.prototype.pipe.call(self, dest, opts) + return dest + } +} +Request.prototype.write = function () { + var self = this + if (self._aborted) { return } + + if (!self._started) { + self.start() + } + if (self.req) { + return self.req.write.apply(self.req, arguments) + } +} +Request.prototype.end = function (chunk) { + var self = this + if (self._aborted) { return } + + if (chunk) { + self.write(chunk) + } + if (!self._started) { + self.start() + } + if (self.req) { + self.req.end() + } +} +Request.prototype.pause = function () { + var self = this + if (!self.responseContent) { + self._paused = true + } else { + self.responseContent.pause.apply(self.responseContent, arguments) + } +} +Request.prototype.resume = function () { + var self = this + if (!self.responseContent) { + self._paused = false + } else { + self.responseContent.resume.apply(self.responseContent, arguments) + } +} +Request.prototype.destroy = function () { + var self = this + if (!self._ended) { + self.end() + } else if (self.response) { + self.response.destroy() + } +} + +Request.defaultProxyHeaderWhiteList = + Tunnel.defaultProxyHeaderWhiteList.slice() + +Request.defaultProxyHeaderExclusiveList = + Tunnel.defaultProxyHeaderExclusiveList.slice() + +// Exports + +Request.prototype.toJSON = requestToJSON +module.exports = Request diff --git a/node_modules/restore-cursor/index.js b/node_modules/restore-cursor/index.js new file mode 100644 index 0000000..c3da545 --- /dev/null +++ b/node_modules/restore-cursor/index.js @@ -0,0 +1,9 @@ +'use strict'; +var onetime = require('onetime'); +var exitHook = require('exit-hook'); + +module.exports = onetime(function () { + exitHook(function () { + process.stdout.write('\u001b[?25h'); + }); +}); diff --git a/node_modules/restore-cursor/license b/node_modules/restore-cursor/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/restore-cursor/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/restore-cursor/package.json b/node_modules/restore-cursor/package.json new file mode 100644 index 0000000..18776cb --- /dev/null +++ b/node_modules/restore-cursor/package.json @@ -0,0 +1,76 @@ +{ + "_from": "restore-cursor@^1.0.1", + "_id": "restore-cursor@1.0.1", + "_inBundle": false, + "_integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "_location": "/restore-cursor", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "restore-cursor@^1.0.1", + "name": "restore-cursor", + "escapedName": "restore-cursor", + "rawSpec": "^1.0.1", + "saveSpec": null, + "fetchSpec": "^1.0.1" + }, + "_requiredBy": [ + "/cli-cursor" + ], + "_resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "_shasum": "34661f46886327fed2991479152252df92daa541", + "_spec": "restore-cursor@^1.0.1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cli-cursor", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/restore-cursor/issues" + }, + "bundleDependencies": false, + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "deprecated": false, + "description": "Gracefully restore the CLI cursor on exit", + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/sindresorhus/restore-cursor#readme", + "keywords": [ + "exit", + "quit", + "process", + "graceful", + "shutdown", + "sigterm", + "sigint", + "terminate", + "kill", + "stop", + "cli", + "cursor", + "ansi", + "show", + "term", + "terminal", + "console", + "tty", + "shell", + "command-line" + ], + "license": "MIT", + "name": "restore-cursor", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/restore-cursor.git" + }, + "version": "1.0.1" +} diff --git a/node_modules/restore-cursor/readme.md b/node_modules/restore-cursor/readme.md new file mode 100644 index 0000000..be08560 --- /dev/null +++ b/node_modules/restore-cursor/readme.md @@ -0,0 +1,25 @@ +# restore-cursor + +> Gracefully restore the CLI cursor on exit + +Prevent the cursor you've hidden interactively to remain hidden if the process crashes. + + +## Install + +```sh +$ npm install --save restore-cursor +``` + + +## Usage + +```js +var restoreCursor = require('restore-cursor'); +restoreCursor(); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/rimraf/LICENSE b/node_modules/rimraf/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/rimraf/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/rimraf/README.md b/node_modules/rimraf/README.md new file mode 100644 index 0000000..423b8cf --- /dev/null +++ b/node_modules/rimraf/README.md @@ -0,0 +1,101 @@ +[![Build Status](https://travis-ci.org/isaacs/rimraf.svg?branch=master)](https://travis-ci.org/isaacs/rimraf) [![Dependency Status](https://david-dm.org/isaacs/rimraf.svg)](https://david-dm.org/isaacs/rimraf) [![devDependency Status](https://david-dm.org/isaacs/rimraf/dev-status.svg)](https://david-dm.org/isaacs/rimraf#info=devDependencies) + +The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node. + +Install with `npm install rimraf`, or just drop rimraf.js somewhere. + +## API + +`rimraf(f, [opts], callback)` + +The first parameter will be interpreted as a globbing pattern for files. If you +want to disable globbing you can do so with `opts.disableGlob` (defaults to +`false`). This might be handy, for instance, if you have filenames that contain +globbing wildcard characters. + +The callback will be called with an error if there is one. Certain +errors are handled for you: + +* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of + `opts.maxBusyTries` times before giving up, adding 100ms of wait + between each attempt. The default `maxBusyTries` is 3. +* `ENOENT` - If the file doesn't exist, rimraf will return + successfully, since your desired outcome is already the case. +* `EMFILE` - Since `readdir` requires opening a file descriptor, it's + possible to hit `EMFILE` if too many file descriptors are in use. + In the sync case, there's nothing to be done for this. But in the + async case, rimraf will gradually back off with timeouts up to + `opts.emfileWait` ms, which defaults to 1000. + +## options + +* unlink, chmod, stat, lstat, rmdir, readdir, + unlinkSync, chmodSync, statSync, lstatSync, rmdirSync, readdirSync + + In order to use a custom file system library, you can override + specific fs functions on the options object. + + If any of these functions are present on the options object, then + the supplied function will be used instead of the default fs + method. + + Sync methods are only relevant for `rimraf.sync()`, of course. + + For example: + + ```javascript + var myCustomFS = require('some-custom-fs') + + rimraf('some-thing', myCustomFS, callback) + ``` + +* maxBusyTries + + If an `EBUSY`, `ENOTEMPTY`, or `EPERM` error code is encountered + on Windows systems, then rimraf will retry with a linear backoff + wait of 100ms longer on each try. The default maxBusyTries is 3. + + Only relevant for async usage. + +* emfileWait + + If an `EMFILE` error is encountered, then rimraf will retry + repeatedly with a linear backoff of 1ms longer on each try, until + the timeout counter hits this max. The default limit is 1000. + + If you repeatedly encounter `EMFILE` errors, then consider using + [graceful-fs](http://npm.im/graceful-fs) in your program. + + Only relevant for async usage. + +* glob + + Set to `false` to disable [glob](http://npm.im/glob) pattern + matching. + + Set to an object to pass options to the glob module. The default + glob options are `{ nosort: true, silent: true }`. + + Glob version 6 is used in this module. + + Relevant for both sync and async usage. + +* disableGlob + + Set to any non-falsey value to disable globbing entirely. + (Equivalent to setting `glob: false`.) + +## rimraf.sync + +It can remove stuff synchronously, too. But that's not so good. Use +the async API. It's better. + +## CLI + +If installed with `npm install rimraf -g` it can be used as a global +command `rimraf [ ...]` which is useful for cross platform support. + +## mkdirp + +If you need to create a directory recursively, check out +[mkdirp](https://github.com/substack/node-mkdirp). diff --git a/node_modules/rimraf/bin.js b/node_modules/rimraf/bin.js new file mode 100755 index 0000000..0d1e17b --- /dev/null +++ b/node_modules/rimraf/bin.js @@ -0,0 +1,50 @@ +#!/usr/bin/env node + +var rimraf = require('./') + +var help = false +var dashdash = false +var noglob = false +var args = process.argv.slice(2).filter(function(arg) { + if (dashdash) + return !!arg + else if (arg === '--') + dashdash = true + else if (arg === '--no-glob' || arg === '-G') + noglob = true + else if (arg === '--glob' || arg === '-g') + noglob = false + else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) + help = true + else + return !!arg +}) + +if (help || args.length === 0) { + // If they didn't ask for help, then this is not a "success" + var log = help ? console.log : console.error + log('Usage: rimraf [ ...]') + log('') + log(' Deletes all files and folders at "path" recursively.') + log('') + log('Options:') + log('') + log(' -h, --help Display this usage info') + log(' -G, --no-glob Do not expand glob patterns in arguments') + log(' -g, --glob Expand glob patterns in arguments (default)') + process.exit(help ? 0 : 1) +} else + go(0) + +function go (n) { + if (n >= args.length) + return + var options = {} + if (noglob) + options = { glob: false } + rimraf(args[n], options, function (er) { + if (er) + throw er + go(n+1) + }) +} diff --git a/node_modules/rimraf/package.json b/node_modules/rimraf/package.json new file mode 100644 index 0000000..2ac11d9 --- /dev/null +++ b/node_modules/rimraf/package.json @@ -0,0 +1,67 @@ +{ + "_from": "rimraf@^2.6.3", + "_id": "rimraf@2.7.1", + "_inBundle": false, + "_integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "_location": "/rimraf", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "rimraf@^2.6.3", + "name": "rimraf", + "escapedName": "rimraf", + "rawSpec": "^2.6.3", + "saveSpec": null, + "fetchSpec": "^2.6.3" + }, + "_requiredBy": [ + "/tmp" + ], + "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "_shasum": "35797f13a7fdadc566142c29d4f07ccad483e3ec", + "_spec": "rimraf@^2.6.3", + "_where": "/home/peter/www/prive/cypress-test/node_modules/tmp", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "bin": { + "rimraf": "./bin.js" + }, + "bugs": { + "url": "https://github.com/isaacs/rimraf/issues" + }, + "bundleDependencies": false, + "dependencies": { + "glob": "^7.1.3" + }, + "deprecated": false, + "description": "A deep deletion module for node (like `rm -rf`)", + "devDependencies": { + "mkdirp": "^0.5.1", + "tap": "^12.1.1" + }, + "files": [ + "LICENSE", + "README.md", + "bin.js", + "rimraf.js" + ], + "homepage": "https://github.com/isaacs/rimraf#readme", + "license": "ISC", + "main": "rimraf.js", + "name": "rimraf", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/rimraf.git" + }, + "scripts": { + "postpublish": "git push origin --all; git push origin --tags", + "postversion": "npm publish", + "preversion": "npm test", + "test": "tap test/*.js" + }, + "version": "2.7.1" +} diff --git a/node_modules/rimraf/rimraf.js b/node_modules/rimraf/rimraf.js new file mode 100644 index 0000000..a90ad02 --- /dev/null +++ b/node_modules/rimraf/rimraf.js @@ -0,0 +1,372 @@ +module.exports = rimraf +rimraf.sync = rimrafSync + +var assert = require("assert") +var path = require("path") +var fs = require("fs") +var glob = undefined +try { + glob = require("glob") +} catch (_err) { + // treat glob as optional. +} +var _0666 = parseInt('666', 8) + +var defaultGlobOpts = { + nosort: true, + silent: true +} + +// for EMFILE handling +var timeout = 0 + +var isWindows = (process.platform === "win32") + +function defaults (options) { + var methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(function(m) { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 + options.emfileWait = options.emfileWait || 1000 + if (options.glob === false) { + options.disableGlob = true + } + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') + } + options.disableGlob = options.disableGlob || false + options.glob = options.glob || defaultGlobOpts +} + +function rimraf (p, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + defaults(options) + + var busyTries = 0 + var errState = null + var n = 0 + + if (options.disableGlob || !glob.hasMagic(p)) + return afterGlob(null, [p]) + + options.lstat(p, function (er, stat) { + if (!er) + return afterGlob(null, [p]) + + glob(p, options.glob, afterGlob) + }) + + function next (er) { + errState = errState || er + if (--n === 0) + cb(errState) + } + + function afterGlob (er, results) { + if (er) + return cb(er) + + n = results.length + if (n === 0) + return cb() + + results.forEach(function (p) { + rimraf_(p, options, function CB (er) { + if (er) { + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + busyTries < options.maxBusyTries) { + busyTries ++ + var time = busyTries * 100 + // try again, with the same exact callback as this one. + return setTimeout(function () { + rimraf_(p, options, CB) + }, time) + } + + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < options.emfileWait) { + return setTimeout(function () { + rimraf_(p, options, CB) + }, timeout ++) + } + + // already gone + if (er.code === "ENOENT") er = null + } + + timeout = 0 + next(er) + }) + }) + } +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +function rimraf_ (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, function (er, st) { + if (er && er.code === "ENOENT") + return cb(null) + + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === "EPERM" && isWindows) + fixWinEPERM(p, options, er, cb) + + if (st && st.isDirectory()) + return rmdir(p, options, er, cb) + + options.unlink(p, function (er) { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) + }) +} + +function fixWinEPERM (p, options, er, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + if (er) + assert(er instanceof Error) + + options.chmod(p, _0666, function (er2) { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, function(er3, stats) { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} + +function fixWinEPERMSync (p, options, er) { + assert(p) + assert(options) + if (er) + assert(er instanceof Error) + + try { + options.chmodSync(p, _0666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er + } + + try { + var stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er + } + + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} + +function rmdir (p, options, originalEr, cb) { + assert(p) + assert(options) + if (originalEr) + assert(originalEr instanceof Error) + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, function (er) { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} + +function rmkids(p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, function (er, files) { + if (er) + return cb(er) + var n = files.length + if (n === 0) + return options.rmdir(p, cb) + var errState + files.forEach(function (f) { + rimraf(path.join(p, f), options, function (er) { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +function rimrafSync (p, options) { + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + var results + + if (options.disableGlob || !glob.hasMagic(p)) { + results = [p] + } else { + try { + options.lstatSync(p) + results = [p] + } catch (er) { + results = glob.sync(p, options.glob) + } + } + + if (!results.length) + return + + for (var i = 0; i < results.length; i++) { + var p = results[i] + + try { + var st = options.lstatSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + + // Windows can EPERM on stat. Life is suffering. + if (er.code === "EPERM" && isWindows) + fixWinEPERMSync(p, options, er) + } + + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) + rmdirSync(p, options, null) + else + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er + + rmdirSync(p, options, er) + } + } +} + +function rmdirSync (p, options, originalEr) { + assert(p) + assert(options) + if (originalEr) + assert(originalEr instanceof Error) + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} + +function rmkidsSync (p, options) { + assert(p) + assert(options) + options.readdirSync(p).forEach(function (f) { + rimrafSync(path.join(p, f), options) + }) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + var retries = isWindows ? 100 : 1 + var i = 0 + do { + var threw = true + try { + var ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue + } + } while (true) +} diff --git a/node_modules/rxjs/AsyncSubject.d.ts b/node_modules/rxjs/AsyncSubject.d.ts new file mode 100644 index 0000000..40493db --- /dev/null +++ b/node_modules/rxjs/AsyncSubject.d.ts @@ -0,0 +1,15 @@ +import { Subject } from './Subject'; +import { Subscriber } from './Subscriber'; +import { Subscription } from './Subscription'; +/** + * @class AsyncSubject + */ +export declare class AsyncSubject extends Subject { + private value; + private hasNext; + private hasCompleted; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription; + next(value: T): void; + error(error: any): void; + complete(): void; +} diff --git a/node_modules/rxjs/AsyncSubject.js b/node_modules/rxjs/AsyncSubject.js new file mode 100644 index 0000000..d6e0dce --- /dev/null +++ b/node_modules/rxjs/AsyncSubject.js @@ -0,0 +1,53 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subject_1 = require('./Subject'); +var Subscription_1 = require('./Subscription'); +/** + * @class AsyncSubject + */ +var AsyncSubject = (function (_super) { + __extends(AsyncSubject, _super); + function AsyncSubject() { + _super.apply(this, arguments); + this.value = null; + this.hasNext = false; + this.hasCompleted = false; + } + /** @deprecated internal use only */ AsyncSubject.prototype._subscribe = function (subscriber) { + if (this.hasError) { + subscriber.error(this.thrownError); + return Subscription_1.Subscription.EMPTY; + } + else if (this.hasCompleted && this.hasNext) { + subscriber.next(this.value); + subscriber.complete(); + return Subscription_1.Subscription.EMPTY; + } + return _super.prototype._subscribe.call(this, subscriber); + }; + AsyncSubject.prototype.next = function (value) { + if (!this.hasCompleted) { + this.value = value; + this.hasNext = true; + } + }; + AsyncSubject.prototype.error = function (error) { + if (!this.hasCompleted) { + _super.prototype.error.call(this, error); + } + }; + AsyncSubject.prototype.complete = function () { + this.hasCompleted = true; + if (this.hasNext) { + _super.prototype.next.call(this, this.value); + } + _super.prototype.complete.call(this); + }; + return AsyncSubject; +}(Subject_1.Subject)); +exports.AsyncSubject = AsyncSubject; +//# sourceMappingURL=AsyncSubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/AsyncSubject.js.map b/node_modules/rxjs/AsyncSubject.js.map new file mode 100644 index 0000000..1d288e5 --- /dev/null +++ b/node_modules/rxjs/AsyncSubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncSubject.js","sourceRoot":"","sources":["../src/AsyncSubject.ts"],"names":[],"mappings":";;;;;;AAAA,wBAAwB,WAAW,CAAC,CAAA;AAEpC,6BAA6B,gBAAgB,CAAC,CAAA;AAE9C;;GAEG;AACH;IAAqC,gCAAU;IAA/C;QAAqC,8BAAU;QACrC,UAAK,GAAM,IAAI,CAAC;QAChB,YAAO,GAAY,KAAK,CAAC;QACzB,iBAAY,GAAY,KAAK,CAAC;IAkCxC,CAAC;IAhCC,oCAAoC,CAAC,iCAAU,GAAV,UAAW,UAA2B;QACzE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,CAAC,2BAAY,CAAC,KAAK,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC,2BAAY,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,gBAAK,CAAC,UAAU,YAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,2BAAI,GAAJ,UAAK,KAAQ;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,4BAAK,GAAL,UAAM,KAAU;QACd,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,gBAAK,CAAC,KAAK,YAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,+BAAQ,GAAR;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACjB,gBAAK,CAAC,IAAI,YAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,gBAAK,CAAC,QAAQ,WAAE,CAAC;IACnB,CAAC;IACH,mBAAC;AAAD,CAAC,AArCD,CAAqC,iBAAO,GAqC3C;AArCY,oBAAY,eAqCxB,CAAA","sourcesContent":["import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/BehaviorSubject.d.ts b/node_modules/rxjs/BehaviorSubject.d.ts new file mode 100644 index 0000000..f3ae834 --- /dev/null +++ b/node_modules/rxjs/BehaviorSubject.d.ts @@ -0,0 +1,14 @@ +import { Subject } from './Subject'; +import { Subscriber } from './Subscriber'; +import { Subscription } from './Subscription'; +/** + * @class BehaviorSubject + */ +export declare class BehaviorSubject extends Subject { + private _value; + constructor(_value: T); + readonly value: T; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription; + getValue(): T; + next(value: T): void; +} diff --git a/node_modules/rxjs/BehaviorSubject.js b/node_modules/rxjs/BehaviorSubject.js new file mode 100644 index 0000000..1d8654f --- /dev/null +++ b/node_modules/rxjs/BehaviorSubject.js @@ -0,0 +1,49 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subject_1 = require('./Subject'); +var ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError'); +/** + * @class BehaviorSubject + */ +var BehaviorSubject = (function (_super) { + __extends(BehaviorSubject, _super); + function BehaviorSubject(_value) { + _super.call(this); + this._value = _value; + } + Object.defineProperty(BehaviorSubject.prototype, "value", { + get: function () { + return this.getValue(); + }, + enumerable: true, + configurable: true + }); + /** @deprecated internal use only */ BehaviorSubject.prototype._subscribe = function (subscriber) { + var subscription = _super.prototype._subscribe.call(this, subscriber); + if (subscription && !subscription.closed) { + subscriber.next(this._value); + } + return subscription; + }; + BehaviorSubject.prototype.getValue = function () { + if (this.hasError) { + throw this.thrownError; + } + else if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + else { + return this._value; + } + }; + BehaviorSubject.prototype.next = function (value) { + _super.prototype.next.call(this, this._value = value); + }; + return BehaviorSubject; +}(Subject_1.Subject)); +exports.BehaviorSubject = BehaviorSubject; +//# sourceMappingURL=BehaviorSubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/BehaviorSubject.js.map b/node_modules/rxjs/BehaviorSubject.js.map new file mode 100644 index 0000000..31c2bb8 --- /dev/null +++ b/node_modules/rxjs/BehaviorSubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BehaviorSubject.js","sourceRoot":"","sources":["../src/BehaviorSubject.ts"],"names":[],"mappings":";;;;;;AAAA,wBAAwB,WAAW,CAAC,CAAA;AAGpC,wCAAwC,gCAAgC,CAAC,CAAA;AAEzE;;GAEG;AACH;IAAwC,mCAAU;IAEhD,yBAAoB,MAAS;QAC3B,iBAAO,CAAC;QADU,WAAM,GAAN,MAAM,CAAG;IAE7B,CAAC;IAED,sBAAI,kCAAK;aAAT;YACE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;;;OAAA;IAED,oCAAoC,CAAC,oCAAU,GAAV,UAAW,UAAyB;QACvE,IAAM,YAAY,GAAG,gBAAK,CAAC,UAAU,YAAC,UAAU,CAAC,CAAC;QAClD,EAAE,CAAC,CAAC,YAAY,IAAI,CAAiB,YAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;IAED,kCAAQ,GAAR;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,iDAAuB,EAAE,CAAC;QACtC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8BAAI,GAAJ,UAAK,KAAQ;QACX,gBAAK,CAAC,IAAI,YAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAClC,CAAC;IACH,sBAAC;AAAD,CAAC,AA/BD,CAAwC,iBAAO,GA+B9C;AA/BY,uBAAe,kBA+B3B,CAAA","sourcesContent":["import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, ISubscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/InnerSubscriber.d.ts b/node_modules/rxjs/InnerSubscriber.d.ts new file mode 100644 index 0000000..72087f1 --- /dev/null +++ b/node_modules/rxjs/InnerSubscriber.d.ts @@ -0,0 +1,17 @@ +import { Subscriber } from './Subscriber'; +import { OuterSubscriber } from './OuterSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export declare class InnerSubscriber extends Subscriber { + private parent; + private outerValue; + private outerIndex; + private index; + constructor(parent: OuterSubscriber, outerValue: T, outerIndex: number); + protected _next(value: R): void; + protected _error(error: any): void; + protected _complete(): void; +} diff --git a/node_modules/rxjs/InnerSubscriber.js b/node_modules/rxjs/InnerSubscriber.js new file mode 100644 index 0000000..85044bf --- /dev/null +++ b/node_modules/rxjs/InnerSubscriber.js @@ -0,0 +1,36 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subscriber_1 = require('./Subscriber'); +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +var InnerSubscriber = (function (_super) { + __extends(InnerSubscriber, _super); + function InnerSubscriber(parent, outerValue, outerIndex) { + _super.call(this); + this.parent = parent; + this.outerValue = outerValue; + this.outerIndex = outerIndex; + this.index = 0; + } + InnerSubscriber.prototype._next = function (value) { + this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); + }; + InnerSubscriber.prototype._error = function (error) { + this.parent.notifyError(error, this); + this.unsubscribe(); + }; + InnerSubscriber.prototype._complete = function () { + this.parent.notifyComplete(this); + this.unsubscribe(); + }; + return InnerSubscriber; +}(Subscriber_1.Subscriber)); +exports.InnerSubscriber = InnerSubscriber; +//# sourceMappingURL=InnerSubscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/InnerSubscriber.js.map b/node_modules/rxjs/InnerSubscriber.js.map new file mode 100644 index 0000000..3f3092b --- /dev/null +++ b/node_modules/rxjs/InnerSubscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InnerSubscriber.js","sourceRoot":"","sources":["../src/InnerSubscriber.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B,cAAc,CAAC,CAAA;AAG1C;;;;GAIG;AACH;IAA2C,mCAAa;IAGtD,yBAAoB,MAA6B,EAAU,UAAa,EAAU,UAAkB;QAClG,iBAAO,CAAC;QADU,WAAM,GAAN,MAAM,CAAuB;QAAU,eAAU,GAAV,UAAU,CAAG;QAAU,eAAU,GAAV,UAAU,CAAQ;QAF5F,UAAK,GAAW,CAAC,CAAC;IAI1B,CAAC;IAES,+BAAK,GAAf,UAAgB,KAAQ;QACtB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAES,gCAAM,GAAhB,UAAiB,KAAU;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,mCAAS,GAAnB;QACE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IACH,sBAAC;AAAD,CAAC,AApBD,CAA2C,uBAAU,GAoBpD;AApBY,uBAAe,kBAoB3B,CAAA","sourcesContent":["import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(private parent: OuterSubscriber, private outerValue: T, private outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/LICENSE.txt b/node_modules/rxjs/LICENSE.txt new file mode 100644 index 0000000..b6c4001 --- /dev/null +++ b/node_modules/rxjs/LICENSE.txt @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2017 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/node_modules/rxjs/Notification.d.ts b/node_modules/rxjs/Notification.d.ts new file mode 100644 index 0000000..19ba442 --- /dev/null +++ b/node_modules/rxjs/Notification.d.ts @@ -0,0 +1,77 @@ +import { PartialObserver } from './Observer'; +import { Observable } from './Observable'; +/** + * Represents a push-based event or value that an {@link Observable} can emit. + * This class is particularly useful for operators that manage notifications, + * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and + * others. Besides wrapping the actual delivered value, it also annotates it + * with metadata of, for instance, what type of push message it is (`next`, + * `error`, or `complete`). + * + * @see {@link materialize} + * @see {@link dematerialize} + * @see {@link observeOn} + * + * @class Notification + */ +export declare class Notification { + kind: string; + value: T; + error: any; + hasValue: boolean; + constructor(kind: string, value?: T, error?: any); + /** + * Delivers to the given `observer` the value wrapped by this Notification. + * @param {Observer} observer + * @return + */ + observe(observer: PartialObserver): any; + /** + * Given some {@link Observer} callbacks, deliver the value represented by the + * current Notification to the correctly corresponding callback. + * @param {function(value: T): void} next An Observer `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any; + /** + * Takes an Observer or its individual callback functions, and calls `observe` + * or `do` methods accordingly. + * @param {Observer|function(value: T): void} nextOrObserver An Observer or + * the `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void): any; + /** + * Returns a simple Observable that just delivers the notification represented + * by this Notification instance. + * @return {any} + */ + toObservable(): Observable; + private static completeNotification; + private static undefinedValueNotification; + /** + * A shortcut to create a Notification instance of the type `next` from a + * given value. + * @param {T} value The `next` value. + * @return {Notification} The "next" Notification representing the + * argument. + */ + static createNext(value: T): Notification; + /** + * A shortcut to create a Notification instance of the type `error` from a + * given error. + * @param {any} [err] The `error` error. + * @return {Notification} The "error" Notification representing the + * argument. + */ + static createError(err?: any): Notification; + /** + * A shortcut to create a Notification instance of the type `complete`. + * @return {Notification} The valueless "complete" Notification. + */ + static createComplete(): Notification; +} diff --git a/node_modules/rxjs/Notification.js b/node_modules/rxjs/Notification.js new file mode 100644 index 0000000..ae933e4 --- /dev/null +++ b/node_modules/rxjs/Notification.js @@ -0,0 +1,127 @@ +"use strict"; +var Observable_1 = require('./Observable'); +/** + * Represents a push-based event or value that an {@link Observable} can emit. + * This class is particularly useful for operators that manage notifications, + * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and + * others. Besides wrapping the actual delivered value, it also annotates it + * with metadata of, for instance, what type of push message it is (`next`, + * `error`, or `complete`). + * + * @see {@link materialize} + * @see {@link dematerialize} + * @see {@link observeOn} + * + * @class Notification + */ +var Notification = (function () { + function Notification(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === 'N'; + } + /** + * Delivers to the given `observer` the value wrapped by this Notification. + * @param {Observer} observer + * @return + */ + Notification.prototype.observe = function (observer) { + switch (this.kind) { + case 'N': + return observer.next && observer.next(this.value); + case 'E': + return observer.error && observer.error(this.error); + case 'C': + return observer.complete && observer.complete(); + } + }; + /** + * Given some {@link Observer} callbacks, deliver the value represented by the + * current Notification to the correctly corresponding callback. + * @param {function(value: T): void} next An Observer `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + Notification.prototype.do = function (next, error, complete) { + var kind = this.kind; + switch (kind) { + case 'N': + return next && next(this.value); + case 'E': + return error && error(this.error); + case 'C': + return complete && complete(); + } + }; + /** + * Takes an Observer or its individual callback functions, and calls `observe` + * or `do` methods accordingly. + * @param {Observer|function(value: T): void} nextOrObserver An Observer or + * the `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + Notification.prototype.accept = function (nextOrObserver, error, complete) { + if (nextOrObserver && typeof nextOrObserver.next === 'function') { + return this.observe(nextOrObserver); + } + else { + return this.do(nextOrObserver, error, complete); + } + }; + /** + * Returns a simple Observable that just delivers the notification represented + * by this Notification instance. + * @return {any} + */ + Notification.prototype.toObservable = function () { + var kind = this.kind; + switch (kind) { + case 'N': + return Observable_1.Observable.of(this.value); + case 'E': + return Observable_1.Observable.throw(this.error); + case 'C': + return Observable_1.Observable.empty(); + } + throw new Error('unexpected notification kind value'); + }; + /** + * A shortcut to create a Notification instance of the type `next` from a + * given value. + * @param {T} value The `next` value. + * @return {Notification} The "next" Notification representing the + * argument. + */ + Notification.createNext = function (value) { + if (typeof value !== 'undefined') { + return new Notification('N', value); + } + return Notification.undefinedValueNotification; + }; + /** + * A shortcut to create a Notification instance of the type `error` from a + * given error. + * @param {any} [err] The `error` error. + * @return {Notification} The "error" Notification representing the + * argument. + */ + Notification.createError = function (err) { + return new Notification('E', undefined, err); + }; + /** + * A shortcut to create a Notification instance of the type `complete`. + * @return {Notification} The valueless "complete" Notification. + */ + Notification.createComplete = function () { + return Notification.completeNotification; + }; + Notification.completeNotification = new Notification('C'); + Notification.undefinedValueNotification = new Notification('N', undefined); + return Notification; +}()); +exports.Notification = Notification; +//# sourceMappingURL=Notification.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Notification.js.map b/node_modules/rxjs/Notification.js.map new file mode 100644 index 0000000..b554d33 --- /dev/null +++ b/node_modules/rxjs/Notification.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Notification.js","sourceRoot":"","sources":["../src/Notification.ts"],"names":[],"mappings":";AACA,2BAA2B,cAAc,CAAC,CAAA;AAE1C;;;;;;;;;;;;;GAaG;AACH;IAGE,sBAAmB,IAAY,EAAS,KAAS,EAAS,KAAW;QAAlD,SAAI,GAAJ,IAAI,CAAQ;QAAS,UAAK,GAAL,KAAK,CAAI;QAAS,UAAK,GAAL,KAAK,CAAM;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,8BAAO,GAAP,UAAQ,QAA4B;QAClC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClB,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,yBAAE,GAAF,UAAG,IAAwB,EAAE,KAA0B,EAAE,QAAqB;QAC5E,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,KAAK,GAAG;gBACN,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,GAAG;gBACN,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,6BAAM,GAAN,UAAO,cAAyD,EAAE,KAA0B,EAAE,QAAqB;QACjH,EAAE,CAAC,CAAC,cAAc,IAAI,OAA4B,cAAe,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAqB,cAAc,CAAC,CAAC;QAC1D,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAqB,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,mCAAY,GAAZ;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,KAAK,GAAG;gBACN,MAAM,CAAC,uBAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,KAAK,GAAG;gBACN,MAAM,CAAC,uBAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,GAAG;gBACN,MAAM,CAAC,uBAAU,CAAC,KAAK,EAAK,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAKD;;;;;;OAMG;IACI,uBAAU,GAAjB,UAAqB,KAAQ;QAC3B,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACI,wBAAW,GAAlB,UAAsB,GAAS;QAC7B,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,2BAAc,GAArB;QACE,MAAM,CAAC,YAAY,CAAC,oBAAoB,CAAC;IAC3C,CAAC;IAlCc,iCAAoB,GAAsB,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAChE,uCAA0B,GAAsB,IAAI,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAkClG,mBAAC;AAAD,CAAC,AAjHD,IAiHC;AAjHY,oBAAY,eAiHxB,CAAA","sourcesContent":["import { PartialObserver } from './Observer';\nimport { Observable } from './Observable';\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: string, public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return Observable.of(this.value);\n case 'E':\n return Observable.throw(this.error);\n case 'C':\n return Observable.empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Observable.d.ts b/node_modules/rxjs/Observable.d.ts new file mode 100644 index 0000000..a2d7888 --- /dev/null +++ b/node_modules/rxjs/Observable.d.ts @@ -0,0 +1,76 @@ +import { PartialObserver } from './Observer'; +import { Operator } from './Operator'; +import { Subscriber } from './Subscriber'; +import { Subscription, AnonymousSubscription, TeardownLogic } from './Subscription'; +import { IfObservable } from './observable/IfObservable'; +import { ErrorObservable } from './observable/ErrorObservable'; +import { OperatorFunction } from './interfaces'; +export interface Subscribable { + subscribe(observerOrNext?: PartialObserver | ((value: T) => void), error?: (error: any) => void, complete?: () => void): AnonymousSubscription; +} +export declare type SubscribableOrPromise = Subscribable | PromiseLike; +export declare type ObservableInput = SubscribableOrPromise | ArrayLike; +/** + * A representation of any set of values over any amount of time. This is the most basic building block + * of RxJS. + * + * @class Observable + */ +export declare class Observable implements Subscribable { + _isScalar: boolean; + /** @deprecated internal use only */ source: Observable; + protected operator: Operator; + /** + * @constructor + * @param {Function} subscribe the function that is called when the Observable is + * initially subscribed to. This function is given a Subscriber, to which new values + * can be `next`ed, or an `error` method can be called to raise an error, or + * `complete` can be called to notify of a successful completion. + */ + constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic); + /** + * Creates a new cold Observable by calling the Observable constructor + * @static true + * @owner Observable + * @method create + * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor + * @return {Observable} a new cold observable + */ + static create: Function; + /** + * Creates a new Observable, with this Observable as the source, and the passed + * operator defined as the new observable's operator. + * @method lift + * @param {Operator} operator the operator defining the operation to take on the observable + * @return {Observable} a new observable with the Operator applied + */ + lift(operator: Operator): Observable; + subscribe(observer?: PartialObserver): Subscription; + subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription; + protected _trySubscribe(sink: Subscriber): TeardownLogic; + /** + * @method forEach + * @param {Function} next a handler for each value emitted by the observable + * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise + * @return {Promise} a promise that either resolves on observable completion or + * rejects with the handled error + */ + forEach(next: (value: T) => void, PromiseCtor?: typeof Promise): Promise; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): TeardownLogic; + static if: typeof IfObservable.create; + static throw: typeof ErrorObservable.create; + pipe(): Observable; + pipe(op1: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable; + pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable; + pipe(...operations: OperatorFunction[]): Observable; + toPromise(this: Observable): Promise; + toPromise(this: Observable, PromiseCtor: typeof Promise): Promise; + toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise; +} diff --git a/node_modules/rxjs/Observable.js b/node_modules/rxjs/Observable.js new file mode 100644 index 0000000..dc3adcb --- /dev/null +++ b/node_modules/rxjs/Observable.js @@ -0,0 +1,305 @@ +"use strict"; +var root_1 = require('./util/root'); +var toSubscriber_1 = require('./util/toSubscriber'); +var observable_1 = require('./symbol/observable'); +var pipe_1 = require('./util/pipe'); +/** + * A representation of any set of values over any amount of time. This is the most basic building block + * of RxJS. + * + * @class Observable + */ +var Observable = (function () { + /** + * @constructor + * @param {Function} subscribe the function that is called when the Observable is + * initially subscribed to. This function is given a Subscriber, to which new values + * can be `next`ed, or an `error` method can be called to raise an error, or + * `complete` can be called to notify of a successful completion. + */ + function Observable(subscribe) { + this._isScalar = false; + if (subscribe) { + this._subscribe = subscribe; + } + } + /** + * Creates a new Observable, with this Observable as the source, and the passed + * operator defined as the new observable's operator. + * @method lift + * @param {Operator} operator the operator defining the operation to take on the observable + * @return {Observable} a new observable with the Operator applied + */ + Observable.prototype.lift = function (operator) { + var observable = new Observable(); + observable.source = this; + observable.operator = operator; + return observable; + }; + /** + * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit. + * + * Use it when you have all these Observables, but still nothing is happening. + * + * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It + * might be for example a function that you passed to a {@link create} static factory, but most of the time it is + * a library implementation, which defines what and when will be emitted by an Observable. This means that calling + * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often + * thought. + * + * Apart from starting the execution of an Observable, this method allows you to listen for values + * that an Observable emits, as well as for when it completes or errors. You can achieve this in two + * following ways. + * + * The first way is creating an object that implements {@link Observer} interface. It should have methods + * defined by that interface, but note that it should be just a regular JavaScript object, which you can create + * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do + * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also + * that your object does not have to implement all methods. If you find yourself creating a method that doesn't + * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will + * be left uncaught. + * + * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods. + * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent + * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer, + * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`, + * since `subscribe` recognizes these functions by where they were placed in function call. When it comes + * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown. + * + * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object. + * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean + * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback + * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable. + * + * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously. + * It is an Observable itself that decides when these functions will be called. For example {@link of} + * by default emits all its values synchronously. Always check documentation for how given Observable + * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}. + * + * @example Subscribe with an Observer + * const sumObserver = { + * sum: 0, + * next(value) { + * console.log('Adding: ' + value); + * this.sum = this.sum + value; + * }, + * error() { // We actually could just remove this method, + * }, // since we do not really care about errors right now. + * complete() { + * console.log('Sum equals: ' + this.sum); + * } + * }; + * + * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes. + * .subscribe(sumObserver); + * + * // Logs: + * // "Adding: 1" + * // "Adding: 2" + * // "Adding: 3" + * // "Sum equals: 6" + * + * + * @example Subscribe with functions + * let sum = 0; + * + * Rx.Observable.of(1, 2, 3) + * .subscribe( + * function(value) { + * console.log('Adding: ' + value); + * sum = sum + value; + * }, + * undefined, + * function() { + * console.log('Sum equals: ' + sum); + * } + * ); + * + * // Logs: + * // "Adding: 1" + * // "Adding: 2" + * // "Adding: 3" + * // "Sum equals: 6" + * + * + * @example Cancel a subscription + * const subscription = Rx.Observable.interval(1000).subscribe( + * num => console.log(num), + * undefined, + * () => console.log('completed!') // Will not be called, even + * ); // when cancelling subscription + * + * + * setTimeout(() => { + * subscription.unsubscribe(); + * console.log('unsubscribed!'); + * }, 2500); + * + * // Logs: + * // 0 after 1s + * // 1 after 2s + * // "unsubscribed!" after 2.5s + * + * + * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called, + * or the first of three possible handlers, which is the handler for each value emitted from the subscribed + * Observable. + * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided, + * the error will be thrown as unhandled. + * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion. + * @return {ISubscription} a subscription reference to the registered handlers + * @method subscribe + */ + Observable.prototype.subscribe = function (observerOrNext, error, complete) { + var operator = this.operator; + var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete); + if (operator) { + operator.call(sink, this.source); + } + else { + sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink)); + } + if (sink.syncErrorThrowable) { + sink.syncErrorThrowable = false; + if (sink.syncErrorThrown) { + throw sink.syncErrorValue; + } + } + return sink; + }; + Observable.prototype._trySubscribe = function (sink) { + try { + return this._subscribe(sink); + } + catch (err) { + sink.syncErrorThrown = true; + sink.syncErrorValue = err; + sink.error(err); + } + }; + /** + * @method forEach + * @param {Function} next a handler for each value emitted by the observable + * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise + * @return {Promise} a promise that either resolves on observable completion or + * rejects with the handled error + */ + Observable.prototype.forEach = function (next, PromiseCtor) { + var _this = this; + if (!PromiseCtor) { + if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) { + PromiseCtor = root_1.root.Rx.config.Promise; + } + else if (root_1.root.Promise) { + PromiseCtor = root_1.root.Promise; + } + } + if (!PromiseCtor) { + throw new Error('no Promise impl found'); + } + return new PromiseCtor(function (resolve, reject) { + // Must be declared in a separate statement to avoid a RefernceError when + // accessing subscription below in the closure due to Temporal Dead Zone. + var subscription; + subscription = _this.subscribe(function (value) { + if (subscription) { + // if there is a subscription, then we can surmise + // the next handling is asynchronous. Any errors thrown + // need to be rejected explicitly and unsubscribe must be + // called manually + try { + next(value); + } + catch (err) { + reject(err); + subscription.unsubscribe(); + } + } + else { + // if there is NO subscription, then we're getting a nexted + // value synchronously during subscription. We can just call it. + // If it errors, Observable's `subscribe` will ensure the + // unsubscription logic is called, then synchronously rethrow the error. + // After that, Promise will trap the error and send it + // down the rejection path. + next(value); + } + }, reject, resolve); + }); + }; + /** @deprecated internal use only */ Observable.prototype._subscribe = function (subscriber) { + return this.source.subscribe(subscriber); + }; + /** + * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable + * @method Symbol.observable + * @return {Observable} this instance of the observable + */ + Observable.prototype[observable_1.observable] = function () { + return this; + }; + /* tslint:enable:max-line-length */ + /** + * Used to stitch together functional operators into a chain. + * @method pipe + * @return {Observable} the Observable result of all of the operators having + * been called in the order they were passed in. + * + * @example + * + * import { map, filter, scan } from 'rxjs/operators'; + * + * Rx.Observable.interval(1000) + * .pipe( + * filter(x => x % 2 === 0), + * map(x => x + x), + * scan((acc, x) => acc + x) + * ) + * .subscribe(x => console.log(x)) + */ + Observable.prototype.pipe = function () { + var operations = []; + for (var _i = 0; _i < arguments.length; _i++) { + operations[_i - 0] = arguments[_i]; + } + if (operations.length === 0) { + return this; + } + return pipe_1.pipeFromArray(operations)(this); + }; + /* tslint:enable:max-line-length */ + Observable.prototype.toPromise = function (PromiseCtor) { + var _this = this; + if (!PromiseCtor) { + if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) { + PromiseCtor = root_1.root.Rx.config.Promise; + } + else if (root_1.root.Promise) { + PromiseCtor = root_1.root.Promise; + } + } + if (!PromiseCtor) { + throw new Error('no Promise impl found'); + } + return new PromiseCtor(function (resolve, reject) { + var value; + _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); + }); + }; + // HACK: Since TypeScript inherits static properties too, we have to + // fight against TypeScript here so Subject can have a different static create signature + /** + * Creates a new cold Observable by calling the Observable constructor + * @static true + * @owner Observable + * @method create + * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor + * @return {Observable} a new cold observable + */ + Observable.create = function (subscribe) { + return new Observable(subscribe); + }; + return Observable; +}()); +exports.Observable = Observable; +//# sourceMappingURL=Observable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Observable.js.map b/node_modules/rxjs/Observable.js.map new file mode 100644 index 0000000..b302933 --- /dev/null +++ b/node_modules/rxjs/Observable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Observable.js","sourceRoot":"","sources":["../src/Observable.ts"],"names":[],"mappings":"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","sourcesContent":["import { PartialObserver } from './Observer';\nimport { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, AnonymousSubscription, TeardownLogic } from './Subscription';\nimport { root } from './util/root';\nimport { toSubscriber } from './util/toSubscriber';\nimport { IfObservable } from './observable/IfObservable';\nimport { ErrorObservable } from './observable/ErrorObservable';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { OperatorFunction } from './interfaces';\nimport { pipeFromArray } from './util/pipe';\n\nexport interface Subscribable {\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): AnonymousSubscription;\n}\n\nexport type SubscribableOrPromise = Subscribable | PromiseLike;\nexport type ObservableInput = SubscribableOrPromise | ArrayLike;\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n public _isScalar: boolean = false;\n\n /** @deprecated internal use only */ public source: Observable;\n protected operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to a {@link create} static factory, but most of the time it is\n * a library implementation, which defines what and when will be emitted by an Observable. This means that calling\n * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent\n * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.\n *\n * @example Subscribe with an Observer\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() { // We actually could just remove this method,\n * }, // since we do not really care about errors right now.\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example Subscribe with functions\n * let sum = 0;\n *\n * Rx.Observable.of(1, 2, 3)\n * .subscribe(\n * function(value) {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * function() {\n * console.log('Sum equals: ' + sum);\n * }\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n *\n *\n * @example Cancel a subscription\n * const subscription = Rx.Observable.interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => console.log('completed!') // Will not be called, even\n * ); // when cancelling subscription\n *\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n *\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n operator.call(sink, this.source);\n } else {\n sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));\n }\n\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n\n return sink;\n }\n\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n sink.error(err);\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, PromiseCtor?: typeof Promise): Promise {\n if (!PromiseCtor) {\n if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n PromiseCtor = root.Rx.config.Promise;\n } else if (root.Promise) {\n PromiseCtor = root.Promise;\n }\n }\n\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return new PromiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a RefernceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n if (subscription) {\n // if there is a subscription, then we can surmise\n // the next handling is asynchronous. Any errors thrown\n // need to be rejected explicitly and unsubscribe must be\n // called manually\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscription.unsubscribe();\n }\n } else {\n // if there is NO subscription, then we're getting a nexted\n // value synchronously during subscription. We can just call it.\n // If it errors, Observable's `subscribe` will ensure the\n // unsubscription logic is called, then synchronously rethrow the error.\n // After that, Promise will trap the error and send it\n // down the rejection path.\n next(value);\n }\n }, reject, resolve);\n });\n }\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words\n static if: typeof IfObservable.create;\n static throw: typeof ErrorObservable.create;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable\n pipe(op1: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable\n pipe(...operations: OperatorFunction[]): Observable\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * @example\n *\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * Rx.Observable.interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(PromiseCtor?: PromiseConstructorLike) {\n if (!PromiseCtor) {\n if (root.Rx && root.Rx.config && root.Rx.config.Promise) {\n PromiseCtor = root.Rx.config.Promise;\n } else if (root.Promise) {\n PromiseCtor = root.Promise;\n }\n }\n\n if (!PromiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return new PromiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Observer.d.ts b/node_modules/rxjs/Observer.d.ts new file mode 100644 index 0000000..99815a7 --- /dev/null +++ b/node_modules/rxjs/Observer.d.ts @@ -0,0 +1,26 @@ +export interface NextObserver { + closed?: boolean; + next: (value: T) => void; + error?: (err: any) => void; + complete?: () => void; +} +export interface ErrorObserver { + closed?: boolean; + next?: (value: T) => void; + error: (err: any) => void; + complete?: () => void; +} +export interface CompletionObserver { + closed?: boolean; + next?: (value: T) => void; + error?: (err: any) => void; + complete: () => void; +} +export declare type PartialObserver = NextObserver | ErrorObserver | CompletionObserver; +export interface Observer { + closed?: boolean; + next: (value: T) => void; + error: (err: any) => void; + complete: () => void; +} +export declare const empty: Observer; diff --git a/node_modules/rxjs/Observer.js b/node_modules/rxjs/Observer.js new file mode 100644 index 0000000..db3df93 --- /dev/null +++ b/node_modules/rxjs/Observer.js @@ -0,0 +1,8 @@ +"use strict"; +exports.empty = { + closed: true, + next: function (value) { }, + error: function (err) { throw err; }, + complete: function () { } +}; +//# sourceMappingURL=Observer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Observer.js.map b/node_modules/rxjs/Observer.js.map new file mode 100644 index 0000000..6e2f930 --- /dev/null +++ b/node_modules/rxjs/Observer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Observer.js","sourceRoot":"","sources":["../src/Observer.ts"],"names":[],"mappings":";AA8Ba,aAAK,GAAkB;IAClC,MAAM,EAAE,IAAI;IACZ,IAAI,YAAC,KAAU,IAAoB,CAAC;IACpC,KAAK,YAAC,GAAQ,IAAU,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,QAAQ,gBAAoB,CAAC;CAC9B,CAAC","sourcesContent":["export interface NextObserver {\n closed?: boolean;\n next: (value: T) => void;\n error?: (err: any) => void;\n complete?: () => void;\n}\n\nexport interface ErrorObserver {\n closed?: boolean;\n next?: (value: T) => void;\n error: (err: any) => void;\n complete?: () => void;\n}\n\nexport interface CompletionObserver {\n closed?: boolean;\n next?: (value: T) => void;\n error?: (err: any) => void;\n complete: () => void;\n}\n\nexport type PartialObserver = NextObserver | ErrorObserver | CompletionObserver;\n\nexport interface Observer {\n closed?: boolean;\n next: (value: T) => void;\n error: (err: any) => void;\n complete: () => void;\n}\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void { throw err; },\n complete(): void { /*noop*/ }\n};\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Operator.d.ts b/node_modules/rxjs/Operator.d.ts new file mode 100644 index 0000000..643dd9a --- /dev/null +++ b/node_modules/rxjs/Operator.d.ts @@ -0,0 +1,5 @@ +import { Subscriber } from './Subscriber'; +import { TeardownLogic } from './Subscription'; +export interface Operator { + call(subscriber: Subscriber, source: any): TeardownLogic; +} diff --git a/node_modules/rxjs/Operator.js b/node_modules/rxjs/Operator.js new file mode 100644 index 0000000..f99eac5 --- /dev/null +++ b/node_modules/rxjs/Operator.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=Operator.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Operator.js.map b/node_modules/rxjs/Operator.js.map new file mode 100644 index 0000000..d1d8dce --- /dev/null +++ b/node_modules/rxjs/Operator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Operator.js","sourceRoot":"","sources":["../src/Operator.ts"],"names":[],"mappings":"","sourcesContent":["import { Subscriber } from './Subscriber';\nimport { TeardownLogic } from './Subscription';\n\nexport interface Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic;\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/OuterSubscriber.d.ts b/node_modules/rxjs/OuterSubscriber.d.ts new file mode 100644 index 0000000..1550120 --- /dev/null +++ b/node_modules/rxjs/OuterSubscriber.d.ts @@ -0,0 +1,12 @@ +import { Subscriber } from './Subscriber'; +import { InnerSubscriber } from './InnerSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export declare class OuterSubscriber extends Subscriber { + notifyNext(outerValue: T, innerValue: R, outerIndex: number, innerIndex: number, innerSub: InnerSubscriber): void; + notifyError(error: any, innerSub: InnerSubscriber): void; + notifyComplete(innerSub: InnerSubscriber): void; +} diff --git a/node_modules/rxjs/OuterSubscriber.js b/node_modules/rxjs/OuterSubscriber.js new file mode 100644 index 0000000..a0397e7 --- /dev/null +++ b/node_modules/rxjs/OuterSubscriber.js @@ -0,0 +1,30 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subscriber_1 = require('./Subscriber'); +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +var OuterSubscriber = (function (_super) { + __extends(OuterSubscriber, _super); + function OuterSubscriber() { + _super.apply(this, arguments); + } + OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + OuterSubscriber.prototype.notifyError = function (error, innerSub) { + this.destination.error(error); + }; + OuterSubscriber.prototype.notifyComplete = function (innerSub) { + this.destination.complete(); + }; + return OuterSubscriber; +}(Subscriber_1.Subscriber)); +exports.OuterSubscriber = OuterSubscriber; +//# sourceMappingURL=OuterSubscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/OuterSubscriber.js.map b/node_modules/rxjs/OuterSubscriber.js.map new file mode 100644 index 0000000..09c26b7 --- /dev/null +++ b/node_modules/rxjs/OuterSubscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OuterSubscriber.js","sourceRoot":"","sources":["../src/OuterSubscriber.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B,cAAc,CAAC,CAAA;AAG1C;;;;GAIG;AACH;IAA2C,mCAAa;IAAxD;QAA2C,8BAAa;IAcxD,CAAC;IAbC,oCAAU,GAAV,UAAW,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,qCAAW,GAAX,UAAY,KAAU,EAAE,QAA+B;QACrD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,wCAAc,GAAd,UAAe,QAA+B;QAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACH,sBAAC;AAAD,CAAC,AAdD,CAA2C,uBAAU,GAcpD;AAdY,uBAAe,kBAc3B,CAAA","sourcesContent":["import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/README.md b/node_modules/rxjs/README.md new file mode 100644 index 0000000..6b8c798 --- /dev/null +++ b/node_modules/rxjs/README.md @@ -0,0 +1,206 @@ +[![Build Status](https://travis-ci.org/ReactiveX/rxjs.svg?branch=master)](https://travis-ci.org/ReactiveX/rxjs) +[![Coverage Status](https://coveralls.io/repos/github/ReactiveX/rxjs/badge.svg?branch=master)](https://coveralls.io/github/ReactiveX/rxjs?branch=master) +[![npm version](https://badge.fury.io/js/%40reactivex%2Frxjs.svg)](http://badge.fury.io/js/%40reactivex%2Frxjs) +[![Join the chat at https://gitter.im/Reactive-Extensions/RxJS](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Reactive-Extensions/RxJS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[![Selenium Test Status](https://saucelabs.com/browser-matrix/rxjs5.svg)](https://saucelabs.com/u/rxjs5) + +# RxJS 5 + +Reactive Extensions Library for JavaScript. This is a rewrite of [Reactive-Extensions/RxJS](https://github.com/Reactive-Extensions/RxJS) and is the latest production-ready version of RxJS. This rewrite is meant to have better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface. + +[Apache 2.0 License](LICENSE.txt) + +- [Code of Conduct](CODE_OF_CONDUCT.md) +- [Contribution Guidelines](CONTRIBUTING.md) +- [Maintainer Guidelines](doc/maintainer-guidelines.md) +- [Creating Operators](doc/operator-creation.md) +- [Migrating From RxJS 4 to RxJS 5](MIGRATION.md) +- [API Documentation (WIP)](http://reactivex.io/rxjs) + +## Versions In This Repository + +- [master](https://github.com/ReactiveX/rxjs/commits/master) - commits that will be included in the next _minor_ or _patch_ release +- [next](https://github.com/ReactiveX/rxjs/commits/next) - commits that will be included in the next _major_ release (breaking changes) + +Most PRs should be made to **master**, unless you know it is a breaking change. + +## Important + +By contributing or commenting on issues in this repository, whether you've read them or not, you're agreeing to the [Contributor Code of Conduct](CODE_OF_CONDUCT.md). Much like traffic laws, ignorance doesn't grant you immunity. + +## Installation and Usage + +### ES6 via npm + +```sh +npm install rxjs +``` + +To import the entire core set of functionality: + +```js +import Rx from 'rxjs/Rx'; + +Rx.Observable.of(1,2,3) +``` + +To import only what you need by patching (this is useful for size-sensitive bundling): + +```js +import { Observable } from 'rxjs/Observable'; +import 'rxjs/add/observable/of'; +import 'rxjs/add/operator/map'; + +Observable.of(1,2,3).map(x => x + '!!!'); // etc +``` + +To import what you need and use it with proposed [bind operator](https://github.com/tc39/proposal-bind-operator): + +> Note: This additional syntax requires [transpiler support](http://babeljs.io/docs/plugins/transform-function-bind/) and this syntax may be completely withdrawn from TC39 without notice! Use at your own risk. + +```js +import { Observable } from 'rxjs/Observable'; +import { of } from 'rxjs/observable/of'; +import { map } from 'rxjs/operator/map'; + +Observable::of(1,2,3)::map(x => x + '!!!'); // etc +``` + +### CommonJS via npm + +To install this library for CommonJS (CJS) usage, use the following command: + +```sh +npm install rxjs +``` + +Import all core functionality: + +```js +var Rx = require('rxjs/Rx'); + +Rx.Observable.of(1,2,3); // etc +``` + +Import only what you need and patch Observable (this is useful in size-sensitive bundling scenarios): + +```js +var Observable = require('rxjs/Observable').Observable; +// patch Observable with appropriate methods +require('rxjs/add/observable/of'); +require('rxjs/add/operator/map'); + +Observable.of(1,2,3).map(function (x) { return x + '!!!'; }); // etc +``` + +Import operators and use them _manually_ you can do the following (this is also useful for bundling): + +```js +var of = require('rxjs/observable/of').of; +var map = require('rxjs/operator/map').map; + +map.call(of(1,2,3), function (x) { return x + '!!!'; }); +``` + +You can also use the above method to build your own Observable and export it from your own module. + + +### All Module Types (CJS/ES6/AMD/TypeScript) via npm + +To install this library via [npm](https://www.npmjs.org) **version 3**, use the following command: + +```sh +npm install @reactivex/rxjs +``` + +This will include CJS/Global builds and can be used for all module types. + +If you are using npm **version 2** before this library has achieved a stable version, you need to specify the library version explicitly: + +```sh +npm install @reactivex/rxjs@5.0.0 +``` + +### CDN + +For CDN, you can use [unpkg](https://unpkg.com/): + +https://unpkg.com/rxjs@version/bundles/Rx.min.js + +*replace **version** with the current version. See [docs](http://reactivex.io/rxjs/manual/installation.html#cdn).* + +#### Node.js Usage: + +```js +var Rx = require('@reactivex/rxjs'); + +Rx.Observable.of('hello world') + .subscribe(function(x) { console.log(x); }); +``` + +## Goals + +- Provide better performance than preceding versions of RxJS +- To model/follow the [Observable Spec Proposal](https://github.com/zenparsing/es-observable) to the observable. +- Provide more modular file structure in a variety of formats +- Provide more debuggable call stacks than preceding versions of RxJS + +## Building/Testing + +The build and test structure is fairly primitive at the moment. There are various npm scripts that can be run: + +- build_es6: Transpiles the TypeScript files from `src/` to `dist/es6` +- build_cjs: Transpiles the ES6 files from `dist/es6` to `dist/cjs` +- build_amd: Transpiles the ES6 files from `dist/es6` to `dist/amd` +- build_global: Transpiles/Bundles the CommonJS files from `dist/cjs` to `dist/global/Rx.js` +- build_all: Performs all of the above in the proper order. +- build_test: builds ES6, then CommonJS, then runs the tests with `jasmine` +- build_perf: builds ES6, CommonJS, then global, then runs the performance tests with `protractor` +- build_docs: generates API documentation from `dist/es6` to `dist/docs` +- build_cover: runs `istanbul` code coverage against test cases +- test: runs tests with `jasmine`, must have built prior to running. +- tests2png: generates PNG marble diagrams from test cases. + +`npm run info` will list available script. + +### Example + +```sh +# build all the things! +npm run build_all +``` + +## Performance Tests + +Run `npm run build_perf` or `npm run perf` to run the performance tests with `protractor`. +Run `npm run perf_micro` to run micro performance test benchmarking operator. + +## Adding documentation +RxNext uses [ESDoc](https://esdoc.org/) to generate API documentation. Refer to ESDoc's documentation for syntax. Run `npm run build_docs` to generate. + +## Generating PNG marble diagrams + +The script `npm run tests2png` requires some native packages installed locally: `imagemagick`, `graphicsmagick`, and `ghostscript`. + +For Mac OS X with [Homebrew](http://brew.sh/): + +- `brew install imagemagick` +- `brew install graphicsmagick` +- `brew install ghostscript` +- You may need to install the Ghostscript fonts manually: + - Download the tarball from the [gs-fonts project](https://sourceforge.net/projects/gs-fonts) + - `mkdir -p /usr/local/share/ghostscript && tar zxvf /path/to/ghostscript-fonts.tar.gz -C /usr/local/share/ghostscript` + +For Debian Linux: + +- `sudo add-apt-repository ppa:dhor/myway` +- `apt-get install imagemagick` +- `apt-get install graphicsmagick` +- `apt-get install ghostscript` + +For Windows and other Operating Systems, check the download instructions here: + +- http://imagemagick.org +- http://www.graphicsmagick.org +- http://www.ghostscript.com/ diff --git a/node_modules/rxjs/ReplaySubject.d.ts b/node_modules/rxjs/ReplaySubject.d.ts new file mode 100644 index 0000000..34b2ebf --- /dev/null +++ b/node_modules/rxjs/ReplaySubject.d.ts @@ -0,0 +1,18 @@ +import { Subject } from './Subject'; +import { IScheduler } from './Scheduler'; +import { Subscriber } from './Subscriber'; +import { Subscription } from './Subscription'; +/** + * @class ReplaySubject + */ +export declare class ReplaySubject extends Subject { + private scheduler; + private _events; + private _bufferSize; + private _windowTime; + constructor(bufferSize?: number, windowTime?: number, scheduler?: IScheduler); + next(value: T): void; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription; + _getNow(): number; + private _trimBufferThenGetEvents(); +} diff --git a/node_modules/rxjs/ReplaySubject.js b/node_modules/rxjs/ReplaySubject.js new file mode 100644 index 0000000..95d677c --- /dev/null +++ b/node_modules/rxjs/ReplaySubject.js @@ -0,0 +1,102 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subject_1 = require('./Subject'); +var queue_1 = require('./scheduler/queue'); +var Subscription_1 = require('./Subscription'); +var observeOn_1 = require('./operators/observeOn'); +var ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError'); +var SubjectSubscription_1 = require('./SubjectSubscription'); +/** + * @class ReplaySubject + */ +var ReplaySubject = (function (_super) { + __extends(ReplaySubject, _super); + function ReplaySubject(bufferSize, windowTime, scheduler) { + if (bufferSize === void 0) { bufferSize = Number.POSITIVE_INFINITY; } + if (windowTime === void 0) { windowTime = Number.POSITIVE_INFINITY; } + _super.call(this); + this.scheduler = scheduler; + this._events = []; + this._bufferSize = bufferSize < 1 ? 1 : bufferSize; + this._windowTime = windowTime < 1 ? 1 : windowTime; + } + ReplaySubject.prototype.next = function (value) { + var now = this._getNow(); + this._events.push(new ReplayEvent(now, value)); + this._trimBufferThenGetEvents(); + _super.prototype.next.call(this, value); + }; + /** @deprecated internal use only */ ReplaySubject.prototype._subscribe = function (subscriber) { + var _events = this._trimBufferThenGetEvents(); + var scheduler = this.scheduler; + var subscription; + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + else if (this.hasError) { + subscription = Subscription_1.Subscription.EMPTY; + } + else if (this.isStopped) { + subscription = Subscription_1.Subscription.EMPTY; + } + else { + this.observers.push(subscriber); + subscription = new SubjectSubscription_1.SubjectSubscription(this, subscriber); + } + if (scheduler) { + subscriber.add(subscriber = new observeOn_1.ObserveOnSubscriber(subscriber, scheduler)); + } + var len = _events.length; + for (var i = 0; i < len && !subscriber.closed; i++) { + subscriber.next(_events[i].value); + } + if (this.hasError) { + subscriber.error(this.thrownError); + } + else if (this.isStopped) { + subscriber.complete(); + } + return subscription; + }; + ReplaySubject.prototype._getNow = function () { + return (this.scheduler || queue_1.queue).now(); + }; + ReplaySubject.prototype._trimBufferThenGetEvents = function () { + var now = this._getNow(); + var _bufferSize = this._bufferSize; + var _windowTime = this._windowTime; + var _events = this._events; + var eventsCount = _events.length; + var spliceCount = 0; + // Trim events that fall out of the time window. + // Start at the front of the list. Break early once + // we encounter an event that falls within the window. + while (spliceCount < eventsCount) { + if ((now - _events[spliceCount].time) < _windowTime) { + break; + } + spliceCount++; + } + if (eventsCount > _bufferSize) { + spliceCount = Math.max(spliceCount, eventsCount - _bufferSize); + } + if (spliceCount > 0) { + _events.splice(0, spliceCount); + } + return _events; + }; + return ReplaySubject; +}(Subject_1.Subject)); +exports.ReplaySubject = ReplaySubject; +var ReplayEvent = (function () { + function ReplayEvent(time, value) { + this.time = time; + this.value = value; + } + return ReplayEvent; +}()); +//# sourceMappingURL=ReplaySubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/ReplaySubject.js.map b/node_modules/rxjs/ReplaySubject.js.map new file mode 100644 index 0000000..ac80b68 --- /dev/null +++ b/node_modules/rxjs/ReplaySubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ReplaySubject.js","sourceRoot":"","sources":["../src/ReplaySubject.ts"],"names":[],"mappings":"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","sourcesContent":["import { Subject } from './Subject';\nimport { IScheduler } from './Scheduler';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: ReplayEvent[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: IScheduler) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n }\n\n next(value: T): void {\n const now = this._getNow();\n this._events.push(new ReplayEvent(now, value));\n this._trimBufferThenGetEvents();\n super.next(value);\n }\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription {\n const _events = this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscription = Subscription.EMPTY;\n } else if (this.isStopped) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n const len = _events.length;\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = this._events;\n\n let eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Rx.d.ts b/node_modules/rxjs/Rx.d.ts new file mode 100644 index 0000000..314d4af --- /dev/null +++ b/node_modules/rxjs/Rx.d.ts @@ -0,0 +1,195 @@ +export { Subject, AnonymousSubject } from './Subject'; +export { Observable } from './Observable'; +import './add/observable/bindCallback'; +import './add/observable/bindNodeCallback'; +import './add/observable/combineLatest'; +import './add/observable/concat'; +import './add/observable/defer'; +import './add/observable/empty'; +import './add/observable/forkJoin'; +import './add/observable/from'; +import './add/observable/fromEvent'; +import './add/observable/fromEventPattern'; +import './add/observable/fromPromise'; +import './add/observable/generate'; +import './add/observable/if'; +import './add/observable/interval'; +import './add/observable/merge'; +import './add/observable/race'; +import './add/observable/never'; +import './add/observable/of'; +import './add/observable/onErrorResumeNext'; +import './add/observable/pairs'; +import './add/observable/range'; +import './add/observable/using'; +import './add/observable/throw'; +import './add/observable/timer'; +import './add/observable/zip'; +import './add/observable/dom/ajax'; +import './add/observable/dom/webSocket'; +import './add/operator/buffer'; +import './add/operator/bufferCount'; +import './add/operator/bufferTime'; +import './add/operator/bufferToggle'; +import './add/operator/bufferWhen'; +import './add/operator/catch'; +import './add/operator/combineAll'; +import './add/operator/combineLatest'; +import './add/operator/concat'; +import './add/operator/concatAll'; +import './add/operator/concatMap'; +import './add/operator/concatMapTo'; +import './add/operator/count'; +import './add/operator/dematerialize'; +import './add/operator/debounce'; +import './add/operator/debounceTime'; +import './add/operator/defaultIfEmpty'; +import './add/operator/delay'; +import './add/operator/delayWhen'; +import './add/operator/distinct'; +import './add/operator/distinctUntilChanged'; +import './add/operator/distinctUntilKeyChanged'; +import './add/operator/do'; +import './add/operator/exhaust'; +import './add/operator/exhaustMap'; +import './add/operator/expand'; +import './add/operator/elementAt'; +import './add/operator/filter'; +import './add/operator/finally'; +import './add/operator/find'; +import './add/operator/findIndex'; +import './add/operator/first'; +import './add/operator/groupBy'; +import './add/operator/ignoreElements'; +import './add/operator/isEmpty'; +import './add/operator/audit'; +import './add/operator/auditTime'; +import './add/operator/last'; +import './add/operator/let'; +import './add/operator/every'; +import './add/operator/map'; +import './add/operator/mapTo'; +import './add/operator/materialize'; +import './add/operator/max'; +import './add/operator/merge'; +import './add/operator/mergeAll'; +import './add/operator/mergeMap'; +import './add/operator/mergeMapTo'; +import './add/operator/mergeScan'; +import './add/operator/min'; +import './add/operator/multicast'; +import './add/operator/observeOn'; +import './add/operator/onErrorResumeNext'; +import './add/operator/pairwise'; +import './add/operator/partition'; +import './add/operator/pluck'; +import './add/operator/publish'; +import './add/operator/publishBehavior'; +import './add/operator/publishReplay'; +import './add/operator/publishLast'; +import './add/operator/race'; +import './add/operator/reduce'; +import './add/operator/repeat'; +import './add/operator/repeatWhen'; +import './add/operator/retry'; +import './add/operator/retryWhen'; +import './add/operator/sample'; +import './add/operator/sampleTime'; +import './add/operator/scan'; +import './add/operator/sequenceEqual'; +import './add/operator/share'; +import './add/operator/shareReplay'; +import './add/operator/single'; +import './add/operator/skip'; +import './add/operator/skipLast'; +import './add/operator/skipUntil'; +import './add/operator/skipWhile'; +import './add/operator/startWith'; +import './add/operator/subscribeOn'; +import './add/operator/switch'; +import './add/operator/switchMap'; +import './add/operator/switchMapTo'; +import './add/operator/take'; +import './add/operator/takeLast'; +import './add/operator/takeUntil'; +import './add/operator/takeWhile'; +import './add/operator/throttle'; +import './add/operator/throttleTime'; +import './add/operator/timeInterval'; +import './add/operator/timeout'; +import './add/operator/timeoutWith'; +import './add/operator/timestamp'; +import './add/operator/toArray'; +import './add/operator/toPromise'; +import './add/operator/window'; +import './add/operator/windowCount'; +import './add/operator/windowTime'; +import './add/operator/windowToggle'; +import './add/operator/windowWhen'; +import './add/operator/withLatestFrom'; +import './add/operator/zip'; +import './add/operator/zipAll'; +export { Operator } from './Operator'; +export { Observer } from './Observer'; +export { Subscription } from './Subscription'; +export { Subscriber } from './Subscriber'; +export { AsyncSubject } from './AsyncSubject'; +export { ReplaySubject } from './ReplaySubject'; +export { BehaviorSubject } from './BehaviorSubject'; +export { ConnectableObservable } from './observable/ConnectableObservable'; +export { Notification } from './Notification'; +export { EmptyError } from './util/EmptyError'; +export { ArgumentOutOfRangeError } from './util/ArgumentOutOfRangeError'; +export { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError'; +export { TimeoutError } from './util/TimeoutError'; +export { UnsubscriptionError } from './util/UnsubscriptionError'; +export { TimeInterval } from './operator/timeInterval'; +export { Timestamp } from './operators/timestamp'; +export { TestScheduler } from './testing/TestScheduler'; +export { VirtualTimeScheduler } from './scheduler/VirtualTimeScheduler'; +export { AjaxRequest, AjaxResponse, AjaxError, AjaxTimeoutError } from './observable/dom/AjaxObservable'; +export { pipe } from './util/pipe'; +import { AsapScheduler } from './scheduler/AsapScheduler'; +import { AsyncScheduler } from './scheduler/AsyncScheduler'; +import { QueueScheduler } from './scheduler/QueueScheduler'; +import { AnimationFrameScheduler } from './scheduler/AnimationFrameScheduler'; +import * as _operators from './operators'; +export declare const operators: typeof _operators; +/** + * @typedef {Object} Rx.Scheduler + * @property {Scheduler} queue Schedules on a queue in the current event frame + * (trampoline scheduler). Use this for iteration operations. + * @property {Scheduler} asap Schedules on the micro task queue, which uses the + * fastest transport mechanism available, either Node.js' `process.nextTick()` + * or Web Worker MessageChannel or setTimeout or others. Use this for + * asynchronous conversions. + * @property {Scheduler} async Schedules work with `setInterval`. Use this for + * time-based operations. + * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`. + * Use this for synchronizing with the platform's painting + */ +declare let Scheduler: { + asap: AsapScheduler; + queue: QueueScheduler; + animationFrame: AnimationFrameScheduler; + async: AsyncScheduler; +}; +/** + * @typedef {Object} Rx.Symbol + * @property {Symbol|string} rxSubscriber A symbol to use as a property name to + * retrieve an "Rx safe" Observer from an object. "Rx safety" can be defined as + * an object that has all of the traits of an Rx Subscriber, including the + * ability to add and remove subscriptions to the subscription chain and + * guarantees involving event triggering (can't "next" after unsubscription, + * etc). + * @property {Symbol|string} observable A symbol to use as a property name to + * retrieve an Observable as defined by the [ECMAScript "Observable" spec](https://github.com/zenparsing/es-observable). + * @property {Symbol|string} iterator The ES6 symbol to use as a property name + * to retrieve an iterator from an object. + */ +declare let Symbol: { + rxSubscriber: any; + observable: any; + iterator: any; +}; +export { Scheduler, Symbol }; diff --git a/node_modules/rxjs/Rx.js b/node_modules/rxjs/Rx.js new file mode 100644 index 0000000..c159fee --- /dev/null +++ b/node_modules/rxjs/Rx.js @@ -0,0 +1,233 @@ +"use strict"; +/* tslint:disable:no-unused-variable */ +// Subject imported before Observable to bypass circular dependency issue since +// Subject extends Observable and Observable references Subject in it's +// definition +var Subject_1 = require('./Subject'); +exports.Subject = Subject_1.Subject; +exports.AnonymousSubject = Subject_1.AnonymousSubject; +/* tslint:enable:no-unused-variable */ +var Observable_1 = require('./Observable'); +exports.Observable = Observable_1.Observable; +// statics +/* tslint:disable:no-use-before-declare */ +require('./add/observable/bindCallback'); +require('./add/observable/bindNodeCallback'); +require('./add/observable/combineLatest'); +require('./add/observable/concat'); +require('./add/observable/defer'); +require('./add/observable/empty'); +require('./add/observable/forkJoin'); +require('./add/observable/from'); +require('./add/observable/fromEvent'); +require('./add/observable/fromEventPattern'); +require('./add/observable/fromPromise'); +require('./add/observable/generate'); +require('./add/observable/if'); +require('./add/observable/interval'); +require('./add/observable/merge'); +require('./add/observable/race'); +require('./add/observable/never'); +require('./add/observable/of'); +require('./add/observable/onErrorResumeNext'); +require('./add/observable/pairs'); +require('./add/observable/range'); +require('./add/observable/using'); +require('./add/observable/throw'); +require('./add/observable/timer'); +require('./add/observable/zip'); +//dom +require('./add/observable/dom/ajax'); +require('./add/observable/dom/webSocket'); +//operators +require('./add/operator/buffer'); +require('./add/operator/bufferCount'); +require('./add/operator/bufferTime'); +require('./add/operator/bufferToggle'); +require('./add/operator/bufferWhen'); +require('./add/operator/catch'); +require('./add/operator/combineAll'); +require('./add/operator/combineLatest'); +require('./add/operator/concat'); +require('./add/operator/concatAll'); +require('./add/operator/concatMap'); +require('./add/operator/concatMapTo'); +require('./add/operator/count'); +require('./add/operator/dematerialize'); +require('./add/operator/debounce'); +require('./add/operator/debounceTime'); +require('./add/operator/defaultIfEmpty'); +require('./add/operator/delay'); +require('./add/operator/delayWhen'); +require('./add/operator/distinct'); +require('./add/operator/distinctUntilChanged'); +require('./add/operator/distinctUntilKeyChanged'); +require('./add/operator/do'); +require('./add/operator/exhaust'); +require('./add/operator/exhaustMap'); +require('./add/operator/expand'); +require('./add/operator/elementAt'); +require('./add/operator/filter'); +require('./add/operator/finally'); +require('./add/operator/find'); +require('./add/operator/findIndex'); +require('./add/operator/first'); +require('./add/operator/groupBy'); +require('./add/operator/ignoreElements'); +require('./add/operator/isEmpty'); +require('./add/operator/audit'); +require('./add/operator/auditTime'); +require('./add/operator/last'); +require('./add/operator/let'); +require('./add/operator/every'); +require('./add/operator/map'); +require('./add/operator/mapTo'); +require('./add/operator/materialize'); +require('./add/operator/max'); +require('./add/operator/merge'); +require('./add/operator/mergeAll'); +require('./add/operator/mergeMap'); +require('./add/operator/mergeMapTo'); +require('./add/operator/mergeScan'); +require('./add/operator/min'); +require('./add/operator/multicast'); +require('./add/operator/observeOn'); +require('./add/operator/onErrorResumeNext'); +require('./add/operator/pairwise'); +require('./add/operator/partition'); +require('./add/operator/pluck'); +require('./add/operator/publish'); +require('./add/operator/publishBehavior'); +require('./add/operator/publishReplay'); +require('./add/operator/publishLast'); +require('./add/operator/race'); +require('./add/operator/reduce'); +require('./add/operator/repeat'); +require('./add/operator/repeatWhen'); +require('./add/operator/retry'); +require('./add/operator/retryWhen'); +require('./add/operator/sample'); +require('./add/operator/sampleTime'); +require('./add/operator/scan'); +require('./add/operator/sequenceEqual'); +require('./add/operator/share'); +require('./add/operator/shareReplay'); +require('./add/operator/single'); +require('./add/operator/skip'); +require('./add/operator/skipLast'); +require('./add/operator/skipUntil'); +require('./add/operator/skipWhile'); +require('./add/operator/startWith'); +require('./add/operator/subscribeOn'); +require('./add/operator/switch'); +require('./add/operator/switchMap'); +require('./add/operator/switchMapTo'); +require('./add/operator/take'); +require('./add/operator/takeLast'); +require('./add/operator/takeUntil'); +require('./add/operator/takeWhile'); +require('./add/operator/throttle'); +require('./add/operator/throttleTime'); +require('./add/operator/timeInterval'); +require('./add/operator/timeout'); +require('./add/operator/timeoutWith'); +require('./add/operator/timestamp'); +require('./add/operator/toArray'); +require('./add/operator/toPromise'); +require('./add/operator/window'); +require('./add/operator/windowCount'); +require('./add/operator/windowTime'); +require('./add/operator/windowToggle'); +require('./add/operator/windowWhen'); +require('./add/operator/withLatestFrom'); +require('./add/operator/zip'); +require('./add/operator/zipAll'); +/* tslint:disable:no-unused-variable */ +var Subscription_1 = require('./Subscription'); +exports.Subscription = Subscription_1.Subscription; +var Subscriber_1 = require('./Subscriber'); +exports.Subscriber = Subscriber_1.Subscriber; +var AsyncSubject_1 = require('./AsyncSubject'); +exports.AsyncSubject = AsyncSubject_1.AsyncSubject; +var ReplaySubject_1 = require('./ReplaySubject'); +exports.ReplaySubject = ReplaySubject_1.ReplaySubject; +var BehaviorSubject_1 = require('./BehaviorSubject'); +exports.BehaviorSubject = BehaviorSubject_1.BehaviorSubject; +var ConnectableObservable_1 = require('./observable/ConnectableObservable'); +exports.ConnectableObservable = ConnectableObservable_1.ConnectableObservable; +var Notification_1 = require('./Notification'); +exports.Notification = Notification_1.Notification; +var EmptyError_1 = require('./util/EmptyError'); +exports.EmptyError = EmptyError_1.EmptyError; +var ArgumentOutOfRangeError_1 = require('./util/ArgumentOutOfRangeError'); +exports.ArgumentOutOfRangeError = ArgumentOutOfRangeError_1.ArgumentOutOfRangeError; +var ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError'); +exports.ObjectUnsubscribedError = ObjectUnsubscribedError_1.ObjectUnsubscribedError; +var TimeoutError_1 = require('./util/TimeoutError'); +exports.TimeoutError = TimeoutError_1.TimeoutError; +var UnsubscriptionError_1 = require('./util/UnsubscriptionError'); +exports.UnsubscriptionError = UnsubscriptionError_1.UnsubscriptionError; +var timeInterval_1 = require('./operator/timeInterval'); +exports.TimeInterval = timeInterval_1.TimeInterval; +var timestamp_1 = require('./operators/timestamp'); +exports.Timestamp = timestamp_1.Timestamp; +var TestScheduler_1 = require('./testing/TestScheduler'); +exports.TestScheduler = TestScheduler_1.TestScheduler; +var VirtualTimeScheduler_1 = require('./scheduler/VirtualTimeScheduler'); +exports.VirtualTimeScheduler = VirtualTimeScheduler_1.VirtualTimeScheduler; +var AjaxObservable_1 = require('./observable/dom/AjaxObservable'); +exports.AjaxResponse = AjaxObservable_1.AjaxResponse; +exports.AjaxError = AjaxObservable_1.AjaxError; +exports.AjaxTimeoutError = AjaxObservable_1.AjaxTimeoutError; +var pipe_1 = require('./util/pipe'); +exports.pipe = pipe_1.pipe; +var asap_1 = require('./scheduler/asap'); +var async_1 = require('./scheduler/async'); +var queue_1 = require('./scheduler/queue'); +var animationFrame_1 = require('./scheduler/animationFrame'); +var rxSubscriber_1 = require('./symbol/rxSubscriber'); +var iterator_1 = require('./symbol/iterator'); +var observable_1 = require('./symbol/observable'); +var _operators = require('./operators'); +exports.operators = _operators; +/* tslint:enable:no-unused-variable */ +/** + * @typedef {Object} Rx.Scheduler + * @property {Scheduler} queue Schedules on a queue in the current event frame + * (trampoline scheduler). Use this for iteration operations. + * @property {Scheduler} asap Schedules on the micro task queue, which uses the + * fastest transport mechanism available, either Node.js' `process.nextTick()` + * or Web Worker MessageChannel or setTimeout or others. Use this for + * asynchronous conversions. + * @property {Scheduler} async Schedules work with `setInterval`. Use this for + * time-based operations. + * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`. + * Use this for synchronizing with the platform's painting + */ +var Scheduler = { + asap: asap_1.asap, + queue: queue_1.queue, + animationFrame: animationFrame_1.animationFrame, + async: async_1.async +}; +exports.Scheduler = Scheduler; +/** + * @typedef {Object} Rx.Symbol + * @property {Symbol|string} rxSubscriber A symbol to use as a property name to + * retrieve an "Rx safe" Observer from an object. "Rx safety" can be defined as + * an object that has all of the traits of an Rx Subscriber, including the + * ability to add and remove subscriptions to the subscription chain and + * guarantees involving event triggering (can't "next" after unsubscription, + * etc). + * @property {Symbol|string} observable A symbol to use as a property name to + * retrieve an Observable as defined by the [ECMAScript "Observable" spec](https://github.com/zenparsing/es-observable). + * @property {Symbol|string} iterator The ES6 symbol to use as a property name + * to retrieve an iterator from an object. + */ +var Symbol = { + rxSubscriber: rxSubscriber_1.rxSubscriber, + observable: observable_1.observable, + iterator: iterator_1.iterator +}; +exports.Symbol = Symbol; +//# sourceMappingURL=Rx.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Rx.js.map b/node_modules/rxjs/Rx.js.map new file mode 100644 index 0000000..1a505ea --- /dev/null +++ b/node_modules/rxjs/Rx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Rx.js","sourceRoot":"","sources":["../src/Rx.ts"],"names":[],"mappings":"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","sourcesContent":["/* tslint:disable:no-unused-variable */\n// Subject imported before Observable to bypass circular dependency issue since\n// Subject extends Observable and Observable references Subject in it's\n// definition\nexport {Subject, AnonymousSubject} from './Subject';\n/* tslint:enable:no-unused-variable */\nexport {Observable} from './Observable';\n\n// statics\n/* tslint:disable:no-use-before-declare */\nimport './add/observable/bindCallback';\nimport './add/observable/bindNodeCallback';\nimport './add/observable/combineLatest';\nimport './add/observable/concat';\nimport './add/observable/defer';\nimport './add/observable/empty';\nimport './add/observable/forkJoin';\nimport './add/observable/from';\nimport './add/observable/fromEvent';\nimport './add/observable/fromEventPattern';\nimport './add/observable/fromPromise';\nimport './add/observable/generate';\nimport './add/observable/if';\nimport './add/observable/interval';\nimport './add/observable/merge';\nimport './add/observable/race';\nimport './add/observable/never';\nimport './add/observable/of';\nimport './add/observable/onErrorResumeNext';\nimport './add/observable/pairs';\nimport './add/observable/range';\nimport './add/observable/using';\nimport './add/observable/throw';\nimport './add/observable/timer';\nimport './add/observable/zip';\n\n//dom\nimport './add/observable/dom/ajax';\nimport './add/observable/dom/webSocket';\n\n//operators\nimport './add/operator/buffer';\nimport './add/operator/bufferCount';\nimport './add/operator/bufferTime';\nimport './add/operator/bufferToggle';\nimport './add/operator/bufferWhen';\nimport './add/operator/catch';\nimport './add/operator/combineAll';\nimport './add/operator/combineLatest';\nimport './add/operator/concat';\nimport './add/operator/concatAll';\nimport './add/operator/concatMap';\nimport './add/operator/concatMapTo';\nimport './add/operator/count';\nimport './add/operator/dematerialize';\nimport './add/operator/debounce';\nimport './add/operator/debounceTime';\nimport './add/operator/defaultIfEmpty';\nimport './add/operator/delay';\nimport './add/operator/delayWhen';\nimport './add/operator/distinct';\nimport './add/operator/distinctUntilChanged';\nimport './add/operator/distinctUntilKeyChanged';\nimport './add/operator/do';\nimport './add/operator/exhaust';\nimport './add/operator/exhaustMap';\nimport './add/operator/expand';\nimport './add/operator/elementAt';\nimport './add/operator/filter';\nimport './add/operator/finally';\nimport './add/operator/find';\nimport './add/operator/findIndex';\nimport './add/operator/first';\nimport './add/operator/groupBy';\nimport './add/operator/ignoreElements';\nimport './add/operator/isEmpty';\nimport './add/operator/audit';\nimport './add/operator/auditTime';\nimport './add/operator/last';\nimport './add/operator/let';\nimport './add/operator/every';\nimport './add/operator/map';\nimport './add/operator/mapTo';\nimport './add/operator/materialize';\nimport './add/operator/max';\nimport './add/operator/merge';\nimport './add/operator/mergeAll';\nimport './add/operator/mergeMap';\nimport './add/operator/mergeMapTo';\nimport './add/operator/mergeScan';\nimport './add/operator/min';\nimport './add/operator/multicast';\nimport './add/operator/observeOn';\nimport './add/operator/onErrorResumeNext';\nimport './add/operator/pairwise';\nimport './add/operator/partition';\nimport './add/operator/pluck';\nimport './add/operator/publish';\nimport './add/operator/publishBehavior';\nimport './add/operator/publishReplay';\nimport './add/operator/publishLast';\nimport './add/operator/race';\nimport './add/operator/reduce';\nimport './add/operator/repeat';\nimport './add/operator/repeatWhen';\nimport './add/operator/retry';\nimport './add/operator/retryWhen';\nimport './add/operator/sample';\nimport './add/operator/sampleTime';\nimport './add/operator/scan';\nimport './add/operator/sequenceEqual';\nimport './add/operator/share';\nimport './add/operator/shareReplay';\nimport './add/operator/single';\nimport './add/operator/skip';\nimport './add/operator/skipLast';\nimport './add/operator/skipUntil';\nimport './add/operator/skipWhile';\nimport './add/operator/startWith';\nimport './add/operator/subscribeOn';\nimport './add/operator/switch';\nimport './add/operator/switchMap';\nimport './add/operator/switchMapTo';\nimport './add/operator/take';\nimport './add/operator/takeLast';\nimport './add/operator/takeUntil';\nimport './add/operator/takeWhile';\nimport './add/operator/throttle';\nimport './add/operator/throttleTime';\nimport './add/operator/timeInterval';\nimport './add/operator/timeout';\nimport './add/operator/timeoutWith';\nimport './add/operator/timestamp';\nimport './add/operator/toArray';\nimport './add/operator/toPromise';\nimport './add/operator/window';\nimport './add/operator/windowCount';\nimport './add/operator/windowTime';\nimport './add/operator/windowToggle';\nimport './add/operator/windowWhen';\nimport './add/operator/withLatestFrom';\nimport './add/operator/zip';\nimport './add/operator/zipAll';\n\n/* tslint:disable:no-unused-variable */\nexport {Operator} from './Operator';\nexport {Observer} from './Observer';\nexport {Subscription} from './Subscription';\nexport {Subscriber} from './Subscriber';\nexport {AsyncSubject} from './AsyncSubject';\nexport {ReplaySubject} from './ReplaySubject';\nexport {BehaviorSubject} from './BehaviorSubject';\nexport {ConnectableObservable} from './observable/ConnectableObservable';\nexport {Notification} from './Notification';\nexport {EmptyError} from './util/EmptyError';\nexport {ArgumentOutOfRangeError} from './util/ArgumentOutOfRangeError';\nexport {ObjectUnsubscribedError} from './util/ObjectUnsubscribedError';\nexport {TimeoutError} from './util/TimeoutError';\nexport {UnsubscriptionError} from './util/UnsubscriptionError';\nexport {TimeInterval} from './operator/timeInterval';\nexport {Timestamp} from './operators/timestamp';\nexport {TestScheduler} from './testing/TestScheduler';\nexport {VirtualTimeScheduler} from './scheduler/VirtualTimeScheduler';\nexport {AjaxRequest, AjaxResponse, AjaxError, AjaxTimeoutError} from './observable/dom/AjaxObservable';\nexport { pipe } from './util/pipe';\n\nimport { asap } from './scheduler/asap';\nimport { async } from './scheduler/async';\nimport { queue } from './scheduler/queue';\nimport { animationFrame } from './scheduler/animationFrame';\nimport { AsapScheduler } from './scheduler/AsapScheduler';\nimport { AsyncScheduler } from './scheduler/AsyncScheduler';\nimport { QueueScheduler } from './scheduler/QueueScheduler';\nimport { AnimationFrameScheduler } from './scheduler/AnimationFrameScheduler';\nimport { rxSubscriber } from './symbol/rxSubscriber';\nimport { iterator } from './symbol/iterator';\nimport { observable } from './symbol/observable';\n\nimport * as _operators from './operators';\n\nexport const operators = _operators;\n\n/* tslint:enable:no-unused-variable */\n\n/**\n * @typedef {Object} Rx.Scheduler\n * @property {Scheduler} queue Schedules on a queue in the current event frame\n * (trampoline scheduler). Use this for iteration operations.\n * @property {Scheduler} asap Schedules on the micro task queue, which uses the\n * fastest transport mechanism available, either Node.js' `process.nextTick()`\n * or Web Worker MessageChannel or setTimeout or others. Use this for\n * asynchronous conversions.\n * @property {Scheduler} async Schedules work with `setInterval`. Use this for\n * time-based operations.\n * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`.\n * Use this for synchronizing with the platform's painting\n */\nlet Scheduler = {\n asap,\n queue,\n animationFrame,\n async\n};\n\n/**\n * @typedef {Object} Rx.Symbol\n * @property {Symbol|string} rxSubscriber A symbol to use as a property name to\n * retrieve an \"Rx safe\" Observer from an object. \"Rx safety\" can be defined as\n * an object that has all of the traits of an Rx Subscriber, including the\n * ability to add and remove subscriptions to the subscription chain and\n * guarantees involving event triggering (can't \"next\" after unsubscription,\n * etc).\n * @property {Symbol|string} observable A symbol to use as a property name to\n * retrieve an Observable as defined by the [ECMAScript \"Observable\" spec](https://github.com/zenparsing/es-observable).\n * @property {Symbol|string} iterator The ES6 symbol to use as a property name\n * to retrieve an iterator from an object.\n */\nlet Symbol = {\n rxSubscriber,\n observable,\n iterator\n};\n\nexport {\n Scheduler,\n Symbol\n};\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Scheduler.d.ts b/node_modules/rxjs/Scheduler.d.ts new file mode 100644 index 0000000..8feeb42 --- /dev/null +++ b/node_modules/rxjs/Scheduler.d.ts @@ -0,0 +1,54 @@ +import { Action } from './scheduler/Action'; +import { Subscription } from './Subscription'; +export interface IScheduler { + now(): number; + schedule(work: (this: Action, state?: T) => void, delay?: number, state?: T): Subscription; +} +/** + * An execution context and a data structure to order tasks and schedule their + * execution. Provides a notion of (potentially virtual) time, through the + * `now()` getter method. + * + * Each unit of work in a Scheduler is called an {@link Action}. + * + * ```ts + * class Scheduler { + * now(): number; + * schedule(work, delay?, state?): Subscription; + * } + * ``` + * + * @class Scheduler + */ +export declare class Scheduler implements IScheduler { + private SchedulerAction; + static now: () => number; + constructor(SchedulerAction: typeof Action, now?: () => number); + /** + * A getter method that returns a number representing the current time + * (at the time this function was called) according to the scheduler's own + * internal clock. + * @return {number} A number that represents the current time. May or may not + * have a relation to wall-clock time. May or may not refer to a time unit + * (e.g. milliseconds). + */ + now: () => number; + /** + * Schedules a function, `work`, for execution. May happen at some point in + * the future, according to the `delay` parameter, if specified. May be passed + * some context object, `state`, which will be passed to the `work` function. + * + * The given arguments will be processed an stored as an Action object in a + * queue of actions. + * + * @param {function(state: ?T): ?Subscription} work A function representing a + * task, or some unit of work to be executed by the Scheduler. + * @param {number} [delay] Time to wait before executing the work, where the + * time unit is implicit and defined by the Scheduler itself. + * @param {T} [state] Some contextual data that the `work` function uses when + * called by the Scheduler. + * @return {Subscription} A subscription in order to be able to unsubscribe + * the scheduled work. + */ + schedule(work: (this: Action, state?: T) => void, delay?: number, state?: T): Subscription; +} diff --git a/node_modules/rxjs/Scheduler.js b/node_modules/rxjs/Scheduler.js new file mode 100644 index 0000000..3bfbaf1 --- /dev/null +++ b/node_modules/rxjs/Scheduler.js @@ -0,0 +1,49 @@ +"use strict"; +/** + * An execution context and a data structure to order tasks and schedule their + * execution. Provides a notion of (potentially virtual) time, through the + * `now()` getter method. + * + * Each unit of work in a Scheduler is called an {@link Action}. + * + * ```ts + * class Scheduler { + * now(): number; + * schedule(work, delay?, state?): Subscription; + * } + * ``` + * + * @class Scheduler + */ +var Scheduler = (function () { + function Scheduler(SchedulerAction, now) { + if (now === void 0) { now = Scheduler.now; } + this.SchedulerAction = SchedulerAction; + this.now = now; + } + /** + * Schedules a function, `work`, for execution. May happen at some point in + * the future, according to the `delay` parameter, if specified. May be passed + * some context object, `state`, which will be passed to the `work` function. + * + * The given arguments will be processed an stored as an Action object in a + * queue of actions. + * + * @param {function(state: ?T): ?Subscription} work A function representing a + * task, or some unit of work to be executed by the Scheduler. + * @param {number} [delay] Time to wait before executing the work, where the + * time unit is implicit and defined by the Scheduler itself. + * @param {T} [state] Some contextual data that the `work` function uses when + * called by the Scheduler. + * @return {Subscription} A subscription in order to be able to unsubscribe + * the scheduled work. + */ + Scheduler.prototype.schedule = function (work, delay, state) { + if (delay === void 0) { delay = 0; } + return new this.SchedulerAction(this, work).schedule(state, delay); + }; + Scheduler.now = Date.now ? Date.now : function () { return +new Date(); }; + return Scheduler; +}()); +exports.Scheduler = Scheduler; +//# sourceMappingURL=Scheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Scheduler.js.map b/node_modules/rxjs/Scheduler.js.map new file mode 100644 index 0000000..b9bd546 --- /dev/null +++ b/node_modules/rxjs/Scheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../src/Scheduler.ts"],"names":[],"mappings":";AAOA;;;;;;;;;;;;;;;GAeG;AACH;IAIE,mBAAoB,eAA8B,EACtC,GAAiC;QAAjC,mBAAiC,GAAjC,MAAoB,SAAS,CAAC,GAAG;QADzB,oBAAe,GAAf,eAAe,CAAe;QAEhD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAYD;;;;;;;;;;;;;;;;OAgBG;IACI,4BAAQ,GAAf,UAAmB,IAA0C,EAAE,KAAiB,EAAE,KAAS;QAA5B,qBAAiB,GAAjB,SAAiB;QAC9E,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IApCa,aAAG,GAAiB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,cAAM,OAAA,CAAC,IAAI,IAAI,EAAE,EAAX,CAAW,CAAC;IAqC5E,gBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,iBAAS,YAuCrB,CAAA","sourcesContent":["import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\n\nexport interface IScheduler {\n now(): number;\n schedule(work: (this: Action, state?: T) => void, delay?: number, state?: T): Subscription;\n}\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an {@link Action}.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n */\nexport class Scheduler implements IScheduler {\n\n public static now: () => number = Date.now ? Date.now : () => +new Date();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: Action, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Subject.d.ts b/node_modules/rxjs/Subject.d.ts new file mode 100644 index 0000000..79e8349 --- /dev/null +++ b/node_modules/rxjs/Subject.d.ts @@ -0,0 +1,43 @@ +import { Operator } from './Operator'; +import { Observer } from './Observer'; +import { Observable } from './Observable'; +import { Subscriber } from './Subscriber'; +import { ISubscription, Subscription, TeardownLogic } from './Subscription'; +/** + * @class SubjectSubscriber + */ +export declare class SubjectSubscriber extends Subscriber { + protected destination: Subject; + constructor(destination: Subject); +} +/** + * @class Subject + */ +export declare class Subject extends Observable implements ISubscription { + observers: Observer[]; + closed: boolean; + isStopped: boolean; + hasError: boolean; + thrownError: any; + constructor(); + static create: Function; + lift(operator: Operator): Observable; + next(value?: T): void; + error(err: any): void; + complete(): void; + unsubscribe(): void; + protected _trySubscribe(subscriber: Subscriber): TeardownLogic; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription; + asObservable(): Observable; +} +/** + * @class AnonymousSubject + */ +export declare class AnonymousSubject extends Subject { + protected destination: Observer; + constructor(destination?: Observer, source?: Observable); + next(value: T): void; + error(err: any): void; + complete(): void; + /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription; +} diff --git a/node_modules/rxjs/Subject.js b/node_modules/rxjs/Subject.js new file mode 100644 index 0000000..fcf6b12 --- /dev/null +++ b/node_modules/rxjs/Subject.js @@ -0,0 +1,168 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Observable_1 = require('./Observable'); +var Subscriber_1 = require('./Subscriber'); +var Subscription_1 = require('./Subscription'); +var ObjectUnsubscribedError_1 = require('./util/ObjectUnsubscribedError'); +var SubjectSubscription_1 = require('./SubjectSubscription'); +var rxSubscriber_1 = require('./symbol/rxSubscriber'); +/** + * @class SubjectSubscriber + */ +var SubjectSubscriber = (function (_super) { + __extends(SubjectSubscriber, _super); + function SubjectSubscriber(destination) { + _super.call(this, destination); + this.destination = destination; + } + return SubjectSubscriber; +}(Subscriber_1.Subscriber)); +exports.SubjectSubscriber = SubjectSubscriber; +/** + * @class Subject + */ +var Subject = (function (_super) { + __extends(Subject, _super); + function Subject() { + _super.call(this); + this.observers = []; + this.closed = false; + this.isStopped = false; + this.hasError = false; + this.thrownError = null; + } + Subject.prototype[rxSubscriber_1.rxSubscriber] = function () { + return new SubjectSubscriber(this); + }; + Subject.prototype.lift = function (operator) { + var subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + }; + Subject.prototype.next = function (value) { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + if (!this.isStopped) { + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].next(value); + } + } + }; + Subject.prototype.error = function (err) { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + this.hasError = true; + this.thrownError = err; + this.isStopped = true; + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].error(err); + } + this.observers.length = 0; + }; + Subject.prototype.complete = function () { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + this.isStopped = true; + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].complete(); + } + this.observers.length = 0; + }; + Subject.prototype.unsubscribe = function () { + this.isStopped = true; + this.closed = true; + this.observers = null; + }; + Subject.prototype._trySubscribe = function (subscriber) { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + else { + return _super.prototype._trySubscribe.call(this, subscriber); + } + }; + /** @deprecated internal use only */ Subject.prototype._subscribe = function (subscriber) { + if (this.closed) { + throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError(); + } + else if (this.hasError) { + subscriber.error(this.thrownError); + return Subscription_1.Subscription.EMPTY; + } + else if (this.isStopped) { + subscriber.complete(); + return Subscription_1.Subscription.EMPTY; + } + else { + this.observers.push(subscriber); + return new SubjectSubscription_1.SubjectSubscription(this, subscriber); + } + }; + Subject.prototype.asObservable = function () { + var observable = new Observable_1.Observable(); + observable.source = this; + return observable; + }; + Subject.create = function (destination, source) { + return new AnonymousSubject(destination, source); + }; + return Subject; +}(Observable_1.Observable)); +exports.Subject = Subject; +/** + * @class AnonymousSubject + */ +var AnonymousSubject = (function (_super) { + __extends(AnonymousSubject, _super); + function AnonymousSubject(destination, source) { + _super.call(this); + this.destination = destination; + this.source = source; + } + AnonymousSubject.prototype.next = function (value) { + var destination = this.destination; + if (destination && destination.next) { + destination.next(value); + } + }; + AnonymousSubject.prototype.error = function (err) { + var destination = this.destination; + if (destination && destination.error) { + this.destination.error(err); + } + }; + AnonymousSubject.prototype.complete = function () { + var destination = this.destination; + if (destination && destination.complete) { + this.destination.complete(); + } + }; + /** @deprecated internal use only */ AnonymousSubject.prototype._subscribe = function (subscriber) { + var source = this.source; + if (source) { + return this.source.subscribe(subscriber); + } + else { + return Subscription_1.Subscription.EMPTY; + } + }; + return AnonymousSubject; +}(Subject)); +exports.AnonymousSubject = AnonymousSubject; +//# sourceMappingURL=Subject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Subject.js.map b/node_modules/rxjs/Subject.js.map new file mode 100644 index 0000000..701bfeb --- /dev/null +++ b/node_modules/rxjs/Subject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subject.js","sourceRoot":"","sources":["../src/Subject.ts"],"names":[],"mappings":"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","sourcesContent":["import { Operator } from './Operator';\nimport { Observer } from './Observer';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { ISubscription, Subscription, TeardownLogic } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * @class Subject\n */\nexport class Subject extends Observable implements ISubscription {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated internal use only */ _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/SubjectSubscription.d.ts b/node_modules/rxjs/SubjectSubscription.d.ts new file mode 100644 index 0000000..f22deaf --- /dev/null +++ b/node_modules/rxjs/SubjectSubscription.d.ts @@ -0,0 +1,15 @@ +import { Subject } from './Subject'; +import { Observer } from './Observer'; +import { Subscription } from './Subscription'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export declare class SubjectSubscription extends Subscription { + subject: Subject; + subscriber: Observer; + closed: boolean; + constructor(subject: Subject, subscriber: Observer); + unsubscribe(): void; +} diff --git a/node_modules/rxjs/SubjectSubscription.js b/node_modules/rxjs/SubjectSubscription.js new file mode 100644 index 0000000..8e7b6af --- /dev/null +++ b/node_modules/rxjs/SubjectSubscription.js @@ -0,0 +1,40 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var Subscription_1 = require('./Subscription'); +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +var SubjectSubscription = (function (_super) { + __extends(SubjectSubscription, _super); + function SubjectSubscription(subject, subscriber) { + _super.call(this); + this.subject = subject; + this.subscriber = subscriber; + this.closed = false; + } + SubjectSubscription.prototype.unsubscribe = function () { + if (this.closed) { + return; + } + this.closed = true; + var subject = this.subject; + var observers = subject.observers; + this.subject = null; + if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { + return; + } + var subscriberIndex = observers.indexOf(this.subscriber); + if (subscriberIndex !== -1) { + observers.splice(subscriberIndex, 1); + } + }; + return SubjectSubscription; +}(Subscription_1.Subscription)); +exports.SubjectSubscription = SubjectSubscription; +//# sourceMappingURL=SubjectSubscription.js.map \ No newline at end of file diff --git a/node_modules/rxjs/SubjectSubscription.js.map b/node_modules/rxjs/SubjectSubscription.js.map new file mode 100644 index 0000000..2a94c56 --- /dev/null +++ b/node_modules/rxjs/SubjectSubscription.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SubjectSubscription.js","sourceRoot":"","sources":["../src/SubjectSubscription.ts"],"names":[],"mappings":";;;;;;AAEA,6BAA6B,gBAAgB,CAAC,CAAA;AAE9C;;;;GAIG;AACH;IAA4C,uCAAY;IAGtD,6BAAmB,OAAmB,EAAS,UAAuB;QACpE,iBAAO,CAAC;QADS,YAAO,GAAP,OAAO,CAAY;QAAS,eAAU,GAAV,UAAU,CAAa;QAFtE,WAAM,GAAY,KAAK,CAAC;IAIxB,CAAC;IAED,yCAAW,GAAX;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC;QACT,CAAC;QAED,IAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,EAAE,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACH,0BAAC;AAAD,CAAC,AA7BD,CAA4C,2BAAY,GA6BvD;AA7BY,2BAAmB,sBA6B/B,CAAA","sourcesContent":["import { Subject } from './Subject';\nimport { Observer } from './Observer';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Subscriber.d.ts b/node_modules/rxjs/Subscriber.d.ts new file mode 100644 index 0000000..c49ddd5 --- /dev/null +++ b/node_modules/rxjs/Subscriber.d.ts @@ -0,0 +1,68 @@ +import { Observer, PartialObserver } from './Observer'; +import { Subscription } from './Subscription'; +/** + * Implements the {@link Observer} interface and extends the + * {@link Subscription} class. While the {@link Observer} is the public API for + * consuming the values of an {@link Observable}, all Observers get converted to + * a Subscriber, in order to provide Subscription-like capabilities such as + * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for + * implementing operators, but it is rarely used as a public API. + * + * @class Subscriber + */ +export declare class Subscriber extends Subscription implements Observer { + /** + * A static factory for a Subscriber, given a (potentially partial) definition + * of an Observer. + * @param {function(x: ?T): void} [next] The `next` callback of an Observer. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + * @return {Subscriber} A Subscriber wrapping the (partially defined) + * Observer represented by the given arguments. + */ + static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber; + syncErrorValue: any; + syncErrorThrown: boolean; + syncErrorThrowable: boolean; + protected isStopped: boolean; + protected destination: PartialObserver; + /** + * @param {Observer|function(value: T): void} [destinationOrNext] A partially + * defined Observer or a `next` callback function. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + */ + constructor(destinationOrNext?: PartialObserver | ((value: T) => void), error?: (e?: any) => void, complete?: () => void); + /** + * The {@link Observer} callback to receive notifications of type `next` from + * the Observable, with a value. The Observable may call this method 0 or more + * times. + * @param {T} [value] The `next` value. + * @return {void} + */ + next(value?: T): void; + /** + * The {@link Observer} callback to receive notifications of type `error` from + * the Observable, with an attached {@link Error}. Notifies the Observer that + * the Observable has experienced an error condition. + * @param {any} [err] The `error` exception. + * @return {void} + */ + error(err?: any): void; + /** + * The {@link Observer} callback to receive a valueless notification of type + * `complete` from the Observable. Notifies the Observer that the Observable + * has finished sending push-based notifications. + * @return {void} + */ + complete(): void; + unsubscribe(): void; + protected _next(value: T): void; + protected _error(err: any): void; + protected _complete(): void; + /** @deprecated internal use only */ _unsubscribeAndRecycle(): Subscriber; +} diff --git a/node_modules/rxjs/Subscriber.js b/node_modules/rxjs/Subscriber.js new file mode 100644 index 0000000..af3183e --- /dev/null +++ b/node_modules/rxjs/Subscriber.js @@ -0,0 +1,271 @@ +"use strict"; +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var isFunction_1 = require('./util/isFunction'); +var Subscription_1 = require('./Subscription'); +var Observer_1 = require('./Observer'); +var rxSubscriber_1 = require('./symbol/rxSubscriber'); +/** + * Implements the {@link Observer} interface and extends the + * {@link Subscription} class. While the {@link Observer} is the public API for + * consuming the values of an {@link Observable}, all Observers get converted to + * a Subscriber, in order to provide Subscription-like capabilities such as + * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for + * implementing operators, but it is rarely used as a public API. + * + * @class Subscriber + */ +var Subscriber = (function (_super) { + __extends(Subscriber, _super); + /** + * @param {Observer|function(value: T): void} [destinationOrNext] A partially + * defined Observer or a `next` callback function. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + */ + function Subscriber(destinationOrNext, error, complete) { + _super.call(this); + this.syncErrorValue = null; + this.syncErrorThrown = false; + this.syncErrorThrowable = false; + this.isStopped = false; + switch (arguments.length) { + case 0: + this.destination = Observer_1.empty; + break; + case 1: + if (!destinationOrNext) { + this.destination = Observer_1.empty; + break; + } + if (typeof destinationOrNext === 'object') { + // HACK(benlesh): To resolve an issue where Node users may have multiple + // copies of rxjs in their node_modules directory. + if (isTrustedSubscriber(destinationOrNext)) { + var trustedSubscriber = destinationOrNext[rxSubscriber_1.rxSubscriber](); + this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable; + this.destination = trustedSubscriber; + trustedSubscriber.add(this); + } + else { + this.syncErrorThrowable = true; + this.destination = new SafeSubscriber(this, destinationOrNext); + } + break; + } + default: + this.syncErrorThrowable = true; + this.destination = new SafeSubscriber(this, destinationOrNext, error, complete); + break; + } + } + Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; }; + /** + * A static factory for a Subscriber, given a (potentially partial) definition + * of an Observer. + * @param {function(x: ?T): void} [next] The `next` callback of an Observer. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + * @return {Subscriber} A Subscriber wrapping the (partially defined) + * Observer represented by the given arguments. + */ + Subscriber.create = function (next, error, complete) { + var subscriber = new Subscriber(next, error, complete); + subscriber.syncErrorThrowable = false; + return subscriber; + }; + /** + * The {@link Observer} callback to receive notifications of type `next` from + * the Observable, with a value. The Observable may call this method 0 or more + * times. + * @param {T} [value] The `next` value. + * @return {void} + */ + Subscriber.prototype.next = function (value) { + if (!this.isStopped) { + this._next(value); + } + }; + /** + * The {@link Observer} callback to receive notifications of type `error` from + * the Observable, with an attached {@link Error}. Notifies the Observer that + * the Observable has experienced an error condition. + * @param {any} [err] The `error` exception. + * @return {void} + */ + Subscriber.prototype.error = function (err) { + if (!this.isStopped) { + this.isStopped = true; + this._error(err); + } + }; + /** + * The {@link Observer} callback to receive a valueless notification of type + * `complete` from the Observable. Notifies the Observer that the Observable + * has finished sending push-based notifications. + * @return {void} + */ + Subscriber.prototype.complete = function () { + if (!this.isStopped) { + this.isStopped = true; + this._complete(); + } + }; + Subscriber.prototype.unsubscribe = function () { + if (this.closed) { + return; + } + this.isStopped = true; + _super.prototype.unsubscribe.call(this); + }; + Subscriber.prototype._next = function (value) { + this.destination.next(value); + }; + Subscriber.prototype._error = function (err) { + this.destination.error(err); + this.unsubscribe(); + }; + Subscriber.prototype._complete = function () { + this.destination.complete(); + this.unsubscribe(); + }; + /** @deprecated internal use only */ Subscriber.prototype._unsubscribeAndRecycle = function () { + var _a = this, _parent = _a._parent, _parents = _a._parents; + this._parent = null; + this._parents = null; + this.unsubscribe(); + this.closed = false; + this.isStopped = false; + this._parent = _parent; + this._parents = _parents; + return this; + }; + return Subscriber; +}(Subscription_1.Subscription)); +exports.Subscriber = Subscriber; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +var SafeSubscriber = (function (_super) { + __extends(SafeSubscriber, _super); + function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { + _super.call(this); + this._parentSubscriber = _parentSubscriber; + var next; + var context = this; + if (isFunction_1.isFunction(observerOrNext)) { + next = observerOrNext; + } + else if (observerOrNext) { + next = observerOrNext.next; + error = observerOrNext.error; + complete = observerOrNext.complete; + if (observerOrNext !== Observer_1.empty) { + context = Object.create(observerOrNext); + if (isFunction_1.isFunction(context.unsubscribe)) { + this.add(context.unsubscribe.bind(context)); + } + context.unsubscribe = this.unsubscribe.bind(this); + } + } + this._context = context; + this._next = next; + this._error = error; + this._complete = complete; + } + SafeSubscriber.prototype.next = function (value) { + if (!this.isStopped && this._next) { + var _parentSubscriber = this._parentSubscriber; + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._next, value); + } + else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.error = function (err) { + if (!this.isStopped) { + var _parentSubscriber = this._parentSubscriber; + if (this._error) { + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._error, err); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, this._error, err); + this.unsubscribe(); + } + } + else if (!_parentSubscriber.syncErrorThrowable) { + this.unsubscribe(); + throw err; + } + else { + _parentSubscriber.syncErrorValue = err; + _parentSubscriber.syncErrorThrown = true; + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.complete = function () { + var _this = this; + if (!this.isStopped) { + var _parentSubscriber = this._parentSubscriber; + if (this._complete) { + var wrappedComplete = function () { return _this._complete.call(_this._context); }; + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(wrappedComplete); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, wrappedComplete); + this.unsubscribe(); + } + } + else { + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { + try { + fn.call(this._context, value); + } + catch (err) { + this.unsubscribe(); + throw err; + } + }; + SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { + try { + fn.call(this._context, value); + } + catch (err) { + parent.syncErrorValue = err; + parent.syncErrorThrown = true; + return true; + } + return false; + }; + /** @deprecated internal use only */ SafeSubscriber.prototype._unsubscribe = function () { + var _parentSubscriber = this._parentSubscriber; + this._context = null; + this._parentSubscriber = null; + _parentSubscriber.unsubscribe(); + }; + return SafeSubscriber; +}(Subscriber)); +function isTrustedSubscriber(obj) { + return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriber_1.rxSubscriber]); +} +//# sourceMappingURL=Subscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Subscriber.js.map b/node_modules/rxjs/Subscriber.js.map new file mode 100644 index 0000000..13a6d71 --- /dev/null +++ b/node_modules/rxjs/Subscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subscriber.js","sourceRoot":"","sources":["../src/Subscriber.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B,mBAAmB,CAAC,CAAA;AAE/C,6BAA6B,gBAAgB,CAAC,CAAA;AAC9C,yBAAuC,YAAY,CAAC,CAAA;AACpD,6BAAmD,uBAAuB,CAAC,CAAA;AAE3E;;;;;;;;;GASG;AACH;IAAmC,8BAAY;IA8B7C;;;;;;;OAOG;IACH,oBAAY,iBAA+D,EAC/D,KAAyB,EACzB,QAAqB;QAC/B,iBAAO,CAAC;QAlBH,mBAAc,GAAQ,IAAI,CAAC;QAC3B,oBAAe,GAAY,KAAK,CAAC;QACjC,uBAAkB,GAAY,KAAK,CAAC;QAEjC,cAAS,GAAY,KAAK,CAAC;QAgBnC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC;gBACJ,IAAI,CAAC,WAAW,GAAG,gBAAa,CAAC;gBACjC,KAAK,CAAC;YACR,KAAK,CAAC;gBACJ,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,WAAW,GAAG,gBAAa,CAAC;oBACjC,KAAK,CAAC;gBACR,CAAC;gBACD,EAAE,CAAC,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBAC1C,wEAAwE;oBACxE,kDAAkD;oBAClD,EAAE,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;wBAC3C,IAAM,iBAAiB,GAAG,iBAAiB,CAAC,2BAAkB,CAAC,EAAqB,CAAC;wBACrF,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,CAAC;wBAC/D,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;wBACrC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACN,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAI,IAAI,EAAyB,iBAAiB,CAAC,CAAC;oBAC3F,CAAC;oBACD,KAAK,CAAC;gBACR,CAAC;YACH;gBACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAI,IAAI,EAAyB,iBAAiB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC1G,KAAK,CAAC;QACV,CAAC;IACH,CAAC;IArED,qBAAC,2BAAkB,CAAC,GAApB,cAAyB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvC;;;;;;;;;;OAUG;IACI,iBAAM,GAAb,UAAiB,IAAsB,EACtB,KAAyB,EACzB,QAAqB;QACpC,IAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzD,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC;IACpB,CAAC;IAoDD;;;;;;OAMG;IACH,yBAAI,GAAJ,UAAK,KAAS;QACZ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,0BAAK,GAAL,UAAM,GAAS;QACb,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,6BAAQ,GAAR;QACE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,gCAAW,GAAX;QACE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,gBAAK,CAAC,WAAW,WAAE,CAAC;IACtB,CAAC;IAES,0BAAK,GAAf,UAAgB,KAAQ;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAES,2BAAM,GAAhB,UAAiB,GAAQ;QACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,8BAAS,GAAnB;QACE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,oCAAoC,CAAC,2CAAsB,GAAtB;QACnC,IAAA,SAAkC,EAA1B,oBAAO,EAAE,sBAAQ,CAAU;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IACH,iBAAC;AAAD,CAAC,AAlJD,CAAmC,2BAAY,GAkJ9C;AAlJY,kBAAU,aAkJtB,CAAA;AAED;;;;GAIG;AACH;IAAgC,kCAAa;IAI3C,wBAAoB,iBAAgC,EACxC,cAA0D,EAC1D,KAAyB,EACzB,QAAqB;QAC/B,iBAAO,CAAC;QAJU,sBAAiB,GAAjB,iBAAiB,CAAe;QAMlD,IAAI,IAA0B,CAAC;QAC/B,IAAI,OAAO,GAAQ,IAAI,CAAC;QAExB,EAAE,CAAC,CAAC,uBAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAA2B,cAAe,CAAC;QACjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAyB,cAAe,CAAC,IAAI,CAAC;YAClD,KAAK,GAAyB,cAAe,CAAC,KAAK,CAAC;YACpD,QAAQ,GAAyB,cAAe,CAAC,QAAQ,CAAC;YAC1D,EAAE,CAAC,CAAC,cAAc,KAAK,gBAAa,CAAC,CAAC,CAAC;gBACrC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACxC,EAAE,CAAC,CAAC,uBAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,GAAG,CAAc,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,6BAAI,GAAJ,UAAK,KAAS;QACZ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,8CAAiB,CAAU;YACnC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAAK,GAAL,UAAM,GAAS;QACb,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,8CAAiB,CAAU;YACnC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACpC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACN,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC;YACZ,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,iBAAiB,CAAC,cAAc,GAAG,GAAG,CAAC;gBACvC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC;gBACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAQ,GAAR;QAAA,iBAiBC;QAhBC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,8CAAiB,CAAU;YACnC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnB,IAAM,eAAe,GAAG,cAAM,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,EAAlC,CAAkC,CAAC;gBAEjE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC1C,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;oBACnC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACN,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;oBACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qCAAY,GAApB,UAAqB,EAAY,EAAE,KAAW;QAC5C,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,wCAAe,GAAvB,UAAwB,MAAqB,EAAE,EAAY,EAAE,KAAW;QACtE,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC;YAC5B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC,CAAC,qCAAY,GAAZ;QAC3B,8CAAiB,CAAU;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IACH,qBAAC;AAAD,CAAC,AAhHD,CAAgC,UAAU,GAgHzC;AAED,6BAA6B,GAAQ;IACnC,MAAM,CAAC,GAAG,YAAY,UAAU,IAAI,CAAC,oBAAoB,IAAI,GAAG,IAAI,GAAG,CAAC,2BAAkB,CAAC,CAAC,CAAC;AAC/F,CAAC","sourcesContent":["import { isFunction } from './util/isFunction';\nimport { Observer, PartialObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { empty as emptyObserver } from './Observer';\nimport { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n public syncErrorValue: any = null;\n public syncErrorThrown: boolean = false;\n public syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n // HACK(benlesh): To resolve an issue where Node users may have multiple\n // copies of rxjs in their node_modules directory.\n if (isTrustedSubscriber(destinationOrNext)) {\n const trustedSubscriber = destinationOrNext[rxSubscriberSymbol]() as Subscriber;\n this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable;\n this.destination = trustedSubscriber;\n trustedSubscriber.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached {@link Error}. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated internal use only */ _unsubscribeAndRecycle(): Subscriber {\n const { _parent, _parents } = this;\n this._parent = null;\n this._parents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parent = _parent;\n this._parents = _parents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._error) {\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n throw err;\n } else {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n throw err;\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n try {\n fn.call(this._context, value);\n } catch (err) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n return false;\n }\n\n /** @deprecated internal use only */ _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n\nfunction isTrustedSubscriber(obj: any) {\n return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriberSymbol]);\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/Subscription.d.ts b/node_modules/rxjs/Subscription.d.ts new file mode 100644 index 0000000..afe5f17 --- /dev/null +++ b/node_modules/rxjs/Subscription.d.ts @@ -0,0 +1,70 @@ +export interface AnonymousSubscription { + unsubscribe(): void; +} +export declare type TeardownLogic = AnonymousSubscription | Function | void; +export interface ISubscription extends AnonymousSubscription { + unsubscribe(): void; + readonly closed: boolean; +} +/** + * Represents a disposable resource, such as the execution of an Observable. A + * Subscription has one important method, `unsubscribe`, that takes no argument + * and just disposes the resource held by the subscription. + * + * Additionally, subscriptions may be grouped together through the `add()` + * method, which will attach a child Subscription to the current Subscription. + * When a Subscription is unsubscribed, all its children (and its grandchildren) + * will be unsubscribed as well. + * + * @class Subscription + */ +export declare class Subscription implements ISubscription { + static EMPTY: Subscription; + /** + * A flag to indicate whether this Subscription has already been unsubscribed. + * @type {boolean} + */ + closed: boolean; + protected _parent: Subscription; + protected _parents: Subscription[]; + private _subscriptions; + /** + * @param {function(): void} [unsubscribe] A function describing how to + * perform the disposal of resources when the `unsubscribe` method is called. + */ + constructor(unsubscribe?: () => void); + /** + * Disposes the resources held by the subscription. May, for instance, cancel + * an ongoing Observable execution or cancel any other type of work that + * started when the Subscription was created. + * @return {void} + */ + unsubscribe(): void; + /** + * Adds a tear down to be called during the unsubscribe() of this + * Subscription. + * + * If the tear down being added is a subscription that is already + * unsubscribed, is the same reference `add` is being called on, or is + * `Subscription.EMPTY`, it will not be added. + * + * If this subscription is already in an `closed` state, the passed + * tear down logic will be executed immediately. + * + * @param {TeardownLogic} teardown The additional logic to execute on + * teardown. + * @return {Subscription} Returns the Subscription used or created to be + * added to the inner subscriptions list. This Subscription can be used with + * `remove()` to remove the passed teardown logic from the inner subscriptions + * list. + */ + add(teardown: TeardownLogic): Subscription; + /** + * Removes a Subscription from the internal list of subscriptions that will + * unsubscribe during the unsubscribe process of this Subscription. + * @param {Subscription} subscription The subscription to remove. + * @return {void} + */ + remove(subscription: Subscription): void; + private _addParent(parent); +} diff --git a/node_modules/rxjs/Subscription.js b/node_modules/rxjs/Subscription.js new file mode 100644 index 0000000..198728c --- /dev/null +++ b/node_modules/rxjs/Subscription.js @@ -0,0 +1,193 @@ +"use strict"; +var isArray_1 = require('./util/isArray'); +var isObject_1 = require('./util/isObject'); +var isFunction_1 = require('./util/isFunction'); +var tryCatch_1 = require('./util/tryCatch'); +var errorObject_1 = require('./util/errorObject'); +var UnsubscriptionError_1 = require('./util/UnsubscriptionError'); +/** + * Represents a disposable resource, such as the execution of an Observable. A + * Subscription has one important method, `unsubscribe`, that takes no argument + * and just disposes the resource held by the subscription. + * + * Additionally, subscriptions may be grouped together through the `add()` + * method, which will attach a child Subscription to the current Subscription. + * When a Subscription is unsubscribed, all its children (and its grandchildren) + * will be unsubscribed as well. + * + * @class Subscription + */ +var Subscription = (function () { + /** + * @param {function(): void} [unsubscribe] A function describing how to + * perform the disposal of resources when the `unsubscribe` method is called. + */ + function Subscription(unsubscribe) { + /** + * A flag to indicate whether this Subscription has already been unsubscribed. + * @type {boolean} + */ + this.closed = false; + this._parent = null; + this._parents = null; + this._subscriptions = null; + if (unsubscribe) { + this._unsubscribe = unsubscribe; + } + } + /** + * Disposes the resources held by the subscription. May, for instance, cancel + * an ongoing Observable execution or cancel any other type of work that + * started when the Subscription was created. + * @return {void} + */ + Subscription.prototype.unsubscribe = function () { + var hasErrors = false; + var errors; + if (this.closed) { + return; + } + var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; + this.closed = true; + this._parent = null; + this._parents = null; + // null out _subscriptions first so any child subscriptions that attempt + // to remove themselves from this subscription will noop + this._subscriptions = null; + var index = -1; + var len = _parents ? _parents.length : 0; + // if this._parent is null, then so is this._parents, and we + // don't have to remove ourselves from any parent subscriptions. + while (_parent) { + _parent.remove(this); + // if this._parents is null or index >= len, + // then _parent is set to null, and the loop exits + _parent = ++index < len && _parents[index] || null; + } + if (isFunction_1.isFunction(_unsubscribe)) { + var trial = tryCatch_1.tryCatch(_unsubscribe).call(this); + if (trial === errorObject_1.errorObject) { + hasErrors = true; + errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ? + flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]); + } + } + if (isArray_1.isArray(_subscriptions)) { + index = -1; + len = _subscriptions.length; + while (++index < len) { + var sub = _subscriptions[index]; + if (isObject_1.isObject(sub)) { + var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub); + if (trial === errorObject_1.errorObject) { + hasErrors = true; + errors = errors || []; + var err = errorObject_1.errorObject.e; + if (err instanceof UnsubscriptionError_1.UnsubscriptionError) { + errors = errors.concat(flattenUnsubscriptionErrors(err.errors)); + } + else { + errors.push(err); + } + } + } + } + } + if (hasErrors) { + throw new UnsubscriptionError_1.UnsubscriptionError(errors); + } + }; + /** + * Adds a tear down to be called during the unsubscribe() of this + * Subscription. + * + * If the tear down being added is a subscription that is already + * unsubscribed, is the same reference `add` is being called on, or is + * `Subscription.EMPTY`, it will not be added. + * + * If this subscription is already in an `closed` state, the passed + * tear down logic will be executed immediately. + * + * @param {TeardownLogic} teardown The additional logic to execute on + * teardown. + * @return {Subscription} Returns the Subscription used or created to be + * added to the inner subscriptions list. This Subscription can be used with + * `remove()` to remove the passed teardown logic from the inner subscriptions + * list. + */ + Subscription.prototype.add = function (teardown) { + if (!teardown || (teardown === Subscription.EMPTY)) { + return Subscription.EMPTY; + } + if (teardown === this) { + return this; + } + var subscription = teardown; + switch (typeof teardown) { + case 'function': + subscription = new Subscription(teardown); + case 'object': + if (subscription.closed || typeof subscription.unsubscribe !== 'function') { + return subscription; + } + else if (this.closed) { + subscription.unsubscribe(); + return subscription; + } + else if (typeof subscription._addParent !== 'function' /* quack quack */) { + var tmp = subscription; + subscription = new Subscription(); + subscription._subscriptions = [tmp]; + } + break; + default: + throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); + } + var subscriptions = this._subscriptions || (this._subscriptions = []); + subscriptions.push(subscription); + subscription._addParent(this); + return subscription; + }; + /** + * Removes a Subscription from the internal list of subscriptions that will + * unsubscribe during the unsubscribe process of this Subscription. + * @param {Subscription} subscription The subscription to remove. + * @return {void} + */ + Subscription.prototype.remove = function (subscription) { + var subscriptions = this._subscriptions; + if (subscriptions) { + var subscriptionIndex = subscriptions.indexOf(subscription); + if (subscriptionIndex !== -1) { + subscriptions.splice(subscriptionIndex, 1); + } + } + }; + Subscription.prototype._addParent = function (parent) { + var _a = this, _parent = _a._parent, _parents = _a._parents; + if (!_parent || _parent === parent) { + // If we don't have a parent, or the new parent is the same as the + // current parent, then set this._parent to the new parent. + this._parent = parent; + } + else if (!_parents) { + // If there's already one parent, but not multiple, allocate an Array to + // store the rest of the parent Subscriptions. + this._parents = [parent]; + } + else if (_parents.indexOf(parent) === -1) { + // Only add the new parent to the _parents list if it's not already there. + _parents.push(parent); + } + }; + Subscription.EMPTY = (function (empty) { + empty.closed = true; + return empty; + }(new Subscription())); + return Subscription; +}()); +exports.Subscription = Subscription; +function flattenUnsubscriptionErrors(errors) { + return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []); +} +//# sourceMappingURL=Subscription.js.map \ No newline at end of file diff --git a/node_modules/rxjs/Subscription.js.map b/node_modules/rxjs/Subscription.js.map new file mode 100644 index 0000000..793c4bf --- /dev/null +++ b/node_modules/rxjs/Subscription.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subscription.js","sourceRoot":"","sources":["../src/Subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { tryCatch } from './util/tryCatch';\nimport { errorObject } from './util/errorObject';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\n\nexport interface AnonymousSubscription {\n unsubscribe(): void;\n}\n\nexport type TeardownLogic = AnonymousSubscription | Function | void;\n\nexport interface ISubscription extends AnonymousSubscription {\n unsubscribe(): void;\n readonly closed: boolean;\n}\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements ISubscription {\n public static EMPTY: Subscription = (function(empty: any){\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n protected _parent: Subscription = null;\n protected _parents: Subscription[] = null;\n private _subscriptions: ISubscription[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n ( this)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let hasErrors = false;\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parent, _parents, _unsubscribe, _subscriptions } = ( this);\n\n this.closed = true;\n this._parent = null;\n this._parents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n let index = -1;\n let len = _parents ? _parents.length : 0;\n\n // if this._parent is null, then so is this._parents, and we\n // don't have to remove ourselves from any parent subscriptions.\n while (_parent) {\n _parent.remove(this);\n // if this._parents is null or index >= len,\n // then _parent is set to null, and the loop exits\n _parent = ++index < len && _parents[index] || null;\n }\n\n if (isFunction(_unsubscribe)) {\n let trial = tryCatch(_unsubscribe).call(this);\n if (trial === errorObject) {\n hasErrors = true;\n errors = errors || (\n errorObject.e instanceof UnsubscriptionError ?\n flattenUnsubscriptionErrors(errorObject.e.errors) : [errorObject.e]\n );\n }\n }\n\n if (isArray(_subscriptions)) {\n\n index = -1;\n len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n let trial = tryCatch(sub.unsubscribe).call(sub);\n if (trial === errorObject) {\n hasErrors = true;\n errors = errors || [];\n let err = errorObject.e;\n if (err instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(err.errors));\n } else {\n errors.push(err);\n }\n }\n }\n }\n }\n\n if (hasErrors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n if (!teardown || (teardown === Subscription.EMPTY)) {\n return Subscription.EMPTY;\n }\n\n if (teardown === this) {\n return this;\n }\n\n let subscription = ( teardown);\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void) > teardown);\n case 'object':\n if (subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (typeof subscription._addParent !== 'function' /* quack quack */) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default:\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n\n const subscriptions = this._subscriptions || (this._subscriptions = []);\n\n subscriptions.push(subscription);\n subscription._addParent(this);\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n\n private _addParent(parent: Subscription) {\n let { _parent, _parents } = this;\n if (!_parent || _parent === parent) {\n // If we don't have a parent, or the new parent is the same as the\n // current parent, then set this._parent to the new parent.\n this._parent = parent;\n } else if (!_parents) {\n // If there's already one parent, but not multiple, allocate an Array to\n // store the rest of the parent Subscriptions.\n this._parents = [parent];\n } else if (_parents.indexOf(parent) === -1) {\n // Only add the new parent to the _parents list if it's not already there.\n _parents.push(parent);\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n"]} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/AsyncSubject.js b/node_modules/rxjs/_esm2015/AsyncSubject.js new file mode 100644 index 0000000..26f69a9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/AsyncSubject.js @@ -0,0 +1,44 @@ +import { Subject } from './Subject'; +import { Subscription } from './Subscription'; +/** + * @class AsyncSubject + */ +export class AsyncSubject extends Subject { + constructor() { + super(...arguments); + this.value = null; + this.hasNext = false; + this.hasCompleted = false; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + if (this.hasError) { + subscriber.error(this.thrownError); + return Subscription.EMPTY; + } + else if (this.hasCompleted && this.hasNext) { + subscriber.next(this.value); + subscriber.complete(); + return Subscription.EMPTY; + } + return super._subscribe(subscriber); + } + next(value) { + if (!this.hasCompleted) { + this.value = value; + this.hasNext = true; + } + } + error(error) { + if (!this.hasCompleted) { + super.error(error); + } + } + complete() { + this.hasCompleted = true; + if (this.hasNext) { + super.next(this.value); + } + super.complete(); + } +} +//# sourceMappingURL=AsyncSubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/AsyncSubject.js.map b/node_modules/rxjs/_esm2015/AsyncSubject.js.map new file mode 100644 index 0000000..6d2e79e --- /dev/null +++ b/node_modules/rxjs/_esm2015/AsyncSubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncSubject.js","sourceRoot":"","sources":["../src/AsyncSubject.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAE,MAAM,WAAW;OAE5B,EAAE,YAAY,EAAE,MAAM,gBAAgB;AAE7C;;GAEG;AACH,kCAAqC,OAAO;IAA5C;QAAqC,oBAAU;QACrC,UAAK,GAAM,IAAI,CAAC;QAChB,YAAO,GAAY,KAAK,CAAC;QACzB,iBAAY,GAAY,KAAK,CAAC;IAkCxC,CAAC;IAhCC,oCAAoC,CAAC,UAAU,CAAC,UAA2B;QACzE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,KAAQ;QACX,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAU;QACd,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/BehaviorSubject.js b/node_modules/rxjs/_esm2015/BehaviorSubject.js new file mode 100644 index 0000000..0b6a75c --- /dev/null +++ b/node_modules/rxjs/_esm2015/BehaviorSubject.js @@ -0,0 +1,36 @@ +import { Subject } from './Subject'; +import { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError'; +/** + * @class BehaviorSubject + */ +export class BehaviorSubject extends Subject { + constructor(_value) { + super(); + this._value = _value; + } + get value() { + return this.getValue(); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const subscription = super._subscribe(subscriber); + if (subscription && !subscription.closed) { + subscriber.next(this._value); + } + return subscription; + } + getValue() { + if (this.hasError) { + throw this.thrownError; + } + else if (this.closed) { + throw new ObjectUnsubscribedError(); + } + else { + return this._value; + } + } + next(value) { + super.next(this._value = value); + } +} +//# sourceMappingURL=BehaviorSubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/BehaviorSubject.js.map b/node_modules/rxjs/_esm2015/BehaviorSubject.js.map new file mode 100644 index 0000000..7595a59 --- /dev/null +++ b/node_modules/rxjs/_esm2015/BehaviorSubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BehaviorSubject.js","sourceRoot":"","sources":["../src/BehaviorSubject.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAE,MAAM,WAAW;OAG5B,EAAE,uBAAuB,EAAE,MAAM,gCAAgC;AAExE;;GAEG;AACH,qCAAwC,OAAO;IAE7C,YAAoB,MAAS;QAC3B,OAAO,CAAC;QADU,WAAM,GAAN,MAAM,CAAG;IAE7B,CAAC;IAED,IAAI,KAAK;QACP,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClD,EAAE,CAAC,CAAC,YAAY,IAAI,CAAiB,YAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,uBAAuB,EAAE,CAAC;QACtC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAQ;QACX,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/InnerSubscriber.js b/node_modules/rxjs/_esm2015/InnerSubscriber.js new file mode 100644 index 0000000..90b7693 --- /dev/null +++ b/node_modules/rxjs/_esm2015/InnerSubscriber.js @@ -0,0 +1,27 @@ +import { Subscriber } from './Subscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class InnerSubscriber extends Subscriber { + constructor(parent, outerValue, outerIndex) { + super(); + this.parent = parent; + this.outerValue = outerValue; + this.outerIndex = outerIndex; + this.index = 0; + } + _next(value) { + this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); + } + _error(error) { + this.parent.notifyError(error, this); + this.unsubscribe(); + } + _complete() { + this.parent.notifyComplete(this); + this.unsubscribe(); + } +} +//# sourceMappingURL=InnerSubscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/InnerSubscriber.js.map b/node_modules/rxjs/_esm2015/InnerSubscriber.js.map new file mode 100644 index 0000000..e1922b3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/InnerSubscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"InnerSubscriber.js","sourceRoot":"","sources":["../src/InnerSubscriber.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,cAAc;AAGzC;;;;GAIG;AACH,qCAA2C,UAAU;IAGnD,YAAoB,MAA6B,EAAU,UAAa,EAAU,UAAkB;QAClG,OAAO,CAAC;QADU,WAAM,GAAN,MAAM,CAAuB;QAAU,eAAU,GAAV,UAAU,CAAG;QAAU,eAAU,GAAV,UAAU,CAAQ;QAF5F,UAAK,GAAW,CAAC,CAAC;IAI1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAES,MAAM,CAAC,KAAU;QACzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/LICENSE.txt b/node_modules/rxjs/_esm2015/LICENSE.txt new file mode 100644 index 0000000..b6c4001 --- /dev/null +++ b/node_modules/rxjs/_esm2015/LICENSE.txt @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2017 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/node_modules/rxjs/_esm2015/Notification.js b/node_modules/rxjs/_esm2015/Notification.js new file mode 100644 index 0000000..7faf760 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Notification.js @@ -0,0 +1,124 @@ +import { Observable } from './Observable'; +/** + * Represents a push-based event or value that an {@link Observable} can emit. + * This class is particularly useful for operators that manage notifications, + * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and + * others. Besides wrapping the actual delivered value, it also annotates it + * with metadata of, for instance, what type of push message it is (`next`, + * `error`, or `complete`). + * + * @see {@link materialize} + * @see {@link dematerialize} + * @see {@link observeOn} + * + * @class Notification + */ +export class Notification { + constructor(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === 'N'; + } + /** + * Delivers to the given `observer` the value wrapped by this Notification. + * @param {Observer} observer + * @return + */ + observe(observer) { + switch (this.kind) { + case 'N': + return observer.next && observer.next(this.value); + case 'E': + return observer.error && observer.error(this.error); + case 'C': + return observer.complete && observer.complete(); + } + } + /** + * Given some {@link Observer} callbacks, deliver the value represented by the + * current Notification to the correctly corresponding callback. + * @param {function(value: T): void} next An Observer `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + do(next, error, complete) { + const kind = this.kind; + switch (kind) { + case 'N': + return next && next(this.value); + case 'E': + return error && error(this.error); + case 'C': + return complete && complete(); + } + } + /** + * Takes an Observer or its individual callback functions, and calls `observe` + * or `do` methods accordingly. + * @param {Observer|function(value: T): void} nextOrObserver An Observer or + * the `next` callback. + * @param {function(err: any): void} [error] An Observer `error` callback. + * @param {function(): void} [complete] An Observer `complete` callback. + * @return {any} + */ + accept(nextOrObserver, error, complete) { + if (nextOrObserver && typeof nextOrObserver.next === 'function') { + return this.observe(nextOrObserver); + } + else { + return this.do(nextOrObserver, error, complete); + } + } + /** + * Returns a simple Observable that just delivers the notification represented + * by this Notification instance. + * @return {any} + */ + toObservable() { + const kind = this.kind; + switch (kind) { + case 'N': + return Observable.of(this.value); + case 'E': + return Observable.throw(this.error); + case 'C': + return Observable.empty(); + } + throw new Error('unexpected notification kind value'); + } + /** + * A shortcut to create a Notification instance of the type `next` from a + * given value. + * @param {T} value The `next` value. + * @return {Notification} The "next" Notification representing the + * argument. + */ + static createNext(value) { + if (typeof value !== 'undefined') { + return new Notification('N', value); + } + return Notification.undefinedValueNotification; + } + /** + * A shortcut to create a Notification instance of the type `error` from a + * given error. + * @param {any} [err] The `error` error. + * @return {Notification} The "error" Notification representing the + * argument. + */ + static createError(err) { + return new Notification('E', undefined, err); + } + /** + * A shortcut to create a Notification instance of the type `complete`. + * @return {Notification} The valueless "complete" Notification. + */ + static createComplete() { + return Notification.completeNotification; + } +} +Notification.completeNotification = new Notification('C'); +Notification.undefinedValueNotification = new Notification('N', undefined); +//# sourceMappingURL=Notification.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Notification.js.map b/node_modules/rxjs/_esm2015/Notification.js.map new file mode 100644 index 0000000..7a2dfb7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Notification.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Notification.js","sourceRoot":"","sources":["../src/Notification.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,cAAc;AAEzC;;;;;;;;;;;;;GAaG;AACH;IAGE,YAAmB,IAAY,EAAS,KAAS,EAAS,KAAW;QAAlD,SAAI,GAAJ,IAAI,CAAQ;QAAS,UAAK,GAAL,KAAK,CAAI;QAAS,UAAK,GAAL,KAAK,CAAM;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,QAA4B;QAClC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClB,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,EAAE,CAAC,IAAwB,EAAE,KAA0B,EAAE,QAAqB;QAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,KAAK,GAAG;gBACN,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,GAAG;gBACN,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,GAAG;gBACN,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAyD,EAAE,KAA0B,EAAE,QAAqB;QACjH,EAAE,CAAC,CAAC,cAAc,IAAI,OAA4B,cAAe,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAqB,cAAc,CAAC,CAAC;QAC1D,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAqB,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACb,KAAK,GAAG;gBACN,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,KAAK,GAAG;gBACN,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtC,KAAK,GAAG;gBACN,MAAM,CAAC,UAAU,CAAC,KAAK,EAAK,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAKD;;;;;;OAMG;IACH,OAAO,UAAU,CAAI,KAAQ;QAC3B,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACH,OAAO,WAAW,CAAI,GAAS;QAC7B,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,OAAO,cAAc;QACnB,MAAM,CAAC,YAAY,CAAC,oBAAoB,CAAC;IAC3C,CAAC;AACH,CAAC;AAnCgB,iCAAoB,GAAsB,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;AAChE,uCAA0B,GAAsB,IAAI,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAkChG"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Observable.js b/node_modules/rxjs/_esm2015/Observable.js new file mode 100644 index 0000000..9a3f597 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Observable.js @@ -0,0 +1,296 @@ +import { root } from './util/root'; +import { toSubscriber } from './util/toSubscriber'; +import { observable as Symbol_observable } from './symbol/observable'; +import { pipeFromArray } from './util/pipe'; +/** + * A representation of any set of values over any amount of time. This is the most basic building block + * of RxJS. + * + * @class Observable + */ +export class Observable { + /** + * @constructor + * @param {Function} subscribe the function that is called when the Observable is + * initially subscribed to. This function is given a Subscriber, to which new values + * can be `next`ed, or an `error` method can be called to raise an error, or + * `complete` can be called to notify of a successful completion. + */ + constructor(subscribe) { + this._isScalar = false; + if (subscribe) { + this._subscribe = subscribe; + } + } + /** + * Creates a new Observable, with this Observable as the source, and the passed + * operator defined as the new observable's operator. + * @method lift + * @param {Operator} operator the operator defining the operation to take on the observable + * @return {Observable} a new observable with the Operator applied + */ + lift(operator) { + const observable = new Observable(); + observable.source = this; + observable.operator = operator; + return observable; + } + /** + * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit. + * + * Use it when you have all these Observables, but still nothing is happening. + * + * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It + * might be for example a function that you passed to a {@link create} static factory, but most of the time it is + * a library implementation, which defines what and when will be emitted by an Observable. This means that calling + * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often + * thought. + * + * Apart from starting the execution of an Observable, this method allows you to listen for values + * that an Observable emits, as well as for when it completes or errors. You can achieve this in two + * following ways. + * + * The first way is creating an object that implements {@link Observer} interface. It should have methods + * defined by that interface, but note that it should be just a regular JavaScript object, which you can create + * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do + * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also + * that your object does not have to implement all methods. If you find yourself creating a method that doesn't + * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will + * be left uncaught. + * + * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods. + * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent + * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer, + * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`, + * since `subscribe` recognizes these functions by where they were placed in function call. When it comes + * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown. + * + * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object. + * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean + * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback + * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable. + * + * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously. + * It is an Observable itself that decides when these functions will be called. For example {@link of} + * by default emits all its values synchronously. Always check documentation for how given Observable + * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}. + * + * @example Subscribe with an Observer + * const sumObserver = { + * sum: 0, + * next(value) { + * console.log('Adding: ' + value); + * this.sum = this.sum + value; + * }, + * error() { // We actually could just remove this method, + * }, // since we do not really care about errors right now. + * complete() { + * console.log('Sum equals: ' + this.sum); + * } + * }; + * + * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes. + * .subscribe(sumObserver); + * + * // Logs: + * // "Adding: 1" + * // "Adding: 2" + * // "Adding: 3" + * // "Sum equals: 6" + * + * + * @example Subscribe with functions + * let sum = 0; + * + * Rx.Observable.of(1, 2, 3) + * .subscribe( + * function(value) { + * console.log('Adding: ' + value); + * sum = sum + value; + * }, + * undefined, + * function() { + * console.log('Sum equals: ' + sum); + * } + * ); + * + * // Logs: + * // "Adding: 1" + * // "Adding: 2" + * // "Adding: 3" + * // "Sum equals: 6" + * + * + * @example Cancel a subscription + * const subscription = Rx.Observable.interval(1000).subscribe( + * num => console.log(num), + * undefined, + * () => console.log('completed!') // Will not be called, even + * ); // when cancelling subscription + * + * + * setTimeout(() => { + * subscription.unsubscribe(); + * console.log('unsubscribed!'); + * }, 2500); + * + * // Logs: + * // 0 after 1s + * // 1 after 2s + * // "unsubscribed!" after 2.5s + * + * + * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called, + * or the first of three possible handlers, which is the handler for each value emitted from the subscribed + * Observable. + * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided, + * the error will be thrown as unhandled. + * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion. + * @return {ISubscription} a subscription reference to the registered handlers + * @method subscribe + */ + subscribe(observerOrNext, error, complete) { + const { operator } = this; + const sink = toSubscriber(observerOrNext, error, complete); + if (operator) { + operator.call(sink, this.source); + } + else { + sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink)); + } + if (sink.syncErrorThrowable) { + sink.syncErrorThrowable = false; + if (sink.syncErrorThrown) { + throw sink.syncErrorValue; + } + } + return sink; + } + _trySubscribe(sink) { + try { + return this._subscribe(sink); + } + catch (err) { + sink.syncErrorThrown = true; + sink.syncErrorValue = err; + sink.error(err); + } + } + /** + * @method forEach + * @param {Function} next a handler for each value emitted by the observable + * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise + * @return {Promise} a promise that either resolves on observable completion or + * rejects with the handled error + */ + forEach(next, PromiseCtor) { + if (!PromiseCtor) { + if (root.Rx && root.Rx.config && root.Rx.config.Promise) { + PromiseCtor = root.Rx.config.Promise; + } + else if (root.Promise) { + PromiseCtor = root.Promise; + } + } + if (!PromiseCtor) { + throw new Error('no Promise impl found'); + } + return new PromiseCtor((resolve, reject) => { + // Must be declared in a separate statement to avoid a RefernceError when + // accessing subscription below in the closure due to Temporal Dead Zone. + let subscription; + subscription = this.subscribe((value) => { + if (subscription) { + // if there is a subscription, then we can surmise + // the next handling is asynchronous. Any errors thrown + // need to be rejected explicitly and unsubscribe must be + // called manually + try { + next(value); + } + catch (err) { + reject(err); + subscription.unsubscribe(); + } + } + else { + // if there is NO subscription, then we're getting a nexted + // value synchronously during subscription. We can just call it. + // If it errors, Observable's `subscribe` will ensure the + // unsubscription logic is called, then synchronously rethrow the error. + // After that, Promise will trap the error and send it + // down the rejection path. + next(value); + } + }, reject, resolve); + }); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + return this.source.subscribe(subscriber); + } + /** + * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable + * @method Symbol.observable + * @return {Observable} this instance of the observable + */ + [Symbol_observable]() { + return this; + } + /* tslint:enable:max-line-length */ + /** + * Used to stitch together functional operators into a chain. + * @method pipe + * @return {Observable} the Observable result of all of the operators having + * been called in the order they were passed in. + * + * @example + * + * import { map, filter, scan } from 'rxjs/operators'; + * + * Rx.Observable.interval(1000) + * .pipe( + * filter(x => x % 2 === 0), + * map(x => x + x), + * scan((acc, x) => acc + x) + * ) + * .subscribe(x => console.log(x)) + */ + pipe(...operations) { + if (operations.length === 0) { + return this; + } + return pipeFromArray(operations)(this); + } + /* tslint:enable:max-line-length */ + toPromise(PromiseCtor) { + if (!PromiseCtor) { + if (root.Rx && root.Rx.config && root.Rx.config.Promise) { + PromiseCtor = root.Rx.config.Promise; + } + else if (root.Promise) { + PromiseCtor = root.Promise; + } + } + if (!PromiseCtor) { + throw new Error('no Promise impl found'); + } + return new PromiseCtor((resolve, reject) => { + let value; + this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value)); + }); + } +} +// HACK: Since TypeScript inherits static properties too, we have to +// fight against TypeScript here so Subject can have a different static create signature +/** + * Creates a new cold Observable by calling the Observable constructor + * @static true + * @owner Observable + * @method create + * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor + * @return {Observable} a new cold observable + */ +Observable.create = (subscribe) => { + return new Observable(subscribe); +}; +//# sourceMappingURL=Observable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Observable.js.map b/node_modules/rxjs/_esm2015/Observable.js.map new file mode 100644 index 0000000..8238eb1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Observable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Observable.js","sourceRoot":"","sources":["../src/Observable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Observer.js b/node_modules/rxjs/_esm2015/Observer.js new file mode 100644 index 0000000..edfadba --- /dev/null +++ b/node_modules/rxjs/_esm2015/Observer.js @@ -0,0 +1,7 @@ +export const empty = { + closed: true, + next(value) { }, + error(err) { throw err; }, + complete() { } +}; +//# sourceMappingURL=Observer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Observer.js.map b/node_modules/rxjs/_esm2015/Observer.js.map new file mode 100644 index 0000000..162fe92 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Observer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Observer.js","sourceRoot":"","sources":["../src/Observer.ts"],"names":[],"mappings":"AA8BA,OAAO,MAAM,KAAK,GAAkB;IAClC,MAAM,EAAE,IAAI;IACZ,IAAI,CAAC,KAAU,IAAoB,CAAC;IACpC,KAAK,CAAC,GAAQ,IAAU,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,QAAQ,KAAoB,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Operator.js b/node_modules/rxjs/_esm2015/Operator.js new file mode 100644 index 0000000..463a42e --- /dev/null +++ b/node_modules/rxjs/_esm2015/Operator.js @@ -0,0 +1 @@ +//# sourceMappingURL=Operator.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Operator.js.map b/node_modules/rxjs/_esm2015/Operator.js.map new file mode 100644 index 0000000..ce9fa2e --- /dev/null +++ b/node_modules/rxjs/_esm2015/Operator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Operator.js","sourceRoot":"","sources":["../src/Operator.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/OuterSubscriber.js b/node_modules/rxjs/_esm2015/OuterSubscriber.js new file mode 100644 index 0000000..4ee8be3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/OuterSubscriber.js @@ -0,0 +1,18 @@ +import { Subscriber } from './Subscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class OuterSubscriber extends Subscriber { + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + } + notifyError(error, innerSub) { + this.destination.error(error); + } + notifyComplete(innerSub) { + this.destination.complete(); + } +} +//# sourceMappingURL=OuterSubscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/OuterSubscriber.js.map b/node_modules/rxjs/_esm2015/OuterSubscriber.js.map new file mode 100644 index 0000000..8701c26 --- /dev/null +++ b/node_modules/rxjs/_esm2015/OuterSubscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"OuterSubscriber.js","sourceRoot":"","sources":["../src/OuterSubscriber.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,cAAc;AAGzC;;;;GAIG;AACH,qCAA2C,UAAU;IACnD,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,QAA+B;QACrD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,QAA+B;QAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/README.md b/node_modules/rxjs/_esm2015/README.md new file mode 100644 index 0000000..6b8c798 --- /dev/null +++ b/node_modules/rxjs/_esm2015/README.md @@ -0,0 +1,206 @@ +[![Build Status](https://travis-ci.org/ReactiveX/rxjs.svg?branch=master)](https://travis-ci.org/ReactiveX/rxjs) +[![Coverage Status](https://coveralls.io/repos/github/ReactiveX/rxjs/badge.svg?branch=master)](https://coveralls.io/github/ReactiveX/rxjs?branch=master) +[![npm version](https://badge.fury.io/js/%40reactivex%2Frxjs.svg)](http://badge.fury.io/js/%40reactivex%2Frxjs) +[![Join the chat at https://gitter.im/Reactive-Extensions/RxJS](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Reactive-Extensions/RxJS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[![Selenium Test Status](https://saucelabs.com/browser-matrix/rxjs5.svg)](https://saucelabs.com/u/rxjs5) + +# RxJS 5 + +Reactive Extensions Library for JavaScript. This is a rewrite of [Reactive-Extensions/RxJS](https://github.com/Reactive-Extensions/RxJS) and is the latest production-ready version of RxJS. This rewrite is meant to have better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface. + +[Apache 2.0 License](LICENSE.txt) + +- [Code of Conduct](CODE_OF_CONDUCT.md) +- [Contribution Guidelines](CONTRIBUTING.md) +- [Maintainer Guidelines](doc/maintainer-guidelines.md) +- [Creating Operators](doc/operator-creation.md) +- [Migrating From RxJS 4 to RxJS 5](MIGRATION.md) +- [API Documentation (WIP)](http://reactivex.io/rxjs) + +## Versions In This Repository + +- [master](https://github.com/ReactiveX/rxjs/commits/master) - commits that will be included in the next _minor_ or _patch_ release +- [next](https://github.com/ReactiveX/rxjs/commits/next) - commits that will be included in the next _major_ release (breaking changes) + +Most PRs should be made to **master**, unless you know it is a breaking change. + +## Important + +By contributing or commenting on issues in this repository, whether you've read them or not, you're agreeing to the [Contributor Code of Conduct](CODE_OF_CONDUCT.md). Much like traffic laws, ignorance doesn't grant you immunity. + +## Installation and Usage + +### ES6 via npm + +```sh +npm install rxjs +``` + +To import the entire core set of functionality: + +```js +import Rx from 'rxjs/Rx'; + +Rx.Observable.of(1,2,3) +``` + +To import only what you need by patching (this is useful for size-sensitive bundling): + +```js +import { Observable } from 'rxjs/Observable'; +import 'rxjs/add/observable/of'; +import 'rxjs/add/operator/map'; + +Observable.of(1,2,3).map(x => x + '!!!'); // etc +``` + +To import what you need and use it with proposed [bind operator](https://github.com/tc39/proposal-bind-operator): + +> Note: This additional syntax requires [transpiler support](http://babeljs.io/docs/plugins/transform-function-bind/) and this syntax may be completely withdrawn from TC39 without notice! Use at your own risk. + +```js +import { Observable } from 'rxjs/Observable'; +import { of } from 'rxjs/observable/of'; +import { map } from 'rxjs/operator/map'; + +Observable::of(1,2,3)::map(x => x + '!!!'); // etc +``` + +### CommonJS via npm + +To install this library for CommonJS (CJS) usage, use the following command: + +```sh +npm install rxjs +``` + +Import all core functionality: + +```js +var Rx = require('rxjs/Rx'); + +Rx.Observable.of(1,2,3); // etc +``` + +Import only what you need and patch Observable (this is useful in size-sensitive bundling scenarios): + +```js +var Observable = require('rxjs/Observable').Observable; +// patch Observable with appropriate methods +require('rxjs/add/observable/of'); +require('rxjs/add/operator/map'); + +Observable.of(1,2,3).map(function (x) { return x + '!!!'; }); // etc +``` + +Import operators and use them _manually_ you can do the following (this is also useful for bundling): + +```js +var of = require('rxjs/observable/of').of; +var map = require('rxjs/operator/map').map; + +map.call(of(1,2,3), function (x) { return x + '!!!'; }); +``` + +You can also use the above method to build your own Observable and export it from your own module. + + +### All Module Types (CJS/ES6/AMD/TypeScript) via npm + +To install this library via [npm](https://www.npmjs.org) **version 3**, use the following command: + +```sh +npm install @reactivex/rxjs +``` + +This will include CJS/Global builds and can be used for all module types. + +If you are using npm **version 2** before this library has achieved a stable version, you need to specify the library version explicitly: + +```sh +npm install @reactivex/rxjs@5.0.0 +``` + +### CDN + +For CDN, you can use [unpkg](https://unpkg.com/): + +https://unpkg.com/rxjs@version/bundles/Rx.min.js + +*replace **version** with the current version. See [docs](http://reactivex.io/rxjs/manual/installation.html#cdn).* + +#### Node.js Usage: + +```js +var Rx = require('@reactivex/rxjs'); + +Rx.Observable.of('hello world') + .subscribe(function(x) { console.log(x); }); +``` + +## Goals + +- Provide better performance than preceding versions of RxJS +- To model/follow the [Observable Spec Proposal](https://github.com/zenparsing/es-observable) to the observable. +- Provide more modular file structure in a variety of formats +- Provide more debuggable call stacks than preceding versions of RxJS + +## Building/Testing + +The build and test structure is fairly primitive at the moment. There are various npm scripts that can be run: + +- build_es6: Transpiles the TypeScript files from `src/` to `dist/es6` +- build_cjs: Transpiles the ES6 files from `dist/es6` to `dist/cjs` +- build_amd: Transpiles the ES6 files from `dist/es6` to `dist/amd` +- build_global: Transpiles/Bundles the CommonJS files from `dist/cjs` to `dist/global/Rx.js` +- build_all: Performs all of the above in the proper order. +- build_test: builds ES6, then CommonJS, then runs the tests with `jasmine` +- build_perf: builds ES6, CommonJS, then global, then runs the performance tests with `protractor` +- build_docs: generates API documentation from `dist/es6` to `dist/docs` +- build_cover: runs `istanbul` code coverage against test cases +- test: runs tests with `jasmine`, must have built prior to running. +- tests2png: generates PNG marble diagrams from test cases. + +`npm run info` will list available script. + +### Example + +```sh +# build all the things! +npm run build_all +``` + +## Performance Tests + +Run `npm run build_perf` or `npm run perf` to run the performance tests with `protractor`. +Run `npm run perf_micro` to run micro performance test benchmarking operator. + +## Adding documentation +RxNext uses [ESDoc](https://esdoc.org/) to generate API documentation. Refer to ESDoc's documentation for syntax. Run `npm run build_docs` to generate. + +## Generating PNG marble diagrams + +The script `npm run tests2png` requires some native packages installed locally: `imagemagick`, `graphicsmagick`, and `ghostscript`. + +For Mac OS X with [Homebrew](http://brew.sh/): + +- `brew install imagemagick` +- `brew install graphicsmagick` +- `brew install ghostscript` +- You may need to install the Ghostscript fonts manually: + - Download the tarball from the [gs-fonts project](https://sourceforge.net/projects/gs-fonts) + - `mkdir -p /usr/local/share/ghostscript && tar zxvf /path/to/ghostscript-fonts.tar.gz -C /usr/local/share/ghostscript` + +For Debian Linux: + +- `sudo add-apt-repository ppa:dhor/myway` +- `apt-get install imagemagick` +- `apt-get install graphicsmagick` +- `apt-get install ghostscript` + +For Windows and other Operating Systems, check the download instructions here: + +- http://imagemagick.org +- http://www.graphicsmagick.org +- http://www.ghostscript.com/ diff --git a/node_modules/rxjs/_esm2015/ReplaySubject.js b/node_modules/rxjs/_esm2015/ReplaySubject.js new file mode 100644 index 0000000..f34fe52 --- /dev/null +++ b/node_modules/rxjs/_esm2015/ReplaySubject.js @@ -0,0 +1,90 @@ +import { Subject } from './Subject'; +import { queue } from './scheduler/queue'; +import { Subscription } from './Subscription'; +import { ObserveOnSubscriber } from './operators/observeOn'; +import { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError'; +import { SubjectSubscription } from './SubjectSubscription'; +/** + * @class ReplaySubject + */ +export class ReplaySubject extends Subject { + constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) { + super(); + this.scheduler = scheduler; + this._events = []; + this._bufferSize = bufferSize < 1 ? 1 : bufferSize; + this._windowTime = windowTime < 1 ? 1 : windowTime; + } + next(value) { + const now = this._getNow(); + this._events.push(new ReplayEvent(now, value)); + this._trimBufferThenGetEvents(); + super.next(value); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const _events = this._trimBufferThenGetEvents(); + const scheduler = this.scheduler; + let subscription; + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + else if (this.hasError) { + subscription = Subscription.EMPTY; + } + else if (this.isStopped) { + subscription = Subscription.EMPTY; + } + else { + this.observers.push(subscriber); + subscription = new SubjectSubscription(this, subscriber); + } + if (scheduler) { + subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler)); + } + const len = _events.length; + for (let i = 0; i < len && !subscriber.closed; i++) { + subscriber.next(_events[i].value); + } + if (this.hasError) { + subscriber.error(this.thrownError); + } + else if (this.isStopped) { + subscriber.complete(); + } + return subscription; + } + _getNow() { + return (this.scheduler || queue).now(); + } + _trimBufferThenGetEvents() { + const now = this._getNow(); + const _bufferSize = this._bufferSize; + const _windowTime = this._windowTime; + const _events = this._events; + let eventsCount = _events.length; + let spliceCount = 0; + // Trim events that fall out of the time window. + // Start at the front of the list. Break early once + // we encounter an event that falls within the window. + while (spliceCount < eventsCount) { + if ((now - _events[spliceCount].time) < _windowTime) { + break; + } + spliceCount++; + } + if (eventsCount > _bufferSize) { + spliceCount = Math.max(spliceCount, eventsCount - _bufferSize); + } + if (spliceCount > 0) { + _events.splice(0, spliceCount); + } + return _events; + } +} +class ReplayEvent { + constructor(time, value) { + this.time = time; + this.value = value; + } +} +//# sourceMappingURL=ReplaySubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/ReplaySubject.js.map b/node_modules/rxjs/_esm2015/ReplaySubject.js.map new file mode 100644 index 0000000..1be9721 --- /dev/null +++ b/node_modules/rxjs/_esm2015/ReplaySubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ReplaySubject.js","sourceRoot":"","sources":["../src/ReplaySubject.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Rx.js b/node_modules/rxjs/_esm2015/Rx.js new file mode 100644 index 0000000..23fd5c3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Rx.js @@ -0,0 +1,204 @@ +/* tslint:disable:no-unused-variable */ +// Subject imported before Observable to bypass circular dependency issue since +// Subject extends Observable and Observable references Subject in it's +// definition +export { Subject, AnonymousSubject } from './Subject'; +/* tslint:enable:no-unused-variable */ +export { Observable } from './Observable'; +import './add/observable/bindCallback'; +import './add/observable/bindNodeCallback'; +import './add/observable/combineLatest'; +import './add/observable/concat'; +import './add/observable/defer'; +import './add/observable/empty'; +import './add/observable/forkJoin'; +import './add/observable/from'; +import './add/observable/fromEvent'; +import './add/observable/fromEventPattern'; +import './add/observable/fromPromise'; +import './add/observable/generate'; +import './add/observable/if'; +import './add/observable/interval'; +import './add/observable/merge'; +import './add/observable/race'; +import './add/observable/never'; +import './add/observable/of'; +import './add/observable/onErrorResumeNext'; +import './add/observable/pairs'; +import './add/observable/range'; +import './add/observable/using'; +import './add/observable/throw'; +import './add/observable/timer'; +import './add/observable/zip'; +import './add/observable/dom/ajax'; +import './add/observable/dom/webSocket'; +import './add/operator/buffer'; +import './add/operator/bufferCount'; +import './add/operator/bufferTime'; +import './add/operator/bufferToggle'; +import './add/operator/bufferWhen'; +import './add/operator/catch'; +import './add/operator/combineAll'; +import './add/operator/combineLatest'; +import './add/operator/concat'; +import './add/operator/concatAll'; +import './add/operator/concatMap'; +import './add/operator/concatMapTo'; +import './add/operator/count'; +import './add/operator/dematerialize'; +import './add/operator/debounce'; +import './add/operator/debounceTime'; +import './add/operator/defaultIfEmpty'; +import './add/operator/delay'; +import './add/operator/delayWhen'; +import './add/operator/distinct'; +import './add/operator/distinctUntilChanged'; +import './add/operator/distinctUntilKeyChanged'; +import './add/operator/do'; +import './add/operator/exhaust'; +import './add/operator/exhaustMap'; +import './add/operator/expand'; +import './add/operator/elementAt'; +import './add/operator/filter'; +import './add/operator/finally'; +import './add/operator/find'; +import './add/operator/findIndex'; +import './add/operator/first'; +import './add/operator/groupBy'; +import './add/operator/ignoreElements'; +import './add/operator/isEmpty'; +import './add/operator/audit'; +import './add/operator/auditTime'; +import './add/operator/last'; +import './add/operator/let'; +import './add/operator/every'; +import './add/operator/map'; +import './add/operator/mapTo'; +import './add/operator/materialize'; +import './add/operator/max'; +import './add/operator/merge'; +import './add/operator/mergeAll'; +import './add/operator/mergeMap'; +import './add/operator/mergeMapTo'; +import './add/operator/mergeScan'; +import './add/operator/min'; +import './add/operator/multicast'; +import './add/operator/observeOn'; +import './add/operator/onErrorResumeNext'; +import './add/operator/pairwise'; +import './add/operator/partition'; +import './add/operator/pluck'; +import './add/operator/publish'; +import './add/operator/publishBehavior'; +import './add/operator/publishReplay'; +import './add/operator/publishLast'; +import './add/operator/race'; +import './add/operator/reduce'; +import './add/operator/repeat'; +import './add/operator/repeatWhen'; +import './add/operator/retry'; +import './add/operator/retryWhen'; +import './add/operator/sample'; +import './add/operator/sampleTime'; +import './add/operator/scan'; +import './add/operator/sequenceEqual'; +import './add/operator/share'; +import './add/operator/shareReplay'; +import './add/operator/single'; +import './add/operator/skip'; +import './add/operator/skipLast'; +import './add/operator/skipUntil'; +import './add/operator/skipWhile'; +import './add/operator/startWith'; +import './add/operator/subscribeOn'; +import './add/operator/switch'; +import './add/operator/switchMap'; +import './add/operator/switchMapTo'; +import './add/operator/take'; +import './add/operator/takeLast'; +import './add/operator/takeUntil'; +import './add/operator/takeWhile'; +import './add/operator/throttle'; +import './add/operator/throttleTime'; +import './add/operator/timeInterval'; +import './add/operator/timeout'; +import './add/operator/timeoutWith'; +import './add/operator/timestamp'; +import './add/operator/toArray'; +import './add/operator/toPromise'; +import './add/operator/window'; +import './add/operator/windowCount'; +import './add/operator/windowTime'; +import './add/operator/windowToggle'; +import './add/operator/windowWhen'; +import './add/operator/withLatestFrom'; +import './add/operator/zip'; +import './add/operator/zipAll'; +/* tslint:disable:no-unused-variable */ +export { Subscription } from './Subscription'; +export { Subscriber } from './Subscriber'; +export { AsyncSubject } from './AsyncSubject'; +export { ReplaySubject } from './ReplaySubject'; +export { BehaviorSubject } from './BehaviorSubject'; +export { ConnectableObservable } from './observable/ConnectableObservable'; +export { Notification } from './Notification'; +export { EmptyError } from './util/EmptyError'; +export { ArgumentOutOfRangeError } from './util/ArgumentOutOfRangeError'; +export { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError'; +export { TimeoutError } from './util/TimeoutError'; +export { UnsubscriptionError } from './util/UnsubscriptionError'; +export { TimeInterval } from './operator/timeInterval'; +export { Timestamp } from './operators/timestamp'; +export { TestScheduler } from './testing/TestScheduler'; +export { VirtualTimeScheduler } from './scheduler/VirtualTimeScheduler'; +export { AjaxResponse, AjaxError, AjaxTimeoutError } from './observable/dom/AjaxObservable'; +export { pipe } from './util/pipe'; +import { asap } from './scheduler/asap'; +import { async } from './scheduler/async'; +import { queue } from './scheduler/queue'; +import { animationFrame } from './scheduler/animationFrame'; +import { rxSubscriber } from './symbol/rxSubscriber'; +import { iterator } from './symbol/iterator'; +import { observable } from './symbol/observable'; +import * as _operators from './operators'; +export const operators = _operators; +/* tslint:enable:no-unused-variable */ +/** + * @typedef {Object} Rx.Scheduler + * @property {Scheduler} queue Schedules on a queue in the current event frame + * (trampoline scheduler). Use this for iteration operations. + * @property {Scheduler} asap Schedules on the micro task queue, which uses the + * fastest transport mechanism available, either Node.js' `process.nextTick()` + * or Web Worker MessageChannel or setTimeout or others. Use this for + * asynchronous conversions. + * @property {Scheduler} async Schedules work with `setInterval`. Use this for + * time-based operations. + * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`. + * Use this for synchronizing with the platform's painting + */ +let Scheduler = { + asap, + queue, + animationFrame, + async +}; +/** + * @typedef {Object} Rx.Symbol + * @property {Symbol|string} rxSubscriber A symbol to use as a property name to + * retrieve an "Rx safe" Observer from an object. "Rx safety" can be defined as + * an object that has all of the traits of an Rx Subscriber, including the + * ability to add and remove subscriptions to the subscription chain and + * guarantees involving event triggering (can't "next" after unsubscription, + * etc). + * @property {Symbol|string} observable A symbol to use as a property name to + * retrieve an Observable as defined by the [ECMAScript "Observable" spec](https://github.com/zenparsing/es-observable). + * @property {Symbol|string} iterator The ES6 symbol to use as a property name + * to retrieve an iterator from an object. + */ +let Symbol = { + rxSubscriber, + observable, + iterator +}; +export { Scheduler, Symbol }; +//# sourceMappingURL=Rx.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Rx.js.map b/node_modules/rxjs/_esm2015/Rx.js.map new file mode 100644 index 0000000..0da980e --- /dev/null +++ b/node_modules/rxjs/_esm2015/Rx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Rx.js","sourceRoot":"","sources":["../src/Rx.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,+EAA+E;AAC/E,uEAAuE;AACvE,aAAa;AACb,SAAQ,OAAO,EAAE,gBAAgB,QAAO,WAAW,CAAC;AACpD,sCAAsC;AACtC,SAAQ,UAAU,QAAO,cAAc,CAAC;OAIjC,+BAA+B;OAC/B,mCAAmC;OACnC,gCAAgC;OAChC,yBAAyB;OACzB,wBAAwB;OACxB,wBAAwB;OACxB,2BAA2B;OAC3B,uBAAuB;OACvB,4BAA4B;OAC5B,mCAAmC;OACnC,8BAA8B;OAC9B,2BAA2B;OAC3B,qBAAqB;OACrB,2BAA2B;OAC3B,wBAAwB;OACxB,uBAAuB;OACvB,wBAAwB;OACxB,qBAAqB;OACrB,oCAAoC;OACpC,wBAAwB;OACxB,wBAAwB;OACxB,wBAAwB;OACxB,wBAAwB;OACxB,wBAAwB;OACxB,sBAAsB;OAGtB,2BAA2B;OAC3B,gCAAgC;OAGhC,uBAAuB;OACvB,4BAA4B;OAC5B,2BAA2B;OAC3B,6BAA6B;OAC7B,2BAA2B;OAC3B,sBAAsB;OACtB,2BAA2B;OAC3B,8BAA8B;OAC9B,uBAAuB;OACvB,0BAA0B;OAC1B,0BAA0B;OAC1B,4BAA4B;OAC5B,sBAAsB;OACtB,8BAA8B;OAC9B,yBAAyB;OACzB,6BAA6B;OAC7B,+BAA+B;OAC/B,sBAAsB;OACtB,0BAA0B;OAC1B,yBAAyB;OACzB,qCAAqC;OACrC,wCAAwC;OACxC,mBAAmB;OACnB,wBAAwB;OACxB,2BAA2B;OAC3B,uBAAuB;OACvB,0BAA0B;OAC1B,uBAAuB;OACvB,wBAAwB;OACxB,qBAAqB;OACrB,0BAA0B;OAC1B,sBAAsB;OACtB,wBAAwB;OACxB,+BAA+B;OAC/B,wBAAwB;OACxB,sBAAsB;OACtB,0BAA0B;OAC1B,qBAAqB;OACrB,oBAAoB;OACpB,sBAAsB;OACtB,oBAAoB;OACpB,sBAAsB;OACtB,4BAA4B;OAC5B,oBAAoB;OACpB,sBAAsB;OACtB,yBAAyB;OACzB,yBAAyB;OACzB,2BAA2B;OAC3B,0BAA0B;OAC1B,oBAAoB;OACpB,0BAA0B;OAC1B,0BAA0B;OAC1B,kCAAkC;OAClC,yBAAyB;OACzB,0BAA0B;OAC1B,sBAAsB;OACtB,wBAAwB;OACxB,gCAAgC;OAChC,8BAA8B;OAC9B,4BAA4B;OAC5B,qBAAqB;OACrB,uBAAuB;OACvB,uBAAuB;OACvB,2BAA2B;OAC3B,sBAAsB;OACtB,0BAA0B;OAC1B,uBAAuB;OACvB,2BAA2B;OAC3B,qBAAqB;OACrB,8BAA8B;OAC9B,sBAAsB;OACtB,4BAA4B;OAC5B,uBAAuB;OACvB,qBAAqB;OACrB,yBAAyB;OACzB,0BAA0B;OAC1B,0BAA0B;OAC1B,0BAA0B;OAC1B,4BAA4B;OAC5B,uBAAuB;OACvB,0BAA0B;OAC1B,4BAA4B;OAC5B,qBAAqB;OACrB,yBAAyB;OACzB,0BAA0B;OAC1B,0BAA0B;OAC1B,yBAAyB;OACzB,6BAA6B;OAC7B,6BAA6B;OAC7B,wBAAwB;OACxB,4BAA4B;OAC5B,0BAA0B;OAC1B,wBAAwB;OACxB,0BAA0B;OAC1B,uBAAuB;OACvB,4BAA4B;OAC5B,2BAA2B;OAC3B,6BAA6B;OAC7B,2BAA2B;OAC3B,+BAA+B;OAC/B,oBAAoB;OACpB,uBAAuB;AAE9B,uCAAuC;AAGvC,SAAQ,YAAY,QAAO,gBAAgB,CAAC;AAC5C,SAAQ,UAAU,QAAO,cAAc,CAAC;AACxC,SAAQ,YAAY,QAAO,gBAAgB,CAAC;AAC5C,SAAQ,aAAa,QAAO,iBAAiB,CAAC;AAC9C,SAAQ,eAAe,QAAO,mBAAmB,CAAC;AAClD,SAAQ,qBAAqB,QAAO,oCAAoC,CAAC;AACzE,SAAQ,YAAY,QAAO,gBAAgB,CAAC;AAC5C,SAAQ,UAAU,QAAO,mBAAmB,CAAC;AAC7C,SAAQ,uBAAuB,QAAO,gCAAgC,CAAC;AACvE,SAAQ,uBAAuB,QAAO,gCAAgC,CAAC;AACvE,SAAQ,YAAY,QAAO,qBAAqB,CAAC;AACjD,SAAQ,mBAAmB,QAAO,4BAA4B,CAAC;AAC/D,SAAQ,YAAY,QAAO,yBAAyB,CAAC;AACrD,SAAQ,SAAS,QAAO,uBAAuB,CAAC;AAChD,SAAQ,aAAa,QAAO,yBAAyB,CAAC;AACtD,SAAQ,oBAAoB,QAAO,kCAAkC,CAAC;AACtE,SAAqB,YAAY,EAAE,SAAS,EAAE,gBAAgB,QAAO,iCAAiC,CAAC;AACvG,SAAS,IAAI,QAAQ,aAAa,CAAC;OAE5B,EAAE,IAAI,EAAE,MAAM,kBAAkB;OAChC,EAAE,KAAK,EAAE,MAAM,mBAAmB;OAClC,EAAE,KAAK,EAAE,MAAM,mBAAmB;OAClC,EAAE,cAAc,EAAE,MAAM,4BAA4B;OAKpD,EAAE,YAAY,EAAE,MAAM,uBAAuB;OAC7C,EAAE,QAAQ,EAAE,MAAM,mBAAmB;OACrC,EAAE,UAAU,EAAE,MAAM,qBAAqB;OAEzC,KAAK,UAAU,MAAM,aAAa;AAEzC,OAAO,MAAM,SAAS,GAAG,UAAU,CAAC;AAEpC,sCAAsC;AAEtC;;;;;;;;;;;;GAYG;AACH,IAAI,SAAS,GAAG;IACd,IAAI;IACJ,KAAK;IACL,cAAc;IACd,KAAK;CACN,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,IAAI,MAAM,GAAG;IACX,YAAY;IACZ,UAAU;IACV,QAAQ;CACT,CAAC;AAEF,SACI,SAAS,EACT,MAAM,GACR"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Scheduler.js b/node_modules/rxjs/_esm2015/Scheduler.js new file mode 100644 index 0000000..c04bab2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Scheduler.js @@ -0,0 +1,44 @@ +/** + * An execution context and a data structure to order tasks and schedule their + * execution. Provides a notion of (potentially virtual) time, through the + * `now()` getter method. + * + * Each unit of work in a Scheduler is called an {@link Action}. + * + * ```ts + * class Scheduler { + * now(): number; + * schedule(work, delay?, state?): Subscription; + * } + * ``` + * + * @class Scheduler + */ +export class Scheduler { + constructor(SchedulerAction, now = Scheduler.now) { + this.SchedulerAction = SchedulerAction; + this.now = now; + } + /** + * Schedules a function, `work`, for execution. May happen at some point in + * the future, according to the `delay` parameter, if specified. May be passed + * some context object, `state`, which will be passed to the `work` function. + * + * The given arguments will be processed an stored as an Action object in a + * queue of actions. + * + * @param {function(state: ?T): ?Subscription} work A function representing a + * task, or some unit of work to be executed by the Scheduler. + * @param {number} [delay] Time to wait before executing the work, where the + * time unit is implicit and defined by the Scheduler itself. + * @param {T} [state] Some contextual data that the `work` function uses when + * called by the Scheduler. + * @return {Subscription} A subscription in order to be able to unsubscribe + * the scheduled work. + */ + schedule(work, delay = 0, state) { + return new this.SchedulerAction(this, work).schedule(state, delay); + } +} +Scheduler.now = Date.now ? Date.now : () => +new Date(); +//# sourceMappingURL=Scheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Scheduler.js.map b/node_modules/rxjs/_esm2015/Scheduler.js.map new file mode 100644 index 0000000..e02e8a7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Scheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../src/Scheduler.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;GAeG;AACH;IAIE,YAAoB,eAA8B,EACtC,GAAG,GAAiB,SAAS,CAAC,GAAG;QADzB,oBAAe,GAAf,eAAe,CAAe;QAEhD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAYD;;;;;;;;;;;;;;;;OAgBG;IACI,QAAQ,CAAI,IAA0C,EAAE,KAAK,GAAW,CAAC,EAAE,KAAS;QACzF,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AArCe,aAAG,GAAiB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAqC1E"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subject.js b/node_modules/rxjs/_esm2015/Subject.js new file mode 100644 index 0000000..dade0f5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subject.js @@ -0,0 +1,153 @@ +import { Observable } from './Observable'; +import { Subscriber } from './Subscriber'; +import { Subscription } from './Subscription'; +import { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError'; +import { SubjectSubscription } from './SubjectSubscription'; +import { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber'; +/** + * @class SubjectSubscriber + */ +export class SubjectSubscriber extends Subscriber { + constructor(destination) { + super(destination); + this.destination = destination; + } +} +/** + * @class Subject + */ +export class Subject extends Observable { + constructor() { + super(); + this.observers = []; + this.closed = false; + this.isStopped = false; + this.hasError = false; + this.thrownError = null; + } + [rxSubscriberSymbol]() { + return new SubjectSubscriber(this); + } + lift(operator) { + const subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + } + next(value) { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + if (!this.isStopped) { + const { observers } = this; + const len = observers.length; + const copy = observers.slice(); + for (let i = 0; i < len; i++) { + copy[i].next(value); + } + } + } + error(err) { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + this.hasError = true; + this.thrownError = err; + this.isStopped = true; + const { observers } = this; + const len = observers.length; + const copy = observers.slice(); + for (let i = 0; i < len; i++) { + copy[i].error(err); + } + this.observers.length = 0; + } + complete() { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + this.isStopped = true; + const { observers } = this; + const len = observers.length; + const copy = observers.slice(); + for (let i = 0; i < len; i++) { + copy[i].complete(); + } + this.observers.length = 0; + } + unsubscribe() { + this.isStopped = true; + this.closed = true; + this.observers = null; + } + _trySubscribe(subscriber) { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + else { + return super._trySubscribe(subscriber); + } + } + /** @deprecated internal use only */ _subscribe(subscriber) { + if (this.closed) { + throw new ObjectUnsubscribedError(); + } + else if (this.hasError) { + subscriber.error(this.thrownError); + return Subscription.EMPTY; + } + else if (this.isStopped) { + subscriber.complete(); + return Subscription.EMPTY; + } + else { + this.observers.push(subscriber); + return new SubjectSubscription(this, subscriber); + } + } + asObservable() { + const observable = new Observable(); + observable.source = this; + return observable; + } +} +Subject.create = (destination, source) => { + return new AnonymousSubject(destination, source); +}; +/** + * @class AnonymousSubject + */ +export class AnonymousSubject extends Subject { + constructor(destination, source) { + super(); + this.destination = destination; + this.source = source; + } + next(value) { + const { destination } = this; + if (destination && destination.next) { + destination.next(value); + } + } + error(err) { + const { destination } = this; + if (destination && destination.error) { + this.destination.error(err); + } + } + complete() { + const { destination } = this; + if (destination && destination.complete) { + this.destination.complete(); + } + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const { source } = this; + if (source) { + return this.source.subscribe(subscriber); + } + else { + return Subscription.EMPTY; + } + } +} +//# sourceMappingURL=Subject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subject.js.map b/node_modules/rxjs/_esm2015/Subject.js.map new file mode 100644 index 0000000..9a245d7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subject.js","sourceRoot":"","sources":["../src/Subject.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/SubjectSubscription.js b/node_modules/rxjs/_esm2015/SubjectSubscription.js new file mode 100644 index 0000000..7687174 --- /dev/null +++ b/node_modules/rxjs/_esm2015/SubjectSubscription.js @@ -0,0 +1,31 @@ +import { Subscription } from './Subscription'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class SubjectSubscription extends Subscription { + constructor(subject, subscriber) { + super(); + this.subject = subject; + this.subscriber = subscriber; + this.closed = false; + } + unsubscribe() { + if (this.closed) { + return; + } + this.closed = true; + const subject = this.subject; + const observers = subject.observers; + this.subject = null; + if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { + return; + } + const subscriberIndex = observers.indexOf(this.subscriber); + if (subscriberIndex !== -1) { + observers.splice(subscriberIndex, 1); + } + } +} +//# sourceMappingURL=SubjectSubscription.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/SubjectSubscription.js.map b/node_modules/rxjs/_esm2015/SubjectSubscription.js.map new file mode 100644 index 0000000..2f93eed --- /dev/null +++ b/node_modules/rxjs/_esm2015/SubjectSubscription.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SubjectSubscription.js","sourceRoot":"","sources":["../src/SubjectSubscription.ts"],"names":[],"mappings":"OAEO,EAAE,YAAY,EAAE,MAAM,gBAAgB;AAE7C;;;;GAIG;AACH,yCAA4C,YAAY;IAGtD,YAAmB,OAAmB,EAAS,UAAuB;QACpE,OAAO,CAAC;QADS,YAAO,GAAP,OAAO,CAAY;QAAS,eAAU,GAAV,UAAU,CAAa;QAFtE,WAAM,GAAY,KAAK,CAAC;IAIxB,CAAC;IAED,WAAW;QACT,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC;QACT,CAAC;QAED,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,EAAE,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subscriber.js b/node_modules/rxjs/_esm2015/Subscriber.js new file mode 100644 index 0000000..e6468ff --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subscriber.js @@ -0,0 +1,259 @@ +import { isFunction } from './util/isFunction'; +import { Subscription } from './Subscription'; +import { empty as emptyObserver } from './Observer'; +import { rxSubscriber as rxSubscriberSymbol } from './symbol/rxSubscriber'; +/** + * Implements the {@link Observer} interface and extends the + * {@link Subscription} class. While the {@link Observer} is the public API for + * consuming the values of an {@link Observable}, all Observers get converted to + * a Subscriber, in order to provide Subscription-like capabilities such as + * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for + * implementing operators, but it is rarely used as a public API. + * + * @class Subscriber + */ +export class Subscriber extends Subscription { + /** + * @param {Observer|function(value: T): void} [destinationOrNext] A partially + * defined Observer or a `next` callback function. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + */ + constructor(destinationOrNext, error, complete) { + super(); + this.syncErrorValue = null; + this.syncErrorThrown = false; + this.syncErrorThrowable = false; + this.isStopped = false; + switch (arguments.length) { + case 0: + this.destination = emptyObserver; + break; + case 1: + if (!destinationOrNext) { + this.destination = emptyObserver; + break; + } + if (typeof destinationOrNext === 'object') { + // HACK(benlesh): To resolve an issue where Node users may have multiple + // copies of rxjs in their node_modules directory. + if (isTrustedSubscriber(destinationOrNext)) { + const trustedSubscriber = destinationOrNext[rxSubscriberSymbol](); + this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable; + this.destination = trustedSubscriber; + trustedSubscriber.add(this); + } + else { + this.syncErrorThrowable = true; + this.destination = new SafeSubscriber(this, destinationOrNext); + } + break; + } + default: + this.syncErrorThrowable = true; + this.destination = new SafeSubscriber(this, destinationOrNext, error, complete); + break; + } + } + [rxSubscriberSymbol]() { return this; } + /** + * A static factory for a Subscriber, given a (potentially partial) definition + * of an Observer. + * @param {function(x: ?T): void} [next] The `next` callback of an Observer. + * @param {function(e: ?any): void} [error] The `error` callback of an + * Observer. + * @param {function(): void} [complete] The `complete` callback of an + * Observer. + * @return {Subscriber} A Subscriber wrapping the (partially defined) + * Observer represented by the given arguments. + */ + static create(next, error, complete) { + const subscriber = new Subscriber(next, error, complete); + subscriber.syncErrorThrowable = false; + return subscriber; + } + /** + * The {@link Observer} callback to receive notifications of type `next` from + * the Observable, with a value. The Observable may call this method 0 or more + * times. + * @param {T} [value] The `next` value. + * @return {void} + */ + next(value) { + if (!this.isStopped) { + this._next(value); + } + } + /** + * The {@link Observer} callback to receive notifications of type `error` from + * the Observable, with an attached {@link Error}. Notifies the Observer that + * the Observable has experienced an error condition. + * @param {any} [err] The `error` exception. + * @return {void} + */ + error(err) { + if (!this.isStopped) { + this.isStopped = true; + this._error(err); + } + } + /** + * The {@link Observer} callback to receive a valueless notification of type + * `complete` from the Observable. Notifies the Observer that the Observable + * has finished sending push-based notifications. + * @return {void} + */ + complete() { + if (!this.isStopped) { + this.isStopped = true; + this._complete(); + } + } + unsubscribe() { + if (this.closed) { + return; + } + this.isStopped = true; + super.unsubscribe(); + } + _next(value) { + this.destination.next(value); + } + _error(err) { + this.destination.error(err); + this.unsubscribe(); + } + _complete() { + this.destination.complete(); + this.unsubscribe(); + } + /** @deprecated internal use only */ _unsubscribeAndRecycle() { + const { _parent, _parents } = this; + this._parent = null; + this._parents = null; + this.unsubscribe(); + this.closed = false; + this.isStopped = false; + this._parent = _parent; + this._parents = _parents; + return this; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SafeSubscriber extends Subscriber { + constructor(_parentSubscriber, observerOrNext, error, complete) { + super(); + this._parentSubscriber = _parentSubscriber; + let next; + let context = this; + if (isFunction(observerOrNext)) { + next = observerOrNext; + } + else if (observerOrNext) { + next = observerOrNext.next; + error = observerOrNext.error; + complete = observerOrNext.complete; + if (observerOrNext !== emptyObserver) { + context = Object.create(observerOrNext); + if (isFunction(context.unsubscribe)) { + this.add(context.unsubscribe.bind(context)); + } + context.unsubscribe = this.unsubscribe.bind(this); + } + } + this._context = context; + this._next = next; + this._error = error; + this._complete = complete; + } + next(value) { + if (!this.isStopped && this._next) { + const { _parentSubscriber } = this; + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._next, value); + } + else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { + this.unsubscribe(); + } + } + } + error(err) { + if (!this.isStopped) { + const { _parentSubscriber } = this; + if (this._error) { + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._error, err); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, this._error, err); + this.unsubscribe(); + } + } + else if (!_parentSubscriber.syncErrorThrowable) { + this.unsubscribe(); + throw err; + } + else { + _parentSubscriber.syncErrorValue = err; + _parentSubscriber.syncErrorThrown = true; + this.unsubscribe(); + } + } + } + complete() { + if (!this.isStopped) { + const { _parentSubscriber } = this; + if (this._complete) { + const wrappedComplete = () => this._complete.call(this._context); + if (!_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(wrappedComplete); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, wrappedComplete); + this.unsubscribe(); + } + } + else { + this.unsubscribe(); + } + } + } + __tryOrUnsub(fn, value) { + try { + fn.call(this._context, value); + } + catch (err) { + this.unsubscribe(); + throw err; + } + } + __tryOrSetError(parent, fn, value) { + try { + fn.call(this._context, value); + } + catch (err) { + parent.syncErrorValue = err; + parent.syncErrorThrown = true; + return true; + } + return false; + } + /** @deprecated internal use only */ _unsubscribe() { + const { _parentSubscriber } = this; + this._context = null; + this._parentSubscriber = null; + _parentSubscriber.unsubscribe(); + } +} +function isTrustedSubscriber(obj) { + return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriberSymbol]); +} +//# sourceMappingURL=Subscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subscriber.js.map b/node_modules/rxjs/_esm2015/Subscriber.js.map new file mode 100644 index 0000000..7ba8572 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subscriber.js","sourceRoot":"","sources":["../src/Subscriber.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subscription.js b/node_modules/rxjs/_esm2015/Subscription.js new file mode 100644 index 0000000..9752ef8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subscription.js @@ -0,0 +1,190 @@ +import { isArray } from './util/isArray'; +import { isObject } from './util/isObject'; +import { isFunction } from './util/isFunction'; +import { tryCatch } from './util/tryCatch'; +import { errorObject } from './util/errorObject'; +import { UnsubscriptionError } from './util/UnsubscriptionError'; +/** + * Represents a disposable resource, such as the execution of an Observable. A + * Subscription has one important method, `unsubscribe`, that takes no argument + * and just disposes the resource held by the subscription. + * + * Additionally, subscriptions may be grouped together through the `add()` + * method, which will attach a child Subscription to the current Subscription. + * When a Subscription is unsubscribed, all its children (and its grandchildren) + * will be unsubscribed as well. + * + * @class Subscription + */ +export class Subscription { + /** + * @param {function(): void} [unsubscribe] A function describing how to + * perform the disposal of resources when the `unsubscribe` method is called. + */ + constructor(unsubscribe) { + /** + * A flag to indicate whether this Subscription has already been unsubscribed. + * @type {boolean} + */ + this.closed = false; + this._parent = null; + this._parents = null; + this._subscriptions = null; + if (unsubscribe) { + this._unsubscribe = unsubscribe; + } + } + /** + * Disposes the resources held by the subscription. May, for instance, cancel + * an ongoing Observable execution or cancel any other type of work that + * started when the Subscription was created. + * @return {void} + */ + unsubscribe() { + let hasErrors = false; + let errors; + if (this.closed) { + return; + } + let { _parent, _parents, _unsubscribe, _subscriptions } = this; + this.closed = true; + this._parent = null; + this._parents = null; + // null out _subscriptions first so any child subscriptions that attempt + // to remove themselves from this subscription will noop + this._subscriptions = null; + let index = -1; + let len = _parents ? _parents.length : 0; + // if this._parent is null, then so is this._parents, and we + // don't have to remove ourselves from any parent subscriptions. + while (_parent) { + _parent.remove(this); + // if this._parents is null or index >= len, + // then _parent is set to null, and the loop exits + _parent = ++index < len && _parents[index] || null; + } + if (isFunction(_unsubscribe)) { + let trial = tryCatch(_unsubscribe).call(this); + if (trial === errorObject) { + hasErrors = true; + errors = errors || (errorObject.e instanceof UnsubscriptionError ? + flattenUnsubscriptionErrors(errorObject.e.errors) : [errorObject.e]); + } + } + if (isArray(_subscriptions)) { + index = -1; + len = _subscriptions.length; + while (++index < len) { + const sub = _subscriptions[index]; + if (isObject(sub)) { + let trial = tryCatch(sub.unsubscribe).call(sub); + if (trial === errorObject) { + hasErrors = true; + errors = errors || []; + let err = errorObject.e; + if (err instanceof UnsubscriptionError) { + errors = errors.concat(flattenUnsubscriptionErrors(err.errors)); + } + else { + errors.push(err); + } + } + } + } + } + if (hasErrors) { + throw new UnsubscriptionError(errors); + } + } + /** + * Adds a tear down to be called during the unsubscribe() of this + * Subscription. + * + * If the tear down being added is a subscription that is already + * unsubscribed, is the same reference `add` is being called on, or is + * `Subscription.EMPTY`, it will not be added. + * + * If this subscription is already in an `closed` state, the passed + * tear down logic will be executed immediately. + * + * @param {TeardownLogic} teardown The additional logic to execute on + * teardown. + * @return {Subscription} Returns the Subscription used or created to be + * added to the inner subscriptions list. This Subscription can be used with + * `remove()` to remove the passed teardown logic from the inner subscriptions + * list. + */ + add(teardown) { + if (!teardown || (teardown === Subscription.EMPTY)) { + return Subscription.EMPTY; + } + if (teardown === this) { + return this; + } + let subscription = teardown; + switch (typeof teardown) { + case 'function': + subscription = new Subscription(teardown); + case 'object': + if (subscription.closed || typeof subscription.unsubscribe !== 'function') { + return subscription; + } + else if (this.closed) { + subscription.unsubscribe(); + return subscription; + } + else if (typeof subscription._addParent !== 'function' /* quack quack */) { + const tmp = subscription; + subscription = new Subscription(); + subscription._subscriptions = [tmp]; + } + break; + default: + throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); + } + const subscriptions = this._subscriptions || (this._subscriptions = []); + subscriptions.push(subscription); + subscription._addParent(this); + return subscription; + } + /** + * Removes a Subscription from the internal list of subscriptions that will + * unsubscribe during the unsubscribe process of this Subscription. + * @param {Subscription} subscription The subscription to remove. + * @return {void} + */ + remove(subscription) { + const subscriptions = this._subscriptions; + if (subscriptions) { + const subscriptionIndex = subscriptions.indexOf(subscription); + if (subscriptionIndex !== -1) { + subscriptions.splice(subscriptionIndex, 1); + } + } + } + _addParent(parent) { + let { _parent, _parents } = this; + if (!_parent || _parent === parent) { + // If we don't have a parent, or the new parent is the same as the + // current parent, then set this._parent to the new parent. + this._parent = parent; + } + else if (!_parents) { + // If there's already one parent, but not multiple, allocate an Array to + // store the rest of the parent Subscriptions. + this._parents = [parent]; + } + else if (_parents.indexOf(parent) === -1) { + // Only add the new parent to the _parents list if it's not already there. + _parents.push(parent); + } + } +} +Subscription.EMPTY = (function (empty) { + empty.closed = true; + return empty; +}(new Subscription())); +function flattenUnsubscriptionErrors(errors) { + return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []); +} +//# sourceMappingURL=Subscription.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/Subscription.js.map b/node_modules/rxjs/_esm2015/Subscription.js.map new file mode 100644 index 0000000..903318e --- /dev/null +++ b/node_modules/rxjs/_esm2015/Subscription.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Subscription.js","sourceRoot":"","sources":["../src/Subscription.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/bindCallback.js b/node_modules/rxjs/_esm2015/add/observable/bindCallback.js new file mode 100644 index 0000000..0f1db94 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/bindCallback.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bindCallback as staticBindCallback } from '../../observable/bindCallback'; +Observable.bindCallback = staticBindCallback; +//# sourceMappingURL=bindCallback.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/bindCallback.js.map b/node_modules/rxjs/_esm2015/add/observable/bindCallback.js.map new file mode 100644 index 0000000..356b47e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/bindCallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bindCallback.js","sourceRoot":"","sources":["../../../src/add/observable/bindCallback.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,+BAA+B;AAElF,UAAU,CAAC,YAAY,GAAG,kBAAkB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js b/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js new file mode 100644 index 0000000..2b1e47e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bindNodeCallback as staticBindNodeCallback } from '../../observable/bindNodeCallback'; +Observable.bindNodeCallback = staticBindNodeCallback; +//# sourceMappingURL=bindNodeCallback.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js.map b/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js.map new file mode 100644 index 0000000..1e4b0a2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/bindNodeCallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bindNodeCallback.js","sourceRoot":"","sources":["../../../src/add/observable/bindNodeCallback.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,mCAAmC;AAE9F,UAAU,CAAC,gBAAgB,GAAG,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/combineLatest.js b/node_modules/rxjs/_esm2015/add/observable/combineLatest.js new file mode 100644 index 0000000..39b7bc0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/combineLatest.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { combineLatest as combineLatestStatic } from '../../observable/combineLatest'; +Observable.combineLatest = combineLatestStatic; +//# sourceMappingURL=combineLatest.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/combineLatest.js.map b/node_modules/rxjs/_esm2015/add/observable/combineLatest.js.map new file mode 100644 index 0000000..adf36f0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/combineLatest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineLatest.js","sourceRoot":"","sources":["../../../src/add/observable/combineLatest.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,gCAAgC;AAErF,UAAU,CAAC,aAAa,GAAG,mBAAmB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/concat.js b/node_modules/rxjs/_esm2015/add/observable/concat.js new file mode 100644 index 0000000..3fbd22f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/concat.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { concat as concatStatic } from '../../observable/concat'; +Observable.concat = concatStatic; +//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/concat.js.map b/node_modules/rxjs/_esm2015/add/observable/concat.js.map new file mode 100644 index 0000000..cb03509 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/concat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../../src/add/observable/concat.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,yBAAyB;AAEhE,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/defer.js b/node_modules/rxjs/_esm2015/add/observable/defer.js new file mode 100644 index 0000000..eeaf67d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/defer.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { defer as staticDefer } from '../../observable/defer'; +Observable.defer = staticDefer; +//# sourceMappingURL=defer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/defer.js.map b/node_modules/rxjs/_esm2015/add/observable/defer.js.map new file mode 100644 index 0000000..39bdc56 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/defer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defer.js","sourceRoot":"","sources":["../../../src/add/observable/defer.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js b/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js new file mode 100644 index 0000000..2417493 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js @@ -0,0 +1,4 @@ +import { Observable } from '../../../Observable'; +import { ajax as staticAjax } from '../../../observable/dom/ajax'; +Observable.ajax = staticAjax; +//# sourceMappingURL=ajax.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js.map b/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js.map new file mode 100644 index 0000000..b1a72fc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/dom/ajax.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ajax.js","sourceRoot":"","sources":["../../../../src/add/observable/dom/ajax.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB;OACzC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,8BAA8B;AAGjE,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js b/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js new file mode 100644 index 0000000..acd4cf0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js @@ -0,0 +1,4 @@ +import { Observable } from '../../../Observable'; +import { webSocket as staticWebSocket } from '../../../observable/dom/webSocket'; +Observable.webSocket = staticWebSocket; +//# sourceMappingURL=webSocket.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js.map b/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js.map new file mode 100644 index 0000000..c57fcff --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/dom/webSocket.js.map @@ -0,0 +1 @@ +{"version":3,"file":"webSocket.js","sourceRoot":"","sources":["../../../../src/add/observable/dom/webSocket.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB;OACzC,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,mCAAmC;AAEhF,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/empty.js b/node_modules/rxjs/_esm2015/add/observable/empty.js new file mode 100644 index 0000000..b19ba02 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/empty.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { empty as staticEmpty } from '../../observable/empty'; +Observable.empty = staticEmpty; +//# sourceMappingURL=empty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/empty.js.map b/node_modules/rxjs/_esm2015/add/observable/empty.js.map new file mode 100644 index 0000000..f7e8ba6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/empty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../src/add/observable/empty.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/forkJoin.js b/node_modules/rxjs/_esm2015/add/observable/forkJoin.js new file mode 100644 index 0000000..77162a1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/forkJoin.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { forkJoin as staticForkJoin } from '../../observable/forkJoin'; +Observable.forkJoin = staticForkJoin; +//# sourceMappingURL=forkJoin.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/forkJoin.js.map b/node_modules/rxjs/_esm2015/add/observable/forkJoin.js.map new file mode 100644 index 0000000..8ced0a5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/forkJoin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"forkJoin.js","sourceRoot":"","sources":["../../../src/add/observable/forkJoin.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,2BAA2B;AAEtE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/from.js b/node_modules/rxjs/_esm2015/add/observable/from.js new file mode 100644 index 0000000..c13211d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/from.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { from as staticFrom } from '../../observable/from'; +Observable.from = staticFrom; +//# sourceMappingURL=from.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/from.js.map b/node_modules/rxjs/_esm2015/add/observable/from.js.map new file mode 100644 index 0000000..1c72bc2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/from.js.map @@ -0,0 +1 @@ +{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/add/observable/from.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,uBAAuB;AAE1D,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromEvent.js b/node_modules/rxjs/_esm2015/add/observable/fromEvent.js new file mode 100644 index 0000000..2ab5efa --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromEvent.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { fromEvent as staticFromEvent } from '../../observable/fromEvent'; +Observable.fromEvent = staticFromEvent; +//# sourceMappingURL=fromEvent.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromEvent.js.map b/node_modules/rxjs/_esm2015/add/observable/fromEvent.js.map new file mode 100644 index 0000000..cf5ee49 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromEvent.js","sourceRoot":"","sources":["../../../src/add/observable/fromEvent.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,4BAA4B;AAEzE,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js b/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js new file mode 100644 index 0000000..35205b5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { fromEventPattern as staticFromEventPattern } from '../../observable/fromEventPattern'; +Observable.fromEventPattern = staticFromEventPattern; +//# sourceMappingURL=fromEventPattern.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js.map b/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js.map new file mode 100644 index 0000000..47ea597 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromEventPattern.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromEventPattern.js","sourceRoot":"","sources":["../../../src/add/observable/fromEventPattern.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,mCAAmC;AAE9F,UAAU,CAAC,gBAAgB,GAAG,sBAAsB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromPromise.js b/node_modules/rxjs/_esm2015/add/observable/fromPromise.js new file mode 100644 index 0000000..166b5e4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromPromise.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { fromPromise as staticFromPromise } from '../../observable/fromPromise'; +Observable.fromPromise = staticFromPromise; +//# sourceMappingURL=fromPromise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/fromPromise.js.map b/node_modules/rxjs/_esm2015/add/observable/fromPromise.js.map new file mode 100644 index 0000000..3901e0a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/fromPromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromPromise.js","sourceRoot":"","sources":["../../../src/add/observable/fromPromise.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,8BAA8B;AAE/E,UAAU,CAAC,WAAW,GAAG,iBAAiB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/generate.js b/node_modules/rxjs/_esm2015/add/observable/generate.js new file mode 100644 index 0000000..c2ecc29 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/generate.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { generate as staticGenerate } from '../../observable/generate'; +Observable.generate = staticGenerate; +//# sourceMappingURL=generate.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/generate.js.map b/node_modules/rxjs/_esm2015/add/observable/generate.js.map new file mode 100644 index 0000000..4fbe347 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/generate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/add/observable/generate.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,2BAA2B;AAEtE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/if.js b/node_modules/rxjs/_esm2015/add/observable/if.js new file mode 100644 index 0000000..bf4da93 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/if.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { _if } from '../../observable/if'; +Observable.if = _if; +//# sourceMappingURL=if.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/if.js.map b/node_modules/rxjs/_esm2015/add/observable/if.js.map new file mode 100644 index 0000000..8b2343f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/if.js.map @@ -0,0 +1 @@ +{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../src/add/observable/if.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,EAAE,MAAM,qBAAqB;AAEzC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/interval.js b/node_modules/rxjs/_esm2015/add/observable/interval.js new file mode 100644 index 0000000..df4048e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/interval.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { interval as staticInterval } from '../../observable/interval'; +Observable.interval = staticInterval; +//# sourceMappingURL=interval.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/interval.js.map b/node_modules/rxjs/_esm2015/add/observable/interval.js.map new file mode 100644 index 0000000..06684f8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/interval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interval.js","sourceRoot":"","sources":["../../../src/add/observable/interval.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,2BAA2B;AAEtE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/merge.js b/node_modules/rxjs/_esm2015/add/observable/merge.js new file mode 100644 index 0000000..1e846dd --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/merge.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { merge as mergeStatic } from '../../observable/merge'; +Observable.merge = mergeStatic; +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/merge.js.map b/node_modules/rxjs/_esm2015/add/observable/merge.js.map new file mode 100644 index 0000000..c592cad --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/add/observable/merge.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/never.js b/node_modules/rxjs/_esm2015/add/observable/never.js new file mode 100644 index 0000000..e44cfa0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/never.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { never as staticNever } from '../../observable/never'; +Observable.never = staticNever; +//# sourceMappingURL=never.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/never.js.map b/node_modules/rxjs/_esm2015/add/observable/never.js.map new file mode 100644 index 0000000..5e139d5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/never.js.map @@ -0,0 +1 @@ +{"version":3,"file":"never.js","sourceRoot":"","sources":["../../../src/add/observable/never.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/of.js b/node_modules/rxjs/_esm2015/add/observable/of.js new file mode 100644 index 0000000..267d9bb --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/of.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { of as staticOf } from '../../observable/of'; +Observable.of = staticOf; +//# sourceMappingURL=of.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/of.js.map b/node_modules/rxjs/_esm2015/add/observable/of.js.map new file mode 100644 index 0000000..37b7c88 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/of.js.map @@ -0,0 +1 @@ +{"version":3,"file":"of.js","sourceRoot":"","sources":["../../../src/add/observable/of.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,EAAE,IAAI,QAAQ,EAAE,MAAM,qBAAqB;AAEpD,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js b/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js new file mode 100644 index 0000000..a2b8b29 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { onErrorResumeNext as staticOnErrorResumeNext } from '../../observable/onErrorResumeNext'; +Observable.onErrorResumeNext = staticOnErrorResumeNext; +//# sourceMappingURL=onErrorResumeNext.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js.map b/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js.map new file mode 100644 index 0000000..af74b57 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/onErrorResumeNext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onErrorResumeNext.js","sourceRoot":"","sources":["../../../src/add/observable/onErrorResumeNext.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,oCAAoC;AAEjG,UAAU,CAAC,iBAAiB,GAAG,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/pairs.js b/node_modules/rxjs/_esm2015/add/observable/pairs.js new file mode 100644 index 0000000..5654a6c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/pairs.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { pairs as staticPairs } from '../../observable/pairs'; +Observable.pairs = staticPairs; +//# sourceMappingURL=pairs.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/pairs.js.map b/node_modules/rxjs/_esm2015/add/observable/pairs.js.map new file mode 100644 index 0000000..2a046c8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/pairs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../../../src/add/observable/pairs.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/race.js b/node_modules/rxjs/_esm2015/add/observable/race.js new file mode 100644 index 0000000..dc8e858 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/race.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { race as staticRace } from '../../observable/race'; +Observable.race = staticRace; +//# sourceMappingURL=race.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/race.js.map b/node_modules/rxjs/_esm2015/add/observable/race.js.map new file mode 100644 index 0000000..e9daf89 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/race.js.map @@ -0,0 +1 @@ +{"version":3,"file":"race.js","sourceRoot":"","sources":["../../../src/add/observable/race.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,uBAAuB;AAE1D,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/range.js b/node_modules/rxjs/_esm2015/add/observable/range.js new file mode 100644 index 0000000..3967d03 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/range.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { range as staticRange } from '../../observable/range'; +Observable.range = staticRange; +//# sourceMappingURL=range.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/range.js.map b/node_modules/rxjs/_esm2015/add/observable/range.js.map new file mode 100644 index 0000000..a0fb132 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/range.js.map @@ -0,0 +1 @@ +{"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/add/observable/range.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/throw.js b/node_modules/rxjs/_esm2015/add/observable/throw.js new file mode 100644 index 0000000..aedfe47 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/throw.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { _throw } from '../../observable/throw'; +Observable.throw = _throw; +//# sourceMappingURL=throw.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/throw.js.map b/node_modules/rxjs/_esm2015/add/observable/throw.js.map new file mode 100644 index 0000000..b08cdd4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/throw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../src/add/observable/throw.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,wBAAwB;AAE/C,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/timer.js b/node_modules/rxjs/_esm2015/add/observable/timer.js new file mode 100644 index 0000000..b8ca5f0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/timer.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { timer as staticTimer } from '../../observable/timer'; +Observable.timer = staticTimer; +//# sourceMappingURL=timer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/timer.js.map b/node_modules/rxjs/_esm2015/add/observable/timer.js.map new file mode 100644 index 0000000..0996c0d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/timer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/add/observable/timer.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/using.js b/node_modules/rxjs/_esm2015/add/observable/using.js new file mode 100644 index 0000000..f54e091 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/using.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { using as staticUsing } from '../../observable/using'; +Observable.using = staticUsing; +//# sourceMappingURL=using.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/using.js.map b/node_modules/rxjs/_esm2015/add/observable/using.js.map new file mode 100644 index 0000000..a4d7ecf --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/using.js.map @@ -0,0 +1 @@ +{"version":3,"file":"using.js","sourceRoot":"","sources":["../../../src/add/observable/using.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAE7D,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/zip.js b/node_modules/rxjs/_esm2015/add/observable/zip.js new file mode 100644 index 0000000..9cb6660 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/zip.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { zip as zipStatic } from '../../observable/zip'; +Observable.zip = zipStatic; +//# sourceMappingURL=zip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/observable/zip.js.map b/node_modules/rxjs/_esm2015/add/observable/zip.js.map new file mode 100644 index 0000000..3e75ebf --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/observable/zip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../../src/add/observable/zip.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,IAAI,SAAS,EAAE,MAAM,sBAAsB;AAEvD,UAAU,CAAC,GAAG,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/audit.js b/node_modules/rxjs/_esm2015/add/operator/audit.js new file mode 100644 index 0000000..5f14e30 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/audit.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { audit } from '../../operator/audit'; +Observable.prototype.audit = audit; +//# sourceMappingURL=audit.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/audit.js.map b/node_modules/rxjs/_esm2015/add/operator/audit.js.map new file mode 100644 index 0000000..b7b430d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/audit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/add/operator/audit.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/auditTime.js b/node_modules/rxjs/_esm2015/add/operator/auditTime.js new file mode 100644 index 0000000..91ed2df --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/auditTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { auditTime } from '../../operator/auditTime'; +Observable.prototype.auditTime = auditTime; +//# sourceMappingURL=auditTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/auditTime.js.map b/node_modules/rxjs/_esm2015/add/operator/auditTime.js.map new file mode 100644 index 0000000..2732e3a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/auditTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auditTime.js","sourceRoot":"","sources":["../../../src/add/operator/auditTime.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/buffer.js b/node_modules/rxjs/_esm2015/add/operator/buffer.js new file mode 100644 index 0000000..91a0b10 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/buffer.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { buffer } from '../../operator/buffer'; +Observable.prototype.buffer = buffer; +//# sourceMappingURL=buffer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/buffer.js.map b/node_modules/rxjs/_esm2015/add/operator/buffer.js.map new file mode 100644 index 0000000..d591739 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/add/operator/buffer.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferCount.js b/node_modules/rxjs/_esm2015/add/operator/bufferCount.js new file mode 100644 index 0000000..d833752 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferCount.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bufferCount } from '../../operator/bufferCount'; +Observable.prototype.bufferCount = bufferCount; +//# sourceMappingURL=bufferCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferCount.js.map b/node_modules/rxjs/_esm2015/add/operator/bufferCount.js.map new file mode 100644 index 0000000..a84b6dc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferCount.js","sourceRoot":"","sources":["../../../src/add/operator/bufferCount.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferTime.js b/node_modules/rxjs/_esm2015/add/operator/bufferTime.js new file mode 100644 index 0000000..6415f04 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bufferTime } from '../../operator/bufferTime'; +Observable.prototype.bufferTime = bufferTime; +//# sourceMappingURL=bufferTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferTime.js.map b/node_modules/rxjs/_esm2015/add/operator/bufferTime.js.map new file mode 100644 index 0000000..eeadbae --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferTime.js","sourceRoot":"","sources":["../../../src/add/operator/bufferTime.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js b/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js new file mode 100644 index 0000000..5ff022c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bufferToggle } from '../../operator/bufferToggle'; +Observable.prototype.bufferToggle = bufferToggle; +//# sourceMappingURL=bufferToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js.map b/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js.map new file mode 100644 index 0000000..e9bc07b --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferToggle.js","sourceRoot":"","sources":["../../../src/add/operator/bufferToggle.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,EAAE,MAAM,6BAA6B;AAE1D,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js b/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js new file mode 100644 index 0000000..d54c9d9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { bufferWhen } from '../../operator/bufferWhen'; +Observable.prototype.bufferWhen = bufferWhen; +//# sourceMappingURL=bufferWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js.map b/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js.map new file mode 100644 index 0000000..3f7f840 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/bufferWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferWhen.js","sourceRoot":"","sources":["../../../src/add/operator/bufferWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/catch.js b/node_modules/rxjs/_esm2015/add/operator/catch.js new file mode 100644 index 0000000..16fa04f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/catch.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { _catch } from '../../operator/catch'; +Observable.prototype.catch = _catch; +Observable.prototype._catch = _catch; +//# sourceMappingURL=catch.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/catch.js.map b/node_modules/rxjs/_esm2015/add/operator/catch.js.map new file mode 100644 index 0000000..1c9bad8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/catch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"catch.js","sourceRoot":"","sources":["../../../src/add/operator/catch.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,sBAAsB;AAE7C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC;AACpC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/combineAll.js b/node_modules/rxjs/_esm2015/add/operator/combineAll.js new file mode 100644 index 0000000..a04f4a0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/combineAll.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { combineAll } from '../../operator/combineAll'; +Observable.prototype.combineAll = combineAll; +//# sourceMappingURL=combineAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/combineAll.js.map b/node_modules/rxjs/_esm2015/add/operator/combineAll.js.map new file mode 100644 index 0000000..9bb75f1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/combineAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineAll.js","sourceRoot":"","sources":["../../../src/add/operator/combineAll.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/combineLatest.js b/node_modules/rxjs/_esm2015/add/operator/combineLatest.js new file mode 100644 index 0000000..a9442d9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/combineLatest.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { combineLatest } from '../../operator/combineLatest'; +Observable.prototype.combineLatest = combineLatest; +//# sourceMappingURL=combineLatest.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/combineLatest.js.map b/node_modules/rxjs/_esm2015/add/operator/combineLatest.js.map new file mode 100644 index 0000000..3806d7e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/combineLatest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineLatest.js","sourceRoot":"","sources":["../../../src/add/operator/combineLatest.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,aAAa,EAAE,MAAM,8BAA8B;AAE5D,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concat.js b/node_modules/rxjs/_esm2015/add/operator/concat.js new file mode 100644 index 0000000..5c2b6e4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concat.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { concat } from '../../operator/concat'; +Observable.prototype.concat = concat; +//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concat.js.map b/node_modules/rxjs/_esm2015/add/operator/concat.js.map new file mode 100644 index 0000000..277d7d4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../../src/add/operator/concat.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatAll.js b/node_modules/rxjs/_esm2015/add/operator/concatAll.js new file mode 100644 index 0000000..5bfbce5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatAll.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { concatAll } from '../../operator/concatAll'; +Observable.prototype.concatAll = concatAll; +//# sourceMappingURL=concatAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatAll.js.map b/node_modules/rxjs/_esm2015/add/operator/concatAll.js.map new file mode 100644 index 0000000..0539708 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatAll.js","sourceRoot":"","sources":["../../../src/add/operator/concatAll.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatMap.js b/node_modules/rxjs/_esm2015/add/operator/concatMap.js new file mode 100644 index 0000000..297bc07 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatMap.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { concatMap } from '../../operator/concatMap'; +Observable.prototype.concatMap = concatMap; +//# sourceMappingURL=concatMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatMap.js.map b/node_modules/rxjs/_esm2015/add/operator/concatMap.js.map new file mode 100644 index 0000000..40af13f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMap.js","sourceRoot":"","sources":["../../../src/add/operator/concatMap.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js b/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js new file mode 100644 index 0000000..c92f243 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { concatMapTo } from '../../operator/concatMapTo'; +Observable.prototype.concatMapTo = concatMapTo; +//# sourceMappingURL=concatMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js.map b/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js.map new file mode 100644 index 0000000..83d6345 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/concatMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMapTo.js","sourceRoot":"","sources":["../../../src/add/operator/concatMapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/count.js b/node_modules/rxjs/_esm2015/add/operator/count.js new file mode 100644 index 0000000..1d353e8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/count.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { count } from '../../operator/count'; +Observable.prototype.count = count; +//# sourceMappingURL=count.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/count.js.map b/node_modules/rxjs/_esm2015/add/operator/count.js.map new file mode 100644 index 0000000..e21cbb8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/count.js.map @@ -0,0 +1 @@ +{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../src/add/operator/count.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/debounce.js b/node_modules/rxjs/_esm2015/add/operator/debounce.js new file mode 100644 index 0000000..fa7a575 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/debounce.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { debounce } from '../../operator/debounce'; +Observable.prototype.debounce = debounce; +//# sourceMappingURL=debounce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/debounce.js.map b/node_modules/rxjs/_esm2015/add/operator/debounce.js.map new file mode 100644 index 0000000..eb8da46 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/debounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../../src/add/operator/debounce.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/debounceTime.js b/node_modules/rxjs/_esm2015/add/operator/debounceTime.js new file mode 100644 index 0000000..946dad9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/debounceTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { debounceTime } from '../../operator/debounceTime'; +Observable.prototype.debounceTime = debounceTime; +//# sourceMappingURL=debounceTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/debounceTime.js.map b/node_modules/rxjs/_esm2015/add/operator/debounceTime.js.map new file mode 100644 index 0000000..901a4aa --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/debounceTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounceTime.js","sourceRoot":"","sources":["../../../src/add/operator/debounceTime.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,EAAE,MAAM,6BAA6B;AAE1D,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js b/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js new file mode 100644 index 0000000..8b3a128 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { defaultIfEmpty } from '../../operator/defaultIfEmpty'; +Observable.prototype.defaultIfEmpty = defaultIfEmpty; +//# sourceMappingURL=defaultIfEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js.map b/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js.map new file mode 100644 index 0000000..fc748ed --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/defaultIfEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaultIfEmpty.js","sourceRoot":"","sources":["../../../src/add/operator/defaultIfEmpty.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,cAAc,EAAE,MAAM,+BAA+B;AAE9D,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/delay.js b/node_modules/rxjs/_esm2015/add/operator/delay.js new file mode 100644 index 0000000..e135a67 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/delay.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { delay } from '../../operator/delay'; +Observable.prototype.delay = delay; +//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/delay.js.map b/node_modules/rxjs/_esm2015/add/operator/delay.js.map new file mode 100644 index 0000000..e591a59 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/delay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../../src/add/operator/delay.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/delayWhen.js b/node_modules/rxjs/_esm2015/add/operator/delayWhen.js new file mode 100644 index 0000000..8cd8cbe --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/delayWhen.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { delayWhen } from '../../operator/delayWhen'; +Observable.prototype.delayWhen = delayWhen; +//# sourceMappingURL=delayWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/delayWhen.js.map b/node_modules/rxjs/_esm2015/add/operator/delayWhen.js.map new file mode 100644 index 0000000..18ea4d7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/delayWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delayWhen.js","sourceRoot":"","sources":["../../../src/add/operator/delayWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/dematerialize.js b/node_modules/rxjs/_esm2015/add/operator/dematerialize.js new file mode 100644 index 0000000..75ad79e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/dematerialize.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { dematerialize } from '../../operator/dematerialize'; +Observable.prototype.dematerialize = dematerialize; +//# sourceMappingURL=dematerialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/dematerialize.js.map b/node_modules/rxjs/_esm2015/add/operator/dematerialize.js.map new file mode 100644 index 0000000..07eb8bc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/dematerialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dematerialize.js","sourceRoot":"","sources":["../../../src/add/operator/dematerialize.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,aAAa,EAAE,MAAM,8BAA8B;AAE5D,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinct.js b/node_modules/rxjs/_esm2015/add/operator/distinct.js new file mode 100644 index 0000000..f1ac2f3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinct.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { distinct } from '../../operator/distinct'; +Observable.prototype.distinct = distinct; +//# sourceMappingURL=distinct.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinct.js.map b/node_modules/rxjs/_esm2015/add/operator/distinct.js.map new file mode 100644 index 0000000..fd1daac --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinct.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../../src/add/operator/distinct.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js b/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js new file mode 100644 index 0000000..617fe3a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { distinctUntilChanged } from '../../operator/distinctUntilChanged'; +Observable.prototype.distinctUntilChanged = distinctUntilChanged; +//# sourceMappingURL=distinctUntilChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js.map b/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js.map new file mode 100644 index 0000000..c3154a8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinctUntilChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilChanged.js","sourceRoot":"","sources":["../../../src/add/operator/distinctUntilChanged.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,oBAAoB,EAAE,MAAM,qCAAqC;AAE1E,UAAU,CAAC,SAAS,CAAC,oBAAoB,GAAG,oBAAoB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js b/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js new file mode 100644 index 0000000..dbb12a6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { distinctUntilKeyChanged } from '../../operator/distinctUntilKeyChanged'; +Observable.prototype.distinctUntilKeyChanged = distinctUntilKeyChanged; +//# sourceMappingURL=distinctUntilKeyChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js.map b/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js.map new file mode 100644 index 0000000..12228a7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/distinctUntilKeyChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilKeyChanged.js","sourceRoot":"","sources":["../../../src/add/operator/distinctUntilKeyChanged.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,uBAAuB,EAAE,MAAM,wCAAwC;AAEhF,UAAU,CAAC,SAAS,CAAC,uBAAuB,GAAG,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/do.js b/node_modules/rxjs/_esm2015/add/operator/do.js new file mode 100644 index 0000000..a4e5266 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/do.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { _do } from '../../operator/do'; +Observable.prototype.do = _do; +Observable.prototype._do = _do; +//# sourceMappingURL=do.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/do.js.map b/node_modules/rxjs/_esm2015/add/operator/do.js.map new file mode 100644 index 0000000..fe50770 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/do.js.map @@ -0,0 +1 @@ +{"version":3,"file":"do.js","sourceRoot":"","sources":["../../../src/add/operator/do.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,EAAE,MAAM,mBAAmB;AAEvC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AAC9B,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/elementAt.js b/node_modules/rxjs/_esm2015/add/operator/elementAt.js new file mode 100644 index 0000000..9995e37 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/elementAt.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { elementAt } from '../../operator/elementAt'; +Observable.prototype.elementAt = elementAt; +//# sourceMappingURL=elementAt.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/elementAt.js.map b/node_modules/rxjs/_esm2015/add/operator/elementAt.js.map new file mode 100644 index 0000000..531f6cb --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/elementAt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"elementAt.js","sourceRoot":"","sources":["../../../src/add/operator/elementAt.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/every.js b/node_modules/rxjs/_esm2015/add/operator/every.js new file mode 100644 index 0000000..a5b95f8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/every.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { every } from '../../operator/every'; +Observable.prototype.every = every; +//# sourceMappingURL=every.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/every.js.map b/node_modules/rxjs/_esm2015/add/operator/every.js.map new file mode 100644 index 0000000..548ff57 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/every.js.map @@ -0,0 +1 @@ +{"version":3,"file":"every.js","sourceRoot":"","sources":["../../../src/add/operator/every.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/exhaust.js b/node_modules/rxjs/_esm2015/add/operator/exhaust.js new file mode 100644 index 0000000..29c03e1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/exhaust.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { exhaust } from '../../operator/exhaust'; +Observable.prototype.exhaust = exhaust; +//# sourceMappingURL=exhaust.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/exhaust.js.map b/node_modules/rxjs/_esm2015/add/operator/exhaust.js.map new file mode 100644 index 0000000..fcd4564 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/exhaust.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaust.js","sourceRoot":"","sources":["../../../src/add/operator/exhaust.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js b/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js new file mode 100644 index 0000000..988ed28 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { exhaustMap } from '../../operator/exhaustMap'; +Observable.prototype.exhaustMap = exhaustMap; +//# sourceMappingURL=exhaustMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js.map b/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js.map new file mode 100644 index 0000000..0268bb1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/exhaustMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../../../src/add/operator/exhaustMap.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/expand.js b/node_modules/rxjs/_esm2015/add/operator/expand.js new file mode 100644 index 0000000..31ee76e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/expand.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { expand } from '../../operator/expand'; +Observable.prototype.expand = expand; +//# sourceMappingURL=expand.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/expand.js.map b/node_modules/rxjs/_esm2015/add/operator/expand.js.map new file mode 100644 index 0000000..6439cef --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/expand.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../../src/add/operator/expand.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/filter.js b/node_modules/rxjs/_esm2015/add/operator/filter.js new file mode 100644 index 0000000..09e71d3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/filter.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { filter } from '../../operator/filter'; +Observable.prototype.filter = filter; +//# sourceMappingURL=filter.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/filter.js.map b/node_modules/rxjs/_esm2015/add/operator/filter.js.map new file mode 100644 index 0000000..adcf585 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/add/operator/filter.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/finally.js b/node_modules/rxjs/_esm2015/add/operator/finally.js new file mode 100644 index 0000000..b37b947 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/finally.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { _finally } from '../../operator/finally'; +Observable.prototype.finally = _finally; +Observable.prototype._finally = _finally; +//# sourceMappingURL=finally.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/finally.js.map b/node_modules/rxjs/_esm2015/add/operator/finally.js.map new file mode 100644 index 0000000..b6a0514 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/finally.js.map @@ -0,0 +1 @@ +{"version":3,"file":"finally.js","sourceRoot":"","sources":["../../../src/add/operator/finally.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,wBAAwB;AAEjD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;AACxC,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/find.js b/node_modules/rxjs/_esm2015/add/operator/find.js new file mode 100644 index 0000000..41d5eab --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/find.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { find } from '../../operator/find'; +Observable.prototype.find = find; +//# sourceMappingURL=find.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/find.js.map b/node_modules/rxjs/_esm2015/add/operator/find.js.map new file mode 100644 index 0000000..643b75a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/find.js.map @@ -0,0 +1 @@ +{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/add/operator/find.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/findIndex.js b/node_modules/rxjs/_esm2015/add/operator/findIndex.js new file mode 100644 index 0000000..a985ad7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/findIndex.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { findIndex } from '../../operator/findIndex'; +Observable.prototype.findIndex = findIndex; +//# sourceMappingURL=findIndex.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/findIndex.js.map b/node_modules/rxjs/_esm2015/add/operator/findIndex.js.map new file mode 100644 index 0000000..0f3c5e4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/findIndex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findIndex.js","sourceRoot":"","sources":["../../../src/add/operator/findIndex.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/first.js b/node_modules/rxjs/_esm2015/add/operator/first.js new file mode 100644 index 0000000..d8cf6f9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/first.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { first } from '../../operator/first'; +Observable.prototype.first = first; +//# sourceMappingURL=first.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/first.js.map b/node_modules/rxjs/_esm2015/add/operator/first.js.map new file mode 100644 index 0000000..2558027 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/first.js.map @@ -0,0 +1 @@ +{"version":3,"file":"first.js","sourceRoot":"","sources":["../../../src/add/operator/first.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAQ,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/groupBy.js b/node_modules/rxjs/_esm2015/add/operator/groupBy.js new file mode 100644 index 0000000..2ff1a19 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/groupBy.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { groupBy } from '../../operator/groupBy'; +Observable.prototype.groupBy = groupBy; +//# sourceMappingURL=groupBy.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/groupBy.js.map b/node_modules/rxjs/_esm2015/add/operator/groupBy.js.map new file mode 100644 index 0000000..8fa90b3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/groupBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"groupBy.js","sourceRoot":"","sources":["../../../src/add/operator/groupBy.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAQ,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js b/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js new file mode 100644 index 0000000..949c7ef --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { ignoreElements } from '../../operator/ignoreElements'; +Observable.prototype.ignoreElements = ignoreElements; +//# sourceMappingURL=ignoreElements.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js.map b/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js.map new file mode 100644 index 0000000..bce942d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/ignoreElements.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ignoreElements.js","sourceRoot":"","sources":["../../../src/add/operator/ignoreElements.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,cAAc,EAAE,MAAM,+BAA+B;AAE9D,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/isEmpty.js b/node_modules/rxjs/_esm2015/add/operator/isEmpty.js new file mode 100644 index 0000000..83b57e5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/isEmpty.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { isEmpty } from '../../operator/isEmpty'; +Observable.prototype.isEmpty = isEmpty; +//# sourceMappingURL=isEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/isEmpty.js.map b/node_modules/rxjs/_esm2015/add/operator/isEmpty.js.map new file mode 100644 index 0000000..b1ba63b --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/isEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../../src/add/operator/isEmpty.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/last.js b/node_modules/rxjs/_esm2015/add/operator/last.js new file mode 100644 index 0000000..5df19c2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/last.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { last } from '../../operator/last'; +Observable.prototype.last = last; +//# sourceMappingURL=last.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/last.js.map b/node_modules/rxjs/_esm2015/add/operator/last.js.map new file mode 100644 index 0000000..0a3f7d2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/last.js.map @@ -0,0 +1 @@ +{"version":3,"file":"last.js","sourceRoot":"","sources":["../../../src/add/operator/last.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAQ,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/let.js b/node_modules/rxjs/_esm2015/add/operator/let.js new file mode 100644 index 0000000..fb39068 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/let.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { letProto } from '../../operator/let'; +Observable.prototype.let = letProto; +Observable.prototype.letBind = letProto; +//# sourceMappingURL=let.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/let.js.map b/node_modules/rxjs/_esm2015/add/operator/let.js.map new file mode 100644 index 0000000..0255712 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/let.js.map @@ -0,0 +1 @@ +{"version":3,"file":"let.js","sourceRoot":"","sources":["../../../src/add/operator/let.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,oBAAoB;AAE7C,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AACpC,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/map.js b/node_modules/rxjs/_esm2015/add/operator/map.js new file mode 100644 index 0000000..029a540 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/map.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { map } from '../../operator/map'; +Observable.prototype.map = map; +//# sourceMappingURL=map.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/map.js.map b/node_modules/rxjs/_esm2015/add/operator/map.js.map new file mode 100644 index 0000000..c0272be --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/map.js.map @@ -0,0 +1 @@ +{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/add/operator/map.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,EAAE,MAAM,oBAAoB;AAExC,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mapTo.js b/node_modules/rxjs/_esm2015/add/operator/mapTo.js new file mode 100644 index 0000000..b4db0c8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mapTo.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { mapTo } from '../../operator/mapTo'; +Observable.prototype.mapTo = mapTo; +//# sourceMappingURL=mapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mapTo.js.map b/node_modules/rxjs/_esm2015/add/operator/mapTo.js.map new file mode 100644 index 0000000..af985e5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapTo.js","sourceRoot":"","sources":["../../../src/add/operator/mapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/materialize.js b/node_modules/rxjs/_esm2015/add/operator/materialize.js new file mode 100644 index 0000000..2fe29e3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/materialize.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { materialize } from '../../operator/materialize'; +Observable.prototype.materialize = materialize; +//# sourceMappingURL=materialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/materialize.js.map b/node_modules/rxjs/_esm2015/add/operator/materialize.js.map new file mode 100644 index 0000000..cf39a9d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/materialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../../src/add/operator/materialize.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/max.js b/node_modules/rxjs/_esm2015/add/operator/max.js new file mode 100644 index 0000000..20d430c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/max.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { max } from '../../operator/max'; +Observable.prototype.max = max; +//# sourceMappingURL=max.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/max.js.map b/node_modules/rxjs/_esm2015/add/operator/max.js.map new file mode 100644 index 0000000..53ff69d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"max.js","sourceRoot":"","sources":["../../../src/add/operator/max.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,EAAE,MAAM,oBAAoB;AAExC,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/merge.js b/node_modules/rxjs/_esm2015/add/operator/merge.js new file mode 100644 index 0000000..0c03896 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/merge.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { merge } from '../../operator/merge'; +Observable.prototype.merge = merge; +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/merge.js.map b/node_modules/rxjs/_esm2015/add/operator/merge.js.map new file mode 100644 index 0000000..980477e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/add/operator/merge.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeAll.js b/node_modules/rxjs/_esm2015/add/operator/mergeAll.js new file mode 100644 index 0000000..3608a75 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeAll.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { mergeAll } from '../../operator/mergeAll'; +Observable.prototype.mergeAll = mergeAll; +//# sourceMappingURL=mergeAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeAll.js.map b/node_modules/rxjs/_esm2015/add/operator/mergeAll.js.map new file mode 100644 index 0000000..b73e09e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeAll.js","sourceRoot":"","sources":["../../../src/add/operator/mergeAll.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeMap.js b/node_modules/rxjs/_esm2015/add/operator/mergeMap.js new file mode 100644 index 0000000..081b529 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeMap.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { mergeMap } from '../../operator/mergeMap'; +Observable.prototype.mergeMap = mergeMap; +Observable.prototype.flatMap = mergeMap; +//# sourceMappingURL=mergeMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeMap.js.map b/node_modules/rxjs/_esm2015/add/operator/mergeMap.js.map new file mode 100644 index 0000000..bbe2e51 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMap.js","sourceRoot":"","sources":["../../../src/add/operator/mergeMap.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAQ,QAAQ,CAAC;AAC9C,UAAU,CAAC,SAAS,CAAC,OAAO,GAAQ,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js b/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js new file mode 100644 index 0000000..f01b21f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { mergeMapTo } from '../../operator/mergeMapTo'; +Observable.prototype.flatMapTo = mergeMapTo; +Observable.prototype.mergeMapTo = mergeMapTo; +//# sourceMappingURL=mergeMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js.map b/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js.map new file mode 100644 index 0000000..964d9ec --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMapTo.js","sourceRoot":"","sources":["../../../src/add/operator/mergeMapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAQ,UAAU,CAAC;AACjD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAQ,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeScan.js b/node_modules/rxjs/_esm2015/add/operator/mergeScan.js new file mode 100644 index 0000000..f815aa0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeScan.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { mergeScan } from '../../operator/mergeScan'; +Observable.prototype.mergeScan = mergeScan; +//# sourceMappingURL=mergeScan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/mergeScan.js.map b/node_modules/rxjs/_esm2015/add/operator/mergeScan.js.map new file mode 100644 index 0000000..e236742 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/mergeScan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeScan.js","sourceRoot":"","sources":["../../../src/add/operator/mergeScan.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/min.js b/node_modules/rxjs/_esm2015/add/operator/min.js new file mode 100644 index 0000000..710fd78 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/min.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { min } from '../../operator/min'; +Observable.prototype.min = min; +//# sourceMappingURL=min.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/min.js.map b/node_modules/rxjs/_esm2015/add/operator/min.js.map new file mode 100644 index 0000000..53a518e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"min.js","sourceRoot":"","sources":["../../../src/add/operator/min.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,GAAG,EAAE,MAAM,oBAAoB;AAExC,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/multicast.js b/node_modules/rxjs/_esm2015/add/operator/multicast.js new file mode 100644 index 0000000..5073d13 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/multicast.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { multicast } from '../../operator/multicast'; +Observable.prototype.multicast = multicast; +//# sourceMappingURL=multicast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/multicast.js.map b/node_modules/rxjs/_esm2015/add/operator/multicast.js.map new file mode 100644 index 0000000..86c6813 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/multicast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../../../src/add/operator/multicast.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAQ,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/observeOn.js b/node_modules/rxjs/_esm2015/add/operator/observeOn.js new file mode 100644 index 0000000..244e0fa --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/observeOn.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { observeOn } from '../../operator/observeOn'; +Observable.prototype.observeOn = observeOn; +//# sourceMappingURL=observeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/observeOn.js.map b/node_modules/rxjs/_esm2015/add/operator/observeOn.js.map new file mode 100644 index 0000000..50d3637 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/observeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"observeOn.js","sourceRoot":"","sources":["../../../src/add/operator/observeOn.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js b/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js new file mode 100644 index 0000000..0bf1e0d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { onErrorResumeNext } from '../../operator/onErrorResumeNext'; +Observable.prototype.onErrorResumeNext = onErrorResumeNext; +//# sourceMappingURL=onErrorResumeNext.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js.map b/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js.map new file mode 100644 index 0000000..afbddc9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/onErrorResumeNext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onErrorResumeNext.js","sourceRoot":"","sources":["../../../src/add/operator/onErrorResumeNext.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,iBAAiB,EAAE,MAAM,kCAAkC;AAEpE,UAAU,CAAC,SAAS,CAAC,iBAAiB,GAAG,iBAAiB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/pairwise.js b/node_modules/rxjs/_esm2015/add/operator/pairwise.js new file mode 100644 index 0000000..05b9e9f --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/pairwise.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { pairwise } from '../../operator/pairwise'; +Observable.prototype.pairwise = pairwise; +//# sourceMappingURL=pairwise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/pairwise.js.map b/node_modules/rxjs/_esm2015/add/operator/pairwise.js.map new file mode 100644 index 0000000..f1c7cbc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/pairwise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../../../src/add/operator/pairwise.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/partition.js b/node_modules/rxjs/_esm2015/add/operator/partition.js new file mode 100644 index 0000000..827741e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/partition.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { partition } from '../../operator/partition'; +Observable.prototype.partition = partition; +//# sourceMappingURL=partition.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/partition.js.map b/node_modules/rxjs/_esm2015/add/operator/partition.js.map new file mode 100644 index 0000000..9b034d9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/partition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"partition.js","sourceRoot":"","sources":["../../../src/add/operator/partition.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/pluck.js b/node_modules/rxjs/_esm2015/add/operator/pluck.js new file mode 100644 index 0000000..3c93abe --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/pluck.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { pluck } from '../../operator/pluck'; +Observable.prototype.pluck = pluck; +//# sourceMappingURL=pluck.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/pluck.js.map b/node_modules/rxjs/_esm2015/add/operator/pluck.js.map new file mode 100644 index 0000000..f1e3293 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/pluck.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pluck.js","sourceRoot":"","sources":["../../../src/add/operator/pluck.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publish.js b/node_modules/rxjs/_esm2015/add/operator/publish.js new file mode 100644 index 0000000..d3a06e0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publish.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { publish } from '../../operator/publish'; +Observable.prototype.publish = publish; +//# sourceMappingURL=publish.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publish.js.map b/node_modules/rxjs/_esm2015/add/operator/publish.js.map new file mode 100644 index 0000000..18753cb --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publish.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/add/operator/publish.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAQ,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js b/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js new file mode 100644 index 0000000..7555f4a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { publishBehavior } from '../../operator/publishBehavior'; +Observable.prototype.publishBehavior = publishBehavior; +//# sourceMappingURL=publishBehavior.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js.map b/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js.map new file mode 100644 index 0000000..2bb0c42 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishBehavior.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishBehavior.js","sourceRoot":"","sources":["../../../src/add/operator/publishBehavior.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,eAAe,EAAE,MAAM,gCAAgC;AAEhE,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishLast.js b/node_modules/rxjs/_esm2015/add/operator/publishLast.js new file mode 100644 index 0000000..df2fd38 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishLast.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { publishLast } from '../../operator/publishLast'; +Observable.prototype.publishLast = publishLast; +//# sourceMappingURL=publishLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishLast.js.map b/node_modules/rxjs/_esm2015/add/operator/publishLast.js.map new file mode 100644 index 0000000..fd2cfbc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishLast.js","sourceRoot":"","sources":["../../../src/add/operator/publishLast.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishReplay.js b/node_modules/rxjs/_esm2015/add/operator/publishReplay.js new file mode 100644 index 0000000..8807d12 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishReplay.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { publishReplay } from '../../operator/publishReplay'; +Observable.prototype.publishReplay = publishReplay; +//# sourceMappingURL=publishReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/publishReplay.js.map b/node_modules/rxjs/_esm2015/add/operator/publishReplay.js.map new file mode 100644 index 0000000..68fc501 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/publishReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishReplay.js","sourceRoot":"","sources":["../../../src/add/operator/publishReplay.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,aAAa,EAAE,MAAM,8BAA8B;AAE5D,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/race.js b/node_modules/rxjs/_esm2015/add/operator/race.js new file mode 100644 index 0000000..ec19848 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/race.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { race } from '../../operator/race'; +Observable.prototype.race = race; +//# sourceMappingURL=race.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/race.js.map b/node_modules/rxjs/_esm2015/add/operator/race.js.map new file mode 100644 index 0000000..e6cf7ea --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/race.js.map @@ -0,0 +1 @@ +{"version":3,"file":"race.js","sourceRoot":"","sources":["../../../src/add/operator/race.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/reduce.js b/node_modules/rxjs/_esm2015/add/operator/reduce.js new file mode 100644 index 0000000..897690d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/reduce.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { reduce } from '../../operator/reduce'; +Observable.prototype.reduce = reduce; +//# sourceMappingURL=reduce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/reduce.js.map b/node_modules/rxjs/_esm2015/add/operator/reduce.js.map new file mode 100644 index 0000000..b6585dc --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/reduce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../../src/add/operator/reduce.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/repeat.js b/node_modules/rxjs/_esm2015/add/operator/repeat.js new file mode 100644 index 0000000..c0dbbb0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/repeat.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { repeat } from '../../operator/repeat'; +Observable.prototype.repeat = repeat; +//# sourceMappingURL=repeat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/repeat.js.map b/node_modules/rxjs/_esm2015/add/operator/repeat.js.map new file mode 100644 index 0000000..bcdbe76 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/repeat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../../src/add/operator/repeat.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js b/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js new file mode 100644 index 0000000..6942635 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { repeatWhen } from '../../operator/repeatWhen'; +Observable.prototype.repeatWhen = repeatWhen; +//# sourceMappingURL=repeatWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js.map b/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js.map new file mode 100644 index 0000000..ed4e662 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/repeatWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeatWhen.js","sourceRoot":"","sources":["../../../src/add/operator/repeatWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/retry.js b/node_modules/rxjs/_esm2015/add/operator/retry.js new file mode 100644 index 0000000..13c4f11 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/retry.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { retry } from '../../operator/retry'; +Observable.prototype.retry = retry; +//# sourceMappingURL=retry.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/retry.js.map b/node_modules/rxjs/_esm2015/add/operator/retry.js.map new file mode 100644 index 0000000..7fcabbf --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/retry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/add/operator/retry.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/retryWhen.js b/node_modules/rxjs/_esm2015/add/operator/retryWhen.js new file mode 100644 index 0000000..7fee774 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/retryWhen.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { retryWhen } from '../../operator/retryWhen'; +Observable.prototype.retryWhen = retryWhen; +//# sourceMappingURL=retryWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/retryWhen.js.map b/node_modules/rxjs/_esm2015/add/operator/retryWhen.js.map new file mode 100644 index 0000000..76e6ed7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/retryWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retryWhen.js","sourceRoot":"","sources":["../../../src/add/operator/retryWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sample.js b/node_modules/rxjs/_esm2015/add/operator/sample.js new file mode 100644 index 0000000..ca78e32 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sample.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { sample } from '../../operator/sample'; +Observable.prototype.sample = sample; +//# sourceMappingURL=sample.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sample.js.map b/node_modules/rxjs/_esm2015/add/operator/sample.js.map new file mode 100644 index 0000000..79e0a68 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sample.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/add/operator/sample.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sampleTime.js b/node_modules/rxjs/_esm2015/add/operator/sampleTime.js new file mode 100644 index 0000000..53abf88 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sampleTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { sampleTime } from '../../operator/sampleTime'; +Observable.prototype.sampleTime = sampleTime; +//# sourceMappingURL=sampleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sampleTime.js.map b/node_modules/rxjs/_esm2015/add/operator/sampleTime.js.map new file mode 100644 index 0000000..e102b73 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sampleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sampleTime.js","sourceRoot":"","sources":["../../../src/add/operator/sampleTime.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/scan.js b/node_modules/rxjs/_esm2015/add/operator/scan.js new file mode 100644 index 0000000..651e18c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/scan.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { scan } from '../../operator/scan'; +Observable.prototype.scan = scan; +//# sourceMappingURL=scan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/scan.js.map b/node_modules/rxjs/_esm2015/add/operator/scan.js.map new file mode 100644 index 0000000..7c1fe66 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/scan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/add/operator/scan.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OAEtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js b/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js new file mode 100644 index 0000000..2582117 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { sequenceEqual } from '../../operator/sequenceEqual'; +Observable.prototype.sequenceEqual = sequenceEqual; +//# sourceMappingURL=sequenceEqual.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js.map b/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js.map new file mode 100644 index 0000000..a3de597 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/sequenceEqual.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sequenceEqual.js","sourceRoot":"","sources":["../../../src/add/operator/sequenceEqual.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,aAAa,EAAE,MAAM,8BAA8B;AAE5D,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/share.js b/node_modules/rxjs/_esm2015/add/operator/share.js new file mode 100644 index 0000000..83a639d --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/share.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { share } from '../../operator/share'; +Observable.prototype.share = share; +//# sourceMappingURL=share.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/share.js.map b/node_modules/rxjs/_esm2015/add/operator/share.js.map new file mode 100644 index 0000000..540b9ec --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/share.js.map @@ -0,0 +1 @@ +{"version":3,"file":"share.js","sourceRoot":"","sources":["../../../src/add/operator/share.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,KAAK,EAAE,MAAM,sBAAsB;AAE5C,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/shareReplay.js b/node_modules/rxjs/_esm2015/add/operator/shareReplay.js new file mode 100644 index 0000000..afa8c00 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/shareReplay.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { shareReplay } from '../../operator/shareReplay'; +Observable.prototype.shareReplay = shareReplay; +//# sourceMappingURL=shareReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/shareReplay.js.map b/node_modules/rxjs/_esm2015/add/operator/shareReplay.js.map new file mode 100644 index 0000000..fe8aadf --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/shareReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shareReplay.js","sourceRoot":"","sources":["../../../src/add/operator/shareReplay.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/single.js b/node_modules/rxjs/_esm2015/add/operator/single.js new file mode 100644 index 0000000..05eb212 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/single.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { single } from '../../operator/single'; +Observable.prototype.single = single; +//# sourceMappingURL=single.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/single.js.map b/node_modules/rxjs/_esm2015/add/operator/single.js.map new file mode 100644 index 0000000..0218f7b --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/single.js.map @@ -0,0 +1 @@ +{"version":3,"file":"single.js","sourceRoot":"","sources":["../../../src/add/operator/single.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skip.js b/node_modules/rxjs/_esm2015/add/operator/skip.js new file mode 100644 index 0000000..47b3da9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skip.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { skip } from '../../operator/skip'; +Observable.prototype.skip = skip; +//# sourceMappingURL=skip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skip.js.map b/node_modules/rxjs/_esm2015/add/operator/skip.js.map new file mode 100644 index 0000000..8e76fde --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skip.js","sourceRoot":"","sources":["../../../src/add/operator/skip.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipLast.js b/node_modules/rxjs/_esm2015/add/operator/skipLast.js new file mode 100644 index 0000000..d634402 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipLast.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { skipLast } from '../../operator/skipLast'; +Observable.prototype.skipLast = skipLast; +//# sourceMappingURL=skipLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipLast.js.map b/node_modules/rxjs/_esm2015/add/operator/skipLast.js.map new file mode 100644 index 0000000..d654de9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipLast.js","sourceRoot":"","sources":["../../../src/add/operator/skipLast.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipUntil.js b/node_modules/rxjs/_esm2015/add/operator/skipUntil.js new file mode 100644 index 0000000..a40bf41 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipUntil.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { skipUntil } from '../../operator/skipUntil'; +Observable.prototype.skipUntil = skipUntil; +//# sourceMappingURL=skipUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipUntil.js.map b/node_modules/rxjs/_esm2015/add/operator/skipUntil.js.map new file mode 100644 index 0000000..1241bcd --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipUntil.js","sourceRoot":"","sources":["../../../src/add/operator/skipUntil.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipWhile.js b/node_modules/rxjs/_esm2015/add/operator/skipWhile.js new file mode 100644 index 0000000..7888238 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipWhile.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { skipWhile } from '../../operator/skipWhile'; +Observable.prototype.skipWhile = skipWhile; +//# sourceMappingURL=skipWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/skipWhile.js.map b/node_modules/rxjs/_esm2015/add/operator/skipWhile.js.map new file mode 100644 index 0000000..4df3927 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/skipWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipWhile.js","sourceRoot":"","sources":["../../../src/add/operator/skipWhile.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/startWith.js b/node_modules/rxjs/_esm2015/add/operator/startWith.js new file mode 100644 index 0000000..25fecef --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/startWith.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { startWith } from '../../operator/startWith'; +Observable.prototype.startWith = startWith; +//# sourceMappingURL=startWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/startWith.js.map b/node_modules/rxjs/_esm2015/add/operator/startWith.js.map new file mode 100644 index 0000000..fecea09 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/startWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"startWith.js","sourceRoot":"","sources":["../../../src/add/operator/startWith.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js b/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js new file mode 100644 index 0000000..0d8a75e --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { subscribeOn } from '../../operator/subscribeOn'; +Observable.prototype.subscribeOn = subscribeOn; +//# sourceMappingURL=subscribeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js.map b/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js.map new file mode 100644 index 0000000..ef7b25b --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/subscribeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"subscribeOn.js","sourceRoot":"","sources":["../../../src/add/operator/subscribeOn.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switch.js b/node_modules/rxjs/_esm2015/add/operator/switch.js new file mode 100644 index 0000000..02b02ef --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switch.js @@ -0,0 +1,5 @@ +import { Observable } from '../../Observable'; +import { _switch } from '../../operator/switch'; +Observable.prototype.switch = _switch; +Observable.prototype._switch = _switch; +//# sourceMappingURL=switch.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switch.js.map b/node_modules/rxjs/_esm2015/add/operator/switch.js.map new file mode 100644 index 0000000..3d42bd6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/add/operator/switch.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,uBAAuB;AAE/C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;AACtC,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switchMap.js b/node_modules/rxjs/_esm2015/add/operator/switchMap.js new file mode 100644 index 0000000..7dc5024 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switchMap.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { switchMap } from '../../operator/switchMap'; +Observable.prototype.switchMap = switchMap; +//# sourceMappingURL=switchMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switchMap.js.map b/node_modules/rxjs/_esm2015/add/operator/switchMap.js.map new file mode 100644 index 0000000..d738a94 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switchMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../../src/add/operator/switchMap.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js b/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js new file mode 100644 index 0000000..c4042be --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { switchMapTo } from '../../operator/switchMapTo'; +Observable.prototype.switchMapTo = switchMapTo; +//# sourceMappingURL=switchMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js.map b/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js.map new file mode 100644 index 0000000..bd5af83 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/switchMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMapTo.js","sourceRoot":"","sources":["../../../src/add/operator/switchMapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/take.js b/node_modules/rxjs/_esm2015/add/operator/take.js new file mode 100644 index 0000000..e8bac3a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/take.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { take } from '../../operator/take'; +Observable.prototype.take = take; +//# sourceMappingURL=take.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/take.js.map b/node_modules/rxjs/_esm2015/add/operator/take.js.map new file mode 100644 index 0000000..b9236de --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/take.js.map @@ -0,0 +1 @@ +{"version":3,"file":"take.js","sourceRoot":"","sources":["../../../src/add/operator/take.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,IAAI,EAAE,MAAM,qBAAqB;AAE1C,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeLast.js b/node_modules/rxjs/_esm2015/add/operator/takeLast.js new file mode 100644 index 0000000..6e6e5d9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeLast.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { takeLast } from '../../operator/takeLast'; +Observable.prototype.takeLast = takeLast; +//# sourceMappingURL=takeLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeLast.js.map b/node_modules/rxjs/_esm2015/add/operator/takeLast.js.map new file mode 100644 index 0000000..6aa0e22 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeLast.js","sourceRoot":"","sources":["../../../src/add/operator/takeLast.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeUntil.js b/node_modules/rxjs/_esm2015/add/operator/takeUntil.js new file mode 100644 index 0000000..a30c3d2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeUntil.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { takeUntil } from '../../operator/takeUntil'; +Observable.prototype.takeUntil = takeUntil; +//# sourceMappingURL=takeUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeUntil.js.map b/node_modules/rxjs/_esm2015/add/operator/takeUntil.js.map new file mode 100644 index 0000000..d73bb55 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeUntil.js","sourceRoot":"","sources":["../../../src/add/operator/takeUntil.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeWhile.js b/node_modules/rxjs/_esm2015/add/operator/takeWhile.js new file mode 100644 index 0000000..6fbd622 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeWhile.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { takeWhile } from '../../operator/takeWhile'; +Observable.prototype.takeWhile = takeWhile; +//# sourceMappingURL=takeWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/takeWhile.js.map b/node_modules/rxjs/_esm2015/add/operator/takeWhile.js.map new file mode 100644 index 0000000..36c3f0a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/takeWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeWhile.js","sourceRoot":"","sources":["../../../src/add/operator/takeWhile.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/throttle.js b/node_modules/rxjs/_esm2015/add/operator/throttle.js new file mode 100644 index 0000000..59854a0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/throttle.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { throttle } from '../../operator/throttle'; +Observable.prototype.throttle = throttle; +//# sourceMappingURL=throttle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/throttle.js.map b/node_modules/rxjs/_esm2015/add/operator/throttle.js.map new file mode 100644 index 0000000..760b105 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/throttle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/add/operator/throttle.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,yBAAyB;AAElD,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/throttleTime.js b/node_modules/rxjs/_esm2015/add/operator/throttleTime.js new file mode 100644 index 0000000..857a4f1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/throttleTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { throttleTime } from '../../operator/throttleTime'; +Observable.prototype.throttleTime = throttleTime; +//# sourceMappingURL=throttleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/throttleTime.js.map b/node_modules/rxjs/_esm2015/add/operator/throttleTime.js.map new file mode 100644 index 0000000..b94a392 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/throttleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttleTime.js","sourceRoot":"","sources":["../../../src/add/operator/throttleTime.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,EAAE,MAAM,6BAA6B;AAE1D,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeInterval.js b/node_modules/rxjs/_esm2015/add/operator/timeInterval.js new file mode 100644 index 0000000..421255c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeInterval.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { timeInterval } from '../../operator/timeInterval'; +Observable.prototype.timeInterval = timeInterval; +//# sourceMappingURL=timeInterval.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeInterval.js.map b/node_modules/rxjs/_esm2015/add/operator/timeInterval.js.map new file mode 100644 index 0000000..cb3b85a --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeInterval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeInterval.js","sourceRoot":"","sources":["../../../src/add/operator/timeInterval.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,EAAE,MAAM,6BAA6B;AAE1D,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeout.js b/node_modules/rxjs/_esm2015/add/operator/timeout.js new file mode 100644 index 0000000..93a9a35 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeout.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { timeout } from '../../operator/timeout'; +Observable.prototype.timeout = timeout; +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeout.js.map b/node_modules/rxjs/_esm2015/add/operator/timeout.js.map new file mode 100644 index 0000000..19b0e0b --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../src/add/operator/timeout.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js b/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js new file mode 100644 index 0000000..6748156 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { timeoutWith } from '../../operator/timeoutWith'; +Observable.prototype.timeoutWith = timeoutWith; +//# sourceMappingURL=timeoutWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js.map b/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js.map new file mode 100644 index 0000000..86ed148 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timeoutWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeoutWith.js","sourceRoot":"","sources":["../../../src/add/operator/timeoutWith.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timestamp.js b/node_modules/rxjs/_esm2015/add/operator/timestamp.js new file mode 100644 index 0000000..bb9ad90 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timestamp.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { timestamp } from '../../operator/timestamp'; +Observable.prototype.timestamp = timestamp; +//# sourceMappingURL=timestamp.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/timestamp.js.map b/node_modules/rxjs/_esm2015/add/operator/timestamp.js.map new file mode 100644 index 0000000..9bc45ba --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/timestamp.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../../src/add/operator/timestamp.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,SAAS,EAAE,MAAM,0BAA0B;AAEpD,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/toArray.js b/node_modules/rxjs/_esm2015/add/operator/toArray.js new file mode 100644 index 0000000..5a0b760 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/toArray.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { toArray } from '../../operator/toArray'; +Observable.prototype.toArray = toArray; +//# sourceMappingURL=toArray.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/toArray.js.map b/node_modules/rxjs/_esm2015/add/operator/toArray.js.map new file mode 100644 index 0000000..bb19a20 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/toArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toArray.js","sourceRoot":"","sources":["../../../src/add/operator/toArray.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,OAAO,EAAE,MAAM,wBAAwB;AAEhD,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/toPromise.js b/node_modules/rxjs/_esm2015/add/operator/toPromise.js new file mode 100644 index 0000000..5e65742 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/toPromise.js @@ -0,0 +1,3 @@ +// HACK: does nothing, because `toPromise` now lives on the `Observable` itself. +// leaving this module here to prevent breakage. +//# sourceMappingURL=toPromise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/toPromise.js.map b/node_modules/rxjs/_esm2015/add/operator/toPromise.js.map new file mode 100644 index 0000000..643c906 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/toPromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toPromise.js","sourceRoot":"","sources":["../../../src/add/operator/toPromise.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gDAAgD"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/window.js b/node_modules/rxjs/_esm2015/add/operator/window.js new file mode 100644 index 0000000..a45a785 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/window.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { window } from '../../operator/window'; +Observable.prototype.window = window; +//# sourceMappingURL=window.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/window.js.map b/node_modules/rxjs/_esm2015/add/operator/window.js.map new file mode 100644 index 0000000..80c1de6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/window.js.map @@ -0,0 +1 @@ +{"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/add/operator/window.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowCount.js b/node_modules/rxjs/_esm2015/add/operator/windowCount.js new file mode 100644 index 0000000..f4762e9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowCount.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { windowCount } from '../../operator/windowCount'; +Observable.prototype.windowCount = windowCount; +//# sourceMappingURL=windowCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowCount.js.map b/node_modules/rxjs/_esm2015/add/operator/windowCount.js.map new file mode 100644 index 0000000..edc6be1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowCount.js","sourceRoot":"","sources":["../../../src/add/operator/windowCount.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,WAAW,EAAE,MAAM,4BAA4B;AAExD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowTime.js b/node_modules/rxjs/_esm2015/add/operator/windowTime.js new file mode 100644 index 0000000..d6aa1e2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowTime.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { windowTime } from '../../operator/windowTime'; +Observable.prototype.windowTime = windowTime; +//# sourceMappingURL=windowTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowTime.js.map b/node_modules/rxjs/_esm2015/add/operator/windowTime.js.map new file mode 100644 index 0000000..1c9fff6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowTime.js","sourceRoot":"","sources":["../../../src/add/operator/windowTime.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowToggle.js b/node_modules/rxjs/_esm2015/add/operator/windowToggle.js new file mode 100644 index 0000000..2653265 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowToggle.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { windowToggle } from '../../operator/windowToggle'; +Observable.prototype.windowToggle = windowToggle; +//# sourceMappingURL=windowToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowToggle.js.map b/node_modules/rxjs/_esm2015/add/operator/windowToggle.js.map new file mode 100644 index 0000000..1cf1921 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowToggle.js","sourceRoot":"","sources":["../../../src/add/operator/windowToggle.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,YAAY,EAAE,MAAM,6BAA6B;AAE1D,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowWhen.js b/node_modules/rxjs/_esm2015/add/operator/windowWhen.js new file mode 100644 index 0000000..77e02df --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowWhen.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { windowWhen } from '../../operator/windowWhen'; +Observable.prototype.windowWhen = windowWhen; +//# sourceMappingURL=windowWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/windowWhen.js.map b/node_modules/rxjs/_esm2015/add/operator/windowWhen.js.map new file mode 100644 index 0000000..1f59420 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/windowWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowWhen.js","sourceRoot":"","sources":["../../../src/add/operator/windowWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,UAAU,EAAE,MAAM,2BAA2B;AAEtD,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js b/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js new file mode 100644 index 0000000..0d093b0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { withLatestFrom } from '../../operator/withLatestFrom'; +Observable.prototype.withLatestFrom = withLatestFrom; +//# sourceMappingURL=withLatestFrom.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js.map b/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js.map new file mode 100644 index 0000000..d3cc7a7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/withLatestFrom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"withLatestFrom.js","sourceRoot":"","sources":["../../../src/add/operator/withLatestFrom.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,cAAc,EAAE,MAAM,+BAA+B;AAE9D,UAAU,CAAC,SAAS,CAAC,cAAc,GAAG,cAAc,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/zip.js b/node_modules/rxjs/_esm2015/add/operator/zip.js new file mode 100644 index 0000000..38b5e89 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/zip.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { zipProto } from '../../operator/zip'; +Observable.prototype.zip = zipProto; +//# sourceMappingURL=zip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/zip.js.map b/node_modules/rxjs/_esm2015/add/operator/zip.js.map new file mode 100644 index 0000000..cd953a9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/zip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../../src/add/operator/zip.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,QAAQ,EAAE,MAAM,oBAAoB;AAE7C,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/zipAll.js b/node_modules/rxjs/_esm2015/add/operator/zipAll.js new file mode 100644 index 0000000..33d7970 --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/zipAll.js @@ -0,0 +1,4 @@ +import { Observable } from '../../Observable'; +import { zipAll } from '../../operator/zipAll'; +Observable.prototype.zipAll = zipAll; +//# sourceMappingURL=zipAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/add/operator/zipAll.js.map b/node_modules/rxjs/_esm2015/add/operator/zipAll.js.map new file mode 100644 index 0000000..71b067c --- /dev/null +++ b/node_modules/rxjs/_esm2015/add/operator/zipAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zipAll.js","sourceRoot":"","sources":["../../../src/add/operator/zipAll.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,kBAAkB;OACtC,EAAE,MAAM,EAAE,MAAM,uBAAuB;AAE9C,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/interfaces.js b/node_modules/rxjs/_esm2015/interfaces.js new file mode 100644 index 0000000..eb519ec --- /dev/null +++ b/node_modules/rxjs/_esm2015/interfaces.js @@ -0,0 +1 @@ +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/interfaces.js.map b/node_modules/rxjs/_esm2015/interfaces.js.map new file mode 100644 index 0000000..8fb5f7d --- /dev/null +++ b/node_modules/rxjs/_esm2015/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js b/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js new file mode 100644 index 0000000..552a25b --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js @@ -0,0 +1,61 @@ +import { Observable } from '../Observable'; +import { ScalarObservable } from './ScalarObservable'; +import { EmptyObservable } from './EmptyObservable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class ArrayLikeObservable extends Observable { + constructor(arrayLike, scheduler) { + super(); + this.arrayLike = arrayLike; + this.scheduler = scheduler; + if (!scheduler && arrayLike.length === 1) { + this._isScalar = true; + this.value = arrayLike[0]; + } + } + static create(arrayLike, scheduler) { + const length = arrayLike.length; + if (length === 0) { + return new EmptyObservable(); + } + else if (length === 1) { + return new ScalarObservable(arrayLike[0], scheduler); + } + else { + return new ArrayLikeObservable(arrayLike, scheduler); + } + } + static dispatch(state) { + const { arrayLike, index, length, subscriber } = state; + if (subscriber.closed) { + return; + } + if (index >= length) { + subscriber.complete(); + return; + } + subscriber.next(arrayLike[index]); + state.index = index + 1; + this.schedule(state); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + let index = 0; + const { arrayLike, scheduler } = this; + const length = arrayLike.length; + if (scheduler) { + return scheduler.schedule(ArrayLikeObservable.dispatch, 0, { + arrayLike, index, length, subscriber + }); + } + else { + for (let i = 0; i < length && !subscriber.closed; i++) { + subscriber.next(arrayLike[i]); + } + subscriber.complete(); + } + } +} +//# sourceMappingURL=ArrayLikeObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js.map b/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js.map new file mode 100644 index 0000000..f5ec017 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ArrayLikeObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayLikeObservable.js","sourceRoot":"","sources":["../../src/observable/ArrayLikeObservable.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,gBAAgB,EAAE,MAAM,oBAAoB;OAC9C,EAAE,eAAe,EAAE,MAAM,mBAAmB;AAInD;;;;GAIG;AACH,yCAA4C,UAAU;IAmCpD,YAAoB,SAAuB,EAAU,SAAsB;QACzE,OAAO,CAAC;QADU,cAAS,GAAT,SAAS,CAAc;QAAU,cAAS,GAAT,SAAS,CAAa;QAEzE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAvCD,OAAO,MAAM,CAAI,SAAuB,EAAE,SAAsB;QAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,gBAAgB,CAAS,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QACxB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAEvD,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;YACpB,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAElC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAEjB,IAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAaD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAEhC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACzD,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ArrayObservable.js b/node_modules/rxjs/_esm2015/observable/ArrayObservable.js new file mode 100644 index 0000000..321086e --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ArrayObservable.js @@ -0,0 +1,109 @@ +import { Observable } from '../Observable'; +import { ScalarObservable } from './ScalarObservable'; +import { EmptyObservable } from './EmptyObservable'; +import { isScheduler } from '../util/isScheduler'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class ArrayObservable extends Observable { + constructor(array, scheduler) { + super(); + this.array = array; + this.scheduler = scheduler; + if (!scheduler && array.length === 1) { + this._isScalar = true; + this.value = array[0]; + } + } + static create(array, scheduler) { + return new ArrayObservable(array, scheduler); + } + /** + * Creates an Observable that emits some values you specify as arguments, + * immediately one after the other, and then emits a complete notification. + * + * Emits the arguments you provide, then completes. + * + * + * + * + * This static operator is useful for creating a simple Observable that only + * emits the arguments given, and the complete notification thereafter. It can + * be used for composing with other Observables, such as with {@link concat}. + * By default, it uses a `null` IScheduler, which means the `next` + * notifications are sent synchronously, although with a different IScheduler + * it is possible to determine when those notifications will be delivered. + * + * @example Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second. + * var numbers = Rx.Observable.of(10, 20, 30); + * var letters = Rx.Observable.of('a', 'b', 'c'); + * var interval = Rx.Observable.interval(1000); + * var result = numbers.concat(letters).concat(interval); + * result.subscribe(x => console.log(x)); + * + * @see {@link create} + * @see {@link empty} + * @see {@link never} + * @see {@link throw} + * + * @param {...T} values Arguments that represent `next` values to be emitted. + * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling + * the emissions of the `next` notifications. + * @return {Observable} An Observable that emits each given input value. + * @static true + * @name of + * @owner Observable + */ + static of(...array) { + let scheduler = array[array.length - 1]; + if (isScheduler(scheduler)) { + array.pop(); + } + else { + scheduler = null; + } + const len = array.length; + if (len > 1) { + return new ArrayObservable(array, scheduler); + } + else if (len === 1) { + return new ScalarObservable(array[0], scheduler); + } + else { + return new EmptyObservable(scheduler); + } + } + static dispatch(state) { + const { array, index, count, subscriber } = state; + if (index >= count) { + subscriber.complete(); + return; + } + subscriber.next(array[index]); + if (subscriber.closed) { + return; + } + state.index = index + 1; + this.schedule(state); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + let index = 0; + const array = this.array; + const count = array.length; + const scheduler = this.scheduler; + if (scheduler) { + return scheduler.schedule(ArrayObservable.dispatch, 0, { + array, index, count, subscriber + }); + } + else { + for (let i = 0; i < count && !subscriber.closed; i++) { + subscriber.next(array[i]); + } + subscriber.complete(); + } + } +} +//# sourceMappingURL=ArrayObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ArrayObservable.js.map b/node_modules/rxjs/_esm2015/observable/ArrayObservable.js.map new file mode 100644 index 0000000..061e66e --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ArrayObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayObservable.js","sourceRoot":"","sources":["../../src/observable/ArrayObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js b/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js new file mode 100644 index 0000000..0c2c5a0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js @@ -0,0 +1,242 @@ +import { Observable } from '../Observable'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { AsyncSubject } from '../AsyncSubject'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class BoundCallbackObservable extends Observable { + constructor(callbackFunc, selector, args, context, scheduler) { + super(); + this.callbackFunc = callbackFunc; + this.selector = selector; + this.args = args; + this.context = context; + this.scheduler = scheduler; + } + /* tslint:enable:max-line-length */ + /** + * Converts a callback API to a function that returns an Observable. + * + * Give it a function `f` of type `f(x, callback)` and + * it will return a function `g` that when called as `g(x)` will output an + * Observable. + * + * `bindCallback` is not an operator because its input and output are not + * Observables. The input is a function `func` with some parameters, the + * last parameter must be a callback function that `func` calls when it is + * done. + * + * The output of `bindCallback` is a function that takes the same parameters + * as `func`, except the last one (the callback). When the output function + * is called with arguments it will return an Observable. If function `func` + * calls its callback with one argument the Observable will emit that value. + * If on the other hand the callback is called with multiple values the resulting + * Observable will emit an array with said values as arguments. + * + * It is very important to remember that input function `func` is not called + * when the output function is, but rather when the Observable returned by the output + * function is subscribed. This means if `func` makes an AJAX request, that request + * will be made every time someone subscribes to the resulting Observable, but not before. + * + * Optionally, a selector function can be passed to `bindObservable`. The selector function + * takes the same arguments as the callback and returns the value that will be emitted by the Observable. + * Even though by default multiple arguments passed to callback appear in the stream as an array + * the selector function will be called with arguments directly, just as the callback would. + * This means you can imagine the default selector (when one is not provided explicitly) + * as a function that aggregates all its arguments into an array, or simply returns first argument + * if there is only one. + * + * The last optional parameter - {@link Scheduler} - can be used to control when the call + * to `func` happens after someone subscribes to Observable, as well as when results + * passed to callback will be emitted. By default, the subscription to an Observable calls `func` + * synchronously, but using `Scheduler.async` as the last parameter will defer the call to `func`, + * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you use the async Scheduler + * and call `subscribe` on the output Observable all function calls that are currently executing + * will end before `func` is invoked. + * + * By default results passed to the callback are emitted immediately after `func` invokes the callback. + * In particular, if the callback is called synchronously the subscription of the resulting Observable + * will call the `next` function synchronously as well. If you want to defer that call, + * you may use `Scheduler.async` just as before. This means that by using `Scheduler.async` you can + * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo. + * + * Note that the Observable created by the output function will always emit a single value + * and then complete immediately. If `func` calls the callback multiple times, values from subsequent + * calls will not appear in the stream. If you need to listen for multiple calls, + * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead. + * + * If `func` depends on some context (`this` property) and is not already bound the context of `func` + * will be the context that the output function has at call time. In particular, if `func` + * is called as a method of some objec and if `func` is not already bound, in order to preserve the context + * it is recommended that the context of the output function is set to that object as well. + * + * If the input function calls its callback in the "node style" (i.e. first argument to callback is + * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback} + * provides convenient error handling and probably is a better choice. + * `bindCallback` will treat such functions the same as any other and error parameters + * (whether passed or not) will always be interpreted as regular callback argument. + * + * + * @example Convert jQuery's getJSON to an Observable API + * // Suppose we have jQuery.getJSON('/my/url', callback) + * var getJSONAsObservable = Rx.Observable.bindCallback(jQuery.getJSON); + * var result = getJSONAsObservable('/my/url'); + * result.subscribe(x => console.log(x), e => console.error(e)); + * + * + * @example Receive an array of arguments passed to a callback + * someFunction((a, b, c) => { + * console.log(a); // 5 + * console.log(b); // 'some string' + * console.log(c); // {someProperty: 'someValue'} + * }); + * + * const boundSomeFunction = Rx.Observable.bindCallback(someFunction); + * boundSomeFunction().subscribe(values => { + * console.log(values) // [5, 'some string', {someProperty: 'someValue'}] + * }); + * + * + * @example Use bindCallback with a selector function + * someFunction((a, b, c) => { + * console.log(a); // 'a' + * console.log(b); // 'b' + * console.log(c); // 'c' + * }); + * + * const boundSomeFunction = Rx.Observable.bindCallback(someFunction, (a, b, c) => a + b + c); + * boundSomeFunction().subscribe(value => { + * console.log(value) // 'abc' + * }); + * + * + * @example Compare behaviour with and without async Scheduler + * function iCallMyCallbackSynchronously(cb) { + * cb(); + * } + * + * const boundSyncFn = Rx.Observable.bindCallback(iCallMyCallbackSynchronously); + * const boundAsyncFn = Rx.Observable.bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async); + * + * boundSyncFn().subscribe(() => console.log('I was sync!')); + * boundAsyncFn().subscribe(() => console.log('I was async!')); + * console.log('This happened...'); + * + * // Logs: + * // I was sync! + * // This happened... + * // I was async! + * + * + * @example Use bindCallback on an object method + * const boundMethod = Rx.Observable.bindCallback(someObject.methodWithCallback); + * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject + * .subscribe(subscriber); + * + * + * @see {@link bindNodeCallback} + * @see {@link from} + * @see {@link fromPromise} + * + * @param {function} func A function with a callback as the last parameter. + * @param {function} [selector] A function which takes the arguments from the + * callback and maps them to a value that is emitted on the output Observable. + * @param {Scheduler} [scheduler] The scheduler on which to schedule the + * callbacks. + * @return {function(...params: *): Observable} A function which returns the + * Observable that delivers the same values the callback would deliver. + * @static true + * @name bindCallback + * @owner Observable + */ + static create(func, selector = undefined, scheduler) { + return function (...args) { + return new BoundCallbackObservable(func, selector, args, this, scheduler); + }; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const callbackFunc = this.callbackFunc; + const args = this.args; + const scheduler = this.scheduler; + let subject = this.subject; + if (!scheduler) { + if (!subject) { + subject = this.subject = new AsyncSubject(); + const handler = function handlerFn(...innerArgs) { + const source = handlerFn.source; + const { selector, subject } = source; + if (selector) { + const result = tryCatch(selector).apply(this, innerArgs); + if (result === errorObject) { + subject.error(errorObject.e); + } + else { + subject.next(result); + subject.complete(); + } + } + else { + subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); + subject.complete(); + } + }; + // use named function instance to avoid closure. + handler.source = this; + const result = tryCatch(callbackFunc).apply(this.context, args.concat(handler)); + if (result === errorObject) { + subject.error(errorObject.e); + } + } + return subject.subscribe(subscriber); + } + else { + return scheduler.schedule(BoundCallbackObservable.dispatch, 0, { source: this, subscriber, context: this.context }); + } + } + static dispatch(state) { + const self = this; + const { source, subscriber, context } = state; + const { callbackFunc, args, scheduler } = source; + let subject = source.subject; + if (!subject) { + subject = source.subject = new AsyncSubject(); + const handler = function handlerFn(...innerArgs) { + const source = handlerFn.source; + const { selector, subject } = source; + if (selector) { + const result = tryCatch(selector).apply(this, innerArgs); + if (result === errorObject) { + self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject })); + } + else { + self.add(scheduler.schedule(dispatchNext, 0, { value: result, subject })); + } + } + else { + const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; + self.add(scheduler.schedule(dispatchNext, 0, { value, subject })); + } + }; + // use named function to pass values in without closure + handler.source = source; + const result = tryCatch(callbackFunc).apply(context, args.concat(handler)); + if (result === errorObject) { + subject.error(errorObject.e); + } + } + self.add(subject.subscribe(subscriber)); + } +} +function dispatchNext(arg) { + const { value, subject } = arg; + subject.next(value); + subject.complete(); +} +function dispatchError(arg) { + const { err, subject } = arg; + subject.error(err); +} +//# sourceMappingURL=BoundCallbackObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js.map b/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js.map new file mode 100644 index 0000000..f9764c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/BoundCallbackObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BoundCallbackObservable.js","sourceRoot":"","sources":["../../src/observable/BoundCallbackObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js b/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js new file mode 100644 index 0000000..3ed8a5c --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js @@ -0,0 +1,241 @@ +import { Observable } from '../Observable'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { AsyncSubject } from '../AsyncSubject'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class BoundNodeCallbackObservable extends Observable { + constructor(callbackFunc, selector, args, context, scheduler) { + super(); + this.callbackFunc = callbackFunc; + this.selector = selector; + this.args = args; + this.context = context; + this.scheduler = scheduler; + } + /* tslint:enable:max-line-length */ + /** + * Converts a Node.js-style callback API to a function that returns an + * Observable. + * + * It's just like {@link bindCallback}, but the + * callback is expected to be of type `callback(error, result)`. + * + * `bindNodeCallback` is not an operator because its input and output are not + * Observables. The input is a function `func` with some parameters, but the + * last parameter must be a callback function that `func` calls when it is + * done. The callback function is expected to follow Node.js conventions, + * where the first argument to the callback is an error object, signaling + * whether call was successful. If that object is passed to callback, it means + * something went wrong. + * + * The output of `bindNodeCallback` is a function that takes the same + * parameters as `func`, except the last one (the callback). When the output + * function is called with arguments, it will return an Observable. + * If `func` calls its callback with error parameter present, Observable will + * error with that value as well. If error parameter is not passed, Observable will emit + * second parameter. If there are more parameters (third and so on), + * Observable will emit an array with all arguments, except first error argument. + * + * Optionally `bindNodeCallback` accepts selector function, which allows you to + * make resulting Observable emit value computed by selector, instead of regular + * callback arguments. It works similarly to {@link bindCallback} selector, but + * Node.js-style error argument will never be passed to that function. + * + * Note that `func` will not be called at the same time output function is, + * but rather whenever resulting Observable is subscribed. By default call to + * `func` will happen synchronously after subscription, but that can be changed + * with proper {@link Scheduler} provided as optional third parameter. Scheduler + * can also control when values from callback will be emitted by Observable. + * To find out more, check out documentation for {@link bindCallback}, where + * Scheduler works exactly the same. + * + * As in {@link bindCallback}, context (`this` property) of input function will be set to context + * of returned function, when it is called. + * + * After Observable emits value, it will complete immediately. This means + * even if `func` calls callback again, values from second and consecutive + * calls will never appear on the stream. If you need to handle functions + * that call callbacks multiple times, check out {@link fromEvent} or + * {@link fromEventPattern} instead. + * + * Note that `bindNodeCallback` can be used in non-Node.js environments as well. + * "Node.js-style" callbacks are just a convention, so if you write for + * browsers or any other environment and API you use implements that callback style, + * `bindNodeCallback` can be safely used on that API functions as well. + * + * Remember that Error object passed to callback does not have to be an instance + * of JavaScript built-in `Error` object. In fact, it does not even have to an object. + * Error parameter of callback function is interpreted as "present", when value + * of that parameter is truthy. It could be, for example, non-zero number, non-empty + * string or boolean `true`. In all of these cases resulting Observable would error + * with that value. This means usually regular style callbacks will fail very often when + * `bindNodeCallback` is used. If your Observable errors much more often then you + * would expect, check if callback really is called in Node.js-style and, if not, + * switch to {@link bindCallback} instead. + * + * Note that even if error parameter is technically present in callback, but its value + * is falsy, it still won't appear in array emitted by Observable or in selector function. + * + * + * @example Read a file from the filesystem and get the data as an Observable + * import * as fs from 'fs'; + * var readFileAsObservable = Rx.Observable.bindNodeCallback(fs.readFile); + * var result = readFileAsObservable('./roadNames.txt', 'utf8'); + * result.subscribe(x => console.log(x), e => console.error(e)); + * + * + * @example Use on function calling callback with multiple arguments + * someFunction((err, a, b) => { + * console.log(err); // null + * console.log(a); // 5 + * console.log(b); // "some string" + * }); + * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction); + * boundSomeFunction() + * .subscribe(value => { + * console.log(value); // [5, "some string"] + * }); + * + * + * @example Use with selector function + * someFunction((err, a, b) => { + * console.log(err); // undefined + * console.log(a); // "abc" + * console.log(b); // "DEF" + * }); + * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction, (a, b) => a + b); + * boundSomeFunction() + * .subscribe(value => { + * console.log(value); // "abcDEF" + * }); + * + * + * @example Use on function calling callback in regular style + * someFunction(a => { + * console.log(a); // 5 + * }); + * var boundSomeFunction = Rx.Observable.bindNodeCallback(someFunction); + * boundSomeFunction() + * .subscribe( + * value => {} // never gets called + * err => console.log(err) // 5 + *); + * + * + * @see {@link bindCallback} + * @see {@link from} + * @see {@link fromPromise} + * + * @param {function} func Function with a Node.js-style callback as the last parameter. + * @param {function} [selector] A function which takes the arguments from the + * callback and maps those to a value to emit on the output Observable. + * @param {Scheduler} [scheduler] The scheduler on which to schedule the + * callbacks. + * @return {function(...params: *): Observable} A function which returns the + * Observable that delivers the same values the Node.js callback would + * deliver. + * @static true + * @name bindNodeCallback + * @owner Observable + */ + static create(func, selector = undefined, scheduler) { + return function (...args) { + return new BoundNodeCallbackObservable(func, selector, args, this, scheduler); + }; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const callbackFunc = this.callbackFunc; + const args = this.args; + const scheduler = this.scheduler; + let subject = this.subject; + if (!scheduler) { + if (!subject) { + subject = this.subject = new AsyncSubject(); + const handler = function handlerFn(...innerArgs) { + const source = handlerFn.source; + const { selector, subject } = source; + const err = innerArgs.shift(); + if (err) { + subject.error(err); + } + else if (selector) { + const result = tryCatch(selector).apply(this, innerArgs); + if (result === errorObject) { + subject.error(errorObject.e); + } + else { + subject.next(result); + subject.complete(); + } + } + else { + subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); + subject.complete(); + } + }; + // use named function instance to avoid closure. + handler.source = this; + const result = tryCatch(callbackFunc).apply(this.context, args.concat(handler)); + if (result === errorObject) { + subject.error(errorObject.e); + } + } + return subject.subscribe(subscriber); + } + else { + return scheduler.schedule(dispatch, 0, { source: this, subscriber, context: this.context }); + } + } +} +function dispatch(state) { + const self = this; + const { source, subscriber, context } = state; + // XXX: cast to `any` to access to the private field in `source`. + const { callbackFunc, args, scheduler } = source; + let subject = source.subject; + if (!subject) { + subject = source.subject = new AsyncSubject(); + const handler = function handlerFn(...innerArgs) { + const source = handlerFn.source; + const { selector, subject } = source; + const err = innerArgs.shift(); + if (err) { + self.add(scheduler.schedule(dispatchError, 0, { err, subject })); + } + else if (selector) { + const result = tryCatch(selector).apply(this, innerArgs); + if (result === errorObject) { + self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject })); + } + else { + self.add(scheduler.schedule(dispatchNext, 0, { value: result, subject })); + } + } + else { + const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; + self.add(scheduler.schedule(dispatchNext, 0, { value, subject })); + } + }; + // use named function to pass values in without closure + handler.source = source; + const result = tryCatch(callbackFunc).apply(context, args.concat(handler)); + if (result === errorObject) { + self.add(scheduler.schedule(dispatchError, 0, { err: errorObject.e, subject })); + } + } + self.add(subject.subscribe(subscriber)); +} +function dispatchNext(arg) { + const { value, subject } = arg; + subject.next(value); + subject.complete(); +} +function dispatchError(arg) { + const { err, subject } = arg; + subject.error(err); +} +//# sourceMappingURL=BoundNodeCallbackObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js.map b/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js.map new file mode 100644 index 0000000..1ebd41c --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/BoundNodeCallbackObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"BoundNodeCallbackObservable.js","sourceRoot":"","sources":["../../src/observable/BoundNodeCallbackObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js b/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js new file mode 100644 index 0000000..9eba70d --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js @@ -0,0 +1,157 @@ +import { SubjectSubscriber } from '../Subject'; +import { Observable } from '../Observable'; +import { Subscriber } from '../Subscriber'; +import { Subscription } from '../Subscription'; +import { refCount as higherOrderRefCount } from '../operators/refCount'; +/** + * @class ConnectableObservable + */ +export class ConnectableObservable extends Observable { + constructor(/** @deprecated internal use only */ source, + /** @deprecated internal use only */ subjectFactory) { + super(); + this.source = source; + this.subjectFactory = subjectFactory; + /** @deprecated internal use only */ this._refCount = 0; + this._isComplete = false; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + return this.getSubject().subscribe(subscriber); + } + /** @deprecated internal use only */ getSubject() { + const subject = this._subject; + if (!subject || subject.isStopped) { + this._subject = this.subjectFactory(); + } + return this._subject; + } + connect() { + let connection = this._connection; + if (!connection) { + this._isComplete = false; + connection = this._connection = new Subscription(); + connection.add(this.source + .subscribe(new ConnectableSubscriber(this.getSubject(), this))); + if (connection.closed) { + this._connection = null; + connection = Subscription.EMPTY; + } + else { + this._connection = connection; + } + } + return connection; + } + refCount() { + return higherOrderRefCount()(this); + } +} +const connectableProto = ConnectableObservable.prototype; +export const connectableObservableDescriptor = { + operator: { value: null }, + _refCount: { value: 0, writable: true }, + _subject: { value: null, writable: true }, + _connection: { value: null, writable: true }, + _subscribe: { value: connectableProto._subscribe }, + _isComplete: { value: connectableProto._isComplete, writable: true }, + getSubject: { value: connectableProto.getSubject }, + connect: { value: connectableProto.connect }, + refCount: { value: connectableProto.refCount } +}; +class ConnectableSubscriber extends SubjectSubscriber { + constructor(destination, connectable) { + super(destination); + this.connectable = connectable; + } + _error(err) { + this._unsubscribe(); + super._error(err); + } + _complete() { + this.connectable._isComplete = true; + this._unsubscribe(); + super._complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + const connectable = this.connectable; + if (connectable) { + this.connectable = null; + const connection = connectable._connection; + connectable._refCount = 0; + connectable._subject = null; + connectable._connection = null; + if (connection) { + connection.unsubscribe(); + } + } + } +} +class RefCountOperator { + constructor(connectable) { + this.connectable = connectable; + } + call(subscriber, source) { + const { connectable } = this; + connectable._refCount++; + const refCounter = new RefCountSubscriber(subscriber, connectable); + const subscription = source.subscribe(refCounter); + if (!refCounter.closed) { + refCounter.connection = connectable.connect(); + } + return subscription; + } +} +class RefCountSubscriber extends Subscriber { + constructor(destination, connectable) { + super(destination); + this.connectable = connectable; + } + /** @deprecated internal use only */ _unsubscribe() { + const { connectable } = this; + if (!connectable) { + this.connection = null; + return; + } + this.connectable = null; + const refCount = connectable._refCount; + if (refCount <= 0) { + this.connection = null; + return; + } + connectable._refCount = refCount - 1; + if (refCount > 1) { + this.connection = null; + return; + } + /// + // Compare the local RefCountSubscriber's connection Subscription to the + // connection Subscription on the shared ConnectableObservable. In cases + // where the ConnectableObservable source synchronously emits values, and + // the RefCountSubscriber's downstream Observers synchronously unsubscribe, + // execution continues to here before the RefCountOperator has a chance to + // supply the RefCountSubscriber with the shared connection Subscription. + // For example: + // ``` + // Observable.range(0, 10) + // .publish() + // .refCount() + // .take(5) + // .subscribe(); + // ``` + // In order to account for this case, RefCountSubscriber should only dispose + // the ConnectableObservable's shared connection Subscription if the + // connection Subscription exists, *and* either: + // a. RefCountSubscriber doesn't have a reference to the shared connection + // Subscription yet, or, + // b. RefCountSubscriber's connection Subscription reference is identical + // to the shared connection Subscription + /// + const { connection } = this; + const sharedConnection = connectable._connection; + this.connection = null; + if (sharedConnection && (!connection || sharedConnection === connection)) { + sharedConnection.unsubscribe(); + } + } +} +//# sourceMappingURL=ConnectableObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js.map b/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js.map new file mode 100644 index 0000000..a8931b1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ConnectableObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ConnectableObservable.js","sourceRoot":"","sources":["../../src/observable/ConnectableObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/DeferObservable.js b/node_modules/rxjs/_esm2015/observable/DeferObservable.js new file mode 100644 index 0000000..51009f3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/DeferObservable.js @@ -0,0 +1,88 @@ +import { Observable } from '../Observable'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class DeferObservable extends Observable { + constructor(observableFactory) { + super(); + this.observableFactory = observableFactory; + } + /** + * Creates an Observable that, on subscribe, calls an Observable factory to + * make an Observable for each new Observer. + * + * Creates the Observable lazily, that is, only when it + * is subscribed. + * + * + * + * + * `defer` allows you to create the Observable only when the Observer + * subscribes, and create a fresh Observable for each Observer. It waits until + * an Observer subscribes to it, and then it generates an Observable, + * typically with an Observable factory function. It does this afresh for each + * subscriber, so although each subscriber may think it is subscribing to the + * same Observable, in fact each subscriber gets its own individual + * Observable. + * + * @example Subscribe to either an Observable of clicks or an Observable of interval, at random + * var clicksOrInterval = Rx.Observable.defer(function () { + * if (Math.random() > 0.5) { + * return Rx.Observable.fromEvent(document, 'click'); + * } else { + * return Rx.Observable.interval(1000); + * } + * }); + * clicksOrInterval.subscribe(x => console.log(x)); + * + * // Results in the following behavior: + * // If the result of Math.random() is greater than 0.5 it will listen + * // for clicks anywhere on the "document"; when document is clicked it + * // will log a MouseEvent object to the console. If the result is less + * // than 0.5 it will emit ascending numbers, one every second(1000ms). + * + * @see {@link create} + * + * @param {function(): SubscribableOrPromise} observableFactory The Observable + * factory function to invoke for each Observer that subscribes to the output + * Observable. May also return a Promise, which will be converted on the fly + * to an Observable. + * @return {Observable} An Observable whose Observers' subscriptions trigger + * an invocation of the given Observable factory function. + * @static true + * @name defer + * @owner Observable + */ + static create(observableFactory) { + return new DeferObservable(observableFactory); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + return new DeferSubscriber(subscriber, this.observableFactory); + } +} +class DeferSubscriber extends OuterSubscriber { + constructor(destination, factory) { + super(destination); + this.factory = factory; + this.tryDefer(); + } + tryDefer() { + try { + this._callFactory(); + } + catch (err) { + this._error(err); + } + } + _callFactory() { + const result = this.factory(); + if (result) { + this.add(subscribeToResult(this, result)); + } + } +} +//# sourceMappingURL=DeferObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/DeferObservable.js.map b/node_modules/rxjs/_esm2015/observable/DeferObservable.js.map new file mode 100644 index 0000000..83a5535 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/DeferObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"DeferObservable.js","sourceRoot":"","sources":["../../src/observable/DeferObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAyB,MAAM,eAAe;OAI1D,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAE,eAAe,EAAE,MAAM,oBAAoB;AACpD;;;;GAIG;AACH,qCAAwC,UAAU;IAoDhD,YAAoB,iBAAwD;QAC1E,OAAO,CAAC;QADU,sBAAiB,GAAjB,iBAAiB,CAAuC;IAE5E,CAAC;IApDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,OAAO,MAAM,CAAI,iBAAwD;QACvE,MAAM,CAAC,IAAI,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAMD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,8BAAiC,eAAe;IAC9C,YAAY,WAA0B,EAClB,OAA8C;QAChE,MAAM,WAAW,CAAC,CAAC;QADD,YAAO,GAAP,OAAO,CAAuC;QAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/EmptyObservable.js b/node_modules/rxjs/_esm2015/observable/EmptyObservable.js new file mode 100644 index 0000000..2b5e4f7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/EmptyObservable.js @@ -0,0 +1,72 @@ +import { Observable } from '../Observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class EmptyObservable extends Observable { + constructor(scheduler) { + super(); + this.scheduler = scheduler; + } + /** + * Creates an Observable that emits no items to the Observer and immediately + * emits a complete notification. + * + * Just emits 'complete', and nothing else. + * + * + * + * + * This static operator is useful for creating a simple Observable that only + * emits the complete notification. It can be used for composing with other + * Observables, such as in a {@link mergeMap}. + * + * @example Emit the number 7, then complete. + * var result = Rx.Observable.empty().startWith(7); + * result.subscribe(x => console.log(x)); + * + * @example Map and flatten only odd numbers to the sequence 'a', 'b', 'c' + * var interval = Rx.Observable.interval(1000); + * var result = interval.mergeMap(x => + * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty() + * ); + * result.subscribe(x => console.log(x)); + * + * // Results in the following to the console: + * // x is equal to the count on the interval eg(0,1,2,3,...) + * // x will occur every 1000ms + * // if x % 2 is equal to 1 print abc + * // if x % 2 is not equal to 1 nothing will be output + * + * @see {@link create} + * @see {@link never} + * @see {@link of} + * @see {@link throw} + * + * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling + * the emission of the complete notification. + * @return {Observable} An "empty" Observable: emits only the complete + * notification. + * @static true + * @name empty + * @owner Observable + */ + static create(scheduler) { + return new EmptyObservable(scheduler); + } + static dispatch(arg) { + const { subscriber } = arg; + subscriber.complete(); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const scheduler = this.scheduler; + if (scheduler) { + return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber }); + } + else { + subscriber.complete(); + } + } +} +//# sourceMappingURL=EmptyObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/EmptyObservable.js.map b/node_modules/rxjs/_esm2015/observable/EmptyObservable.js.map new file mode 100644 index 0000000..77f46ae --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/EmptyObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EmptyObservable.js","sourceRoot":"","sources":["../../src/observable/EmptyObservable.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAO1C;;;;GAIG;AACH,qCAAwC,UAAU;IAsDhD,YAAoB,SAAsB;QACxC,OAAO,CAAC;QADU,cAAS,GAAT,SAAS,CAAa;IAE1C,CAAC;IAtDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,OAAO,MAAM,CAAI,SAAsB;QACrC,MAAM,CAAC,IAAI,eAAe,CAAI,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,QAAQ,CAAI,GAAmB;QACpC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAC3B,UAAU,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAMD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ErrorObservable.js b/node_modules/rxjs/_esm2015/observable/ErrorObservable.js new file mode 100644 index 0000000..582bfe6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ErrorObservable.js @@ -0,0 +1,74 @@ +import { Observable } from '../Observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class ErrorObservable extends Observable { + constructor(error, scheduler) { + super(); + this.error = error; + this.scheduler = scheduler; + } + /** + * Creates an Observable that emits no items to the Observer and immediately + * emits an error notification. + * + * Just emits 'error', and nothing else. + * + * + * + * + * This static operator is useful for creating a simple Observable that only + * emits the error notification. It can be used for composing with other + * Observables, such as in a {@link mergeMap}. + * + * @example Emit the number 7, then emit an error. + * var result = Rx.Observable.throw(new Error('oops!')).startWith(7); + * result.subscribe(x => console.log(x), e => console.error(e)); + * + * @example Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 13 + * var interval = Rx.Observable.interval(1000); + * var result = interval.mergeMap(x => + * x === 13 ? + * Rx.Observable.throw('Thirteens are bad') : + * Rx.Observable.of('a', 'b', 'c') + * ); + * result.subscribe(x => console.log(x), e => console.error(e)); + * + * @see {@link create} + * @see {@link empty} + * @see {@link never} + * @see {@link of} + * + * @param {any} error The particular Error to pass to the error notification. + * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling + * the emission of the error notification. + * @return {Observable} An error Observable: emits only the error notification + * using the given error argument. + * @static true + * @name throw + * @owner Observable + */ + static create(error, scheduler) { + return new ErrorObservable(error, scheduler); + } + static dispatch(arg) { + const { error, subscriber } = arg; + subscriber.error(error); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const error = this.error; + const scheduler = this.scheduler; + subscriber.syncErrorThrowable = true; + if (scheduler) { + return scheduler.schedule(ErrorObservable.dispatch, 0, { + error, subscriber + }); + } + else { + subscriber.error(error); + } + } +} +//# sourceMappingURL=ErrorObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ErrorObservable.js.map b/node_modules/rxjs/_esm2015/observable/ErrorObservable.js.map new file mode 100644 index 0000000..75bda8f --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ErrorObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ErrorObservable.js","sourceRoot":"","sources":["../../src/observable/ErrorObservable.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAS1C;;;;GAIG;AACH,qCAAqC,UAAU;IAmD7C,YAAmB,KAAU,EAAU,SAAsB;QAC3D,OAAO,CAAC;QADS,UAAK,GAAL,KAAK,CAAK;QAAU,cAAS,GAAT,SAAS,CAAa;IAE7D,CAAC;IAnDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACH,OAAO,MAAM,CAAC,KAAU,EAAE,SAAsB;QAC9C,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAgB;QAC9B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAClC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAMD,oCAAoC,CAAC,UAAU,CAAC,UAA2B;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAErC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACrD,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js b/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js new file mode 100644 index 0000000..8d8f86f --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js @@ -0,0 +1,187 @@ +import { Observable } from '../Observable'; +import { EmptyObservable } from './EmptyObservable'; +import { isArray } from '../util/isArray'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class ForkJoinObservable extends Observable { + constructor(sources, resultSelector) { + super(); + this.sources = sources; + this.resultSelector = resultSelector; + } + /* tslint:enable:max-line-length */ + /** + * Joins last values emitted by passed Observables. + * + * Wait for Observables to complete and then combine last values they emitted. + * + * + * + * `forkJoin` is an operator that takes any number of Observables which can be passed either as an array + * or directly as arguments. If no input Observables are provided, resulting stream will complete + * immediately. + * + * `forkJoin` will wait for all passed Observables to complete and then it will emit an array with last + * values from corresponding Observables. So if you pass `n` Observables to the operator, resulting + * array will have `n` values, where first value is the last thing emitted by the first Observable, + * second value is the last thing emitted by the second Observable and so on. That means `forkJoin` will + * not emit more than once and it will complete after that. If you need to emit combined values not only + * at the end of lifecycle of passed Observables, but also throughout it, try out {@link combineLatest} + * or {@link zip} instead. + * + * In order for resulting array to have the same length as the number of input Observables, whenever any of + * that Observables completes without emitting any value, `forkJoin` will complete at that moment as well + * and it will not emit anything either, even if it already has some last values from other Observables. + * Conversely, if there is an Observable that never completes, `forkJoin` will never complete as well, + * unless at any point some other Observable completes without emitting value, which brings us back to + * the previous case. Overall, in order for `forkJoin` to emit a value, all Observables passed as arguments + * have to emit something at least once and complete. + * + * If any input Observable errors at some point, `forkJoin` will error as well and all other Observables + * will be immediately unsubscribed. + * + * Optionally `forkJoin` accepts project function, that will be called with values which normally + * would land in emitted array. Whatever is returned by project function, will appear in output + * Observable instead. This means that default project can be thought of as a function that takes + * all its arguments and puts them into an array. Note that project function will be called only + * when output Observable is supposed to emit a result. + * + * @example Use forkJoin with operator emitting immediately + * const observable = Rx.Observable.forkJoin( + * Rx.Observable.of(1, 2, 3, 4), + * Rx.Observable.of(5, 6, 7, 8) + * ); + * observable.subscribe( + * value => console.log(value), + * err => {}, + * () => console.log('This is how it ends!') + * ); + * + * // Logs: + * // [4, 8] + * // "This is how it ends!" + * + * + * @example Use forkJoin with operator emitting after some time + * const observable = Rx.Observable.forkJoin( + * Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete + * Rx.Observable.interval(500).take(4) // emit 0, 1, 2, 3 every half a second and complete + * ); + * observable.subscribe( + * value => console.log(value), + * err => {}, + * () => console.log('This is how it ends!') + * ); + * + * // Logs: + * // [2, 3] after 3 seconds + * // "This is how it ends!" immediately after + * + * + * @example Use forkJoin with project function + * const observable = Rx.Observable.forkJoin( + * Rx.Observable.interval(1000).take(3), // emit 0, 1, 2 every second and complete + * Rx.Observable.interval(500).take(4), // emit 0, 1, 2, 3 every half a second and complete + * (n, m) => n + m + * ); + * observable.subscribe( + * value => console.log(value), + * err => {}, + * () => console.log('This is how it ends!') + * ); + * + * // Logs: + * // 5 after 3 seconds + * // "This is how it ends!" immediately after + * + * @see {@link combineLatest} + * @see {@link zip} + * + * @param {...SubscribableOrPromise} sources Any number of Observables provided either as an array or as an arguments + * passed directly to the operator. + * @param {function} [project] Function that takes values emitted by input Observables and returns value + * that will appear in resulting Observable instead of default array. + * @return {Observable} Observable emitting either an array of last values emitted by passed Observables + * or value from project function. + * @static true + * @name forkJoin + * @owner Observable + */ + static create(...sources) { + if (sources === null || arguments.length === 0) { + return new EmptyObservable(); + } + let resultSelector = null; + if (typeof sources[sources.length - 1] === 'function') { + resultSelector = sources.pop(); + } + // if the first and only other argument besides the resultSelector is an array + // assume it's been called with `forkJoin([obs1, obs2, obs3], resultSelector)` + if (sources.length === 1 && isArray(sources[0])) { + sources = sources[0]; + } + if (sources.length === 0) { + return new EmptyObservable(); + } + return new ForkJoinObservable(sources, resultSelector); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + return new ForkJoinSubscriber(subscriber, this.sources, this.resultSelector); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class ForkJoinSubscriber extends OuterSubscriber { + constructor(destination, sources, resultSelector) { + super(destination); + this.sources = sources; + this.resultSelector = resultSelector; + this.completed = 0; + this.haveValues = 0; + const len = sources.length; + this.total = len; + this.values = new Array(len); + for (let i = 0; i < len; i++) { + const source = sources[i]; + const innerSubscription = subscribeToResult(this, source, null, i); + if (innerSubscription) { + innerSubscription.outerIndex = i; + this.add(innerSubscription); + } + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.values[outerIndex] = innerValue; + if (!innerSub._hasValue) { + innerSub._hasValue = true; + this.haveValues++; + } + } + notifyComplete(innerSub) { + const destination = this.destination; + const { haveValues, resultSelector, values } = this; + const len = values.length; + if (!innerSub._hasValue) { + destination.complete(); + return; + } + this.completed++; + if (this.completed !== len) { + return; + } + if (haveValues === len) { + const value = resultSelector ? resultSelector.apply(this, values) : values; + destination.next(value); + } + destination.complete(); + } +} +//# sourceMappingURL=ForkJoinObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js.map b/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js.map new file mode 100644 index 0000000..e3926d6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ForkJoinObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ForkJoinObservable.js","sourceRoot":"","sources":["../../src/observable/ForkJoinObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAyB,MAAM,eAAe;OAG1D,EAAE,eAAe,EAAE,MAAM,mBAAmB;OAC5C,EAAE,OAAO,EAAE,MAAM,iBAAiB;OAElC,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAE,eAAe,EAAE,MAAM,oBAAoB;AAGpD;;;;GAIG;AACH,wCAA2C,UAAU;IACnD,YAAoB,OAA0C,EAC1C,cAA6C;QAC/D,OAAO,CAAC;QAFU,YAAO,GAAP,OAAO,CAAmC;QAC1C,mBAAc,GAAd,cAAc,CAA+B;IAEjE,CAAC;IAoBD,mCAAmC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgGG;IACH,OAAO,MAAM,CAAI,GAAG,OAE6C;QAC/D,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAED,IAAI,cAAc,GAAmC,IAAI,CAAC;QAC1D,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;YACtD,cAAc,GAAmC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjE,CAAC;QAED,8EAA8E;QAC9E,8EAA8E;QAC9E,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,GAAsC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,IAAI,kBAAkB,CAAoC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC5F,CAAC;IAED,oCAAoC,CAAC,UAAU,CAAC,UAA2B;QACzE,MAAM,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,iCAAoC,eAAe;IAMjD,YAAY,WAA0B,EAClB,OAA0C,EAC1C,cAA6C;QAC/D,MAAM,WAAW,CAAC,CAAC;QAFD,YAAO,GAAP,OAAO,CAAmC;QAC1C,mBAAc,GAAd,cAAc,CAA+B;QAPzD,cAAS,GAAG,CAAC,CAAC;QAGd,eAAU,GAAG,CAAC,CAAC;QAOrB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEnE,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACf,iBAAkB,CAAC,UAAU,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAe,EAAE,UAAa,EAC9B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;QACrC,EAAE,CAAC,CAAC,CAAO,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YACzB,QAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,cAAc,CAAC,QAA+B;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAE1B,EAAE,CAAC,CAAC,CAAO,QAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/B,WAAW,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC;QACT,CAAC;QAED,EAAE,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;YAC3E,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromEventObservable.js b/node_modules/rxjs/_esm2015/observable/FromEventObservable.js new file mode 100644 index 0000000..c3d5e05 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromEventObservable.js @@ -0,0 +1,203 @@ +import { Observable } from '../Observable'; +import { tryCatch } from '../util/tryCatch'; +import { isFunction } from '../util/isFunction'; +import { errorObject } from '../util/errorObject'; +import { Subscription } from '../Subscription'; +const toString = Object.prototype.toString; +function isNodeStyleEventEmitter(sourceObj) { + return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function'; +} +function isJQueryStyleEventEmitter(sourceObj) { + return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function'; +} +function isNodeList(sourceObj) { + return !!sourceObj && toString.call(sourceObj) === '[object NodeList]'; +} +function isHTMLCollection(sourceObj) { + return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]'; +} +function isEventTarget(sourceObj) { + return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function'; +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class FromEventObservable extends Observable { + constructor(sourceObj, eventName, selector, options) { + super(); + this.sourceObj = sourceObj; + this.eventName = eventName; + this.selector = selector; + this.options = options; + } + /* tslint:enable:max-line-length */ + /** + * Creates an Observable that emits events of a specific type coming from the + * given event target. + * + * Creates an Observable from DOM events, or Node.js + * EventEmitter events or others. + * + * + * + * `fromEvent` accepts as a first argument event target, which is an object with methods + * for registering event handler functions. As a second argument it takes string that indicates + * type of event we want to listen for. `fromEvent` supports selected types of event targets, + * which are described in detail below. If your event target does not match any of the ones listed, + * you should use {@link fromEventPattern}, which can be used on arbitrary APIs. + * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event + * handler functions have different names, but they all accept a string describing event type + * and function itself, which will be called whenever said event happens. + * + * Every time resulting Observable is subscribed, event handler function will be registered + * to event target on given event type. When that event fires, value + * passed as a first argument to registered function will be emitted by output Observable. + * When Observable is unsubscribed, function will be unregistered from event target. + * + * Note that if event target calls registered function with more than one argument, second + * and following arguments will not appear in resulting stream. In order to get access to them, + * you can pass to `fromEvent` optional project function, which will be called with all arguments + * passed to event handler. Output Observable will then emit value returned by project function, + * instead of the usual value. + * + * Remember that event targets listed below are checked via duck typing. It means that + * no matter what kind of object you have and no matter what environment you work in, + * you can safely use `fromEvent` on that object if it exposes described methods (provided + * of course they behave as was described above). So for example if Node.js library exposes + * event target which has the same method names as DOM EventTarget, `fromEvent` is still + * a good choice. + * + * If the API you use is more callback then event handler oriented (subscribed + * callback function fires only once and thus there is no need to manually + * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback} + * instead. + * + * `fromEvent` supports following types of event targets: + * + * **DOM EventTarget** + * + * This is an object with `addEventListener` and `removeEventListener` methods. + * + * In the browser, `addEventListener` accepts - apart from event type string and event + * handler function arguments - optional third parameter, which is either an object or boolean, + * both used for additional configuration how and when passed function will be called. When + * `fromEvent` is used with event target of that type, you can provide this values + * as third parameter as well. + * + * **Node.js EventEmitter** + * + * An object with `addListener` and `removeListener` methods. + * + * **JQuery-style event target** + * + * An object with `on` and `off` methods + * + * **DOM NodeList** + * + * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`. + * + * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes + * it contains and install event handler function in every of them. When returned Observable + * is unsubscribed, function will be removed from all Nodes. + * + * **DOM HtmlCollection** + * + * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is + * installed and removed in each of elements. + * + * + * @example Emits clicks happening on the DOM document + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * clicks.subscribe(x => console.log(x)); + * + * // Results in: + * // MouseEvent object logged to console every time a click + * // occurs on the document. + * + * + * @example Use addEventListener with capture option + * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter + * // which will be passed to addEventListener + * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click'); + * + * clicksInDocument.subscribe(() => console.log('document')); + * clicksInDiv.subscribe(() => console.log('div')); + * + * // By default events bubble UP in DOM tree, so normally + * // when we would click on div in document + * // "div" would be logged first and then "document". + * // Since we specified optional `capture` option, document + * // will catch event when it goes DOWN DOM tree, so console + * // will log "document" and then "div". + * + * @see {@link bindCallback} + * @see {@link bindNodeCallback} + * @see {@link fromEventPattern} + * + * @param {EventTargetLike} target The DOM EventTarget, Node.js + * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to. + * @param {string} eventName The event name of interest, being emitted by the + * `target`. + * @param {EventListenerOptions} [options] Options to pass through to addEventListener + * @param {SelectorMethodSignature} [selector] An optional function to + * post-process results. It takes the arguments from the event handler and + * should return a single value. + * @return {Observable} + * @static true + * @name fromEvent + * @owner Observable + */ + static create(target, eventName, options, selector) { + if (isFunction(options)) { + selector = options; + options = undefined; + } + return new FromEventObservable(target, eventName, selector, options); + } + static setupSubscription(sourceObj, eventName, handler, subscriber, options) { + let unsubscribe; + if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) { + for (let i = 0, len = sourceObj.length; i < len; i++) { + FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options); + } + } + else if (isEventTarget(sourceObj)) { + const source = sourceObj; + sourceObj.addEventListener(eventName, handler, options); + unsubscribe = () => source.removeEventListener(eventName, handler, options); + } + else if (isJQueryStyleEventEmitter(sourceObj)) { + const source = sourceObj; + sourceObj.on(eventName, handler); + unsubscribe = () => source.off(eventName, handler); + } + else if (isNodeStyleEventEmitter(sourceObj)) { + const source = sourceObj; + sourceObj.addListener(eventName, handler); + unsubscribe = () => source.removeListener(eventName, handler); + } + else { + throw new TypeError('Invalid event target'); + } + subscriber.add(new Subscription(unsubscribe)); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const sourceObj = this.sourceObj; + const eventName = this.eventName; + const options = this.options; + const selector = this.selector; + let handler = selector ? (...args) => { + let result = tryCatch(selector)(...args); + if (result === errorObject) { + subscriber.error(errorObject.e); + } + else { + subscriber.next(result); + } + } : (e) => subscriber.next(e); + FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options); + } +} +//# sourceMappingURL=FromEventObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromEventObservable.js.map b/node_modules/rxjs/_esm2015/observable/FromEventObservable.js.map new file mode 100644 index 0000000..6c88cee --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromEventObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FromEventObservable.js","sourceRoot":"","sources":["../../src/observable/FromEventObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js b/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js new file mode 100644 index 0000000..da0aa4e --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js @@ -0,0 +1,99 @@ +import { isFunction } from '../util/isFunction'; +import { Observable } from '../Observable'; +import { Subscription } from '../Subscription'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class FromEventPatternObservable extends Observable { + constructor(addHandler, removeHandler, selector) { + super(); + this.addHandler = addHandler; + this.removeHandler = removeHandler; + this.selector = selector; + } + /** + * Creates an Observable from an API based on addHandler/removeHandler + * functions. + * + * Converts any addHandler/removeHandler API to an + * Observable. + * + * + * + * Creates an Observable by using the `addHandler` and `removeHandler` + * functions to add and remove the handlers, with an optional selector + * function to project the event arguments to a result. The `addHandler` is + * called when the output Observable is subscribed, and `removeHandler` is + * called when the Subscription is unsubscribed. + * + * @example Emits clicks happening on the DOM document + * function addClickHandler(handler) { + * document.addEventListener('click', handler); + * } + * + * function removeClickHandler(handler) { + * document.removeEventListener('click', handler); + * } + * + * var clicks = Rx.Observable.fromEventPattern( + * addClickHandler, + * removeClickHandler + * ); + * clicks.subscribe(x => console.log(x)); + * + * @see {@link from} + * @see {@link fromEvent} + * + * @param {function(handler: Function): any} addHandler A function that takes + * a `handler` function as argument and attaches it somehow to the actual + * source of events. + * @param {function(handler: Function, signal?: any): void} [removeHandler] An optional function that + * takes a `handler` function as argument and removes it in case it was + * previously attached using `addHandler`. if addHandler returns signal to teardown when remove, + * removeHandler function will forward it. + * @param {function(...args: any): T} [selector] An optional function to + * post-process results. It takes the arguments from the event handler and + * should return a single value. + * @return {Observable} + * @static true + * @name fromEventPattern + * @owner Observable + */ + static create(addHandler, removeHandler, selector) { + return new FromEventPatternObservable(addHandler, removeHandler, selector); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const removeHandler = this.removeHandler; + const handler = !!this.selector ? (...args) => { + this._callSelector(subscriber, args); + } : function (e) { subscriber.next(e); }; + const retValue = this._callAddHandler(handler, subscriber); + if (!isFunction(removeHandler)) { + return; + } + subscriber.add(new Subscription(() => { + //TODO: determine whether or not to forward to error handler + removeHandler(handler, retValue); + })); + } + _callSelector(subscriber, args) { + try { + const result = this.selector(...args); + subscriber.next(result); + } + catch (e) { + subscriber.error(e); + } + } + _callAddHandler(handler, errorSubscriber) { + try { + return this.addHandler(handler) || null; + } + catch (e) { + errorSubscriber.error(e); + } + } +} +//# sourceMappingURL=FromEventPatternObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js.map b/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js.map new file mode 100644 index 0000000..ce7234b --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromEventPatternObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FromEventPatternObservable.js","sourceRoot":"","sources":["../../src/observable/FromEventPatternObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB;OACxC,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAE,MAAM,iBAAiB;AAG9C;;;;GAIG;AACH,gDAAmD,UAAU;IAwD3D,YAAoB,UAAsC,EACtC,aAAyD,EACzD,QAAqC;QACvD,OAAO,CAAC;QAHU,eAAU,GAAV,UAAU,CAA4B;QACtC,kBAAa,GAAb,aAAa,CAA4C;QACzD,aAAQ,GAAR,QAAQ,CAA6B;IAEzD,CAAC;IA1DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,OAAO,MAAM,CAAI,UAAsC,EACtC,aAAyD,EACzD,QAAqC;QACpD,MAAM,CAAC,IAAI,0BAA0B,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAQD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAgB;YACpD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,GAAG,UAAS,CAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE3D,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC;QACT,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;YAC9B,4DAA4D;YAC5D,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAE;QACpC,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,aAAa,CAAC,UAAyB,EAAE,IAAgB;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CACA;QAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAyB,EAAE,eAA8B;QAC/E,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QAC1C,CACA;QAAA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACT,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromObservable.js b/node_modules/rxjs/_esm2015/observable/FromObservable.js new file mode 100644 index 0000000..85ebbbf --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromObservable.js @@ -0,0 +1,113 @@ +import { isArray } from '../util/isArray'; +import { isArrayLike } from '../util/isArrayLike'; +import { isPromise } from '../util/isPromise'; +import { PromiseObservable } from './PromiseObservable'; +import { IteratorObservable } from './IteratorObservable'; +import { ArrayObservable } from './ArrayObservable'; +import { ArrayLikeObservable } from './ArrayLikeObservable'; +import { iterator as Symbol_iterator } from '../symbol/iterator'; +import { Observable } from '../Observable'; +import { ObserveOnSubscriber } from '../operators/observeOn'; +import { observable as Symbol_observable } from '../symbol/observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class FromObservable extends Observable { + constructor(ish, scheduler) { + super(null); + this.ish = ish; + this.scheduler = scheduler; + } + /** + * Creates an Observable from an Array, an array-like object, a Promise, an + * iterable object, or an Observable-like object. + * + * Converts almost anything to an Observable. + * + * + * + * Convert various other objects and data types into Observables. `from` + * converts a Promise or an array-like or an + * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable) + * object into an Observable that emits the items in that promise or array or + * iterable. A String, in this context, is treated as an array of characters. + * Observable-like objects (contains a function named with the ES2015 Symbol + * for Observable) can also be converted through this operator. + * + * @example Converts an array to an Observable + * var array = [10, 20, 30]; + * var result = Rx.Observable.from(array); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // 10 20 30 + * + * @example Convert an infinite iterable (from a generator) to an Observable + * function* generateDoubles(seed) { + * var i = seed; + * while (true) { + * yield i; + * i = 2 * i; // double it + * } + * } + * + * var iterator = generateDoubles(3); + * var result = Rx.Observable.from(iterator).take(10); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // 3 6 12 24 48 96 192 384 768 1536 + * + * @see {@link create} + * @see {@link fromEvent} + * @see {@link fromEventPattern} + * @see {@link fromPromise} + * + * @param {ObservableInput} ish A subscribable object, a Promise, an + * Observable-like, an Array, an iterable or an array-like object to be + * converted. + * @param {Scheduler} [scheduler] The scheduler on which to schedule the + * emissions of values. + * @return {Observable} The Observable whose values are originally from the + * input object that was converted. + * @static true + * @name from + * @owner Observable + */ + static create(ish, scheduler) { + if (ish != null) { + if (typeof ish[Symbol_observable] === 'function') { + if (ish instanceof Observable && !scheduler) { + return ish; + } + return new FromObservable(ish, scheduler); + } + else if (isArray(ish)) { + return new ArrayObservable(ish, scheduler); + } + else if (isPromise(ish)) { + return new PromiseObservable(ish, scheduler); + } + else if (typeof ish[Symbol_iterator] === 'function' || typeof ish === 'string') { + return new IteratorObservable(ish, scheduler); + } + else if (isArrayLike(ish)) { + return new ArrayLikeObservable(ish, scheduler); + } + } + throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable'); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const ish = this.ish; + const scheduler = this.scheduler; + if (scheduler == null) { + return ish[Symbol_observable]().subscribe(subscriber); + } + else { + return ish[Symbol_observable]().subscribe(new ObserveOnSubscriber(subscriber, scheduler, 0)); + } + } +} +//# sourceMappingURL=FromObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/FromObservable.js.map b/node_modules/rxjs/_esm2015/observable/FromObservable.js.map new file mode 100644 index 0000000..e3591ce --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/FromObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FromObservable.js","sourceRoot":"","sources":["../../src/observable/FromObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/GenerateObservable.js b/node_modules/rxjs/_esm2015/observable/GenerateObservable.js new file mode 100644 index 0000000..0fc01a9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/GenerateObservable.js @@ -0,0 +1,126 @@ +import { Observable } from '../Observable'; +import { isScheduler } from '../util/isScheduler'; +const selfSelector = (value) => value; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class GenerateObservable extends Observable { + constructor(initialState, condition, iterate, resultSelector, scheduler) { + super(); + this.initialState = initialState; + this.condition = condition; + this.iterate = iterate; + this.resultSelector = resultSelector; + this.scheduler = scheduler; + } + static create(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) { + if (arguments.length == 1) { + return new GenerateObservable(initialStateOrOptions.initialState, initialStateOrOptions.condition, initialStateOrOptions.iterate, initialStateOrOptions.resultSelector || selfSelector, initialStateOrOptions.scheduler); + } + if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) { + return new GenerateObservable(initialStateOrOptions, condition, iterate, selfSelector, resultSelectorOrObservable); + } + return new GenerateObservable(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + let state = this.initialState; + if (this.scheduler) { + return this.scheduler.schedule(GenerateObservable.dispatch, 0, { + subscriber, + iterate: this.iterate, + condition: this.condition, + resultSelector: this.resultSelector, + state }); + } + const { condition, resultSelector, iterate } = this; + do { + if (condition) { + let conditionResult; + try { + conditionResult = condition(state); + } + catch (err) { + subscriber.error(err); + return; + } + if (!conditionResult) { + subscriber.complete(); + break; + } + } + let value; + try { + value = resultSelector(state); + } + catch (err) { + subscriber.error(err); + return; + } + subscriber.next(value); + if (subscriber.closed) { + break; + } + try { + state = iterate(state); + } + catch (err) { + subscriber.error(err); + return; + } + } while (true); + } + static dispatch(state) { + const { subscriber, condition } = state; + if (subscriber.closed) { + return; + } + if (state.needIterate) { + try { + state.state = state.iterate(state.state); + } + catch (err) { + subscriber.error(err); + return; + } + } + else { + state.needIterate = true; + } + if (condition) { + let conditionResult; + try { + conditionResult = condition(state.state); + } + catch (err) { + subscriber.error(err); + return; + } + if (!conditionResult) { + subscriber.complete(); + return; + } + if (subscriber.closed) { + return; + } + } + let value; + try { + value = state.resultSelector(state.state); + } + catch (err) { + subscriber.error(err); + return; + } + if (subscriber.closed) { + return; + } + subscriber.next(value); + if (subscriber.closed) { + return; + } + return this.schedule(state); + } +} +//# sourceMappingURL=GenerateObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/GenerateObservable.js.map b/node_modules/rxjs/_esm2015/observable/GenerateObservable.js.map new file mode 100644 index 0000000..fc0d926 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/GenerateObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"GenerateObservable.js","sourceRoot":"","sources":["../../src/observable/GenerateObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IfObservable.js b/node_modules/rxjs/_esm2015/observable/IfObservable.js new file mode 100644 index 0000000..0afc876 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IfObservable.js @@ -0,0 +1,50 @@ +import { Observable } from '../Observable'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class IfObservable extends Observable { + constructor(condition, thenSource, elseSource) { + super(); + this.condition = condition; + this.thenSource = thenSource; + this.elseSource = elseSource; + } + static create(condition, thenSource, elseSource) { + return new IfObservable(condition, thenSource, elseSource); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const { condition, thenSource, elseSource } = this; + return new IfSubscriber(subscriber, condition, thenSource, elseSource); + } +} +class IfSubscriber extends OuterSubscriber { + constructor(destination, condition, thenSource, elseSource) { + super(destination); + this.condition = condition; + this.thenSource = thenSource; + this.elseSource = elseSource; + this.tryIf(); + } + tryIf() { + const { condition, thenSource, elseSource } = this; + let result; + try { + result = condition(); + const source = result ? thenSource : elseSource; + if (source) { + this.add(subscribeToResult(this, source)); + } + else { + this._complete(); + } + } + catch (err) { + this._error(err); + } + } +} +//# sourceMappingURL=IfObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IfObservable.js.map b/node_modules/rxjs/_esm2015/observable/IfObservable.js.map new file mode 100644 index 0000000..9b94f0b --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IfObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IfObservable.js","sourceRoot":"","sources":["../../src/observable/IfObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAyB,MAAM,eAAe;OAI1D,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAE,eAAe,EAAE,MAAM,oBAAoB;AACpD;;;;GAIG;AACH,kCAAwC,UAAU;IAQhD,YAAoB,SAA+B,EAC/B,UAA4C,EAC5C,UAA4C;QAC9D,OAAO,CAAC;QAHU,cAAS,GAAT,SAAS,CAAsB;QAC/B,eAAU,GAAV,UAAU,CAAkC;QAC5C,eAAU,GAAV,UAAU,CAAkC;IAEhE,CAAC;IAVD,OAAO,MAAM,CAAO,SAA+B,EAC/B,UAA4C,EAC5C,UAA4C;QAC9D,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAQD,oCAAoC,CAAC,UAAU,CAAC,UAA2B;QACzE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEnD,MAAM,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,2BAAiC,eAAe;IAC9C,YAAY,WAA0B,EAClB,SAA+B,EAC/B,UAA4C,EAC5C,UAA4C;QAC9D,MAAM,WAAW,CAAC,CAAC;QAHD,cAAS,GAAT,SAAS,CAAsB;QAC/B,eAAU,GAAV,UAAU,CAAkC;QAC5C,eAAU,GAAV,UAAU,CAAkC;QAE9D,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,KAAK;QACX,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEnD,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAY,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;YAEhD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IntervalObservable.js b/node_modules/rxjs/_esm2015/observable/IntervalObservable.js new file mode 100644 index 0000000..a53608d --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IntervalObservable.js @@ -0,0 +1,75 @@ +import { isNumeric } from '../util/isNumeric'; +import { Observable } from '../Observable'; +import { async } from '../scheduler/async'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class IntervalObservable extends Observable { + constructor(period = 0, scheduler = async) { + super(); + this.period = period; + this.scheduler = scheduler; + if (!isNumeric(period) || period < 0) { + this.period = 0; + } + if (!scheduler || typeof scheduler.schedule !== 'function') { + this.scheduler = async; + } + } + /** + * Creates an Observable that emits sequential numbers every specified + * interval of time, on a specified IScheduler. + * + * Emits incremental numbers periodically in time. + * + * + * + * + * `interval` returns an Observable that emits an infinite sequence of + * ascending integers, with a constant interval of time of your choosing + * between those emissions. The first emission is not sent immediately, but + * only after the first period has passed. By default, this operator uses the + * `async` IScheduler to provide a notion of time, but you may pass any + * IScheduler to it. + * + * @example Emits ascending numbers, one every second (1000ms) + * var numbers = Rx.Observable.interval(1000); + * numbers.subscribe(x => console.log(x)); + * + * @see {@link timer} + * @see {@link delay} + * + * @param {number} [period=0] The interval size in milliseconds (by default) + * or the time unit determined by the scheduler's clock. + * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling + * the emission of values, and providing a notion of "time". + * @return {Observable} An Observable that emits a sequential number each time + * interval. + * @static true + * @name interval + * @owner Observable + */ + static create(period = 0, scheduler = async) { + return new IntervalObservable(period, scheduler); + } + static dispatch(state) { + const { index, subscriber, period } = state; + subscriber.next(index); + if (subscriber.closed) { + return; + } + state.index += 1; + this.schedule(state, period); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const index = 0; + const period = this.period; + const scheduler = this.scheduler; + subscriber.add(scheduler.schedule(IntervalObservable.dispatch, period, { + index, subscriber, period + })); + } +} +//# sourceMappingURL=IntervalObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IntervalObservable.js.map b/node_modules/rxjs/_esm2015/observable/IntervalObservable.js.map new file mode 100644 index 0000000..898b42c --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IntervalObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IntervalObservable.js","sourceRoot":"","sources":["../../src/observable/IntervalObservable.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,EAAE,MAAM,mBAAmB;OAEtC,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,KAAK,EAAE,MAAM,oBAAoB;AAE1C;;;;GAIG;AACH,wCAAwC,UAAU;IAqDhD,YAAoB,MAAM,GAAW,CAAC,EAClB,SAAS,GAAe,KAAK;QAC/C,OAAO,CAAC;QAFU,WAAM,GAAN,MAAM,CAAY;QAClB,cAAS,GAAT,SAAS,CAAoB;QAE/C,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IA7DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,OAAO,MAAM,CAAC,MAAM,GAAW,CAAC,EAClB,SAAS,GAAe,KAAK;QACzC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QACxB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAE5C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAEV,IAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAaD,oCAAoC,CAAC,UAAU,CAAC,UAA8B;QAC5E,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE;YACrE,KAAK,EAAE,UAAU,EAAE,MAAM;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IteratorObservable.js b/node_modules/rxjs/_esm2015/observable/IteratorObservable.js new file mode 100644 index 0000000..e7955e5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IteratorObservable.js @@ -0,0 +1,148 @@ +import { root } from '../util/root'; +import { Observable } from '../Observable'; +import { iterator as Symbol_iterator } from '../symbol/iterator'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class IteratorObservable extends Observable { + constructor(iterator, scheduler) { + super(); + this.scheduler = scheduler; + if (iterator == null) { + throw new Error('iterator cannot be null.'); + } + this.iterator = getIterator(iterator); + } + static create(iterator, scheduler) { + return new IteratorObservable(iterator, scheduler); + } + static dispatch(state) { + const { index, hasError, iterator, subscriber } = state; + if (hasError) { + subscriber.error(state.error); + return; + } + let result = iterator.next(); + if (result.done) { + subscriber.complete(); + return; + } + subscriber.next(result.value); + state.index = index + 1; + if (subscriber.closed) { + if (typeof iterator.return === 'function') { + iterator.return(); + } + return; + } + this.schedule(state); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + let index = 0; + const { iterator, scheduler } = this; + if (scheduler) { + return scheduler.schedule(IteratorObservable.dispatch, 0, { + index, iterator, subscriber + }); + } + else { + do { + let result = iterator.next(); + if (result.done) { + subscriber.complete(); + break; + } + else { + subscriber.next(result.value); + } + if (subscriber.closed) { + if (typeof iterator.return === 'function') { + iterator.return(); + } + break; + } + } while (true); + } + } +} +class StringIterator { + constructor(str, idx = 0, len = str.length) { + this.str = str; + this.idx = idx; + this.len = len; + } + [Symbol_iterator]() { return (this); } + next() { + return this.idx < this.len ? { + done: false, + value: this.str.charAt(this.idx++) + } : { + done: true, + value: undefined + }; + } +} +class ArrayIterator { + constructor(arr, idx = 0, len = toLength(arr)) { + this.arr = arr; + this.idx = idx; + this.len = len; + } + [Symbol_iterator]() { return this; } + next() { + return this.idx < this.len ? { + done: false, + value: this.arr[this.idx++] + } : { + done: true, + value: undefined + }; + } +} +function getIterator(obj) { + const i = obj[Symbol_iterator]; + if (!i && typeof obj === 'string') { + return new StringIterator(obj); + } + if (!i && obj.length !== undefined) { + return new ArrayIterator(obj); + } + if (!i) { + throw new TypeError('object is not iterable'); + } + return obj[Symbol_iterator](); +} +const maxSafeInteger = Math.pow(2, 53) - 1; +function toLength(o) { + let len = +o.length; + if (isNaN(len)) { + return 0; + } + if (len === 0 || !numberIsFinite(len)) { + return len; + } + len = sign(len) * Math.floor(Math.abs(len)); + if (len <= 0) { + return 0; + } + if (len > maxSafeInteger) { + return maxSafeInteger; + } + return len; +} +function numberIsFinite(value) { + return typeof value === 'number' && root.isFinite(value); +} +function sign(value) { + let valueAsNumber = +value; + if (valueAsNumber === 0) { + return valueAsNumber; + } + if (isNaN(valueAsNumber)) { + return valueAsNumber; + } + return valueAsNumber < 0 ? -1 : 1; +} +//# sourceMappingURL=IteratorObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/IteratorObservable.js.map b/node_modules/rxjs/_esm2015/observable/IteratorObservable.js.map new file mode 100644 index 0000000..e48fa0d --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/IteratorObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IteratorObservable.js","sourceRoot":"","sources":["../../src/observable/IteratorObservable.ts"],"names":[],"mappings":"OAAO,EAAE,IAAI,EAAE,MAAM,cAAc;OAE5B,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB;AAIhE;;;;GAIG;AACH,wCAA2C,UAAU;IAmCnD,YAAY,QAAa,EAAU,SAAsB;QACvD,OAAO,CAAC;QADyB,cAAS,GAAT,SAAS,CAAa;QAGvD,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAxCD,OAAO,MAAM,CAAI,QAAa,EAAE,SAAsB;QACpD,MAAM,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QAExB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAExD,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACb,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC;QACT,CAAC;QAED,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAExB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;gBAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,CAAC;QACT,CAAC;QAEM,IAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAYD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QAEvE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAErC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACxD,KAAK,EAAE,QAAQ,EAAE,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC;gBACF,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChB,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACtB,KAAK,CAAC;gBACR,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;gBACD,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtB,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;wBAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACpB,CAAC;oBACD,KAAK,CAAC;gBACR,CAAC;YACH,CAAC,QAAQ,IAAI,EAAE;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED;IACE,YAAoB,GAAW,EACX,GAAG,GAAW,CAAC,EACf,GAAG,GAAW,GAAG,CAAC,MAAM;QAFxB,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAY;QACf,QAAG,GAAH,GAAG,CAAqB;IAC5C,CAAC;IACD,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;YACzB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACrC,GAAG;YACA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;IACE,YAAoB,GAAe,EACf,GAAG,GAAW,CAAC,EACf,GAAG,GAAW,QAAQ,CAAC,GAAG,CAAC;QAF3B,QAAG,GAAH,GAAG,CAAY;QACf,QAAG,GAAH,GAAG,CAAY;QACf,QAAG,GAAH,GAAG,CAAwB;IAC/C,CAAC;IACD,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,IAAI;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;YACzB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SAC9B,GAAG;YACA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,qBAAqB,GAAQ;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/B,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAE3C,kBAAkB,CAAM;IACtB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACpB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,CAAC,CAAC;IACb,CAAC;IACD,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC;IACf,CAAC;IACD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,MAAM,CAAC,CAAC,CAAC;IACb,CAAC;IACD,EAAE,CAAC,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AAED,wBAAwB,KAAU;IAChC,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,cAAc,KAAU;IACtB,IAAI,aAAa,GAAG,CAAC,KAAK,CAAC;IAC3B,EAAE,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC;IACvB,CAAC;IACD,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/NeverObservable.js b/node_modules/rxjs/_esm2015/observable/NeverObservable.js new file mode 100644 index 0000000..d3b40d3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/NeverObservable.js @@ -0,0 +1,50 @@ +import { Observable } from '../Observable'; +import { noop } from '../util/noop'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class NeverObservable extends Observable { + constructor() { + super(); + } + /** + * Creates an Observable that emits no items to the Observer. + * + * An Observable that never emits anything. + * + * + * + * This static operator is useful for creating a simple Observable that emits + * neither values nor errors nor the completion notification. It can be used + * for testing purposes or for composing with other Observables. Please note + * that by never emitting a complete notification, this Observable keeps the + * subscription from being disposed automatically. Subscriptions need to be + * manually disposed. + * + * @example Emit the number 7, then never emit anything else (not even complete). + * function info() { + * console.log('Will not be called'); + * } + * var result = Rx.Observable.never().startWith(7); + * result.subscribe(x => console.log(x), info, info); + * + * @see {@link create} + * @see {@link empty} + * @see {@link of} + * @see {@link throw} + * + * @return {Observable} A "never" Observable: never emits anything. + * @static true + * @name never + * @owner Observable + */ + static create() { + return new NeverObservable(); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + noop(); + } +} +//# sourceMappingURL=NeverObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/NeverObservable.js.map b/node_modules/rxjs/_esm2015/observable/NeverObservable.js.map new file mode 100644 index 0000000..0f35a33 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/NeverObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"NeverObservable.js","sourceRoot":"","sources":["../../src/observable/NeverObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,eAAe;OAEnC,EAAE,IAAI,EAAE,MAAM,cAAc;AAEnC;;;;GAIG;AACH,qCAAwC,UAAU;IAoChD;QACE,OAAO,CAAC;IACV,CAAC;IArCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,MAAM;QACX,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;IAClC,CAAC;IAMD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/PairsObservable.js b/node_modules/rxjs/_esm2015/observable/PairsObservable.js new file mode 100644 index 0000000..7485051 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/PairsObservable.js @@ -0,0 +1,76 @@ +import { Observable } from '../Observable'; +function dispatch(state) { + const { obj, keys, length, index, subscriber } = state; + if (index === length) { + subscriber.complete(); + return; + } + const key = keys[index]; + subscriber.next([key, obj[key]]); + state.index = index + 1; + this.schedule(state); +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class PairsObservable extends Observable { + constructor(obj, scheduler) { + super(); + this.obj = obj; + this.scheduler = scheduler; + this.keys = Object.keys(obj); + } + /** + * Convert an object into an observable sequence of [key, value] pairs + * using an optional IScheduler to enumerate the object. + * + * @example Converts a javascript object to an Observable + * var obj = { + * foo: 42, + * bar: 56, + * baz: 78 + * }; + * + * var source = Rx.Observable.pairs(obj); + * + * var subscription = source.subscribe( + * function (x) { + * console.log('Next: %s', x); + * }, + * function (err) { + * console.log('Error: %s', err); + * }, + * function () { + * console.log('Completed'); + * }); + * + * @param {Object} obj The object to inspect and turn into an + * Observable sequence. + * @param {Scheduler} [scheduler] An optional IScheduler to run the + * enumeration of the input sequence on. + * @returns {(Observable>)} An observable sequence of + * [key, value] pairs from the object. + */ + static create(obj, scheduler) { + return new PairsObservable(obj, scheduler); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const { keys, scheduler } = this; + const length = keys.length; + if (scheduler) { + return scheduler.schedule(dispatch, 0, { + obj: this.obj, keys, length, index: 0, subscriber + }); + } + else { + for (let idx = 0; idx < length; idx++) { + const key = keys[idx]; + subscriber.next([key, this.obj[key]]); + } + subscriber.complete(); + } + } +} +//# sourceMappingURL=PairsObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/PairsObservable.js.map b/node_modules/rxjs/_esm2015/observable/PairsObservable.js.map new file mode 100644 index 0000000..eeaad78 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/PairsObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PairsObservable.js","sourceRoot":"","sources":["../../src/observable/PairsObservable.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAY1C,kBAAoD,KAAsB;IACxE,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,KAAK,CAAC;IAErD,EAAE,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC;QACrB,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,CAAC;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEjC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAExB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,qCAAwC,UAAU;IAsChD,YAAoB,GAAW,EAAU,SAAsB;QAC7D,OAAO,CAAC;QADU,QAAG,GAAH,GAAG,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAa;QAE7D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAtCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,MAAM,CAAI,GAAW,EAAE,SAAsB;QAClD,MAAM,CAAC,IAAI,eAAe,CAAI,GAAG,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAOD,oCAAoC,CAAC,UAAU,CAAC,UAAyC;QACvF,MAAM,EAAC,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACrC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU;aAClD,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/PromiseObservable.js b/node_modules/rxjs/_esm2015/observable/PromiseObservable.js new file mode 100644 index 0000000..7f79715 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/PromiseObservable.js @@ -0,0 +1,111 @@ +import { root } from '../util/root'; +import { Observable } from '../Observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class PromiseObservable extends Observable { + constructor(promise, scheduler) { + super(); + this.promise = promise; + this.scheduler = scheduler; + } + /** + * Converts a Promise to an Observable. + * + * Returns an Observable that just emits the Promise's + * resolved value, then completes. + * + * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an + * Observable. If the Promise resolves with a value, the output Observable + * emits that resolved value as a `next`, and then completes. If the Promise + * is rejected, then the output Observable emits the corresponding Error. + * + * @example Convert the Promise returned by Fetch to an Observable + * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/')); + * result.subscribe(x => console.log(x), e => console.error(e)); + * + * @see {@link bindCallback} + * @see {@link from} + * + * @param {PromiseLike} promise The promise to be converted. + * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling + * the delivery of the resolved value (or the rejection). + * @return {Observable} An Observable which wraps the Promise. + * @static true + * @name fromPromise + * @owner Observable + */ + static create(promise, scheduler) { + return new PromiseObservable(promise, scheduler); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const promise = this.promise; + const scheduler = this.scheduler; + if (scheduler == null) { + if (this._isScalar) { + if (!subscriber.closed) { + subscriber.next(this.value); + subscriber.complete(); + } + } + else { + promise.then((value) => { + this.value = value; + this._isScalar = true; + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } + }, (err) => { + if (!subscriber.closed) { + subscriber.error(err); + } + }) + .then(null, err => { + // escape the promise trap, throw unhandled errors + root.setTimeout(() => { throw err; }); + }); + } + } + else { + if (this._isScalar) { + if (!subscriber.closed) { + return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber }); + } + } + else { + promise.then((value) => { + this.value = value; + this._isScalar = true; + if (!subscriber.closed) { + subscriber.add(scheduler.schedule(dispatchNext, 0, { value, subscriber })); + } + }, (err) => { + if (!subscriber.closed) { + subscriber.add(scheduler.schedule(dispatchError, 0, { err, subscriber })); + } + }) + .then(null, (err) => { + // escape the promise trap, throw unhandled errors + root.setTimeout(() => { throw err; }); + }); + } + } + } +} +function dispatchNext(arg) { + const { value, subscriber } = arg; + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } +} +function dispatchError(arg) { + const { err, subscriber } = arg; + if (!subscriber.closed) { + subscriber.error(err); + } +} +//# sourceMappingURL=PromiseObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/PromiseObservable.js.map b/node_modules/rxjs/_esm2015/observable/PromiseObservable.js.map new file mode 100644 index 0000000..bc1ea69 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/PromiseObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"PromiseObservable.js","sourceRoot":"","sources":["../../src/observable/PromiseObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/RangeObservable.js b/node_modules/rxjs/_esm2015/observable/RangeObservable.js new file mode 100644 index 0000000..a4f86fe --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/RangeObservable.js @@ -0,0 +1,85 @@ +import { Observable } from '../Observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class RangeObservable extends Observable { + constructor(start, count, scheduler) { + super(); + this.start = start; + this._count = count; + this.scheduler = scheduler; + } + /** + * Creates an Observable that emits a sequence of numbers within a specified + * range. + * + * Emits a sequence of numbers in a range. + * + * + * + * `range` operator emits a range of sequential integers, in order, where you + * select the `start` of the range and its `length`. By default, uses no + * IScheduler and just delivers the notifications synchronously, but may use + * an optional IScheduler to regulate those deliveries. + * + * @example Emits the numbers 1 to 10 + * var numbers = Rx.Observable.range(1, 10); + * numbers.subscribe(x => console.log(x)); + * + * @see {@link timer} + * @see {@link interval} + * + * @param {number} [start=0] The value of the first integer in the sequence. + * @param {number} [count=0] The number of sequential integers to generate. + * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling + * the emissions of the notifications. + * @return {Observable} An Observable of numbers that emits a finite range of + * sequential integers. + * @static true + * @name range + * @owner Observable + */ + static create(start = 0, count = 0, scheduler) { + return new RangeObservable(start, count, scheduler); + } + static dispatch(state) { + const { start, index, count, subscriber } = state; + if (index >= count) { + subscriber.complete(); + return; + } + subscriber.next(start); + if (subscriber.closed) { + return; + } + state.index = index + 1; + state.start = start + 1; + this.schedule(state); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + let index = 0; + let start = this.start; + const count = this._count; + const scheduler = this.scheduler; + if (scheduler) { + return scheduler.schedule(RangeObservable.dispatch, 0, { + index, count, start, subscriber + }); + } + else { + do { + if (index++ >= count) { + subscriber.complete(); + break; + } + subscriber.next(start++); + if (subscriber.closed) { + break; + } + } while (true); + } + } +} +//# sourceMappingURL=RangeObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/RangeObservable.js.map b/node_modules/rxjs/_esm2015/observable/RangeObservable.js.map new file mode 100644 index 0000000..55d8b37 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/RangeObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RangeObservable.js","sourceRoot":"","sources":["../../src/observable/RangeObservable.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;GAIG;AACH,qCAAqC,UAAU;IA+D7C,YAAY,KAAa,EACb,KAAa,EACb,SAAsB;QAChC,OAAO,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IApED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,MAAM,CAAC,KAAK,GAAW,CAAC,EACjB,KAAK,GAAW,CAAC,EACjB,SAAsB;QAClC,MAAM,CAAC,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QAExB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAElD,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;YACnB,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAEjB,IAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAeD,oCAAoC,CAAC,UAAU,CAAC,UAA8B;QAC5E,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACrD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,GAAG,CAAC;gBACF,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;oBACrB,UAAU,CAAC,QAAQ,EAAE,CAAC;oBACtB,KAAK,CAAC;gBACR,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtB,KAAK,CAAC;gBACR,CAAC;YACH,CAAC,QAAQ,IAAI,EAAE;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ScalarObservable.js b/node_modules/rxjs/_esm2015/observable/ScalarObservable.js new file mode 100644 index 0000000..c5400be --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ScalarObservable.js @@ -0,0 +1,49 @@ +import { Observable } from '../Observable'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class ScalarObservable extends Observable { + constructor(value, scheduler) { + super(); + this.value = value; + this.scheduler = scheduler; + this._isScalar = true; + if (scheduler) { + this._isScalar = false; + } + } + static create(value, scheduler) { + return new ScalarObservable(value, scheduler); + } + static dispatch(state) { + const { done, value, subscriber } = state; + if (done) { + subscriber.complete(); + return; + } + subscriber.next(value); + if (subscriber.closed) { + return; + } + state.done = true; + this.schedule(state); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const value = this.value; + const scheduler = this.scheduler; + if (scheduler) { + return scheduler.schedule(ScalarObservable.dispatch, 0, { + done: false, value, subscriber + }); + } + else { + subscriber.next(value); + if (!subscriber.closed) { + subscriber.complete(); + } + } + } +} +//# sourceMappingURL=ScalarObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/ScalarObservable.js.map b/node_modules/rxjs/_esm2015/observable/ScalarObservable.js.map new file mode 100644 index 0000000..f516eb9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/ScalarObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ScalarObservable.js","sourceRoot":"","sources":["../../src/observable/ScalarObservable.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;GAIG;AACH,sCAAyC,UAAU;IAwBjD,YAAmB,KAAQ,EAAU,SAAsB;QACzD,OAAO,CAAC;QADS,UAAK,GAAL,KAAK,CAAG;QAAU,cAAS,GAAT,SAAS,CAAa;QAF3D,cAAS,GAAY,IAAI,CAAC;QAIxB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IA5BD,OAAO,MAAM,CAAI,KAAQ,EAAE,SAAsB;QAC/C,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QACxB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACT,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAED,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACX,IAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAWD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACtD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvB,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js b/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js new file mode 100644 index 0000000..aa92dbf --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js @@ -0,0 +1,38 @@ +import { Observable } from '../Observable'; +import { asap } from '../scheduler/asap'; +import { isNumeric } from '../util/isNumeric'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class SubscribeOnObservable extends Observable { + constructor(source, delayTime = 0, scheduler = asap) { + super(); + this.source = source; + this.delayTime = delayTime; + this.scheduler = scheduler; + if (!isNumeric(delayTime) || delayTime < 0) { + this.delayTime = 0; + } + if (!scheduler || typeof scheduler.schedule !== 'function') { + this.scheduler = asap; + } + } + static create(source, delay = 0, scheduler = asap) { + return new SubscribeOnObservable(source, delay, scheduler); + } + static dispatch(arg) { + const { source, subscriber } = arg; + return this.add(source.subscribe(subscriber)); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const delay = this.delayTime; + const source = this.source; + const scheduler = this.scheduler; + return scheduler.schedule(SubscribeOnObservable.dispatch, delay, { + source, subscriber + }); + } +} +//# sourceMappingURL=SubscribeOnObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js.map b/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js.map new file mode 100644 index 0000000..05b8a38 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/SubscribeOnObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SubscribeOnObservable.js","sourceRoot":"","sources":["../../src/observable/SubscribeOnObservable.ts"],"names":[],"mappings":"OAIO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,IAAI,EAAE,MAAM,mBAAmB;OACjC,EAAE,SAAS,EAAE,MAAM,mBAAmB;AAO7C;;;;GAIG;AACH,2CAA8C,UAAU;IAUtD,YAAmB,MAAqB,EACpB,SAAS,GAAW,CAAC,EACrB,SAAS,GAAe,IAAI;QAC9C,OAAO,CAAC;QAHS,WAAM,GAAN,MAAM,CAAe;QACpB,cAAS,GAAT,SAAS,CAAY;QACrB,cAAS,GAAT,SAAS,CAAmB;QAE9C,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAnBD,OAAO,MAAM,CAAI,MAAqB,EAAE,KAAK,GAAW,CAAC,EAAE,SAAS,GAAe,IAAI;QACrF,MAAM,CAAC,IAAI,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,QAAQ,CAAqB,GAAmB;QACrD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;IAcD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE;YAC/D,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/TimerObservable.js b/node_modules/rxjs/_esm2015/observable/TimerObservable.js new file mode 100644 index 0000000..4a2e240 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/TimerObservable.js @@ -0,0 +1,96 @@ +import { isNumeric } from '../util/isNumeric'; +import { Observable } from '../Observable'; +import { async } from '../scheduler/async'; +import { isScheduler } from '../util/isScheduler'; +import { isDate } from '../util/isDate'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class TimerObservable extends Observable { + constructor(dueTime = 0, period, scheduler) { + super(); + this.period = -1; + this.dueTime = 0; + if (isNumeric(period)) { + this.period = Number(period) < 1 && 1 || Number(period); + } + else if (isScheduler(period)) { + scheduler = period; + } + if (!isScheduler(scheduler)) { + scheduler = async; + } + this.scheduler = scheduler; + this.dueTime = isDate(dueTime) ? + (+dueTime - this.scheduler.now()) : + dueTime; + } + /** + * Creates an Observable that starts emitting after an `initialDelay` and + * emits ever increasing numbers after each `period` of time thereafter. + * + * Its like {@link interval}, but you can specify when + * should the emissions start. + * + * + * + * `timer` returns an Observable that emits an infinite sequence of ascending + * integers, with a constant interval of time, `period` of your choosing + * between those emissions. The first emission happens after the specified + * `initialDelay`. The initial delay may be a {@link Date}. By default, this + * operator uses the `async` IScheduler to provide a notion of time, but you + * may pass any IScheduler to it. If `period` is not specified, the output + * Observable emits only one value, `0`. Otherwise, it emits an infinite + * sequence. + * + * @example Emits ascending numbers, one every second (1000ms), starting after 3 seconds + * var numbers = Rx.Observable.timer(3000, 1000); + * numbers.subscribe(x => console.log(x)); + * + * @example Emits one number after five seconds + * var numbers = Rx.Observable.timer(5000); + * numbers.subscribe(x => console.log(x)); + * + * @see {@link interval} + * @see {@link delay} + * + * @param {number|Date} initialDelay The initial delay time to wait before + * emitting the first value of `0`. + * @param {number} [period] The period of time between emissions of the + * subsequent numbers. + * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling + * the emission of values, and providing a notion of "time". + * @return {Observable} An Observable that emits a `0` after the + * `initialDelay` and ever increasing numbers after each `period` of time + * thereafter. + * @static true + * @name timer + * @owner Observable + */ + static create(initialDelay = 0, period, scheduler) { + return new TimerObservable(initialDelay, period, scheduler); + } + static dispatch(state) { + const { index, period, subscriber } = state; + const action = this; + subscriber.next(index); + if (subscriber.closed) { + return; + } + else if (period === -1) { + return subscriber.complete(); + } + state.index = index + 1; + action.schedule(state, period); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const index = 0; + const { period, dueTime, scheduler } = this; + return scheduler.schedule(TimerObservable.dispatch, dueTime, { + index, period, subscriber + }); + } +} +//# sourceMappingURL=TimerObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/TimerObservable.js.map b/node_modules/rxjs/_esm2015/observable/TimerObservable.js.map new file mode 100644 index 0000000..afafc84 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/TimerObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TimerObservable.js","sourceRoot":"","sources":["../../src/observable/TimerObservable.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB;OAEtC,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,MAAM,EAAE,MAAM,gBAAgB;AAIvC;;;;GAIG;AACH,qCAAqC,UAAU;IAuE7C,YAAY,OAAO,GAAkB,CAAC,EAC1B,MAA4B,EAC5B,SAAsB;QAChC,OAAO,CAAC;QAPF,WAAM,GAAW,CAAC,CAAC,CAAC;QACpB,YAAO,GAAW,CAAC,CAAC;QAQ1B,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,SAAS,GAAgB,MAAM,CAAC;QAClC,CAAC;QAED,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACvB,OAAQ,CAAC;IACvB,CAAC;IAxFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,OAAO,MAAM,CAAC,YAAY,GAAkB,CAAC,EAC/B,MAA4B,EAC5B,SAAsB;QAClC,MAAM,CAAC,IAAI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC,KAAU;QAExB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC5C,MAAM,MAAM,GAAU,IAAK,CAAC;QAE5B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACT,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IA2BD,oCAAoC,CAAC,UAAU,CAAC,UAA8B;QAC5E,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAE5C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE;YAC3D,KAAK,EAAE,MAAM,EAAE,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/UsingObservable.js b/node_modules/rxjs/_esm2015/observable/UsingObservable.js new file mode 100644 index 0000000..2774a39 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/UsingObservable.js @@ -0,0 +1,50 @@ +import { Observable } from '../Observable'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class UsingObservable extends Observable { + constructor(resourceFactory, observableFactory) { + super(); + this.resourceFactory = resourceFactory; + this.observableFactory = observableFactory; + } + static create(resourceFactory, observableFactory) { + return new UsingObservable(resourceFactory, observableFactory); + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const { resourceFactory, observableFactory } = this; + let resource; + try { + resource = resourceFactory(); + return new UsingSubscriber(subscriber, resource, observableFactory); + } + catch (err) { + subscriber.error(err); + } + } +} +class UsingSubscriber extends OuterSubscriber { + constructor(destination, resource, observableFactory) { + super(destination); + this.resource = resource; + this.observableFactory = observableFactory; + destination.add(resource); + this.tryUse(); + } + tryUse() { + try { + const source = this.observableFactory.call(this, this.resource); + if (source) { + this.add(subscribeToResult(this, source)); + } + } + catch (err) { + this._error(err); + } + } +} +//# sourceMappingURL=UsingObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/UsingObservable.js.map b/node_modules/rxjs/_esm2015/observable/UsingObservable.js.map new file mode 100644 index 0000000..a2e85df --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/UsingObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"UsingObservable.js","sourceRoot":"","sources":["../../src/observable/UsingObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAyB,MAAM,eAAe;OAI1D,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAE,eAAe,EAAE,MAAM,oBAAoB;AACpD;;;;GAIG;AACH,qCAAwC,UAAU;IAOhD,YAAoB,eAAmD,EACnD,iBAAuF;QACzG,OAAO,CAAC;QAFU,oBAAe,GAAf,eAAe,CAAoC;QACnD,sBAAiB,GAAjB,iBAAiB,CAAsE;IAE3G,CAAC;IARD,OAAO,MAAM,CAAI,eAAmD,EACnD,iBAAuF;QACtG,MAAM,CAAC,IAAI,eAAe,CAAI,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC;IAOD,oCAAoC,CAAC,UAAU,CAAC,UAAyB;QACvE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAEpD,IAAI,QAA+B,CAAC;QAEpC,IAAI,CAAC;YACH,QAAQ,GAA0B,eAAe,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACtE,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,8BAAiC,eAAe;IAC9C,YAAY,WAA0B,EAClB,QAA+B,EAC/B,iBAAuF;QACzG,MAAM,WAAW,CAAC,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,sBAAiB,GAAjB,iBAAiB,CAAsE;QAEzG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,MAAM;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/bindCallback.js b/node_modules/rxjs/_esm2015/observable/bindCallback.js new file mode 100644 index 0000000..f8ff5c5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/bindCallback.js @@ -0,0 +1,3 @@ +import { BoundCallbackObservable } from './BoundCallbackObservable'; +export const bindCallback = BoundCallbackObservable.create; +//# sourceMappingURL=bindCallback.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/bindCallback.js.map b/node_modules/rxjs/_esm2015/observable/bindCallback.js.map new file mode 100644 index 0000000..c79cf61 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/bindCallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bindCallback.js","sourceRoot":"","sources":["../../src/observable/bindCallback.ts"],"names":[],"mappings":"OAAO,EAAG,uBAAuB,EAAG,MAAM,2BAA2B;AAErE,OAAO,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js b/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js new file mode 100644 index 0000000..028c707 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js @@ -0,0 +1,3 @@ +import { BoundNodeCallbackObservable } from './BoundNodeCallbackObservable'; +export const bindNodeCallback = BoundNodeCallbackObservable.create; +//# sourceMappingURL=bindNodeCallback.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js.map b/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js.map new file mode 100644 index 0000000..3ac4415 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/bindNodeCallback.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bindNodeCallback.js","sourceRoot":"","sources":["../../src/observable/bindNodeCallback.ts"],"names":[],"mappings":"OAAO,EAAG,2BAA2B,EAAG,MAAM,+BAA+B;AAE7E,OAAO,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/combineLatest.js b/node_modules/rxjs/_esm2015/observable/combineLatest.js new file mode 100644 index 0000000..0cf7cb2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/combineLatest.js @@ -0,0 +1,130 @@ +import { isScheduler } from '../util/isScheduler'; +import { isArray } from '../util/isArray'; +import { ArrayObservable } from './ArrayObservable'; +import { CombineLatestOperator } from '../operators/combineLatest'; +/* tslint:enable:max-line-length */ +/** + * Combines multiple Observables to create an Observable whose values are + * calculated from the latest values of each of its input Observables. + * + * Whenever any input Observable emits a value, it + * computes a formula using the latest values from all the inputs, then emits + * the output of that formula. + * + * + * + * `combineLatest` combines the values from all the Observables passed as + * arguments. This is done by subscribing to each Observable in order and, + * whenever any Observable emits, collecting an array of the most recent + * values from each Observable. So if you pass `n` Observables to operator, + * returned Observable will always emit an array of `n` values, in order + * corresponding to order of passed Observables (value from the first Observable + * on the first place and so on). + * + * Static version of `combineLatest` accepts either an array of Observables + * or each Observable can be put directly as an argument. Note that array of + * Observables is good choice, if you don't know beforehand how many Observables + * you will combine. Passing empty array will result in Observable that + * completes immediately. + * + * To ensure output array has always the same length, `combineLatest` will + * actually wait for all input Observables to emit at least once, + * before it starts emitting results. This means if some Observable emits + * values before other Observables started emitting, all that values but last + * will be lost. On the other hand, is some Observable does not emit value but + * completes, resulting Observable will complete at the same moment without + * emitting anything, since it will be now impossible to include value from + * completed Observable in resulting array. Also, if some input Observable does + * not emit any value and never completes, `combineLatest` will also never emit + * and never complete, since, again, it will wait for all streams to emit some + * value. + * + * If at least one Observable was passed to `combineLatest` and all passed Observables + * emitted something, resulting Observable will complete when all combined + * streams complete. So even if some Observable completes, result of + * `combineLatest` will still emit values when other Observables do. In case + * of completed Observable, its value from now on will always be the last + * emitted value. On the other hand, if any Observable errors, `combineLatest` + * will error immediately as well, and all other Observables will be unsubscribed. + * + * `combineLatest` accepts as optional parameter `project` function, which takes + * as arguments all values that would normally be emitted by resulting Observable. + * `project` can return any kind of value, which will be then emitted by Observable + * instead of default array. Note that `project` does not take as argument that array + * of values, but values themselves. That means default `project` can be imagined + * as function that takes all its arguments and puts them into an array. + * + * + * @example Combine two timer Observables + * const firstTimer = Rx.Observable.timer(0, 1000); // emit 0, 1, 2... after every second, starting from now + * const secondTimer = Rx.Observable.timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now + * const combinedTimers = Rx.Observable.combineLatest(firstTimer, secondTimer); + * combinedTimers.subscribe(value => console.log(value)); + * // Logs + * // [0, 0] after 0.5s + * // [1, 0] after 1s + * // [1, 1] after 1.5s + * // [2, 1] after 2s + * + * + * @example Combine an array of Observables + * const observables = [1, 5, 10].map( + * n => Rx.Observable.of(n).delay(n * 1000).startWith(0) // emit 0 and then emit n after n seconds + * ); + * const combined = Rx.Observable.combineLatest(observables); + * combined.subscribe(value => console.log(value)); + * // Logs + * // [0, 0, 0] immediately + * // [1, 0, 0] after 1s + * // [1, 5, 0] after 5s + * // [1, 5, 10] after 10s + * + * + * @example Use project function to dynamically calculate the Body-Mass Index + * var weight = Rx.Observable.of(70, 72, 76, 79, 75); + * var height = Rx.Observable.of(1.76, 1.77, 1.78); + * var bmi = Rx.Observable.combineLatest(weight, height, (w, h) => w / (h * h)); + * bmi.subscribe(x => console.log('BMI is ' + x)); + * + * // With output to console: + * // BMI is 24.212293388429753 + * // BMI is 23.93948099205209 + * // BMI is 23.671253629592222 + * + * + * @see {@link combineAll} + * @see {@link merge} + * @see {@link withLatestFrom} + * + * @param {ObservableInput} observable1 An input Observable to combine with other Observables. + * @param {ObservableInput} observable2 An input Observable to combine with other Observables. + * More than one input Observables may be given as arguments + * or an array of Observables may be given as the first argument. + * @param {function} [project] An optional function to project the values from + * the combined latest values into a new value on the output Observable. + * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to + * each input Observable. + * @return {Observable} An Observable of projected values from the most recent + * values from each input Observable, or an array of the most recent values from + * each input Observable. + * @static true + * @name combineLatest + * @owner Observable + */ +export function combineLatest(...observables) { + let project = null; + let scheduler = null; + if (isScheduler(observables[observables.length - 1])) { + scheduler = observables.pop(); + } + if (typeof observables[observables.length - 1] === 'function') { + project = observables.pop(); + } + // if the first and only other argument besides the resultSelector is an array + // assume it's been called with `combineLatest([obs1, obs2, obs3], project)` + if (observables.length === 1 && isArray(observables[0])) { + observables = observables[0]; + } + return new ArrayObservable(observables, scheduler).lift(new CombineLatestOperator(project)); +} +//# sourceMappingURL=combineLatest.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/combineLatest.js.map b/node_modules/rxjs/_esm2015/observable/combineLatest.js.map new file mode 100644 index 0000000..eecf845 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/combineLatest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineLatest.js","sourceRoot":"","sources":["../../src/observable/combineLatest.ts"],"names":[],"mappings":"OAEO,EAAG,WAAW,EAAG,MAAM,qBAAqB;OAC5C,EAAG,OAAO,EAAG,MAAM,iBAAiB;OACpC,EAAG,eAAe,EAAG,MAAM,mBAAmB;OAC9C,EAAG,qBAAqB,EAAG,MAAM,4BAA4B;AAuBpE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GG;AACH,8BAAoC,GAAG,WAGwB;IAC7D,IAAI,OAAO,GAAkC,IAAI,CAAC;IAClD,IAAI,SAAS,GAAe,IAAI,CAAC;IAEjC,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,SAAS,GAAe,WAAW,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;QAC9D,OAAO,GAAiC,WAAW,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAED,8EAA8E;IAC9E,4EAA4E;IAC5E,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,WAAW,GAA2B,WAAW,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAO,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/concat.js b/node_modules/rxjs/_esm2015/observable/concat.js new file mode 100644 index 0000000..63759a6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/concat.js @@ -0,0 +1,105 @@ +import { isScheduler } from '../util/isScheduler'; +import { of } from './of'; +import { from } from './from'; +import { concatAll } from '../operators/concatAll'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which sequentially emits all values from given + * Observable and then moves on to the next. + * + * Concatenates multiple Observables together by + * sequentially emitting their values, one Observable after the other. + * + * + * + * `concat` joins multiple Observables together, by subscribing to them one at a time and + * merging their results into the output Observable. You can pass either an array of + * Observables, or put them directly as arguments. Passing an empty array will result + * in Observable that completes immediately. + * + * `concat` will subscribe to first input Observable and emit all its values, without + * changing or affecting them in any way. When that Observable completes, it will + * subscribe to then next Observable passed and, again, emit its values. This will be + * repeated, until the operator runs out of Observables. When last input Observable completes, + * `concat` will complete as well. At any given moment only one Observable passed to operator + * emits values. If you would like to emit values from passed Observables concurrently, check out + * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact, + * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`. + * + * Note that if some input Observable never completes, `concat` will also never complete + * and Observables following the one that did not complete will never be subscribed. On the other + * hand, if some Observable simply completes immediately after it is subscribed, it will be + * invisible for `concat`, which will just move on to the next Observable. + * + * If any Observable in chain errors, instead of passing control to the next Observable, + * `concat` will error immediately as well. Observables that would be subscribed after + * the one that emitted error, never will. + * + * If you pass to `concat` the same Observable many times, its stream of values + * will be "replayed" on every subscription, which means you can repeat given Observable + * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious, + * you can always use {@link repeat}. + * + * @example Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10 + * var timer = Rx.Observable.interval(1000).take(4); + * var sequence = Rx.Observable.range(1, 10); + * var result = Rx.Observable.concat(timer, sequence); + * result.subscribe(x => console.log(x)); + * + * // results in: + * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10 + * + * + * @example Concatenate an array of 3 Observables + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed + * result.subscribe(x => console.log(x)); + * + * // results in the following: + * // (Prints to console sequentially) + * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9 + * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5 + * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9 + * + * + * @example Concatenate the same Observable to repeat it + * const timer = Rx.Observable.interval(1000).take(2); + * + * Rx.Observable.concat(timer, timer) // concating the same Observable! + * .subscribe( + * value => console.log(value), + * err => {}, + * () => console.log('...and it is done!') + * ); + * + * // Logs: + * // 0 after 1s + * // 1 after 2s + * // 0 after 3s + * // 1 after 4s + * // "...and it is done!" also after 4s + * + * @see {@link concatAll} + * @see {@link concatMap} + * @see {@link concatMapTo} + * + * @param {ObservableInput} input1 An input Observable to concatenate with others. + * @param {ObservableInput} input2 An input Observable to concatenate with others. + * More than one input Observables may be given as argument. + * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each + * Observable subscription on. + * @return {Observable} All values of each passed Observable merged into a + * single Observable, in order, in serial fashion. + * @static true + * @name concat + * @owner Observable + */ +export function concat(...observables) { + if (observables.length === 1 || (observables.length === 2 && isScheduler(observables[1]))) { + return from(observables[0]); + } + return concatAll()(of(...observables)); +} +//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/concat.js.map b/node_modules/rxjs/_esm2015/observable/concat.js.map new file mode 100644 index 0000000..2e79269 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/concat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/observable/concat.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,EAAE,EAAE,MAAM,MAAM;OAClB,EAAE,IAAI,EAAE,MAAM,QAAQ;OACtB,EAAE,SAAS,EAAE,MAAM,wBAAwB;AAWlD,mCAAmC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4FG;AACH,uBAA6B,GAAG,WAAqD;IACnF,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAkB,CAAC;AAC1D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/defer.js b/node_modules/rxjs/_esm2015/observable/defer.js new file mode 100644 index 0000000..b209da8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/defer.js @@ -0,0 +1,3 @@ +import { DeferObservable } from './DeferObservable'; +export const defer = DeferObservable.create; +//# sourceMappingURL=defer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/defer.js.map b/node_modules/rxjs/_esm2015/observable/defer.js.map new file mode 100644 index 0000000..8329a27 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/defer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defer.js","sourceRoot":"","sources":["../../src/observable/defer.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js b/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js new file mode 100644 index 0000000..37aeaf8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js @@ -0,0 +1,399 @@ +import { root } from '../../util/root'; +import { tryCatch } from '../../util/tryCatch'; +import { errorObject } from '../../util/errorObject'; +import { Observable } from '../../Observable'; +import { Subscriber } from '../../Subscriber'; +import { map } from '../../operators/map'; +function getCORSRequest() { + if (root.XMLHttpRequest) { + return new root.XMLHttpRequest(); + } + else if (!!root.XDomainRequest) { + return new root.XDomainRequest(); + } + else { + throw new Error('CORS is not supported by your browser'); + } +} +function getXMLHttpRequest() { + if (root.XMLHttpRequest) { + return new root.XMLHttpRequest(); + } + else { + let progId; + try { + const progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; + for (let i = 0; i < 3; i++) { + try { + progId = progIds[i]; + if (new root.ActiveXObject(progId)) { + break; + } + } + catch (e) { + } + } + return new root.ActiveXObject(progId); + } + catch (e) { + throw new Error('XMLHttpRequest is not supported by your browser'); + } + } +} +export function ajaxGet(url, headers = null) { + return new AjaxObservable({ method: 'GET', url, headers }); +} +; +export function ajaxPost(url, body, headers) { + return new AjaxObservable({ method: 'POST', url, body, headers }); +} +; +export function ajaxDelete(url, headers) { + return new AjaxObservable({ method: 'DELETE', url, headers }); +} +; +export function ajaxPut(url, body, headers) { + return new AjaxObservable({ method: 'PUT', url, body, headers }); +} +; +export function ajaxPatch(url, body, headers) { + return new AjaxObservable({ method: 'PATCH', url, body, headers }); +} +; +const mapResponse = map((x, index) => x.response); +export function ajaxGetJSON(url, headers) { + return mapResponse(new AjaxObservable({ + method: 'GET', + url, + responseType: 'json', + headers + })); +} +; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class AjaxObservable extends Observable { + constructor(urlOrRequest) { + super(); + const request = { + async: true, + createXHR: function () { + return this.crossDomain ? getCORSRequest.call(this) : getXMLHttpRequest(); + }, + crossDomain: false, + withCredentials: false, + headers: {}, + method: 'GET', + responseType: 'json', + timeout: 0 + }; + if (typeof urlOrRequest === 'string') { + request.url = urlOrRequest; + } + else { + for (const prop in urlOrRequest) { + if (urlOrRequest.hasOwnProperty(prop)) { + request[prop] = urlOrRequest[prop]; + } + } + } + this.request = request; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + return new AjaxSubscriber(subscriber, this.request); + } +} +/** + * Creates an observable for an Ajax request with either a request object with + * url, headers, etc or a string for a URL. + * + * @example + * source = Rx.Observable.ajax('/products'); + * source = Rx.Observable.ajax({ url: 'products', method: 'GET' }); + * + * @param {string|Object} request Can be one of the following: + * A string of the URL to make the Ajax call. + * An object with the following properties + * - url: URL of the request + * - body: The body of the request + * - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE + * - async: Whether the request is async + * - headers: Optional headers + * - crossDomain: true if a cross domain request, else false + * - createXHR: a function to override if you need to use an alternate + * XMLHttpRequest implementation. + * - resultSelector: a function to use to alter the output value type of + * the Observable. Gets {@link AjaxResponse} as an argument. + * @return {Observable} An observable sequence containing the XMLHttpRequest. + * @static true + * @name ajax + * @owner Observable +*/ +AjaxObservable.create = (() => { + const create = (urlOrRequest) => { + return new AjaxObservable(urlOrRequest); + }; + create.get = ajaxGet; + create.post = ajaxPost; + create.delete = ajaxDelete; + create.put = ajaxPut; + create.patch = ajaxPatch; + create.getJSON = ajaxGetJSON; + return create; +})(); +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class AjaxSubscriber extends Subscriber { + constructor(destination, request) { + super(destination); + this.request = request; + this.done = false; + const headers = request.headers = request.headers || {}; + // force CORS if requested + if (!request.crossDomain && !headers['X-Requested-With']) { + headers['X-Requested-With'] = 'XMLHttpRequest'; + } + // ensure content type is set + if (!('Content-Type' in headers) && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') { + headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; + } + // properly serialize body + request.body = this.serializeBody(request.body, request.headers['Content-Type']); + this.send(); + } + next(e) { + this.done = true; + const { xhr, request, destination } = this; + const response = new AjaxResponse(e, xhr, request); + destination.next(response); + } + send() { + const { request, request: { user, method, url, async, password, headers, body } } = this; + const createXHR = request.createXHR; + const xhr = tryCatch(createXHR).call(request); + if (xhr === errorObject) { + this.error(errorObject.e); + } + else { + this.xhr = xhr; + // set up the events before open XHR + // https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest + // You need to add the event listeners before calling open() on the request. + // Otherwise the progress events will not fire. + this.setupEvents(xhr, request); + // open XHR + let result; + if (user) { + result = tryCatch(xhr.open).call(xhr, method, url, async, user, password); + } + else { + result = tryCatch(xhr.open).call(xhr, method, url, async); + } + if (result === errorObject) { + this.error(errorObject.e); + return null; + } + // timeout, responseType and withCredentials can be set once the XHR is open + if (async) { + xhr.timeout = request.timeout; + xhr.responseType = request.responseType; + } + if ('withCredentials' in xhr) { + xhr.withCredentials = !!request.withCredentials; + } + // set headers + this.setHeaders(xhr, headers); + // finally send the request + result = body ? tryCatch(xhr.send).call(xhr, body) : tryCatch(xhr.send).call(xhr); + if (result === errorObject) { + this.error(errorObject.e); + return null; + } + } + return xhr; + } + serializeBody(body, contentType) { + if (!body || typeof body === 'string') { + return body; + } + else if (root.FormData && body instanceof root.FormData) { + return body; + } + if (contentType) { + const splitIndex = contentType.indexOf(';'); + if (splitIndex !== -1) { + contentType = contentType.substring(0, splitIndex); + } + } + switch (contentType) { + case 'application/x-www-form-urlencoded': + return Object.keys(body).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(body[key])}`).join('&'); + case 'application/json': + return JSON.stringify(body); + default: + return body; + } + } + setHeaders(xhr, headers) { + for (let key in headers) { + if (headers.hasOwnProperty(key)) { + xhr.setRequestHeader(key, headers[key]); + } + } + } + setupEvents(xhr, request) { + const progressSubscriber = request.progressSubscriber; + function xhrTimeout(e) { + const { subscriber, progressSubscriber, request } = xhrTimeout; + if (progressSubscriber) { + progressSubscriber.error(e); + } + subscriber.error(new AjaxTimeoutError(this, request)); //TODO: Make betterer. + } + ; + xhr.ontimeout = xhrTimeout; + xhrTimeout.request = request; + xhrTimeout.subscriber = this; + xhrTimeout.progressSubscriber = progressSubscriber; + if (xhr.upload && 'withCredentials' in xhr) { + if (progressSubscriber) { + let xhrProgress; + xhrProgress = function (e) { + const { progressSubscriber } = xhrProgress; + progressSubscriber.next(e); + }; + if (root.XDomainRequest) { + xhr.onprogress = xhrProgress; + } + else { + xhr.upload.onprogress = xhrProgress; + } + xhrProgress.progressSubscriber = progressSubscriber; + } + let xhrError; + xhrError = function (e) { + const { progressSubscriber, subscriber, request } = xhrError; + if (progressSubscriber) { + progressSubscriber.error(e); + } + subscriber.error(new AjaxError('ajax error', this, request)); + }; + xhr.onerror = xhrError; + xhrError.request = request; + xhrError.subscriber = this; + xhrError.progressSubscriber = progressSubscriber; + } + function xhrReadyStateChange(e) { + const { subscriber, progressSubscriber, request } = xhrReadyStateChange; + if (this.readyState === 4) { + // normalize IE9 bug (http://bugs.jquery.com/ticket/1450) + let status = this.status === 1223 ? 204 : this.status; + let response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response); + // fix status code when it is 0 (0 status is undocumented). + // Occurs when accessing file resources or on Android 4.1 stock browser + // while retrieving files from application cache. + if (status === 0) { + status = response ? 200 : 0; + } + if (200 <= status && status < 300) { + if (progressSubscriber) { + progressSubscriber.complete(); + } + subscriber.next(e); + subscriber.complete(); + } + else { + if (progressSubscriber) { + progressSubscriber.error(e); + } + subscriber.error(new AjaxError('ajax error ' + status, this, request)); + } + } + } + ; + xhr.onreadystatechange = xhrReadyStateChange; + xhrReadyStateChange.subscriber = this; + xhrReadyStateChange.progressSubscriber = progressSubscriber; + xhrReadyStateChange.request = request; + } + unsubscribe() { + const { done, xhr } = this; + if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') { + xhr.abort(); + } + super.unsubscribe(); + } +} +/** + * A normalized AJAX response. + * + * @see {@link ajax} + * + * @class AjaxResponse + */ +export class AjaxResponse { + constructor(originalEvent, xhr, request) { + this.originalEvent = originalEvent; + this.xhr = xhr; + this.request = request; + this.status = xhr.status; + this.responseType = xhr.responseType || request.responseType; + this.response = parseXhrResponse(this.responseType, xhr); + } +} +/** + * A normalized AJAX error. + * + * @see {@link ajax} + * + * @class AjaxError + */ +export class AjaxError extends Error { + constructor(message, xhr, request) { + super(message); + this.message = message; + this.xhr = xhr; + this.request = request; + this.status = xhr.status; + this.responseType = xhr.responseType || request.responseType; + this.response = parseXhrResponse(this.responseType, xhr); + } +} +function parseXhrResponse(responseType, xhr) { + switch (responseType) { + case 'json': + if ('response' in xhr) { + //IE does not support json as responseType, parse it internally + return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null'); + } + else { + // HACK(benlesh): TypeScript shennanigans + // tslint:disable-next-line:no-any latest TS seems to think xhr is "never" here. + return JSON.parse(xhr.responseText || 'null'); + } + case 'xml': + return xhr.responseXML; + case 'text': + default: + // HACK(benlesh): TypeScript shennanigans + // tslint:disable-next-line:no-any latest TS seems to think xhr is "never" here. + return ('response' in xhr) ? xhr.response : xhr.responseText; + } +} +/** + * @see {@link ajax} + * + * @class AjaxTimeoutError + */ +export class AjaxTimeoutError extends AjaxError { + constructor(xhr, request) { + super('ajax timeout', xhr, request); + } +} +//# sourceMappingURL=AjaxObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js.map b/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js.map new file mode 100644 index 0000000..91cef54 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/AjaxObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AjaxObservable.js","sourceRoot":"","sources":["../../../src/observable/dom/AjaxObservable.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js b/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js new file mode 100644 index 0000000..01dfaf1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js @@ -0,0 +1,239 @@ +import { Subject, AnonymousSubject } from '../../Subject'; +import { Subscriber } from '../../Subscriber'; +import { Observable } from '../../Observable'; +import { Subscription } from '../../Subscription'; +import { root } from '../../util/root'; +import { ReplaySubject } from '../../ReplaySubject'; +import { tryCatch } from '../../util/tryCatch'; +import { errorObject } from '../../util/errorObject'; +import { assign } from '../../util/assign'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @extends {Ignored} + * @hide true + */ +export class WebSocketSubject extends AnonymousSubject { + constructor(urlConfigOrSource, destination) { + if (urlConfigOrSource instanceof Observable) { + super(destination, urlConfigOrSource); + } + else { + super(); + this.WebSocketCtor = root.WebSocket; + this._output = new Subject(); + if (typeof urlConfigOrSource === 'string') { + this.url = urlConfigOrSource; + } + else { + // WARNING: config object could override important members here. + assign(this, urlConfigOrSource); + } + if (!this.WebSocketCtor) { + throw new Error('no WebSocket constructor can be found'); + } + this.destination = new ReplaySubject(); + } + } + resultSelector(e) { + return JSON.parse(e.data); + } + /** + * Wrapper around the w3c-compatible WebSocket object provided by the browser. + * + * @example Wraps browser WebSocket + * + * let socket$ = Observable.webSocket('ws://localhost:8081'); + * + * socket$.subscribe( + * (msg) => console.log('message received: ' + msg), + * (err) => console.log(err), + * () => console.log('complete') + * ); + * + * socket$.next(JSON.stringify({ op: 'hello' })); + * + * @example Wraps WebSocket from nodejs-websocket (using node.js) + * + * import { w3cwebsocket } from 'websocket'; + * + * let socket$ = Observable.webSocket({ + * url: 'ws://localhost:8081', + * WebSocketCtor: w3cwebsocket + * }); + * + * socket$.subscribe( + * (msg) => console.log('message received: ' + msg), + * (err) => console.log(err), + * () => console.log('complete') + * ); + * + * socket$.next(JSON.stringify({ op: 'hello' })); + * + * @param {string | WebSocketSubjectConfig} urlConfigOrSource the source of the websocket as an url or a structure defining the websocket object + * @return {WebSocketSubject} + * @static true + * @name webSocket + * @owner Observable + */ + static create(urlConfigOrSource) { + return new WebSocketSubject(urlConfigOrSource); + } + lift(operator) { + const sock = new WebSocketSubject(this, this.destination); + sock.operator = operator; + return sock; + } + _resetState() { + this.socket = null; + if (!this.source) { + this.destination = new ReplaySubject(); + } + this._output = new Subject(); + } + // TODO: factor this out to be a proper Operator/Subscriber implementation and eliminate closures + multiplex(subMsg, unsubMsg, messageFilter) { + const self = this; + return new Observable((observer) => { + const result = tryCatch(subMsg)(); + if (result === errorObject) { + observer.error(errorObject.e); + } + else { + self.next(result); + } + let subscription = self.subscribe(x => { + const result = tryCatch(messageFilter)(x); + if (result === errorObject) { + observer.error(errorObject.e); + } + else if (result) { + observer.next(x); + } + }, err => observer.error(err), () => observer.complete()); + return () => { + const result = tryCatch(unsubMsg)(); + if (result === errorObject) { + observer.error(errorObject.e); + } + else { + self.next(result); + } + subscription.unsubscribe(); + }; + }); + } + _connectSocket() { + const { WebSocketCtor } = this; + const observer = this._output; + let socket = null; + try { + socket = this.protocol ? + new WebSocketCtor(this.url, this.protocol) : + new WebSocketCtor(this.url); + this.socket = socket; + if (this.binaryType) { + this.socket.binaryType = this.binaryType; + } + } + catch (e) { + observer.error(e); + return; + } + const subscription = new Subscription(() => { + this.socket = null; + if (socket && socket.readyState === 1) { + socket.close(); + } + }); + socket.onopen = (e) => { + const openObserver = this.openObserver; + if (openObserver) { + openObserver.next(e); + } + const queue = this.destination; + this.destination = Subscriber.create((x) => socket.readyState === 1 && socket.send(x), (e) => { + const closingObserver = this.closingObserver; + if (closingObserver) { + closingObserver.next(undefined); + } + if (e && e.code) { + socket.close(e.code, e.reason); + } + else { + observer.error(new TypeError('WebSocketSubject.error must be called with an object with an error code, ' + + 'and an optional reason: { code: number, reason: string }')); + } + this._resetState(); + }, () => { + const closingObserver = this.closingObserver; + if (closingObserver) { + closingObserver.next(undefined); + } + socket.close(); + this._resetState(); + }); + if (queue && queue instanceof ReplaySubject) { + subscription.add(queue.subscribe(this.destination)); + } + }; + socket.onerror = (e) => { + this._resetState(); + observer.error(e); + }; + socket.onclose = (e) => { + this._resetState(); + const closeObserver = this.closeObserver; + if (closeObserver) { + closeObserver.next(e); + } + if (e.wasClean) { + observer.complete(); + } + else { + observer.error(e); + } + }; + socket.onmessage = (e) => { + const result = tryCatch(this.resultSelector)(e); + if (result === errorObject) { + observer.error(errorObject.e); + } + else { + observer.next(result); + } + }; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const { source } = this; + if (source) { + return source.subscribe(subscriber); + } + if (!this.socket) { + this._connectSocket(); + } + let subscription = new Subscription(); + subscription.add(this._output.subscribe(subscriber)); + subscription.add(() => { + const { socket } = this; + if (this._output.observers.length === 0) { + if (socket && socket.readyState === 1) { + socket.close(); + } + this._resetState(); + } + }); + return subscription; + } + unsubscribe() { + const { source, socket } = this; + if (socket && socket.readyState === 1) { + socket.close(); + this._resetState(); + } + super.unsubscribe(); + if (!source) { + this.destination = new ReplaySubject(); + } + } +} +//# sourceMappingURL=WebSocketSubject.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js.map b/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js.map new file mode 100644 index 0000000..6ff9049 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/WebSocketSubject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"WebSocketSubject.js","sourceRoot":"","sources":["../../../src/observable/dom/WebSocketSubject.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/ajax.js b/node_modules/rxjs/_esm2015/observable/dom/ajax.js new file mode 100644 index 0000000..3a6d75b --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/ajax.js @@ -0,0 +1,3 @@ +import { AjaxObservable } from './AjaxObservable'; +export const ajax = AjaxObservable.create; +//# sourceMappingURL=ajax.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/ajax.js.map b/node_modules/rxjs/_esm2015/observable/dom/ajax.js.map new file mode 100644 index 0000000..039ca48 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/ajax.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ajax.js","sourceRoot":"","sources":["../../../src/observable/dom/ajax.ts"],"names":[],"mappings":"OAAO,EAAG,cAAc,EAAuB,MAAM,kBAAkB;AAEvE,OAAO,MAAM,IAAI,GAAuB,cAAc,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/webSocket.js b/node_modules/rxjs/_esm2015/observable/dom/webSocket.js new file mode 100644 index 0000000..e705f40 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/webSocket.js @@ -0,0 +1,3 @@ +import { WebSocketSubject } from './WebSocketSubject'; +export const webSocket = WebSocketSubject.create; +//# sourceMappingURL=webSocket.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/dom/webSocket.js.map b/node_modules/rxjs/_esm2015/observable/dom/webSocket.js.map new file mode 100644 index 0000000..6ea99ef --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/dom/webSocket.js.map @@ -0,0 +1 @@ +{"version":3,"file":"webSocket.js","sourceRoot":"","sources":["../../../src/observable/dom/webSocket.ts"],"names":[],"mappings":"OAAO,EAAG,gBAAgB,EAAG,MAAM,oBAAoB;AAEvD,OAAO,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/empty.js b/node_modules/rxjs/_esm2015/observable/empty.js new file mode 100644 index 0000000..bbe56e3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/empty.js @@ -0,0 +1,3 @@ +import { EmptyObservable } from './EmptyObservable'; +export const empty = EmptyObservable.create; +//# sourceMappingURL=empty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/empty.js.map b/node_modules/rxjs/_esm2015/observable/empty.js.map new file mode 100644 index 0000000..39dc642 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/empty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../src/observable/empty.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/forkJoin.js b/node_modules/rxjs/_esm2015/observable/forkJoin.js new file mode 100644 index 0000000..739bfaa --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/forkJoin.js @@ -0,0 +1,3 @@ +import { ForkJoinObservable } from './ForkJoinObservable'; +export const forkJoin = ForkJoinObservable.create; +//# sourceMappingURL=forkJoin.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/forkJoin.js.map b/node_modules/rxjs/_esm2015/observable/forkJoin.js.map new file mode 100644 index 0000000..8c0f1e4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/forkJoin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"forkJoin.js","sourceRoot":"","sources":["../../src/observable/forkJoin.ts"],"names":[],"mappings":"OAAO,EAAG,kBAAkB,EAAG,MAAM,sBAAsB;AAE3D,OAAO,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/from.js b/node_modules/rxjs/_esm2015/observable/from.js new file mode 100644 index 0000000..125070c --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/from.js @@ -0,0 +1,3 @@ +import { FromObservable } from './FromObservable'; +export const from = FromObservable.create; +//# sourceMappingURL=from.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/from.js.map b/node_modules/rxjs/_esm2015/observable/from.js.map new file mode 100644 index 0000000..84ea85f --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/from.js.map @@ -0,0 +1 @@ +{"version":3,"file":"from.js","sourceRoot":"","sources":["../../src/observable/from.ts"],"names":[],"mappings":"OAAO,EAAG,cAAc,EAAG,MAAM,kBAAkB;AAEnD,OAAO,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromEvent.js b/node_modules/rxjs/_esm2015/observable/fromEvent.js new file mode 100644 index 0000000..f31e5e2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromEvent.js @@ -0,0 +1,3 @@ +import { FromEventObservable } from './FromEventObservable'; +export const fromEvent = FromEventObservable.create; +//# sourceMappingURL=fromEvent.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromEvent.js.map b/node_modules/rxjs/_esm2015/observable/fromEvent.js.map new file mode 100644 index 0000000..7b6b736 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromEvent.js","sourceRoot":"","sources":["../../src/observable/fromEvent.ts"],"names":[],"mappings":"OAAO,EAAG,mBAAmB,EAAG,MAAM,uBAAuB;AAE7D,OAAO,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromEventPattern.js b/node_modules/rxjs/_esm2015/observable/fromEventPattern.js new file mode 100644 index 0000000..261c1ac --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromEventPattern.js @@ -0,0 +1,3 @@ +import { FromEventPatternObservable } from './FromEventPatternObservable'; +export const fromEventPattern = FromEventPatternObservable.create; +//# sourceMappingURL=fromEventPattern.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromEventPattern.js.map b/node_modules/rxjs/_esm2015/observable/fromEventPattern.js.map new file mode 100644 index 0000000..b6ce68a --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromEventPattern.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromEventPattern.js","sourceRoot":"","sources":["../../src/observable/fromEventPattern.ts"],"names":[],"mappings":"OAAO,EAAG,0BAA0B,EAAG,MAAM,8BAA8B;AAE3E,OAAO,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromPromise.js b/node_modules/rxjs/_esm2015/observable/fromPromise.js new file mode 100644 index 0000000..e6b2d57 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromPromise.js @@ -0,0 +1,3 @@ +import { PromiseObservable } from './PromiseObservable'; +export const fromPromise = PromiseObservable.create; +//# sourceMappingURL=fromPromise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/fromPromise.js.map b/node_modules/rxjs/_esm2015/observable/fromPromise.js.map new file mode 100644 index 0000000..2146de4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/fromPromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fromPromise.js","sourceRoot":"","sources":["../../src/observable/fromPromise.ts"],"names":[],"mappings":"OAAO,EAAG,iBAAiB,EAAG,MAAM,qBAAqB;AAEzD,OAAO,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/generate.js b/node_modules/rxjs/_esm2015/observable/generate.js new file mode 100644 index 0000000..bedd104 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/generate.js @@ -0,0 +1,3 @@ +import { GenerateObservable } from './GenerateObservable'; +export const generate = GenerateObservable.create; +//# sourceMappingURL=generate.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/generate.js.map b/node_modules/rxjs/_esm2015/observable/generate.js.map new file mode 100644 index 0000000..2cb6866 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/generate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/observable/generate.ts"],"names":[],"mappings":"OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB;AAEzD,OAAO,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/if.js b/node_modules/rxjs/_esm2015/observable/if.js new file mode 100644 index 0000000..6df4692 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/if.js @@ -0,0 +1,3 @@ +import { IfObservable } from './IfObservable'; +export const _if = IfObservable.create; +//# sourceMappingURL=if.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/if.js.map b/node_modules/rxjs/_esm2015/observable/if.js.map new file mode 100644 index 0000000..ef758d1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/if.js.map @@ -0,0 +1 @@ +{"version":3,"file":"if.js","sourceRoot":"","sources":["../../src/observable/if.ts"],"names":[],"mappings":"OAAO,EAAG,YAAY,EAAG,MAAM,gBAAgB;AAE/C,OAAO,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/interval.js b/node_modules/rxjs/_esm2015/observable/interval.js new file mode 100644 index 0000000..9cf1cf1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/interval.js @@ -0,0 +1,3 @@ +import { IntervalObservable } from './IntervalObservable'; +export const interval = IntervalObservable.create; +//# sourceMappingURL=interval.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/interval.js.map b/node_modules/rxjs/_esm2015/observable/interval.js.map new file mode 100644 index 0000000..a43822f --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/interval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interval.js","sourceRoot":"","sources":["../../src/observable/interval.ts"],"names":[],"mappings":"OAAO,EAAG,kBAAkB,EAAG,MAAM,sBAAsB;AAE3D,OAAO,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/merge.js b/node_modules/rxjs/_esm2015/observable/merge.js new file mode 100644 index 0000000..02c9903 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/merge.js @@ -0,0 +1,84 @@ +import { Observable } from '../Observable'; +import { ArrayObservable } from './ArrayObservable'; +import { isScheduler } from '../util/isScheduler'; +import { mergeAll } from '../operators/mergeAll'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which concurrently emits all values from every + * given input Observable. + * + * Flattens multiple Observables together by blending + * their values into one Observable. + * + * + * + * `merge` subscribes to each given input Observable (as arguments), and simply + * forwards (without doing any transformation) all the values from all the input + * Observables to the output Observable. The output Observable only completes + * once all input Observables have completed. Any error delivered by an input + * Observable will be immediately emitted on the output Observable. + * + * @example Merge together two Observables: 1s interval and clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var timer = Rx.Observable.interval(1000); + * var clicksOrTimer = Rx.Observable.merge(clicks, timer); + * clicksOrTimer.subscribe(x => console.log(x)); + * + * // Results in the following: + * // timer will emit ascending values, one every second(1000ms) to console + * // clicks logs MouseEvents to console everytime the "document" is clicked + * // Since the two streams are merged you see these happening + * // as they occur. + * + * @example Merge together 3 Observables, but only 2 run concurrently + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var concurrent = 2; // the argument + * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent); + * merged.subscribe(x => console.log(x)); + * + * // Results in the following: + * // - First timer1 and timer2 will run concurrently + * // - timer1 will emit a value every 1000ms for 10 iterations + * // - timer2 will emit a value every 2000ms for 6 iterations + * // - after timer1 hits it's max iteration, timer2 will + * // continue, and timer3 will start to run concurrently with timer2 + * // - when timer2 hits it's max iteration it terminates, and + * // timer3 will continue to emit a value every 500ms until it is complete + * + * @see {@link mergeAll} + * @see {@link mergeMap} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * + * @param {...ObservableInput} observables Input Observables to merge together. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @param {Scheduler} [scheduler=null] The IScheduler to use for managing + * concurrency of input Observables. + * @return {Observable} an Observable that emits items that are the result of + * every input Observable. + * @static true + * @name merge + * @owner Observable + */ +export function merge(...observables) { + let concurrent = Number.POSITIVE_INFINITY; + let scheduler = null; + let last = observables[observables.length - 1]; + if (isScheduler(last)) { + scheduler = observables.pop(); + if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') { + concurrent = observables.pop(); + } + } + else if (typeof last === 'number') { + concurrent = observables.pop(); + } + if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) { + return observables[0]; + } + return mergeAll(concurrent)(new ArrayObservable(observables, scheduler)); +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/merge.js.map b/node_modules/rxjs/_esm2015/observable/merge.js.map new file mode 100644 index 0000000..23a0dc1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/observable/merge.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe;OAEpD,EAAE,eAAe,EAAE,MAAM,mBAAmB;OAC5C,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,QAAQ,EAAE,MAAM,uBAAuB;AAiBhD,mCAAmC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,sBAA4B,GAAG,WAA8D;IAC5F,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC1C,IAAI,SAAS,GAAe,IAAI,CAAC;IAChC,IAAI,IAAI,GAAQ,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpD,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,SAAS,GAAe,WAAW,CAAC,GAAG,EAAE,CAAC;QAC1C,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;YACtF,UAAU,GAAW,WAAW,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;QACpC,UAAU,GAAW,WAAW,CAAC,GAAG,EAAE,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAgB,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,eAAe,CAAM,WAAW,EAAE,SAAS,CAAC,CAAkB,CAAC;AACjG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/never.js b/node_modules/rxjs/_esm2015/observable/never.js new file mode 100644 index 0000000..8750a3e --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/never.js @@ -0,0 +1,3 @@ +import { NeverObservable } from './NeverObservable'; +export const never = NeverObservable.create; +//# sourceMappingURL=never.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/never.js.map b/node_modules/rxjs/_esm2015/observable/never.js.map new file mode 100644 index 0000000..4e305bc --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/never.js.map @@ -0,0 +1 @@ +{"version":3,"file":"never.js","sourceRoot":"","sources":["../../src/observable/never.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/of.js b/node_modules/rxjs/_esm2015/observable/of.js new file mode 100644 index 0000000..78f169a --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/of.js @@ -0,0 +1,3 @@ +import { ArrayObservable } from './ArrayObservable'; +export const of = ArrayObservable.of; +//# sourceMappingURL=of.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/of.js.map b/node_modules/rxjs/_esm2015/observable/of.js.map new file mode 100644 index 0000000..6dbffa9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/of.js.map @@ -0,0 +1 @@ +{"version":3,"file":"of.js","sourceRoot":"","sources":["../../src/observable/of.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js b/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js new file mode 100644 index 0000000..5215d93 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js @@ -0,0 +1,3 @@ +import { onErrorResumeNextStatic } from '../operators/onErrorResumeNext'; +export const onErrorResumeNext = onErrorResumeNextStatic; +//# sourceMappingURL=onErrorResumeNext.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js.map b/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js.map new file mode 100644 index 0000000..0ce313b --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/onErrorResumeNext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onErrorResumeNext.js","sourceRoot":"","sources":["../../src/observable/onErrorResumeNext.ts"],"names":[],"mappings":"OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC;AAExE,OAAO,MAAM,iBAAiB,GAAG,uBAAuB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/pairs.js b/node_modules/rxjs/_esm2015/observable/pairs.js new file mode 100644 index 0000000..6dd20ed --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/pairs.js @@ -0,0 +1,3 @@ +import { PairsObservable } from './PairsObservable'; +export const pairs = PairsObservable.create; +//# sourceMappingURL=pairs.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/pairs.js.map b/node_modules/rxjs/_esm2015/observable/pairs.js.map new file mode 100644 index 0000000..32e93fa --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/pairs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../../src/observable/pairs.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/race.js b/node_modules/rxjs/_esm2015/observable/race.js new file mode 100644 index 0000000..7fbcda5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/race.js @@ -0,0 +1,71 @@ +import { isArray } from '../util/isArray'; +import { ArrayObservable } from '../observable/ArrayObservable'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +export function race(...observables) { + // if the only argument is an array, it was most likely called with + // `race([obs1, obs2, ...])` + if (observables.length === 1) { + if (isArray(observables[0])) { + observables = observables[0]; + } + else { + return observables[0]; + } + } + return new ArrayObservable(observables).lift(new RaceOperator()); +} +export class RaceOperator { + call(subscriber, source) { + return source.subscribe(new RaceSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class RaceSubscriber extends OuterSubscriber { + constructor(destination) { + super(destination); + this.hasFirst = false; + this.observables = []; + this.subscriptions = []; + } + _next(observable) { + this.observables.push(observable); + } + _complete() { + const observables = this.observables; + const len = observables.length; + if (len === 0) { + this.destination.complete(); + } + else { + for (let i = 0; i < len && !this.hasFirst; i++) { + let observable = observables[i]; + let subscription = subscribeToResult(this, observable, observable, i); + if (this.subscriptions) { + this.subscriptions.push(subscription); + } + this.add(subscription); + } + this.observables = null; + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (!this.hasFirst) { + this.hasFirst = true; + for (let i = 0; i < this.subscriptions.length; i++) { + if (i !== outerIndex) { + let subscription = this.subscriptions[i]; + subscription.unsubscribe(); + this.remove(subscription); + } + } + this.subscriptions = null; + } + this.destination.next(innerValue); + } +} +//# sourceMappingURL=race.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/race.js.map b/node_modules/rxjs/_esm2015/observable/race.js.map new file mode 100644 index 0000000..9a1fc27 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/race.js.map @@ -0,0 +1 @@ +{"version":3,"file":"race.js","sourceRoot":"","sources":["../../src/observable/race.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/range.js b/node_modules/rxjs/_esm2015/observable/range.js new file mode 100644 index 0000000..e0e3530 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/range.js @@ -0,0 +1,3 @@ +import { RangeObservable } from './RangeObservable'; +export const range = RangeObservable.create; +//# sourceMappingURL=range.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/range.js.map b/node_modules/rxjs/_esm2015/observable/range.js.map new file mode 100644 index 0000000..d96093c --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/range.js.map @@ -0,0 +1 @@ +{"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/observable/range.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/throw.js b/node_modules/rxjs/_esm2015/observable/throw.js new file mode 100644 index 0000000..7c82dd8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/throw.js @@ -0,0 +1,3 @@ +import { ErrorObservable } from './ErrorObservable'; +export const _throw = ErrorObservable.create; +//# sourceMappingURL=throw.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/throw.js.map b/node_modules/rxjs/_esm2015/observable/throw.js.map new file mode 100644 index 0000000..298f37d --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/throw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throw.js","sourceRoot":"","sources":["../../src/observable/throw.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/timer.js b/node_modules/rxjs/_esm2015/observable/timer.js new file mode 100644 index 0000000..fb8e770 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/timer.js @@ -0,0 +1,3 @@ +import { TimerObservable } from './TimerObservable'; +export const timer = TimerObservable.create; +//# sourceMappingURL=timer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/timer.js.map b/node_modules/rxjs/_esm2015/observable/timer.js.map new file mode 100644 index 0000000..fe47d32 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/timer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/observable/timer.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/using.js b/node_modules/rxjs/_esm2015/observable/using.js new file mode 100644 index 0000000..9bd7962 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/using.js @@ -0,0 +1,3 @@ +import { UsingObservable } from './UsingObservable'; +export const using = UsingObservable.create; +//# sourceMappingURL=using.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/using.js.map b/node_modules/rxjs/_esm2015/observable/using.js.map new file mode 100644 index 0000000..ec36086 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/using.js.map @@ -0,0 +1 @@ +{"version":3,"file":"using.js","sourceRoot":"","sources":["../../src/observable/using.ts"],"names":[],"mappings":"OAAO,EAAG,eAAe,EAAG,MAAM,mBAAmB;AAErD,OAAO,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/zip.js b/node_modules/rxjs/_esm2015/observable/zip.js new file mode 100644 index 0000000..ac07e13 --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/zip.js @@ -0,0 +1,3 @@ +import { zipStatic } from '../operators/zip'; +export const zip = zipStatic; +//# sourceMappingURL=zip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/observable/zip.js.map b/node_modules/rxjs/_esm2015/observable/zip.js.map new file mode 100644 index 0000000..d65a6cd --- /dev/null +++ b/node_modules/rxjs/_esm2015/observable/zip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/observable/zip.ts"],"names":[],"mappings":"OAAO,EAAG,SAAS,EAAG,MAAM,kBAAkB;AAE9C,OAAO,MAAM,GAAG,GAAG,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/audit.js b/node_modules/rxjs/_esm2015/operator/audit.js new file mode 100644 index 0000000..53fb472 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/audit.js @@ -0,0 +1,45 @@ +import { audit as higherOrder } from '../operators/audit'; +/** + * Ignores source values for a duration determined by another Observable, then + * emits the most recent value from the source Observable, then repeats this + * process. + * + * It's like {@link auditTime}, but the silencing + * duration is determined by a second Observable. + * + * + * + * `audit` is similar to `throttle`, but emits the last value from the silenced + * time window, instead of the first value. `audit` emits the most recent value + * from the source Observable on the output Observable as soon as its internal + * timer becomes disabled, and ignores source values while the timer is enabled. + * Initially, the timer is disabled. As soon as the first source value arrives, + * the timer is enabled by calling the `durationSelector` function with the + * source value, which returns the "duration" Observable. When the duration + * Observable emits a value or completes, the timer is disabled, then the most + * recent source value is emitted on the output Observable, and this process + * repeats for the next source value. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.audit(ev => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounce} + * @see {@link delayWhen} + * @see {@link sample} + * @see {@link throttle} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the silencing + * duration, returned as an Observable or a Promise. + * @return {Observable} An Observable that performs rate-limiting of + * emissions from the source Observable. + * @method audit + * @owner Observable + */ +export function audit(durationSelector) { + return higherOrder(durationSelector)(this); +} +//# sourceMappingURL=audit.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/audit.js.map b/node_modules/rxjs/_esm2015/operator/audit.js.map new file mode 100644 index 0000000..e6e37c6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/audit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/operator/audit.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,sBAA8C,gBAA0D;IACtG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/auditTime.js b/node_modules/rxjs/_esm2015/operator/auditTime.js new file mode 100644 index 0000000..edf60a5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/auditTime.js @@ -0,0 +1,48 @@ +import { async } from '../scheduler/async'; +import { auditTime as higherOrder } from '../operators/auditTime'; +/** + * Ignores source values for `duration` milliseconds, then emits the most recent + * value from the source Observable, then repeats this process. + * + * When it sees a source values, it ignores that plus + * the next ones for `duration` milliseconds, and then it emits the most recent + * value from the source. + * + * + * + * `auditTime` is similar to `throttleTime`, but emits the last value from the + * silenced time window, instead of the first value. `auditTime` emits the most + * recent value from the source Observable on the output Observable as soon as + * its internal timer becomes disabled, and ignores source values while the + * timer is enabled. Initially, the timer is disabled. As soon as the first + * source value arrives, the timer is enabled. After `duration` milliseconds (or + * the time unit determined internally by the optional `scheduler`) has passed, + * the timer is disabled, then the most recent source value is emitted on the + * output Observable, and this process repeats for the next source value. + * Optionally takes a {@link IScheduler} for managing timers. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.auditTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttleTime} + * + * @param {number} duration Time to wait before emitting the most recent source + * value, measured in milliseconds or the time unit determined internally + * by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the rate-limiting behavior. + * @return {Observable} An Observable that performs rate-limiting of + * emissions from the source Observable. + * @method auditTime + * @owner Observable + */ +export function auditTime(duration, scheduler = async) { + return higherOrder(duration, scheduler)(this); +} +//# sourceMappingURL=auditTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/auditTime.js.map b/node_modules/rxjs/_esm2015/operator/auditTime.js.map new file mode 100644 index 0000000..cade207 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/auditTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auditTime.js","sourceRoot":"","sources":["../../src/operator/auditTime.ts"],"names":[],"mappings":"OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAGnC,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,0BAAkD,QAAgB,EAAE,SAAS,GAAe,KAAK;IAC/F,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAkB,CAAC;AACjE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/buffer.js b/node_modules/rxjs/_esm2015/operator/buffer.js new file mode 100644 index 0000000..e75bd05 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/buffer.js @@ -0,0 +1,37 @@ +import { buffer as higherOrder } from '../operators/buffer'; +/** + * Buffers the source Observable values until `closingNotifier` emits. + * + * Collects values from the past as an array, and emits + * that array only when another Observable emits. + * + * + * + * Buffers the incoming Observable values until the given `closingNotifier` + * Observable emits a value, at which point it emits the buffer on the output + * Observable and starts a new buffer internally, awaiting the next time + * `closingNotifier` emits. + * + * @example On every click, emit array of most recent interval events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var interval = Rx.Observable.interval(1000); + * var buffered = interval.buffer(clicks); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link window} + * + * @param {Observable} closingNotifier An Observable that signals the + * buffer to be emitted on the output Observable. + * @return {Observable} An Observable of buffers, which are arrays of + * values. + * @method buffer + * @owner Observable + */ +export function buffer(closingNotifier) { + return higherOrder(closingNotifier)(this); +} +//# sourceMappingURL=buffer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/buffer.js.map b/node_modules/rxjs/_esm2015/operator/buffer.js.map new file mode 100644 index 0000000..ace6437 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/operator/buffer.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,uBAA+C,eAAgC;IAC7E,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAoB,CAAC;AAC/D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferCount.js b/node_modules/rxjs/_esm2015/operator/bufferCount.js new file mode 100644 index 0000000..f60ad45 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferCount.js @@ -0,0 +1,46 @@ +import { bufferCount as higherOrder } from '../operators/bufferCount'; +/** + * Buffers the source Observable values until the size hits the maximum + * `bufferSize` given. + * + * Collects values from the past as an array, and emits + * that array only when its size reaches `bufferSize`. + * + * + * + * Buffers a number of values from the source Observable by `bufferSize` then + * emits the buffer and clears it, and starts a new buffer each + * `startBufferEvery` values. If `startBufferEvery` is not provided or is + * `null`, then new buffers are started immediately at the start of the source + * and when each buffer closes and is emitted. + * + * @example Emit the last two click events as an array + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferCount(2); + * buffered.subscribe(x => console.log(x)); + * + * @example On every click, emit the last two click events as an array + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferCount(2, 1); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link pairwise} + * @see {@link windowCount} + * + * @param {number} bufferSize The maximum size of the buffer emitted. + * @param {number} [startBufferEvery] Interval at which to start a new buffer. + * For example if `startBufferEvery` is `2`, then a new buffer will be started + * on every other value from the source. A new buffer is started at the + * beginning of the source by default. + * @return {Observable} An Observable of arrays of buffered values. + * @method bufferCount + * @owner Observable + */ +export function bufferCount(bufferSize, startBufferEvery = null) { + return higherOrder(bufferSize, startBufferEvery)(this); +} +//# sourceMappingURL=bufferCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferCount.js.map b/node_modules/rxjs/_esm2015/operator/bufferCount.js.map new file mode 100644 index 0000000..c94b1f4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferCount.js","sourceRoot":"","sources":["../../src/operator/bufferCount.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,4BAAoD,UAAkB,EAAE,gBAAgB,GAAW,IAAI;IACrG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAoB,CAAC;AAC5E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferTime.js b/node_modules/rxjs/_esm2015/operator/bufferTime.js new file mode 100644 index 0000000..e3400c7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferTime.js @@ -0,0 +1,65 @@ +import { async } from '../scheduler/async'; +import { isScheduler } from '../util/isScheduler'; +import { bufferTime as higherOrder } from '../operators/bufferTime'; +/* tslint:enable:max-line-length */ +/** + * Buffers the source Observable values for a specific time period. + * + * Collects values from the past as an array, and emits + * those arrays periodically in time. + * + * + * + * Buffers values from the source for a specific time duration `bufferTimeSpan`. + * Unless the optional argument `bufferCreationInterval` is given, it emits and + * resets the buffer every `bufferTimeSpan` milliseconds. If + * `bufferCreationInterval` is given, this operator opens the buffer every + * `bufferCreationInterval` milliseconds and closes (emits and resets) the + * buffer every `bufferTimeSpan` milliseconds. When the optional argument + * `maxBufferSize` is specified, the buffer will be closed either after + * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements. + * + * @example Every second, emit an array of the recent click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferTime(1000); + * buffered.subscribe(x => console.log(x)); + * + * @example Every 5 seconds, emit the click events from the next 2 seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferTime(2000, 5000); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link windowTime} + * + * @param {number} bufferTimeSpan The amount of time to fill each buffer array. + * @param {number} [bufferCreationInterval] The interval at which to start new + * buffers. + * @param {number} [maxBufferSize] The maximum buffer size. + * @param {Scheduler} [scheduler=async] The scheduler on which to schedule the + * intervals that determine buffer boundaries. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferTime + * @owner Observable + */ +export function bufferTime(bufferTimeSpan) { + let length = arguments.length; + let scheduler = async; + if (isScheduler(arguments[arguments.length - 1])) { + scheduler = arguments[arguments.length - 1]; + length--; + } + let bufferCreationInterval = null; + if (length >= 2) { + bufferCreationInterval = arguments[1]; + } + let maxBufferSize = Number.POSITIVE_INFINITY; + if (length >= 3) { + maxBufferSize = arguments[2]; + } + return higherOrder(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)(this); +} +//# sourceMappingURL=bufferTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferTime.js.map b/node_modules/rxjs/_esm2015/operator/bufferTime.js.map new file mode 100644 index 0000000..9c0596a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferTime.js","sourceRoot":"","sources":["../../src/operator/bufferTime.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAEnC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAMnE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,2BAAmD,cAAsB;IACvE,IAAI,MAAM,GAAW,SAAS,CAAC,MAAM,CAAC;IAEtC,IAAI,SAAS,GAAe,KAAK,CAAC;IAClC,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC;IACX,CAAC;IAED,IAAI,sBAAsB,GAAW,IAAI,CAAC;IAC1C,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,sBAAsB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,aAAa,GAAW,MAAM,CAAC,iBAAiB,CAAC;IACrD,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAAoB,CAAC;AAChH,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferToggle.js b/node_modules/rxjs/_esm2015/operator/bufferToggle.js new file mode 100644 index 0000000..694eada --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferToggle.js @@ -0,0 +1,43 @@ +import { bufferToggle as higherOrder } from '../operators/bufferToggle'; +/** + * Buffers the source Observable values starting from an emission from + * `openings` and ending when the output of `closingSelector` emits. + * + * Collects values from the past as an array. Starts + * collecting only when `opening` emits, and calls the `closingSelector` + * function to get an Observable that tells when to close the buffer. + * + * + * + * Buffers values from the source by opening the buffer via signals from an + * Observable provided to `openings`, and closing and sending the buffers when + * a Subscribable or Promise returned by the `closingSelector` function emits. + * + * @example Every other second, emit the click events from the next 500ms + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var openings = Rx.Observable.interval(1000); + * var buffered = clicks.bufferToggle(openings, i => + * i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty() + * ); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferWhen} + * @see {@link windowToggle} + * + * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new + * buffers. + * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes + * the value emitted by the `openings` observable and returns a Subscribable or Promise, + * which, when it emits, signals that the associated buffer should be emitted + * and cleared. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferToggle + * @owner Observable + */ +export function bufferToggle(openings, closingSelector) { + return higherOrder(openings, closingSelector)(this); +} +//# sourceMappingURL=bufferToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferToggle.js.map b/node_modules/rxjs/_esm2015/operator/bufferToggle.js.map new file mode 100644 index 0000000..e860d3c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferToggle.js","sourceRoot":"","sources":["../../src/operator/bufferToggle.ts"],"names":[],"mappings":"OAEO,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,2BAA2B;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,6BAAwD,QAAkC,EACvD,eAAyD;IAC1F,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IAAI,CAAoB,CAAC;AACzE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferWhen.js b/node_modules/rxjs/_esm2015/operator/bufferWhen.js new file mode 100644 index 0000000..438273f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferWhen.js @@ -0,0 +1,38 @@ +import { bufferWhen as higherOrder } from '../operators/bufferWhen'; +/** + * Buffers the source Observable values, using a factory function of closing + * Observables to determine when to close, emit, and reset the buffer. + * + * Collects values from the past as an array. When it + * starts collecting values, it calls a function that returns an Observable that + * tells when to close the buffer and restart collecting. + * + * + * + * Opens a buffer immediately, then closes the buffer when the observable + * returned by calling `closingSelector` function emits a value. When it closes + * the buffer, it immediately opens a new buffer and repeats the process. + * + * @example Emit an array of the last clicks every [1-5] random seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferWhen(() => + * Rx.Observable.interval(1000 + Math.random() * 4000) + * ); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link windowWhen} + * + * @param {function(): Observable} closingSelector A function that takes no + * arguments and returns an Observable that signals buffer closure. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferWhen + * @owner Observable + */ +export function bufferWhen(closingSelector) { + return higherOrder(closingSelector)(this); +} +//# sourceMappingURL=bufferWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/bufferWhen.js.map b/node_modules/rxjs/_esm2015/operator/bufferWhen.js.map new file mode 100644 index 0000000..c8dc442 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/bufferWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferWhen.js","sourceRoot":"","sources":["../../src/operator/bufferWhen.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,2BAAmD,eAAsC;IACvF,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAAoB,CAAC;AAC/D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/catch.js b/node_modules/rxjs/_esm2015/operator/catch.js new file mode 100644 index 0000000..714adc7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/catch.js @@ -0,0 +1,64 @@ +import { catchError as higherOrder } from '../operators/catchError'; +/** + * Catches errors on the observable to be handled by returning a new observable or throwing an error. + * + * + * + * @example Continues with a different Observable when there's an error + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n == 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V')) + * .subscribe(x => console.log(x)); + * // 1, 2, 3, I, II, III, IV, V + * + * @example Retries the caught source Observable again in case of error, similar to retry() operator + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n === 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch((err, caught) => caught) + * .take(30) + * .subscribe(x => console.log(x)); + * // 1, 2, 3, 1, 2, 3, ... + * + * @example Throws a new error when the source Observable throws an error + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n == 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch(err => { + * throw 'error in source. Details: ' + err; + * }) + * .subscribe( + * x => console.log(x), + * err => console.log(err) + * ); + * // 1, 2, 3, error in source. Details: four! + * + * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which + * is the source observable, in case you'd like to "retry" that observable by returning it again. Whatever observable + * is returned by the `selector` will be used to continue the observable chain. + * @return {Observable} An observable that originates from either the source or the observable returned by the + * catch `selector` function. + * @method catch + * @name catch + * @owner Observable + */ +export function _catch(selector) { + return higherOrder(selector)(this); +} +//# sourceMappingURL=catch.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/catch.js.map b/node_modules/rxjs/_esm2015/operator/catch.js.map new file mode 100644 index 0000000..773e0d4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/catch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"catch.js","sourceRoot":"","sources":["../../src/operator/catch.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,uBAAkD,QAAiE;IACjH,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/combineAll.js b/node_modules/rxjs/_esm2015/operator/combineAll.js new file mode 100644 index 0000000..38368f7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/combineAll.js @@ -0,0 +1,45 @@ +import { combineAll as higherOrder } from '../operators/combineAll'; +/** + * Converts a higher-order Observable into a first-order Observable by waiting + * for the outer Observable to complete, then applying {@link combineLatest}. + * + * Flattens an Observable-of-Observables by applying + * {@link combineLatest} when the Observable-of-Observables completes. + * + * + * + * Takes an Observable of Observables, and collects all Observables from it. + * Once the outer Observable completes, it subscribes to all collected + * Observables and combines their values using the {@link combineLatest} + * strategy, such that: + * - Every time an inner Observable emits, the output Observable emits. + * - When the returned observable emits, it emits all of the latest values by: + * - If a `project` function is provided, it is called with each recent value + * from each inner Observable in whatever order they arrived, and the result + * of the `project` function is what is emitted by the output Observable. + * - If there is no `project` function, an array of all of the most recent + * values is emitted by the output Observable. + * + * @example Map two click events to a finite interval Observable, then apply combineAll + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map(ev => + * Rx.Observable.interval(Math.random()*2000).take(3) + * ).take(2); + * var result = higherOrder.combineAll(); + * result.subscribe(x => console.log(x)); + * + * @see {@link combineLatest} + * @see {@link mergeAll} + * + * @param {function} [project] An optional function to map the most recent + * values from each inner Observable into a new result. Takes each of the most + * recent values from each collected inner Observable as arguments, in order. + * @return {Observable} An Observable of projected results or arrays of recent + * values. + * @method combineAll + * @owner Observable + */ +export function combineAll(project) { + return higherOrder(project)(this); +} +//# sourceMappingURL=combineAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/combineAll.js.map b/node_modules/rxjs/_esm2015/operator/combineAll.js.map new file mode 100644 index 0000000..78d3231 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/combineAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineAll.js","sourceRoot":"","sources":["../../src/operator/combineAll.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,2BAAsD,OAAsC;IAC1F,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/combineLatest.js b/node_modules/rxjs/_esm2015/operator/combineLatest.js new file mode 100644 index 0000000..4839bad --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/combineLatest.js @@ -0,0 +1,49 @@ +import { combineLatest as higherOrder } from '../operators/combineLatest'; +/* tslint:enable:max-line-length */ +/** + * Combines multiple Observables to create an Observable whose values are + * calculated from the latest values of each of its input Observables. + * + * Whenever any input Observable emits a value, it + * computes a formula using the latest values from all the inputs, then emits + * the output of that formula. + * + * + * + * `combineLatest` combines the values from this Observable with values from + * Observables passed as arguments. This is done by subscribing to each + * Observable, in order, and collecting an array of each of the most recent + * values any time any of the input Observables emits, then either taking that + * array and passing it as arguments to an optional `project` function and + * emitting the return value of that, or just emitting the array of recent + * values directly if there is no `project` function. + * + * @example Dynamically calculate the Body-Mass Index from an Observable of weight and one for height + * var weight = Rx.Observable.of(70, 72, 76, 79, 75); + * var height = Rx.Observable.of(1.76, 1.77, 1.78); + * var bmi = weight.combineLatest(height, (w, h) => w / (h * h)); + * bmi.subscribe(x => console.log('BMI is ' + x)); + * + * // With output to console: + * // BMI is 24.212293388429753 + * // BMI is 23.93948099205209 + * // BMI is 23.671253629592222 + * + * @see {@link combineAll} + * @see {@link merge} + * @see {@link withLatestFrom} + * + * @param {ObservableInput} other An input Observable to combine with the source + * Observable. More than one input Observables may be given as argument. + * @param {function} [project] An optional function to project the values from + * the combined latest values into a new value on the output Observable. + * @return {Observable} An Observable of projected values from the most recent + * values from each input Observable, or an array of the most recent values from + * each input Observable. + * @method combineLatest + * @owner Observable + */ +export function combineLatest(...observables) { + return higherOrder(...observables)(this); +} +//# sourceMappingURL=combineLatest.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/combineLatest.js.map b/node_modules/rxjs/_esm2015/operator/combineLatest.js.map new file mode 100644 index 0000000..461bebb --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/combineLatest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineLatest.js","sourceRoot":"","sources":["../../src/operator/combineLatest.ts"],"names":[],"mappings":"OACO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,4BAA4B;AAiBzE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8BAAyD,GAAG,WAE0B;IACpF,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concat.js b/node_modules/rxjs/_esm2015/operator/concat.js new file mode 100644 index 0000000..d2b7396 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concat.js @@ -0,0 +1,56 @@ +import { concat as higherOrder } from '../operators/concat'; +export { concat as concatStatic } from '../observable/concat'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which sequentially emits all values from every + * given input Observable after the current Observable. + * + * Concatenates multiple Observables together by + * sequentially emitting their values, one Observable after the other. + * + * + * + * Joins this Observable with multiple other Observables by subscribing to them + * one at a time, starting with the source, and merging their results into the + * output Observable. Will wait for each Observable to complete before moving + * on to the next. + * + * @example Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10 + * var timer = Rx.Observable.interval(1000).take(4); + * var sequence = Rx.Observable.range(1, 10); + * var result = timer.concat(sequence); + * result.subscribe(x => console.log(x)); + * + * // results in: + * // 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10 + * + * @example Concatenate 3 Observables + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var result = timer1.concat(timer2, timer3); + * result.subscribe(x => console.log(x)); + * + * // results in the following: + * // (Prints to console sequentially) + * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9 + * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5 + * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9 + * + * @see {@link concatAll} + * @see {@link concatMap} + * @see {@link concatMapTo} + * + * @param {ObservableInput} other An input Observable to concatenate after the source + * Observable. More than one input Observables may be given as argument. + * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each + * Observable subscription on. + * @return {Observable} All values of each passed Observable merged into a + * single Observable, in order, in serial fashion. + * @method concat + * @owner Observable + */ +export function concat(...observables) { + return higherOrder(...observables)(this); +} +//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concat.js.map b/node_modules/rxjs/_esm2015/operator/concat.js.map new file mode 100644 index 0000000..50de5f4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/operator/concat.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D,SAAS,MAAM,IAAI,YAAY,QAAQ,sBAAsB,CAAC;AAW9D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,uBAAkD,GAAG,WAAqD;IACxG,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatAll.js b/node_modules/rxjs/_esm2015/operator/concatAll.js new file mode 100644 index 0000000..ecf9b05 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatAll.js @@ -0,0 +1,54 @@ +import { concatAll as higherOrder } from '../operators/concatAll'; +/* tslint:enable:max-line-length */ +/** + * Converts a higher-order Observable into a first-order Observable by + * concatenating the inner Observables in order. + * + * Flattens an Observable-of-Observables by putting one + * inner Observable after the other. + * + * + * + * Joins every Observable emitted by the source (a higher-order Observable), in + * a serial fashion. It subscribes to each inner Observable only after the + * previous inner Observable has completed, and merges all of their values into + * the returned observable. + * + * __Warning:__ If the source Observable emits Observables quickly and + * endlessly, and the inner Observables it emits generally complete slower than + * the source emits, you can run into memory issues as the incoming Observables + * collect in an unbounded buffer. + * + * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set + * to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4)); + * var firstOrder = higherOrder.concatAll(); + * firstOrder.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link combineAll} + * @see {@link concat} + * @see {@link concatMap} + * @see {@link concatMapTo} + * @see {@link exhaust} + * @see {@link mergeAll} + * @see {@link switch} + * @see {@link zipAll} + * + * @return {Observable} An Observable emitting values from all the inner + * Observables concatenated. + * @method concatAll + * @owner Observable + */ +export function concatAll() { + return higherOrder()(this); +} +//# sourceMappingURL=concatAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatAll.js.map b/node_modules/rxjs/_esm2015/operator/concatAll.js.map new file mode 100644 index 0000000..d340e22 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatAll.js","sourceRoot":"","sources":["../../src/operator/concatAll.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAKjE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH;IACE,MAAM,CAAM,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatMap.js b/node_modules/rxjs/_esm2015/operator/concatMap.js new file mode 100644 index 0000000..987b3ac --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatMap.js @@ -0,0 +1,65 @@ +import { concatMap as higherOrderConcatMap } from '../operators/concatMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable, in a serialized fashion waiting for each one to complete before + * merging the next. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link concatAll}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. Each new inner Observable is + * concatenated with the previous inner Observable. + * + * __Warning:__ if source values arrive endlessly and faster than their + * corresponding inner Observables can complete, it will result in memory issues + * as inner Observables amass in an unbounded buffer waiting for their turn to + * be subscribed to. + * + * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set + * to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4)); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link concat} + * @see {@link concatAll} + * @see {@link concatMapTo} + * @see {@link exhaustMap} + * @see {@link mergeMap} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and taking values from each projected inner + * Observable sequentially. + * @method concatMap + * @owner Observable + */ +export function concatMap(project, resultSelector) { + return higherOrderConcatMap(project, resultSelector)(this); +} +//# sourceMappingURL=concatMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatMap.js.map b/node_modules/rxjs/_esm2015/operator/concatMap.js.map new file mode 100644 index 0000000..41de2cd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMap.js","sourceRoot":"","sources":["../../src/operator/concatMap.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,wBAAwB;AAM1E,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,0BAAwD,OAAyD,EAC9E,cAA4F;IAC7H,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatMapTo.js b/node_modules/rxjs/_esm2015/operator/concatMapTo.js new file mode 100644 index 0000000..b51b0ce --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatMapTo.js @@ -0,0 +1,62 @@ +import { concatMapTo as higherOrder } from '../operators/concatMapTo'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is merged multiple + * times in a serialized fashion on the output Observable. + * + * It's like {@link concatMap}, but maps each value + * always to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then flattens those resulting Observables into one + * single Observable, which is the output Observable. Each new `innerObservable` + * instance emitted on the output Observable is concatenated with the previous + * `innerObservable` instance. + * + * __Warning:__ if source values arrive endlessly and faster than their + * corresponding inner Observables can complete, it will result in memory issues + * as inner Observables amass in an unbounded buffer waiting for their turn to + * be subscribed to. + * + * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter + * set to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.concatMapTo(Rx.Observable.interval(1000).take(4)); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link concat} + * @see {@link concatAll} + * @see {@link concatMap} + * @see {@link mergeMapTo} + * @see {@link switchMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An observable of values merged together by joining the + * passed observable with itself, one after the other, for each value emitted + * from the source. + * @method concatMapTo + * @owner Observable + */ +export function concatMapTo(innerObservable, resultSelector) { + return higherOrder(innerObservable, resultSelector)(this); +} +//# sourceMappingURL=concatMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/concatMapTo.js.map b/node_modules/rxjs/_esm2015/operator/concatMapTo.js.map new file mode 100644 index 0000000..45b7f44 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/concatMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMapTo.js","sourceRoot":"","sources":["../../src/operator/concatMapTo.ts"],"names":[],"mappings":"OACO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAKrE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,4BAA0D,eAA8B,EACnD,cAA4F;IAC/H,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/count.js b/node_modules/rxjs/_esm2015/operator/count.js new file mode 100644 index 0000000..751ccf2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/count.js @@ -0,0 +1,53 @@ +import { count as higherOrder } from '../operators/count'; +/** + * Counts the number of emissions on the source and emits that number when the + * source completes. + * + * Tells how many values were emitted, when the source + * completes. + * + * + * + * `count` transforms an Observable that emits values into an Observable that + * emits a single value that represents the number of values emitted by the + * source Observable. If the source Observable terminates with an error, `count` + * will pass this error notification along without emitting a value first. If + * the source Observable does not terminate at all, `count` will neither emit + * a value nor terminate. This operator takes an optional `predicate` function + * as argument, in which case the output emission will represent the number of + * source values that matched `true` with the `predicate`. + * + * @example Counts how many seconds have passed before the first click happened + * var seconds = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var secondsBeforeClick = seconds.takeUntil(clicks); + * var result = secondsBeforeClick.count(); + * result.subscribe(x => console.log(x)); + * + * @example Counts how many odd numbers are there between 1 and 7 + * var numbers = Rx.Observable.range(1, 7); + * var result = numbers.count(i => i % 2 === 1); + * result.subscribe(x => console.log(x)); + * + * // Results in: + * // 4 + * + * @see {@link max} + * @see {@link min} + * @see {@link reduce} + * + * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A + * boolean function to select what values are to be counted. It is provided with + * arguments of: + * - `value`: the value from the source Observable. + * - `index`: the (zero-based) "index" of the value from the source Observable. + * - `source`: the source Observable instance itself. + * @return {Observable} An Observable of one number that represents the count as + * described above. + * @method count + * @owner Observable + */ +export function count(predicate) { + return higherOrder(predicate)(this); +} +//# sourceMappingURL=count.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/count.js.map b/node_modules/rxjs/_esm2015/operator/count.js.map new file mode 100644 index 0000000..b5299e7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/count.js.map @@ -0,0 +1 @@ +{"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/operator/count.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,sBAA8C,SAAuE;IACnH,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/debounce.js b/node_modules/rxjs/_esm2015/operator/debounce.js new file mode 100644 index 0000000..2dcf571 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/debounce.js @@ -0,0 +1,47 @@ +import { debounce as higherOrder } from '../operators/debounce'; +/** + * Emits a value from the source Observable only after a particular time span + * determined by another Observable has passed without another source emission. + * + * It's like {@link debounceTime}, but the time span of + * emission silence is determined by a second Observable. + * + * + * + * `debounce` delays values emitted by the source Observable, but drops previous + * pending delayed emissions if a new value arrives on the source Observable. + * This operator keeps track of the most recent value from the source + * Observable, and spawns a duration Observable by calling the + * `durationSelector` function. The value is emitted only when the duration + * Observable emits a value or completes, and if no other value was emitted on + * the source Observable since the duration Observable was spawned. If a new + * value appears before the duration Observable emits, the previous value will + * be dropped and will not be emitted on the output Observable. + * + * Like {@link debounceTime}, this is a rate-limiting operator, and also a + * delay-like operator since output emissions do not necessarily occur at the + * same time as they did on the source Observable. + * + * @example Emit the most recent click after a burst of clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.debounce(() => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounceTime} + * @see {@link delayWhen} + * @see {@link throttle} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the timeout + * duration for each source value, returned as an Observable or a Promise. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified duration Observable returned by + * `durationSelector`, and may drop some values if they occur too frequently. + * @method debounce + * @owner Observable + */ +export function debounce(durationSelector) { + return higherOrder(durationSelector)(this); +} +//# sourceMappingURL=debounce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/debounce.js.map b/node_modules/rxjs/_esm2015/operator/debounce.js.map new file mode 100644 index 0000000..80b60d9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/debounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/operator/debounce.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,uBAAuB;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,yBAAiD,gBAA6D;IAC5G,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/debounceTime.js b/node_modules/rxjs/_esm2015/operator/debounceTime.js new file mode 100644 index 0000000..298ab82 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/debounceTime.js @@ -0,0 +1,52 @@ +import { async } from '../scheduler/async'; +import { debounceTime as higherOrder } from '../operators/debounceTime'; +/** + * Emits a value from the source Observable only after a particular time span + * has passed without another source emission. + * + * It's like {@link delay}, but passes only the most + * recent value from each burst of emissions. + * + * + * + * `debounceTime` delays values emitted by the source Observable, but drops + * previous pending delayed emissions if a new value arrives on the source + * Observable. This operator keeps track of the most recent value from the + * source Observable, and emits that only when `dueTime` enough time has passed + * without any other value appearing on the source Observable. If a new value + * appears before `dueTime` silence occurs, the previous value will be dropped + * and will not be emitted on the output Observable. + * + * This is a rate-limiting operator, because it is impossible for more than one + * value to be emitted in any time window of duration `dueTime`, but it is also + * a delay-like operator since output emissions do not occur at the same time as + * they did on the source Observable. Optionally takes a {@link IScheduler} for + * managing timers. + * + * @example Emit the most recent click after a burst of clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.debounceTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounce} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttleTime} + * + * @param {number} dueTime The timeout duration in milliseconds (or the time + * unit determined internally by the optional `scheduler`) for the window of + * time required to wait for emission silence before emitting the most recent + * source value. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the timeout for each value. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified `dueTime`, and may drop some values if they occur + * too frequently. + * @method debounceTime + * @owner Observable + */ +export function debounceTime(dueTime, scheduler = async) { + return higherOrder(dueTime, scheduler)(this); +} +//# sourceMappingURL=debounceTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/debounceTime.js.map b/node_modules/rxjs/_esm2015/operator/debounceTime.js.map new file mode 100644 index 0000000..4523bfe --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/debounceTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounceTime.js","sourceRoot":"","sources":["../../src/operator/debounceTime.ts"],"names":[],"mappings":"OAGO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,2BAA2B;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6BAAqD,OAAe,EAAE,SAAS,GAAe,KAAK;IACjG,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAAkB,CAAC;AAChE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js b/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js new file mode 100644 index 0000000..ff61fda --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js @@ -0,0 +1,36 @@ +import { defaultIfEmpty as higherOrder } from '../operators/defaultIfEmpty'; +/* tslint:enable:max-line-length */ +/** + * Emits a given value if the source Observable completes without emitting any + * `next` value, otherwise mirrors the source Observable. + * + * If the source Observable turns out to be empty, then + * this operator will emit a default value. + * + * + * + * `defaultIfEmpty` emits the values emitted by the source Observable or a + * specified default value if the source Observable is empty (completes without + * having emitted any `next` value). + * + * @example If no clicks happen in 5 seconds, then emit "no clicks" + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var clicksBeforeFive = clicks.takeUntil(Rx.Observable.interval(5000)); + * var result = clicksBeforeFive.defaultIfEmpty('no clicks'); + * result.subscribe(x => console.log(x)); + * + * @see {@link empty} + * @see {@link last} + * + * @param {any} [defaultValue=null] The default value used if the source + * Observable is empty. + * @return {Observable} An Observable that emits either the specified + * `defaultValue` if the source Observable emits no items, or the values emitted + * by the source Observable. + * @method defaultIfEmpty + * @owner Observable + */ +export function defaultIfEmpty(defaultValue = null) { + return higherOrder(defaultValue)(this); +} +//# sourceMappingURL=defaultIfEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js.map b/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js.map new file mode 100644 index 0000000..a249988 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/defaultIfEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaultIfEmpty.js","sourceRoot":"","sources":["../../src/operator/defaultIfEmpty.ts"],"names":[],"mappings":"OAEO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,6BAA6B;AAK3E,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,+BAA0D,YAAY,GAAM,IAAI;IAC9E,MAAM,CAAC,WAAW,CAAO,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/delay.js b/node_modules/rxjs/_esm2015/operator/delay.js new file mode 100644 index 0000000..18da438 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/delay.js @@ -0,0 +1,45 @@ +import { async } from '../scheduler/async'; +import { delay as higherOrder } from '../operators/delay'; +/** + * Delays the emission of items from the source Observable by a given timeout or + * until a given Date. + * + * Time shifts each item by some specified amount of + * milliseconds. + * + * + * + * If the delay argument is a Number, this operator time shifts the source + * Observable by that amount of time expressed in milliseconds. The relative + * time intervals between the values are preserved. + * + * If the delay argument is a Date, this operator time shifts the start of the + * Observable execution until the given date occurs. + * + * @example Delay each click by one second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var delayedClicks = clicks.delay(1000); // each click emitted after 1 second + * delayedClicks.subscribe(x => console.log(x)); + * + * @example Delay all clicks until a future date happens + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var date = new Date('March 15, 2050 12:00:00'); // in the future + * var delayedClicks = clicks.delay(date); // click emitted only after that date + * delayedClicks.subscribe(x => console.log(x)); + * + * @see {@link debounceTime} + * @see {@link delayWhen} + * + * @param {number|Date} delay The delay duration in milliseconds (a `number`) or + * a `Date` until which the emission of the source items is delayed. + * @param {Scheduler} [scheduler=async] The IScheduler to use for + * managing the timers that handle the time-shift for each item. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified timeout or Date. + * @method delay + * @owner Observable + */ +export function delay(delay, scheduler = async) { + return higherOrder(delay, scheduler)(this); +} +//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/delay.js.map b/node_modules/rxjs/_esm2015/operator/delay.js.map new file mode 100644 index 0000000..b50b888 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/delay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/operator/delay.ts"],"names":[],"mappings":"OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAGnC,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,sBAA8C,KAAkB,EACvC,SAAS,GAAe,KAAK;IACpD,MAAM,CAAC,WAAW,CAAI,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/delayWhen.js b/node_modules/rxjs/_esm2015/operator/delayWhen.js new file mode 100644 index 0000000..338b3e6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/delayWhen.js @@ -0,0 +1,50 @@ +import { delayWhen as higherOrder } from '../operators/delayWhen'; +/** + * Delays the emission of items from the source Observable by a given time span + * determined by the emissions of another Observable. + * + * It's like {@link delay}, but the time span of the + * delay duration is determined by a second Observable. + * + * + * + * `delayWhen` time shifts each emitted value from the source Observable by a + * time span determined by another Observable. When the source emits a value, + * the `delayDurationSelector` function is called with the source value as + * argument, and should return an Observable, called the "duration" Observable. + * The source value is emitted on the output Observable only when the duration + * Observable emits a value or completes. + * + * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which + * is an Observable. When `subscriptionDelay` emits its first value or + * completes, the source Observable is subscribed to and starts behaving like + * described in the previous paragraph. If `subscriptionDelay` is not provided, + * `delayWhen` will subscribe to the source Observable as soon as the output + * Observable is subscribed. + * + * @example Delay each click by a random amount of time, between 0 and 5 seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var delayedClicks = clicks.delayWhen(event => + * Rx.Observable.interval(Math.random() * 5000) + * ); + * delayedClicks.subscribe(x => console.log(x)); + * + * @see {@link debounce} + * @see {@link delay} + * + * @param {function(value: T): Observable} delayDurationSelector A function that + * returns an Observable for each value emitted by the source Observable, which + * is then used to delay the emission of that item on the output Observable + * until the Observable returned from this function emits a value. + * @param {Observable} subscriptionDelay An Observable that triggers the + * subscription to the source Observable once it emits any value. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by an amount of time specified by the Observable returned by + * `delayDurationSelector`. + * @method delayWhen + * @owner Observable + */ +export function delayWhen(delayDurationSelector, subscriptionDelay) { + return higherOrder(delayDurationSelector, subscriptionDelay)(this); +} +//# sourceMappingURL=delayWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/delayWhen.js.map b/node_modules/rxjs/_esm2015/operator/delayWhen.js.map new file mode 100644 index 0000000..2594970 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/delayWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delayWhen.js","sourceRoot":"","sources":["../../src/operator/delayWhen.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,0BAAkD,qBAAoD,EACzE,iBAAmC;IAC9D,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/dematerialize.js b/node_modules/rxjs/_esm2015/operator/dematerialize.js new file mode 100644 index 0000000..15eca3d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/dematerialize.js @@ -0,0 +1,45 @@ +import { dematerialize as higherOrder } from '../operators/dematerialize'; +/** + * Converts an Observable of {@link Notification} objects into the emissions + * that they represent. + * + * Unwraps {@link Notification} objects as actual `next`, + * `error` and `complete` emissions. The opposite of {@link materialize}. + * + * + * + * `dematerialize` is assumed to operate an Observable that only emits + * {@link Notification} objects as `next` emissions, and does not emit any + * `error`. Such Observable is the output of a `materialize` operation. Those + * notifications are then unwrapped using the metadata they contain, and emitted + * as `next`, `error`, and `complete` on the output Observable. + * + * Use this operator in conjunction with {@link materialize}. + * + * @example Convert an Observable of Notifications to an actual Observable + * var notifA = new Rx.Notification('N', 'A'); + * var notifB = new Rx.Notification('N', 'B'); + * var notifE = new Rx.Notification('E', void 0, + * new TypeError('x.toUpperCase is not a function') + * ); + * var materialized = Rx.Observable.of(notifA, notifB, notifE); + * var upperCase = materialized.dematerialize(); + * upperCase.subscribe(x => console.log(x), e => console.error(e)); + * + * // Results in: + * // A + * // B + * // TypeError: x.toUpperCase is not a function + * + * @see {@link Notification} + * @see {@link materialize} + * + * @return {Observable} An Observable that emits items and notifications + * embedded in Notification objects emitted by the source Observable. + * @method dematerialize + * @owner Observable + */ +export function dematerialize() { + return higherOrder()(this); +} +//# sourceMappingURL=dematerialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/dematerialize.js.map b/node_modules/rxjs/_esm2015/operator/dematerialize.js.map new file mode 100644 index 0000000..c5b985e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/dematerialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dematerialize.js","sourceRoot":"","sources":["../../src/operator/dematerialize.ts"],"names":[],"mappings":"OAGO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,4BAA4B;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAkB,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinct.js b/node_modules/rxjs/_esm2015/operator/distinct.js new file mode 100644 index 0000000..6ae645a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinct.js @@ -0,0 +1,50 @@ +import { distinct as higherOrder } from '../operators/distinct'; +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items. + * + * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will + * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the + * source observable directly with an equality check against previous values. + * + * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking. + * + * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the + * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct` + * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so + * that the internal `Set` can be "flushed", basically clearing it of values. + * + * @example A simple example with numbers + * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1) + * .distinct() + * .subscribe(x => console.log(x)); // 1, 2, 3, 4 + * + * @example An example using a keySelector function + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}) + * .distinct((p: Person) => p.name) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * + * @see {@link distinctUntilChanged} + * @see {@link distinctUntilKeyChanged} + * + * @param {function} [keySelector] Optional function to select which value you want to check as distinct. + * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator. + * @return {Observable} An Observable that emits items from the source Observable with distinct values. + * @method distinct + * @owner Observable + */ +export function distinct(keySelector, flushes) { + return higherOrder(keySelector, flushes)(this); +} +//# sourceMappingURL=distinct.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinct.js.map b/node_modules/rxjs/_esm2015/operator/distinct.js.map new file mode 100644 index 0000000..0a2c689 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinct.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../src/operator/distinct.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,uBAAuB;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,yBAC+B,WAA6B,EAC7B,OAAyB;IACtD,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js b/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js new file mode 100644 index 0000000..0b79e47 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js @@ -0,0 +1,45 @@ +import { distinctUntilChanged as higherOrder } from '../operators/distinctUntilChanged'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item. + * + * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted. + * + * If a comparator function is not provided, an equality check is used by default. + * + * @example A simple example with numbers + * Observable.of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4) + * .distinctUntilChanged() + * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4 + * + * @example An example using a compare function + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}) + * { age: 6, name: 'Foo'}) + * .distinctUntilChanged((p: Person, q: Person) => p.name === q.name) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo' } + * + * @see {@link distinct} + * @see {@link distinctUntilKeyChanged} + * + * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source. + * @return {Observable} An Observable that emits items from the source Observable with distinct values. + * @method distinctUntilChanged + * @owner Observable + */ +export function distinctUntilChanged(compare, keySelector) { + return higherOrder(compare, keySelector)(this); +} +//# sourceMappingURL=distinctUntilChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js.map b/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js.map new file mode 100644 index 0000000..9dc18b9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinctUntilChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilChanged.js","sourceRoot":"","sources":["../../src/operator/distinctUntilChanged.ts"],"names":[],"mappings":"OAEO,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,mCAAmC;AAKvF,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qCAAgE,OAAiC,EAAE,WAAyB;IAC1H,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js b/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js new file mode 100644 index 0000000..d0008a3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js @@ -0,0 +1,63 @@ +import { distinctUntilKeyChanged as higherOrder } from '../operators/distinctUntilKeyChanged'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item, + * using a property accessed by using the key provided to check if the two items are distinct. + * + * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted. + * + * If a comparator function is not provided, an equality check is used by default. + * + * @example An example comparing the name of persons + * + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}, + * { age: 6, name: 'Foo'}) + * .distinctUntilKeyChanged('name') + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo' } + * + * @example An example comparing the first letters of the name + * + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo1'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo2'}, + * { age: 6, name: 'Foo3'}) + * .distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo1' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo2' } + * + * @see {@link distinct} + * @see {@link distinctUntilChanged} + * + * @param {string} key String key for object property lookup on each item. + * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source. + * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified. + * @method distinctUntilKeyChanged + * @owner Observable + */ +export function distinctUntilKeyChanged(key, compare) { + return higherOrder(key, compare)(this); +} +//# sourceMappingURL=distinctUntilKeyChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js.map b/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js.map new file mode 100644 index 0000000..4c34125 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/distinctUntilKeyChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilKeyChanged.js","sourceRoot":"","sources":["../../src/operator/distinctUntilKeyChanged.ts"],"names":[],"mappings":"OAEO,EAAE,uBAAuB,IAAI,WAAW,EAAE,MAAM,sCAAsC;AAK7F,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wCAAgE,GAAW,EAAE,OAAiC;IAC5G,MAAM,CAAC,WAAW,CAAO,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/do.js b/node_modules/rxjs/_esm2015/operator/do.js new file mode 100644 index 0000000..2b51314 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/do.js @@ -0,0 +1,49 @@ +import { tap as higherOrder } from '../operators/tap'; +/* tslint:enable:max-line-length */ +/** + * Perform a side effect for every emission on the source Observable, but return + * an Observable that is identical to the source. + * + * Intercepts each emission on the source and runs a + * function, but returns an output which is identical to the source as long as errors don't occur. + * + * + * + * Returns a mirrored Observable of the source Observable, but modified so that + * the provided Observer is called to perform a side effect for every value, + * error, and completion emitted by the source. Any errors that are thrown in + * the aforementioned Observer or handlers are safely sent down the error path + * of the output Observable. + * + * This operator is useful for debugging your Observables for the correct values + * or performing other side effects. + * + * Note: this is different to a `subscribe` on the Observable. If the Observable + * returned by `do` is not subscribed, the side effects specified by the + * Observer will never happen. `do` therefore simply spies on existing + * execution, it does not trigger an execution to happen like `subscribe` does. + * + * @example Map every click to the clientX position of that click, while also logging the click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var positions = clicks + * .do(ev => console.log(ev)) + * .map(ev => ev.clientX); + * positions.subscribe(x => console.log(x)); + * + * @see {@link map} + * @see {@link subscribe} + * + * @param {Observer|function} [nextOrObserver] A normal Observer object or a + * callback for `next`. + * @param {function} [error] Callback for errors in the source. + * @param {function} [complete] Callback for the completion of the source. + * @return {Observable} An Observable identical to the source, but runs the + * specified Observer or callback(s) for each item. + * @method do + * @name do + * @owner Observable + */ +export function _do(nextOrObserver, error, complete) { + return higherOrder(nextOrObserver, error, complete)(this); +} +//# sourceMappingURL=do.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/do.js.map b/node_modules/rxjs/_esm2015/operator/do.js.map new file mode 100644 index 0000000..2599e4c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/do.js.map @@ -0,0 +1 @@ +{"version":3,"file":"do.js","sourceRoot":"","sources":["../../src/operator/do.ts"],"names":[],"mappings":"OAGO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,kBAAkB;AAKrD,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,oBAA4C,cAAsD,EAC3E,KAAwB,EACxB,QAAqB;IAC1C,MAAM,CAAC,WAAW,CAAM,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AAClF,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/elementAt.js b/node_modules/rxjs/_esm2015/operator/elementAt.js new file mode 100644 index 0000000..f358561 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/elementAt.js @@ -0,0 +1,47 @@ +import { elementAt as higherOrder } from '../operators/elementAt'; +/** + * Emits the single value at the specified `index` in a sequence of emissions + * from the source Observable. + * + * Emits only the i-th value, then completes. + * + * + * + * `elementAt` returns an Observable that emits the item at the specified + * `index` in the source Observable, or a default value if that `index` is out + * of range and the `default` argument is provided. If the `default` argument is + * not given and the `index` is out of range, the output Observable will emit an + * `ArgumentOutOfRangeError` error. + * + * @example Emit only the third click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.elementAt(2); + * result.subscribe(x => console.log(x)); + * + * // Results in: + * // click 1 = nothing + * // click 2 = nothing + * // click 3 = MouseEvent object logged to console + * + * @see {@link first} + * @see {@link last} + * @see {@link skip} + * @see {@link single} + * @see {@link take} + * + * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the + * Observable has completed before emitting the i-th `next` notification. + * + * @param {number} index Is the number `i` for the i-th source emission that has + * happened since the subscription, starting from the number `0`. + * @param {T} [defaultValue] The default value returned for missing indices. + * @return {Observable} An Observable that emits a single item, if it is found. + * Otherwise, will emit the default value if given. If not, then emits an error. + * @method elementAt + * @owner Observable + */ +export function elementAt(index, defaultValue) { + return higherOrder(index, defaultValue)(this); +} +//# sourceMappingURL=elementAt.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/elementAt.js.map b/node_modules/rxjs/_esm2015/operator/elementAt.js.map new file mode 100644 index 0000000..7686a81 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/elementAt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"elementAt.js","sourceRoot":"","sources":["../../src/operator/elementAt.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,0BAAkD,KAAa,EAAE,YAAgB;IAC/E,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/every.js b/node_modules/rxjs/_esm2015/operator/every.js new file mode 100644 index 0000000..28d34f4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/every.js @@ -0,0 +1,19 @@ +import { every as higherOrder } from '../operators/every'; +/** + * Returns an Observable that emits whether or not every item of the source satisfies the condition specified. + * + * @example A simple example emitting true if all elements are less than 5, false otherwise + * Observable.of(1, 2, 3, 4, 5, 6) + * .every(x => x < 5) + * .subscribe(x => console.log(x)); // -> false + * + * @param {function} predicate A function for determining if an item meets a specified condition. + * @param {any} [thisArg] Optional object to use for `this` in the callback. + * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified. + * @method every + * @owner Observable + */ +export function every(predicate, thisArg) { + return higherOrder(predicate, thisArg)(this); +} +//# sourceMappingURL=every.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/every.js.map b/node_modules/rxjs/_esm2015/operator/every.js.map new file mode 100644 index 0000000..d2fc666 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/every.js.map @@ -0,0 +1 @@ +{"version":3,"file":"every.js","sourceRoot":"","sources":["../../src/operator/every.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;GAaG;AACH,sBAA8C,SAAsE,EAC3F,OAAa;IACpC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/exhaust.js b/node_modules/rxjs/_esm2015/operator/exhaust.js new file mode 100644 index 0000000..02c5cff --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/exhaust.js @@ -0,0 +1,40 @@ +import { exhaust as higherOrder } from '../operators/exhaust'; +/** + * Converts a higher-order Observable into a first-order Observable by dropping + * inner Observables while the previous inner Observable has not yet completed. + * + * Flattens an Observable-of-Observables by dropping the + * next inner Observables while the current inner is still executing. + * + * + * + * `exhaust` subscribes to an Observable that emits Observables, also known as a + * higher-order Observable. Each time it observes one of these emitted inner + * Observables, the output Observable begins emitting the items emitted by that + * inner Observable. So far, it behaves like {@link mergeAll}. However, + * `exhaust` ignores every new inner Observable if the previous Observable has + * not yet completed. Once that one completes, it will accept and flatten the + * next inner Observable and repeat this process. + * + * @example Run a finite timer for each click, only if there is no currently active timer + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(5)); + * var result = higherOrder.exhaust(); + * result.subscribe(x => console.log(x)); + * + * @see {@link combineAll} + * @see {@link concatAll} + * @see {@link switch} + * @see {@link mergeAll} + * @see {@link exhaustMap} + * @see {@link zipAll} + * + * @return {Observable} An Observable that takes a source of Observables and propagates the first observable + * exclusively until it completes before subscribing to the next. + * @method exhaust + * @owner Observable + */ +export function exhaust() { + return higherOrder()(this); +} +//# sourceMappingURL=exhaust.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/exhaust.js.map b/node_modules/rxjs/_esm2015/operator/exhaust.js.map new file mode 100644 index 0000000..fabda8b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/exhaust.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaust.js","sourceRoot":"","sources":["../../src/operator/exhaust.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAkB,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/exhaustMap.js b/node_modules/rxjs/_esm2015/operator/exhaustMap.js new file mode 100644 index 0000000..54fa682 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/exhaustMap.js @@ -0,0 +1,51 @@ +import { exhaustMap as higherOrder } from '../operators/exhaustMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable only if the previous projected Observable has completed. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link exhaust}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. When it projects a source value to + * an Observable, the output Observable begins emitting the items emitted by + * that projected Observable. However, `exhaustMap` ignores every new projected + * Observable if the previous projected Observable has not yet completed. Once + * that one completes, it will accept and flatten the next projected Observable + * and repeat this process. + * + * @example Run a finite timer for each click, only if there is no currently active timer + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.exhaustMap((ev) => Rx.Observable.interval(1000).take(5)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMap} + * @see {@link exhaust} + * @see {@link mergeMap} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable containing projected Observables + * of each item of the source, ignoring projected Observables that start before + * their preceding Observable has completed. + * @method exhaustMap + * @owner Observable + */ +export function exhaustMap(project, resultSelector) { + return higherOrder(project, resultSelector)(this); +} +//# sourceMappingURL=exhaustMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/exhaustMap.js.map b/node_modules/rxjs/_esm2015/operator/exhaustMap.js.map new file mode 100644 index 0000000..243f678 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/exhaustMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../../src/operator/exhaustMap.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAKnE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2BAAyD,OAAwD,EAC7E,cAA4F;IAC9H,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/expand.js b/node_modules/rxjs/_esm2015/operator/expand.js new file mode 100644 index 0000000..a544be0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/expand.js @@ -0,0 +1,52 @@ +import { expand as higherOrder } from '../operators/expand'; +/* tslint:enable:max-line-length */ +/** + * Recursively projects each source value to an Observable which is merged in + * the output Observable. + * + * It's similar to {@link mergeMap}, but applies the + * projection function to every source value as well as every output value. + * It's recursive. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an Observable, and then merging those resulting Observables and + * emitting the results of this merger. *Expand* will re-emit on the output + * Observable every source value. Then, each output value is given to the + * `project` function which returns an inner Observable to be merged on the + * output Observable. Those output values resulting from the projection are also + * given to the `project` function to produce new output values. This is how + * *expand* behaves recursively. + * + * @example Start emitting the powers of two on every click, at most 10 of them + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var powersOfTwo = clicks + * .mapTo(1) + * .expand(x => Rx.Observable.of(2 * x).delay(1000)) + * .take(10); + * powersOfTwo.subscribe(x => console.log(x)); + * + * @see {@link mergeMap} + * @see {@link mergeScan} + * + * @param {function(value: T, index: number) => Observable} project A function + * that, when applied to an item emitted by the source or the output Observable, + * returns an Observable. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to + * each projected inner Observable. + * @return {Observable} An Observable that emits the source values and also + * result of applying the projection function to each value emitted on the + * output Observable and and merging the results of the Observables obtained + * from this transformation. + * @method expand + * @owner Observable + */ +export function expand(project, concurrent = Number.POSITIVE_INFINITY, scheduler = undefined) { + concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent; + return higherOrder(project, concurrent, scheduler)(this); +} +//# sourceMappingURL=expand.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/expand.js.map b/node_modules/rxjs/_esm2015/operator/expand.js.map new file mode 100644 index 0000000..e4486d8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/expand.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/operator/expand.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAK3D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,uBAAkD,OAAmD,EACxE,UAAU,GAAW,MAAM,CAAC,iBAAiB,EAC7C,SAAS,GAAe,SAAS;IAC5D,UAAU,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAC;IAE3E,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/filter.js b/node_modules/rxjs/_esm2015/operator/filter.js new file mode 100644 index 0000000..c57a64b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/filter.js @@ -0,0 +1,45 @@ +import { filter as higherOrderFilter } from '../operators/filter'; +/* tslint:enable:max-line-length */ +/** + * Filter items emitted by the source Observable by only emitting those that + * satisfy a specified predicate. + * + * Like + * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter), + * it only emits a value from the source if it passes a criterion function. + * + * + * + * Similar to the well-known `Array.prototype.filter` method, this operator + * takes values from the source Observable, passes them through a `predicate` + * function and only emits those values that yielded `true`. + * + * @example Emit only click events whose target was a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV'); + * clicksOnDivs.subscribe(x => console.log(x)); + * + * @see {@link distinct} + * @see {@link distinctUntilChanged} + * @see {@link distinctUntilKeyChanged} + * @see {@link ignoreElements} + * @see {@link partition} + * @see {@link skip} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates each value emitted by the source Observable. If it returns `true`, + * the value is emitted, if `false` the value is not passed to the output + * Observable. The `index` parameter is the number `i` for the i-th source + * emission that has happened since the subscription, starting from the number + * `0`. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of values from the source that were + * allowed by the `predicate` function. + * @method filter + * @owner Observable + */ +export function filter(predicate, thisArg) { + return higherOrderFilter(predicate, thisArg)(this); +} +//# sourceMappingURL=filter.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/filter.js.map b/node_modules/rxjs/_esm2015/operator/filter.js.map new file mode 100644 index 0000000..6abb45c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operator/filter.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,qBAAqB;AASjE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,uBAA+C,SAA+C,EACpE,OAAa;IACrC,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/finally.js b/node_modules/rxjs/_esm2015/operator/finally.js new file mode 100644 index 0000000..740cd76 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/finally.js @@ -0,0 +1,13 @@ +import { finalize } from '../operators/finalize'; +/** + * Returns an Observable that mirrors the source Observable, but will call a specified function when + * the source terminates on complete or error. + * @param {function} callback Function to be called when source terminates. + * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination. + * @method finally + * @owner Observable + */ +export function _finally(callback) { + return finalize(callback)(this); +} +//# sourceMappingURL=finally.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/finally.js.map b/node_modules/rxjs/_esm2015/operator/finally.js.map new file mode 100644 index 0000000..fa9f5ae --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/finally.js.map @@ -0,0 +1 @@ +{"version":3,"file":"finally.js","sourceRoot":"","sources":["../../src/operator/finally.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAE,MAAM,uBAAuB;AAEhD;;;;;;;GAOG;AACH,yBAAiD,QAAoB;IACnE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/find.js b/node_modules/rxjs/_esm2015/operator/find.js new file mode 100644 index 0000000..6521b51 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/find.js @@ -0,0 +1,39 @@ +import { find as higherOrder } from '../operators/find'; +/* tslint:enable:max-line-length */ +/** + * Emits only the first value emitted by the source Observable that meets some + * condition. + * + * Finds the first value that passes some test and emits + * that. + * + * + * + * `find` searches for the first item in the source Observable that matches the + * specified condition embodied by the `predicate`, and returns the first + * occurrence in the source. Unlike {@link first}, the `predicate` is required + * in `find`, and does not emit an error if a valid value is not found. + * + * @example Find and emit the first click that happens on a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.find(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link first} + * @see {@link findIndex} + * @see {@link take} + * + * @param {function(value: T, index: number, source: Observable): boolean} predicate + * A function called with each item to test for condition matching. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of the first item that matches the + * condition. + * @method find + * @owner Observable + */ +export function find(predicate, thisArg) { + return higherOrder(predicate, thisArg)(this); +} +//# sourceMappingURL=find.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/find.js.map b/node_modules/rxjs/_esm2015/operator/find.js.map new file mode 100644 index 0000000..615dbad --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/find.js.map @@ -0,0 +1 @@ +{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/operator/find.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,mBAAmB;AASvD,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAA6C,SAAsE,EAC3F,OAAa;IACnC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/findIndex.js b/node_modules/rxjs/_esm2015/operator/findIndex.js new file mode 100644 index 0000000..eec9224 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/findIndex.js @@ -0,0 +1,39 @@ +import { findIndex as higherOrder } from '../operators/findIndex'; +/** + * Emits only the index of the first value emitted by the source Observable that + * meets some condition. + * + * It's like {@link find}, but emits the index of the + * found value, not the value itself. + * + * + * + * `findIndex` searches for the first item in the source Observable that matches + * the specified condition embodied by the `predicate`, and returns the + * (zero-based) index of the first occurrence in the source. Unlike + * {@link first}, the `predicate` is required in `findIndex`, and does not emit + * an error if a valid value is not found. + * + * @example Emit the index of first click that happens on a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.findIndex(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link find} + * @see {@link first} + * @see {@link take} + * + * @param {function(value: T, index: number, source: Observable): boolean} predicate + * A function called with each item to test for condition matching. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of the index of the first item that + * matches the condition. + * @method find + * @owner Observable + */ +export function findIndex(predicate, thisArg) { + return higherOrder(predicate, thisArg)(this); +} +//# sourceMappingURL=findIndex.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/findIndex.js.map b/node_modules/rxjs/_esm2015/operator/findIndex.js.map new file mode 100644 index 0000000..77ac8f3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/findIndex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findIndex.js","sourceRoot":"","sources":["../../src/operator/findIndex.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,0BAAkD,SAAsE,EAC3F,OAAa;IACxC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/first.js b/node_modules/rxjs/_esm2015/operator/first.js new file mode 100644 index 0000000..cc97bd8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/first.js @@ -0,0 +1,54 @@ +import { first as higherOrder } from '../operators/first'; +/** + * Emits only the first value (or the first value that meets some condition) + * emitted by the source Observable. + * + * Emits only the first value. Or emits only the first + * value that passes some test. + * + * + * + * If called with no arguments, `first` emits the first value of the source + * Observable, then completes. If called with a `predicate` function, `first` + * emits the first value of the source that matches the specified condition. It + * may also take a `resultSelector` function to produce the output value from + * the input value, and a `defaultValue` to emit in case the source completes + * before it is able to emit a valid value. Throws an error if `defaultValue` + * was not provided and a matching element is not found. + * + * @example Emit only the first click that happens on the DOM + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.first(); + * result.subscribe(x => console.log(x)); + * + * @example Emits the first click that happens on a DIV + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.first(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link find} + * @see {@link take} + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * + * @param {function(value: T, index: number, source: Observable): boolean} [predicate] + * An optional function called with each item to test for condition matching. + * @param {function(value: T, index: number): R} [resultSelector] A function to + * produce the value on the output Observable based on the values + * and the indices of the source Observable. The arguments passed to this + * function are: + * - `value`: the value that was emitted on the source. + * - `index`: the "index" of the value from the source. + * @param {R} [defaultValue] The default value emitted in case no valid value + * was found on the source. + * @return {Observable} An Observable of the first item that matches the + * condition. + * @method first + * @owner Observable + */ +export function first(predicate, resultSelector, defaultValue) { + return higherOrder(predicate, resultSelector, defaultValue)(this); +} +//# sourceMappingURL=first.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/first.js.map b/node_modules/rxjs/_esm2015/operator/first.js.map new file mode 100644 index 0000000..663b25f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/first.js.map @@ -0,0 +1 @@ +{"version":3,"file":"first.js","sourceRoot":"","sources":["../../src/operator/first.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAuBzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,sBAAiD,SAAuE,EAC5F,cAAwD,EACxD,YAAgB;IAC1C,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,cAAqB,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/groupBy.js b/node_modules/rxjs/_esm2015/operator/groupBy.js new file mode 100644 index 0000000..73db84a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/groupBy.js @@ -0,0 +1,74 @@ +import { groupBy as higherOrder, GroupedObservable } from '../operators/groupBy'; +export { GroupedObservable }; +/* tslint:enable:max-line-length */ +/** + * Groups the items emitted by an Observable according to a specified criterion, + * and emits these grouped items as `GroupedObservables`, one + * {@link GroupedObservable} per group. + * + * + * + * @example Group objects by id and return as array + * Observable.of({id: 1, name: 'aze1'}, + * {id: 2, name: 'sf2'}, + * {id: 2, name: 'dg2'}, + * {id: 1, name: 'erg1'}, + * {id: 1, name: 'df1'}, + * {id: 2, name: 'sfqfb2'}, + * {id: 3, name: 'qfs3'}, + * {id: 2, name: 'qsgqsfg2'} + * ) + * .groupBy(p => p.id) + * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], [])) + * .subscribe(p => console.log(p)); + * + * // displays: + * // [ { id: 1, name: 'aze1' }, + * // { id: 1, name: 'erg1' }, + * // { id: 1, name: 'df1' } ] + * // + * // [ { id: 2, name: 'sf2' }, + * // { id: 2, name: 'dg2' }, + * // { id: 2, name: 'sfqfb2' }, + * // { id: 2, name: 'qsgqsfg2' } ] + * // + * // [ { id: 3, name: 'qfs3' } ] + * + * @example Pivot data on the id field + * Observable.of({id: 1, name: 'aze1'}, + * {id: 2, name: 'sf2'}, + * {id: 2, name: 'dg2'}, + * {id: 1, name: 'erg1'}, + * {id: 1, name: 'df1'}, + * {id: 2, name: 'sfqfb2'}, + * {id: 3, name: 'qfs1'}, + * {id: 2, name: 'qsgqsfg2'} + * ) + * .groupBy(p => p.id, p => p.name) + * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], ["" + group$.key])) + * .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)})) + * .subscribe(p => console.log(p)); + * + * // displays: + * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] } + * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] } + * // { id: 3, values: [ 'qfs1' ] } + * + * @param {function(value: T): K} keySelector A function that extracts the key + * for each item. + * @param {function(value: T): R} [elementSelector] A function that extracts the + * return element for each item. + * @param {function(grouped: GroupedObservable): Observable} [durationSelector] + * A function that returns an Observable to determine how long each group should + * exist. + * @return {Observable>} An Observable that emits + * GroupedObservables, each of which corresponds to a unique key value and each + * of which emits those items from the source Observable that share that key + * value. + * @method groupBy + * @owner Observable + */ +export function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) { + return higherOrder(keySelector, elementSelector, durationSelector, subjectSelector)(this); +} +//# sourceMappingURL=groupBy.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/groupBy.js.map b/node_modules/rxjs/_esm2015/operator/groupBy.js.map new file mode 100644 index 0000000..a174abe --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/groupBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"groupBy.js","sourceRoot":"","sources":["../../src/operator/groupBy.ts"],"names":[],"mappings":"OAGO,EAAE,OAAO,IAAI,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB;AAChF,SAAS,iBAAiB,GAAG;AAO7B,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,wBAAsD,WAA4B,EACjD,eAA0C,EAC1C,gBAAwE,EACxE,eAAkC;IACjE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,eAAsB,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC;AACnG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/ignoreElements.js b/node_modules/rxjs/_esm2015/operator/ignoreElements.js new file mode 100644 index 0000000..6223239 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/ignoreElements.js @@ -0,0 +1,16 @@ +import { ignoreElements as higherOrder } from '../operators/ignoreElements'; +/** + * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`. + * + * + * + * @return {Observable} An empty Observable that only calls `complete` + * or `error`, based on which one is called by the source Observable. + * @method ignoreElements + * @owner Observable + */ +export function ignoreElements() { + return higherOrder()(this); +} +; +//# sourceMappingURL=ignoreElements.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/ignoreElements.js.map b/node_modules/rxjs/_esm2015/operator/ignoreElements.js.map new file mode 100644 index 0000000..063cc8c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/ignoreElements.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ignoreElements.js","sourceRoot":"","sources":["../../src/operator/ignoreElements.ts"],"names":[],"mappings":"OACO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,6BAA6B;AAE3E;;;;;;;;;GASG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAkB,CAAC;AAC9C,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/isEmpty.js b/node_modules/rxjs/_esm2015/operator/isEmpty.js new file mode 100644 index 0000000..c5143de --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/isEmpty.js @@ -0,0 +1,14 @@ +import { isEmpty as higherOrder } from '../operators/isEmpty'; +/** + * If the source Observable is empty it returns an Observable that emits true, otherwise it emits false. + * + * + * + * @return {Observable} An Observable that emits a Boolean. + * @method isEmpty + * @owner Observable + */ +export function isEmpty() { + return higherOrder()(this); +} +//# sourceMappingURL=isEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/isEmpty.js.map b/node_modules/rxjs/_esm2015/operator/isEmpty.js.map new file mode 100644 index 0000000..e8b7a9e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/isEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../src/operator/isEmpty.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB;AAE7D;;;;;;;;GAQG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/last.js b/node_modules/rxjs/_esm2015/operator/last.js new file mode 100644 index 0000000..202219a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/last.js @@ -0,0 +1,23 @@ +import { last as higherOrder } from '../operators/last'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits only the last item emitted by the source Observable. + * It optionally takes a predicate function as a parameter, in which case, rather than emitting + * the last item from the source Observable, the resulting Observable will emit the last item + * from the source Observable that satisfies the predicate. + * + * + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * @param {function} predicate - The condition any source emitted item has to satisfy. + * @return {Observable} An Observable that emits only the last item satisfying the given condition + * from the source, or an NoSuchElementException if no such items are emitted. + * @throws - Throws if no items that match the predicate are emitted by the source Observable. + * @method last + * @owner Observable + */ +export function last(predicate, resultSelector, defaultValue) { + return higherOrder(predicate, resultSelector, defaultValue)(this); +} +//# sourceMappingURL=last.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/last.js.map b/node_modules/rxjs/_esm2015/operator/last.js.map new file mode 100644 index 0000000..00d0ac3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/last.js.map @@ -0,0 +1 @@ +{"version":3,"file":"last.js","sourceRoot":"","sources":["../../src/operator/last.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,mBAAmB;AAsBvD,mCAAmC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAgD,SAAuE,EAC5F,cAAwD,EACxD,YAAgB;IACzC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,cAAqB,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/let.js b/node_modules/rxjs/_esm2015/operator/let.js new file mode 100644 index 0000000..8d5d3a9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/let.js @@ -0,0 +1,10 @@ +/** + * @param func + * @return {Observable} + * @method let + * @owner Observable + */ +export function letProto(func) { + return func(this); +} +//# sourceMappingURL=let.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/let.js.map b/node_modules/rxjs/_esm2015/operator/let.js.map new file mode 100644 index 0000000..a0c984c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/let.js.map @@ -0,0 +1 @@ +{"version":3,"file":"let.js","sourceRoot":"","sources":["../../src/operator/let.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,yBAAoD,IAAgD;IAClG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/map.js b/node_modules/rxjs/_esm2015/operator/map.js new file mode 100644 index 0000000..42fc7c3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/map.js @@ -0,0 +1,38 @@ +import { map as higherOrderMap } from '../operators/map'; +/** + * Applies a given `project` function to each value emitted by the source + * Observable, and emits the resulting values as an Observable. + * + * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), + * it passes each source value through a transformation function to get + * corresponding output values. + * + * + * + * Similar to the well known `Array.prototype.map` function, this operator + * applies a projection to each value and emits that projection in the output + * Observable. + * + * @example Map every click to the clientX position of that click + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var positions = clicks.map(ev => ev.clientX); + * positions.subscribe(x => console.log(x)); + * + * @see {@link mapTo} + * @see {@link pluck} + * + * @param {function(value: T, index: number): R} project The function to apply + * to each `value` emitted by the source Observable. The `index` parameter is + * the number `i` for the i-th emission that has happened since the + * subscription, starting from the number `0`. + * @param {any} [thisArg] An optional argument to define what `this` is in the + * `project` function. + * @return {Observable} An Observable that emits the values from the source + * Observable transformed by the given `project` function. + * @method map + * @owner Observable + */ +export function map(project, thisArg) { + return higherOrderMap(project, thisArg)(this); +} +//# sourceMappingURL=map.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/map.js.map b/node_modules/rxjs/_esm2015/operator/map.js.map new file mode 100644 index 0000000..78d52a8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/map.js.map @@ -0,0 +1 @@ +{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/operator/map.ts"],"names":[],"mappings":"OAAO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,kBAAkB;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,oBAA+C,OAAuC,EAAE,OAAa;IACnG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mapTo.js b/node_modules/rxjs/_esm2015/operator/mapTo.js new file mode 100644 index 0000000..93f589d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mapTo.js @@ -0,0 +1,31 @@ +import { mapTo as higherOrder } from '../operators/mapTo'; +/** + * Emits the given constant value on the output Observable every time the source + * Observable emits a value. + * + * Like {@link map}, but it maps every source value to + * the same output value every time. + * + * + * + * Takes a constant `value` as argument, and emits that whenever the source + * Observable emits a value. In other words, ignores the actual source value, + * and simply uses the emission moment to know when to emit the given `value`. + * + * @example Map every click to the string 'Hi' + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var greetings = clicks.mapTo('Hi'); + * greetings.subscribe(x => console.log(x)); + * + * @see {@link map} + * + * @param {any} value The value to map each source value to. + * @return {Observable} An Observable that emits the given `value` every time + * the source Observable emits something. + * @method mapTo + * @owner Observable + */ +export function mapTo(value) { + return higherOrder(value)(this); +} +//# sourceMappingURL=mapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mapTo.js.map b/node_modules/rxjs/_esm2015/operator/mapTo.js.map new file mode 100644 index 0000000..2e1d8fd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapTo.js","sourceRoot":"","sources":["../../src/operator/mapTo.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sBAAiD,KAAQ;IACvD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/materialize.js b/node_modules/rxjs/_esm2015/operator/materialize.js new file mode 100644 index 0000000..c92ad78 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/materialize.js @@ -0,0 +1,49 @@ +import { materialize as higherOrder } from '../operators/materialize'; +/** + * Represents all of the notifications from the source Observable as `next` + * emissions marked with their original types within {@link Notification} + * objects. + * + * Wraps `next`, `error` and `complete` emissions in + * {@link Notification} objects, emitted as `next` on the output Observable. + * + * + * + * + * `materialize` returns an Observable that emits a `next` notification for each + * `next`, `error`, or `complete` emission of the source Observable. When the + * source Observable emits `complete`, the output Observable will emit `next` as + * a Notification of type "complete", and then it will emit `complete` as well. + * When the source Observable emits `error`, the output will emit `next` as a + * Notification of type "error", and then `complete`. + * + * This operator is useful for producing metadata of the source Observable, to + * be consumed as `next` emissions. Use it in conjunction with + * {@link dematerialize}. + * + * @example Convert a faulty Observable to an Observable of Notifications + * var letters = Rx.Observable.of('a', 'b', 13, 'd'); + * var upperCase = letters.map(x => x.toUpperCase()); + * var materialized = upperCase.materialize(); + * materialized.subscribe(x => console.log(x)); + * + * // Results in the following: + * // - Notification {kind: "N", value: "A", error: undefined, hasValue: true} + * // - Notification {kind: "N", value: "B", error: undefined, hasValue: true} + * // - Notification {kind: "E", value: undefined, error: TypeError: + * // x.toUpperCase is not a function at MapSubscriber.letters.map.x + * // [as project] (http://1…, hasValue: false} + * + * @see {@link Notification} + * @see {@link dematerialize} + * + * @return {Observable>} An Observable that emits + * {@link Notification} objects that wrap the original emissions from the source + * Observable with metadata. + * @method materialize + * @owner Observable + */ +export function materialize() { + return higherOrder()(this); +} +//# sourceMappingURL=materialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/materialize.js.map b/node_modules/rxjs/_esm2015/operator/materialize.js.map new file mode 100644 index 0000000..c5ed78e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/materialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/operator/materialize.ts"],"names":[],"mappings":"OAGO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAgC,CAAC;AAC5D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/max.js b/node_modules/rxjs/_esm2015/operator/max.js new file mode 100644 index 0000000..430013b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/max.js @@ -0,0 +1,36 @@ +import { max as higherOrderMax } from '../operators/max'; +/** + * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function), + * and when source Observable completes it emits a single item: the item with the largest value. + * + * + * + * @example Get the maximal value of a series of numbers + * Rx.Observable.of(5, 4, 7, 2, 8) + * .max() + * .subscribe(x => console.log(x)); // -> 8 + * + * @example Use a comparer function to get the maximal item + * interface Person { + * age: number, + * name: string + * } + * Observable.of({age: 7, name: 'Foo'}, + * {age: 5, name: 'Bar'}, + * {age: 9, name: 'Beer'}) + * .max((a: Person, b: Person) => a.age < b.age ? -1 : 1) + * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer' + * } + * + * @see {@link min} + * + * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the + * value of two items. + * @return {Observable} An Observable that emits item with the largest value. + * @method max + * @owner Observable + */ +export function max(comparer) { + return higherOrderMax(comparer)(this); +} +//# sourceMappingURL=max.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/max.js.map b/node_modules/rxjs/_esm2015/operator/max.js.map new file mode 100644 index 0000000..d4a472f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/operator/max.ts"],"names":[],"mappings":"OACO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,kBAAkB;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,oBAA4C,QAAiC;IAC3E,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/merge.js b/node_modules/rxjs/_esm2015/operator/merge.js new file mode 100644 index 0000000..322cd90 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/merge.js @@ -0,0 +1,53 @@ +import { merge as higherOrder } from '../operators/merge'; +export { merge as mergeStatic } from '../observable/merge'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which concurrently emits all values from every + * given input Observable. + * + * Flattens multiple Observables together by blending + * their values into one Observable. + * + * + * + * `merge` subscribes to each given input Observable (either the source or an + * Observable given as argument), and simply forwards (without doing any + * transformation) all the values from all the input Observables to the output + * Observable. The output Observable only completes once all input Observables + * have completed. Any error delivered by an input Observable will be immediately + * emitted on the output Observable. + * + * @example Merge together two Observables: 1s interval and clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var timer = Rx.Observable.interval(1000); + * var clicksOrTimer = clicks.merge(timer); + * clicksOrTimer.subscribe(x => console.log(x)); + * + * @example Merge together 3 Observables, but only 2 run concurrently + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var concurrent = 2; // the argument + * var merged = timer1.merge(timer2, timer3, concurrent); + * merged.subscribe(x => console.log(x)); + * + * @see {@link mergeAll} + * @see {@link mergeMap} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * + * @param {ObservableInput} other An input Observable to merge with the source + * Observable. More than one input Observables may be given as argument. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @param {Scheduler} [scheduler=null] The IScheduler to use for managing + * concurrency of input Observables. + * @return {Observable} An Observable that emits items that are the result of + * every input Observable. + * @method merge + * @owner Observable + */ +export function merge(...observables) { + return higherOrder(...observables)(this); +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/merge.js.map b/node_modules/rxjs/_esm2015/operator/merge.js.map new file mode 100644 index 0000000..f9c35c8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/operator/merge.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD,SAAS,KAAK,IAAI,WAAW,QAAQ,qBAAqB,CAAC;AAiB3D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,sBAAiD,GAAG,WAA8D;IAChH,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC5D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeAll.js b/node_modules/rxjs/_esm2015/operator/mergeAll.js new file mode 100644 index 0000000..2464518 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeAll.js @@ -0,0 +1,49 @@ +import { mergeAll as higherOrder } from '../operators/mergeAll'; +/** + * Converts a higher-order Observable into a first-order Observable which + * concurrently delivers all values that are emitted on the inner Observables. + * + * Flattens an Observable-of-Observables. + * + * + * + * `mergeAll` subscribes to an Observable that emits Observables, also known as + * a higher-order Observable. Each time it observes one of these emitted inner + * Observables, it subscribes to that and delivers all the values from the + * inner Observable on the output Observable. The output Observable only + * completes once all inner Observables have completed. Any error delivered by + * a inner Observable will be immediately emitted on the output Observable. + * + * @example Spawn a new interval Observable for each click event, and blend their outputs as one Observable + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000)); + * var firstOrder = higherOrder.mergeAll(); + * firstOrder.subscribe(x => console.log(x)); + * + * @example Count from 0 to 9 every second for each click, but only allow 2 concurrent timers + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10)); + * var firstOrder = higherOrder.mergeAll(2); + * firstOrder.subscribe(x => console.log(x)); + * + * @see {@link combineAll} + * @see {@link concatAll} + * @see {@link exhaust} + * @see {@link merge} + * @see {@link mergeMap} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * @see {@link switch} + * @see {@link zipAll} + * + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits values coming from all the + * inner Observables emitted by the source Observable. + * @method mergeAll + * @owner Observable + */ +export function mergeAll(concurrent = Number.POSITIVE_INFINITY) { + return higherOrder(concurrent)(this); +} +//# sourceMappingURL=mergeAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeAll.js.map b/node_modules/rxjs/_esm2015/operator/mergeAll.js.map new file mode 100644 index 0000000..a8a04ea --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeAll.js","sourceRoot":"","sources":["../../src/operator/mergeAll.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,uBAAuB;AAK/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,yBAAiD,UAAU,GAAW,MAAM,CAAC,iBAAiB;IAC5F,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAkB,CAAC;AACxD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeMap.js b/node_modules/rxjs/_esm2015/operator/mergeMap.js new file mode 100644 index 0000000..c7c1bd9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeMap.js @@ -0,0 +1,64 @@ +import { mergeMap as higherOrderMergeMap } from '../operators/mergeMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link mergeAll}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an Observable, and then merging those resulting Observables and + * emitting the results of this merger. + * + * @example Map and flatten each letter to an Observable ticking every 1 second + * var letters = Rx.Observable.of('a', 'b', 'c'); + * var result = letters.mergeMap(x => + * Rx.Observable.interval(1000).map(i => x+i) + * ); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // a0 + * // b0 + * // c0 + * // a1 + * // b1 + * // c1 + * // continues to list a,b,c with respective ascending integers + * + * @see {@link concatMap} + * @see {@link exhaustMap} + * @see {@link merge} + * @see {@link mergeAll} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and merging the results of the Observables obtained + * from this transformation. + * @method mergeMap + * @owner Observable + */ +export function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + return higherOrderMergeMap(project, resultSelector, concurrent)(this); +} +//# sourceMappingURL=mergeMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeMap.js.map b/node_modules/rxjs/_esm2015/operator/mergeMap.js.map new file mode 100644 index 0000000..8095283 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMap.js","sourceRoot":"","sources":["../../src/operator/mergeMap.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,uBAAuB;AAKvE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,yBAAuD,OAAwD,EAC7E,cAAuG,EACvG,UAAU,GAAW,MAAM,CAAC,iBAAiB;IAC7E,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAO,cAAc,EAAE,UAAU,CAAC,CAAC,IAAI,CAAsB,CAAC;AAClG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeMapTo.js b/node_modules/rxjs/_esm2015/operator/mergeMapTo.js new file mode 100644 index 0000000..2be8514 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeMapTo.js @@ -0,0 +1,49 @@ +import { mergeMapTo as higherOrder } from '../operators/mergeMapTo'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is merged multiple + * times in the output Observable. + * + * It's like {@link mergeMap}, but maps each value always + * to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then merges those resulting Observables into one + * single Observable, which is the output Observable. + * + * @example For each click event, start an interval Observable ticking every 1 second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.mergeMapTo(Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMapTo} + * @see {@link merge} + * @see {@link mergeAll} + * @see {@link mergeMap} + * @see {@link mergeScan} + * @see {@link switchMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits items from the given + * `innerObservable` (and optionally transformed through `resultSelector`) every + * time a value is emitted on the source Observable. + * @method mergeMapTo + * @owner Observable + */ +export function mergeMapTo(innerObservable, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + return higherOrder(innerObservable, resultSelector, concurrent)(this); +} +//# sourceMappingURL=mergeMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeMapTo.js.map b/node_modules/rxjs/_esm2015/operator/mergeMapTo.js.map new file mode 100644 index 0000000..9315e3c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMapTo.js","sourceRoot":"","sources":["../../src/operator/mergeMapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAKnE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,2BAAyD,eAA8B,EACnD,cAAuG,EACvG,UAAU,GAAW,MAAM,CAAC,iBAAiB;IAC/E,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,cAAqB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAkB,CAAC;AAChG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeScan.js b/node_modules/rxjs/_esm2015/operator/mergeScan.js new file mode 100644 index 0000000..6713a03 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeScan.js @@ -0,0 +1,36 @@ +import { mergeScan as higherOrder } from '../operators/mergeScan'; +/** + * Applies an accumulator function over the source Observable where the + * accumulator function itself returns an Observable, then each intermediate + * Observable returned is merged into the output Observable. + * + * It's like {@link scan}, but the Observables returned + * by the accumulator are merged into the outer Observable. + * + * @example Count the number of click events + * const click$ = Rx.Observable.fromEvent(document, 'click'); + * const one$ = click$.mapTo(1); + * const seed = 0; + * const count$ = one$.mergeScan((acc, one) => Rx.Observable.of(acc + one), seed); + * count$.subscribe(x => console.log(x)); + * + * // Results: + * 1 + * 2 + * 3 + * 4 + * // ...and so on for each click + * + * @param {function(acc: R, value: T): Observable} accumulator + * The accumulator function called on each source value. + * @param seed The initial accumulation value. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of + * input Observables being subscribed to concurrently. + * @return {Observable} An observable of the accumulated values. + * @method mergeScan + * @owner Observable + */ +export function mergeScan(accumulator, seed, concurrent = Number.POSITIVE_INFINITY) { + return higherOrder(accumulator, seed, concurrent)(this); +} +//# sourceMappingURL=mergeScan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/mergeScan.js.map b/node_modules/rxjs/_esm2015/operator/mergeScan.js.map new file mode 100644 index 0000000..a3104f5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/mergeScan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeScan.js","sourceRoot":"","sources":["../../src/operator/mergeScan.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0BACgC,WAAgD,EAChD,IAAO,EACP,UAAU,GAAW,MAAM,CAAC,iBAAiB;IAC3E,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/min.js b/node_modules/rxjs/_esm2015/operator/min.js new file mode 100644 index 0000000..5f24d5d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/min.js @@ -0,0 +1,36 @@ +import { min as higherOrderMin } from '../operators/min'; +/** + * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function), + * and when source Observable completes it emits a single item: the item with the smallest value. + * + * + * + * @example Get the minimal value of a series of numbers + * Rx.Observable.of(5, 4, 7, 2, 8) + * .min() + * .subscribe(x => console.log(x)); // -> 2 + * + * @example Use a comparer function to get the minimal item + * interface Person { + * age: number, + * name: string + * } + * Observable.of({age: 7, name: 'Foo'}, + * {age: 5, name: 'Bar'}, + * {age: 9, name: 'Beer'}) + * .min( (a: Person, b: Person) => a.age < b.age ? -1 : 1) + * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar' + * } + * + * @see {@link max} + * + * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the + * value of two items. + * @return {Observable} An Observable that emits item with the smallest value. + * @method min + * @owner Observable + */ +export function min(comparer) { + return higherOrderMin(comparer)(this); +} +//# sourceMappingURL=min.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/min.js.map b/node_modules/rxjs/_esm2015/operator/min.js.map new file mode 100644 index 0000000..8595bec --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"min.js","sourceRoot":"","sources":["../../src/operator/min.ts"],"names":[],"mappings":"OACO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,kBAAkB;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,oBAA4C,QAAiC;IAC3E,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/multicast.js b/node_modules/rxjs/_esm2015/operator/multicast.js new file mode 100644 index 0000000..74b70cd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/multicast.js @@ -0,0 +1,100 @@ +import { multicast as higherOrder } from '../operators/multicast'; +/* tslint:enable:max-line-length */ +/** + * Allows source Observable to be subscribed only once with a Subject of choice, + * while still sharing its values between multiple subscribers. + * + * Subscribe to Observable once, but send its values to multiple subscribers. + * + * + * + * `multicast` is an operator that works in two modes. + * + * In the first mode you provide a single argument to it, which can be either an initialized Subject or a Subject + * factory. As a result you will get a special kind of an Observable - a {@link ConnectableObservable}. It can be + * subscribed multiple times, just as regular Observable, but it won't subscribe to the source Observable at that + * moment. It will do it only if you call its `connect` method. This means you can essentially control by hand, when + * source Observable will be actually subscribed. What is more, ConnectableObservable will share this one subscription + * between all of its subscribers. This means that, for example, `ajax` Observable will only send a request once, + * even though usually it would send a request per every subscriber. Since it sends a request at the moment of + * subscription, here request would be sent when the `connect` method of a ConnectableObservable is called. + * + * The most common pattern of using ConnectableObservable is calling `connect` when the first consumer subscribes, + * keeping the subscription alive while several consumers come and go and finally unsubscribing from the source + * Observable, when the last consumer unsubscribes. To not implement that logic over and over again, + * ConnectableObservable has a special operator, `refCount`. When called, it returns an Observable, which will count + * the number of consumers subscribed to it and keep ConnectableObservable connected as long as there is at least + * one consumer. So if you don't actually need to decide yourself when to connect and disconnect a + * ConnectableObservable, use `refCount`. + * + * The second mode is invoked by calling `multicast` with an additional, second argument - selector function. + * This function accepts an Observable - which basically mirrors the source Observable - and returns Observable + * as well, which should be the input stream modified by any operators you want. Note that in this + * mode you cannot provide initialized Subject as a first argument - it has to be a Subject factory. If + * you provide selector function, `multicast` returns just a regular Observable, instead of ConnectableObservable. + * Thus, as usual, each subscription to this stream triggers subscription to the source Observable. However, + * if inside the selector function you subscribe to the input Observable multiple times, actual source stream + * will be subscribed only once. So if you have a chain of operators that use some Observable many times, + * but you want to subscribe to that Observable only once, this is the mode you would use. + * + * Subject provided as a first parameter of `multicast` is used as a proxy for the single subscription to the + * source Observable. It means that all values from the source stream go through that Subject. Thus, if a Subject + * has some special properties, Observable returned by `multicast` will have them as well. If you want to use + * `multicast` with a Subject that is one of the ones included in RxJS by default - {@link Subject}, + * {@link AsyncSubject}, {@link BehaviorSubject}, or {@link ReplaySubject} - simply use {@link publish}, + * {@link publishLast}, {@link publishBehavior} or {@link publishReplay} respectively. These are actually + * just wrappers around `multicast`, with a specific Subject hardcoded inside. + * + * Also, if you use {@link publish} or {@link publishReplay} with a ConnectableObservables `refCount` operator, + * you can simply use {@link share} and {@link shareReplay} respectively, which chain these two. + * + * @example Use ConnectableObservable + * const seconds = Rx.Observable.interval(1000); + * const connectableSeconds = seconds.multicast(new Subject()); + * + * connectableSeconds.subscribe(value => console.log('first: ' + value)); + * connectableSeconds.subscribe(value => console.log('second: ' + value)); + * + * // At this point still nothing happens, even though we subscribed twice. + * + * connectableSeconds.connect(); + * + * // From now on `seconds` are being logged to the console, + * // twice per every second. `seconds` Observable was however only subscribed once, + * // so under the hood Observable.interval had only one clock started. + * + * @example Use selector + * const seconds = Rx.Observable.interval(1000); + * + * seconds + * .multicast( + * () => new Subject(), + * seconds => seconds.zip(seconds) // Usually zip would subscribe to `seconds` twice. + * // Because we are inside selector, `seconds` is subscribed once, + * ) // thus starting only one clock used internally by Observable.interval. + * .subscribe(); + * + * @see {@link publish} + * @see {@link publishLast} + * @see {@link publishBehavior} + * @see {@link publishReplay} + * @see {@link share} + * @see {@link shareReplay} + * + * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate Subject through + * which the source sequence's elements will be multicast to the selector function input Observable or + * ConnectableObservable returned by the operator. + * @param {Function} [selector] - Optional selector function that can use the input stream + * as many times as needed, without causing multiple subscriptions to the source stream. + * Subscribers to the input source will receive all notifications of the source from the + * time of the subscription forward. + * @return {Observable|ConnectableObservable} An Observable that emits the results of invoking the selector + * on the source stream or a special {@link ConnectableObservable}, if selector was not provided. + * + * @method multicast + * @owner Observable + */ +export function multicast(subjectOrSubjectFactory, selector) { + return higherOrder(subjectOrSubjectFactory, selector)(this); +} +//# sourceMappingURL=multicast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/multicast.js.map b/node_modules/rxjs/_esm2015/operator/multicast.js.map new file mode 100644 index 0000000..a49f870 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/multicast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../../src/operator/multicast.ts"],"names":[],"mappings":"OAGO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAOjE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,0BAAqD,uBAAwD,EAC7E,QAAmD;IACjF,MAAM,CAAC,WAAW,CAAM,uBAAuB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/observeOn.js b/node_modules/rxjs/_esm2015/operator/observeOn.js new file mode 100644 index 0000000..d11bb87 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/observeOn.js @@ -0,0 +1,51 @@ +import { observeOn as higherOrder } from '../operators/observeOn'; +/** + * + * Re-emits all notifications from source Observable with specified scheduler. + * + * Ensure a specific scheduler is used, from outside of an Observable. + * + * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule + * notifications emitted by the source Observable. It might be useful, if you do not have control over + * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless. + * + * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable, + * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal + * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits + * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`. + * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split + * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source + * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a + * little bit more, to ensure that they are emitted at expected moments. + * + * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications + * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn` + * will delay all notifications - including error notifications - while `delay` will pass through error + * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator + * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used + * for notification emissions in general. + * + * @example Ensure values in subscribe are called just before browser repaint. + * const intervals = Rx.Observable.interval(10); // Intervals are scheduled + * // with async scheduler by default... + * + * intervals + * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame + * .subscribe(val => { // scheduler to ensure smooth animation. + * someDiv.style.height = val + 'px'; + * }); + * + * @see {@link delay} + * + * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable. + * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled. + * @return {Observable} Observable that emits the same notifications as the source Observable, + * but with provided scheduler. + * + * @method observeOn + * @owner Observable + */ +export function observeOn(scheduler, delay = 0) { + return higherOrder(scheduler, delay)(this); +} +//# sourceMappingURL=observeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/observeOn.js.map b/node_modules/rxjs/_esm2015/operator/observeOn.js.map new file mode 100644 index 0000000..afc4b80 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/observeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"observeOn.js","sourceRoot":"","sources":["../../src/operator/observeOn.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0BAAkD,SAAqB,EAAE,KAAK,GAAW,CAAC;IACxF,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC9D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js b/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js new file mode 100644 index 0000000..5e3b8fc --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js @@ -0,0 +1,67 @@ +import { onErrorResumeNext as higherOrder } from '../operators/onErrorResumeNext'; +/* tslint:enable:max-line-length */ +/** + * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one + * that was passed. + * + * Execute series of Observables no matter what, even if it means swallowing errors. + * + * + * + * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as + * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same + * as the source. + * + * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable. + * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext` + * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting + * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another + * Observable in provided series, no matter if previous Observable completed or ended with an error. This will + * be happening until there is no more Observables left in the series, at which point returned Observable will + * complete - even if the last subscribed stream ended with an error. + * + * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive + * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable + * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with + * an error. + * + * Note that you do not get any access to errors emitted by the Observables. In particular do not + * expect these errors to appear in error callback passed to {@link subscribe}. If you want to take + * specific actions based on what error was emitted by an Observable, you should try out {@link catch} instead. + * + * + * @example Subscribe to the next Observable after map fails + * Rx.Observable.of(1, 2, 3, 0) + * .map(x => { + * if (x === 0) { throw Error(); } + return 10 / x; + * }) + * .onErrorResumeNext(Rx.Observable.of(1, 2, 3)) + * .subscribe( + * val => console.log(val), + * err => console.log(err), // Will never be called. + * () => console.log('that\'s it!') + * ); + * + * // Logs: + * // 10 + * // 5 + * // 3.3333333333333335 + * // 1 + * // 2 + * // 3 + * // "that's it!" + * + * @see {@link concat} + * @see {@link catch} + * + * @param {...ObservableInput} observables Observables passed either directly or as an array. + * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes + * to the next passed Observable and so on, until it completes or runs out of Observables. + * @method onErrorResumeNext + * @owner Observable + */ +export function onErrorResumeNext(...nextSources) { + return higherOrder(...nextSources)(this); +} +//# sourceMappingURL=onErrorResumeNext.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js.map b/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js.map new file mode 100644 index 0000000..00a55ed --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/onErrorResumeNext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onErrorResumeNext.js","sourceRoot":"","sources":["../../src/operator/onErrorResumeNext.ts"],"names":[],"mappings":"OACO,EAAE,iBAAiB,IAAI,WAAW,EAAE,MAAM,gCAAgC;AAUjF,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,kCAA6D,GAAG,WAEsB;IACpF,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/pairwise.js b/node_modules/rxjs/_esm2015/operator/pairwise.js new file mode 100644 index 0000000..88a7b12 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/pairwise.js @@ -0,0 +1,40 @@ +import { pairwise as higherOrder } from '../operators/pairwise'; +/** + * Groups pairs of consecutive emissions together and emits them as an array of + * two values. + * + * Puts the current value and previous value together as + * an array, and emits that. + * + * + * + * The Nth emission from the source Observable will cause the output Observable + * to emit an array [(N-1)th, Nth] of the previous and the current value, as a + * pair. For this reason, `pairwise` emits on the second and subsequent + * emissions from the source Observable, but not on the first emission, because + * there is no previous value in that case. + * + * @example On every click (starting from the second), emit the relative distance to the previous click + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var pairs = clicks.pairwise(); + * var distance = pairs.map(pair => { + * var x0 = pair[0].clientX; + * var y0 = pair[0].clientY; + * var x1 = pair[1].clientX; + * var y1 = pair[1].clientY; + * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2)); + * }); + * distance.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * + * @return {Observable>} An Observable of pairs (as arrays) of + * consecutive values from the source Observable. + * @method pairwise + * @owner Observable + */ +export function pairwise() { + return higherOrder()(this); +} +//# sourceMappingURL=pairwise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/pairwise.js.map b/node_modules/rxjs/_esm2015/operator/pairwise.js.map new file mode 100644 index 0000000..0125b7e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/pairwise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../../src/operator/pairwise.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,uBAAuB;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAuB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/partition.js b/node_modules/rxjs/_esm2015/operator/partition.js new file mode 100644 index 0000000..e43abed --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/partition.js @@ -0,0 +1,46 @@ +import { partition as higherOrder } from '../operators/partition'; +/** + * Splits the source Observable into two, one with values that satisfy a + * predicate, and another with values that don't satisfy the predicate. + * + * It's like {@link filter}, but returns two Observables: + * one like the output of {@link filter}, and the other with values that did not + * pass the condition. + * + * + * + * `partition` outputs an array with two Observables that partition the values + * from the source Observable through the given `predicate` function. The first + * Observable in that array emits source values for which the predicate argument + * returns true. The second Observable emits source values for which the + * predicate returns false. The first behaves like {@link filter} and the second + * behaves like {@link filter} with the predicate negated. + * + * @example Partition click events into those on DIV elements and those elsewhere + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var parts = clicks.partition(ev => ev.target.tagName === 'DIV'); + * var clicksOnDivs = parts[0]; + * var clicksElsewhere = parts[1]; + * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x)); + * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x)); + * + * @see {@link filter} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates each value emitted by the source Observable. If it returns `true`, + * the value is emitted on the first Observable in the returned array, if + * `false` the value is emitted on the second Observable in the array. The + * `index` parameter is the number `i` for the i-th source emission that has + * happened since the subscription, starting from the number `0`. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {[Observable, Observable]} An array with two Observables: one + * with values that passed the predicate, and another with values that did not + * pass the predicate. + * @method partition + * @owner Observable + */ +export function partition(predicate, thisArg) { + return higherOrder(predicate, thisArg)(this); +} +//# sourceMappingURL=partition.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/partition.js.map b/node_modules/rxjs/_esm2015/operator/partition.js.map new file mode 100644 index 0000000..be6723b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/partition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"partition.js","sourceRoot":"","sources":["../../src/operator/partition.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,0BAAkD,SAA+C,EAAE,OAAa;IAC9G,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/pluck.js b/node_modules/rxjs/_esm2015/operator/pluck.js new file mode 100644 index 0000000..4170185 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/pluck.js @@ -0,0 +1,31 @@ +import { pluck as higherOrder } from '../operators/pluck'; +/** + * Maps each source value (an object) to its specified nested property. + * + * Like {@link map}, but meant only for picking one of + * the nested properties of every emitted object. + * + * + * + * Given a list of strings describing a path to an object property, retrieves + * the value of a specified nested property from all values in the source + * Observable. If a property can't be resolved, it will return `undefined` for + * that value. + * + * @example Map every click to the tagName of the clicked target element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var tagNames = clicks.pluck('target', 'tagName'); + * tagNames.subscribe(x => console.log(x)); + * + * @see {@link map} + * + * @param {...string} properties The nested properties to pluck from each source + * value (an object). + * @return {Observable} A new Observable of property values from the source values. + * @method pluck + * @owner Observable + */ +export function pluck(...properties) { + return higherOrder(...properties)(this); +} +//# sourceMappingURL=pluck.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/pluck.js.map b/node_modules/rxjs/_esm2015/operator/pluck.js.map new file mode 100644 index 0000000..e6e425a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/pluck.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pluck.js","sourceRoot":"","sources":["../../src/operator/pluck.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sBAAiD,GAAG,UAAoB;IACtE,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publish.js b/node_modules/rxjs/_esm2015/operator/publish.js new file mode 100644 index 0000000..75baacf --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publish.js @@ -0,0 +1,19 @@ +import { publish as higherOrder } from '../operators/publish'; +/* tslint:enable:max-line-length */ +/** + * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called + * before it begins emitting items to those Observers that have subscribed to it. + * + * + * + * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times + * as needed, without causing multiple subscriptions to the source sequence. + * Subscribers to the given source will receive all notifications of the source from the time of the subscription on. + * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers. + * @method publish + * @owner Observable + */ +export function publish(selector) { + return higherOrder(selector)(this); +} +//# sourceMappingURL=publish.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publish.js.map b/node_modules/rxjs/_esm2015/operator/publish.js.map new file mode 100644 index 0000000..ff81d8e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publish.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/operator/publish.ts"],"names":[],"mappings":"OAGO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB;AAM7D,mCAAmC;AAEnC;;;;;;;;;;;;GAYG;AACH,wBAAmD,QAAmD;IACpG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishBehavior.js b/node_modules/rxjs/_esm2015/operator/publishBehavior.js new file mode 100644 index 0000000..ec2457a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishBehavior.js @@ -0,0 +1,11 @@ +import { publishBehavior as higherOrder } from '../operators/publishBehavior'; +/** + * @param value + * @return {ConnectableObservable} + * @method publishBehavior + * @owner Observable + */ +export function publishBehavior(value) { + return higherOrder(value)(this); +} +//# sourceMappingURL=publishBehavior.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishBehavior.js.map b/node_modules/rxjs/_esm2015/operator/publishBehavior.js.map new file mode 100644 index 0000000..5aaa9e1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishBehavior.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishBehavior.js","sourceRoot":"","sources":["../../src/operator/publishBehavior.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,8BAA8B;AAE7E;;;;;GAKG;AACH,gCAAwD,KAAQ;IAC9D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishLast.js b/node_modules/rxjs/_esm2015/operator/publishLast.js new file mode 100644 index 0000000..5914269 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishLast.js @@ -0,0 +1,11 @@ +import { publishLast as higherOrder } from '../operators/publishLast'; +/** + * @return {ConnectableObservable} + * @method publishLast + * @owner Observable + */ +export function publishLast() { + //TODO(benlesh): correct type-flow through here. + return higherOrder()(this); +} +//# sourceMappingURL=publishLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishLast.js.map b/node_modules/rxjs/_esm2015/operator/publishLast.js.map new file mode 100644 index 0000000..cbe23e1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishLast.js","sourceRoot":"","sources":["../../src/operator/publishLast.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AACrE;;;;GAIG;AACH;IACE,gDAAgD;IAChD,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAA6B,CAAC;AACzD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishReplay.js b/node_modules/rxjs/_esm2015/operator/publishReplay.js new file mode 100644 index 0000000..bdf4c4c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishReplay.js @@ -0,0 +1,15 @@ +import { publishReplay as higherOrder } from '../operators/publishReplay'; +/* tslint:enable:max-line-length */ +/** + * @param bufferSize + * @param windowTime + * @param selectorOrScheduler + * @param scheduler + * @return {Observable | ConnectableObservable} + * @method publishReplay + * @owner Observable + */ +export function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { + return higherOrder(bufferSize, windowTime, selectorOrScheduler, scheduler)(this); +} +//# sourceMappingURL=publishReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/publishReplay.js.map b/node_modules/rxjs/_esm2015/operator/publishReplay.js.map new file mode 100644 index 0000000..56fb525 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/publishReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishReplay.js","sourceRoot":"","sources":["../../src/operator/publishReplay.ts"],"names":[],"mappings":"OAGO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,4BAA4B;AAOzE,mCAAmC;AAEnC;;;;;;;;GAQG;AACH,8BAAyD,UAAmB,EACxC,UAAmB,EACnB,mBAAyD,EACzD,SAAsB;IAExD,MAAM,CAAC,WAAW,CAAO,UAAU,EAAE,UAAU,EAAE,mBAA0B,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAChG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/race.js b/node_modules/rxjs/_esm2015/operator/race.js new file mode 100644 index 0000000..42b0644 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/race.js @@ -0,0 +1,16 @@ +import { race as higherOrder } from '../operators/race'; +// NOTE: to support backwards compatability with 5.4.* and lower +export { race as raceStatic } from '../observable/race'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that mirrors the first source Observable to emit an item + * from the combination of this Observable and supplied Observables. + * @param {...Observables} ...observables Sources used to race for which Observable emits first. + * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item. + * @method race + * @owner Observable + */ +export function race(...observables) { + return higherOrder(...observables)(this); +} +//# sourceMappingURL=race.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/race.js.map b/node_modules/rxjs/_esm2015/operator/race.js.map new file mode 100644 index 0000000..57e43d6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/race.js.map @@ -0,0 +1 @@ +{"version":3,"file":"race.js","sourceRoot":"","sources":["../../src/operator/race.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,mBAAmB;AAEvD,gEAAgE;AAChE,SAAS,IAAI,IAAI,UAAU,QAAQ,oBAAoB,CAAC;AAOxD,mCAAmC;AAEnC;;;;;;;GAOG;AACH,qBAA6C,GAAG,WAAwD;IACtG,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/reduce.js b/node_modules/rxjs/_esm2015/operator/reduce.js new file mode 100644 index 0000000..7fcabf7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/reduce.js @@ -0,0 +1,58 @@ +import { reduce as higherOrderReduce } from '../operators/reduce'; +/* tslint:enable:max-line-length */ +/** + * Applies an accumulator function over the source Observable, and returns the + * accumulated result when the source completes, given an optional seed value. + * + * Combines together all values emitted on the source, + * using an accumulator function that knows how to join a new source value into + * the accumulation from the past. + * + * + * + * Like + * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce), + * `reduce` applies an `accumulator` function against an accumulation and each + * value of the source Observable (from the past) to reduce it to a single + * value, emitted on the output Observable. Note that `reduce` will only emit + * one value, only when the source Observable completes. It is equivalent to + * applying operator {@link scan} followed by operator {@link last}. + * + * Returns an Observable that applies a specified `accumulator` function to each + * item emitted by the source Observable. If a `seed` value is specified, then + * that value will be used as the initial value for the accumulator. If no seed + * value is specified, the first item of the source is used as the seed. + * + * @example Count the number of click events that happened in 5 seconds + * var clicksInFiveSeconds = Rx.Observable.fromEvent(document, 'click') + * .takeUntil(Rx.Observable.interval(5000)); + * var ones = clicksInFiveSeconds.mapTo(1); + * var seed = 0; + * var count = ones.reduce((acc, one) => acc + one, seed); + * count.subscribe(x => console.log(x)); + * + * @see {@link count} + * @see {@link expand} + * @see {@link mergeScan} + * @see {@link scan} + * + * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function + * called on each source value. + * @param {R} [seed] The initial accumulation value. + * @return {Observable} An Observable that emits a single value that is the + * result of accumulating the values emitted by the source Observable. + * @method reduce + * @owner Observable + */ +export function reduce(accumulator, seed) { + // providing a seed of `undefined` *should* be valid and trigger + // hasSeed! so don't use `seed !== undefined` checks! + // For this reason, we have to check it here at the original call site + // otherwise inside Operator/Subscriber we won't know if `undefined` + // means they didn't provide anything or if they literally provided `undefined` + if (arguments.length >= 2) { + return higherOrderReduce(accumulator, seed)(this); + } + return higherOrderReduce(accumulator)(this); +} +//# sourceMappingURL=reduce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/reduce.js.map b/node_modules/rxjs/_esm2015/operator/reduce.js.map new file mode 100644 index 0000000..fd5b665 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/reduce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../src/operator/reduce.ts"],"names":[],"mappings":"OACO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,qBAAqB;AAMjE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,uBAAkD,WAAoD,EAAE,IAAQ;IAC9G,gEAAgE;IAChE,qDAAqD;IACrD,sEAAsE;IACtE,oEAAoE;IACpE,+EAA+E;IAC/E,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/repeat.js b/node_modules/rxjs/_esm2015/operator/repeat.js new file mode 100644 index 0000000..9b52c4c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/repeat.js @@ -0,0 +1,17 @@ +import { repeat as higherOrder } from '../operators/repeat'; +/** + * Returns an Observable that repeats the stream of items emitted by the source Observable at most count times. + * + * + * + * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield + * an empty Observable. + * @return {Observable} An Observable that repeats the stream of items emitted by the source Observable at most + * count times. + * @method repeat + * @owner Observable + */ +export function repeat(count = -1) { + return higherOrder(count)(this); +} +//# sourceMappingURL=repeat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/repeat.js.map b/node_modules/rxjs/_esm2015/operator/repeat.js.map new file mode 100644 index 0000000..b7288b2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/repeat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../src/operator/repeat.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;;;;;;;GAWG;AACH,uBAA+C,KAAK,GAAW,CAAC,CAAC;IAC/D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/repeatWhen.js b/node_modules/rxjs/_esm2015/operator/repeatWhen.js new file mode 100644 index 0000000..a5dc97b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/repeatWhen.js @@ -0,0 +1,19 @@ +import { repeatWhen as higherOrder } from '../operators/repeatWhen'; +/** + * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source + * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable + * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise + * this method will resubscribe to the source Observable. + * + * + * + * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with + * which a user can `complete` or `error`, aborting the repetition. + * @return {Observable} The source Observable modified with repeat logic. + * @method repeatWhen + * @owner Observable + */ +export function repeatWhen(notifier) { + return higherOrder(notifier)(this); +} +//# sourceMappingURL=repeatWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/repeatWhen.js.map b/node_modules/rxjs/_esm2015/operator/repeatWhen.js.map new file mode 100644 index 0000000..43940c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/repeatWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeatWhen.js","sourceRoot":"","sources":["../../src/operator/repeatWhen.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;GAaG;AACH,2BAAmD,QAA6D;IAC9G,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/retry.js b/node_modules/rxjs/_esm2015/operator/retry.js new file mode 100644 index 0000000..e4bf386 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/retry.js @@ -0,0 +1,21 @@ +import { retry as higherOrder } from '../operators/retry'; +/** + * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable + * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given + * as a number parameter) rather than propagating the `error` call. + * + * + * + * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted + * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second + * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications + * would be: [1, 2, 1, 2, 3, 4, 5, `complete`]. + * @param {number} count - Number of retry attempts before failing. + * @return {Observable} The source Observable modified with the retry logic. + * @method retry + * @owner Observable + */ +export function retry(count = -1) { + return higherOrder(count)(this); +} +//# sourceMappingURL=retry.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/retry.js.map b/node_modules/rxjs/_esm2015/operator/retry.js.map new file mode 100644 index 0000000..7711381 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/retry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/operator/retry.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,sBAA8C,KAAK,GAAW,CAAC,CAAC;IAC9D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/retryWhen.js b/node_modules/rxjs/_esm2015/operator/retryWhen.js new file mode 100644 index 0000000..3c7b208 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/retryWhen.js @@ -0,0 +1,19 @@ +import { retryWhen as higherOrder } from '../operators/retryWhen'; +/** + * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable + * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`. + * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child + * subscription. Otherwise this method will resubscribe to the source Observable. + * + * + * + * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a + * user can `complete` or `error`, aborting the retry. + * @return {Observable} The source Observable modified with retry logic. + * @method retryWhen + * @owner Observable + */ +export function retryWhen(notifier) { + return higherOrder(notifier)(this); +} +//# sourceMappingURL=retryWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/retryWhen.js.map b/node_modules/rxjs/_esm2015/operator/retryWhen.js.map new file mode 100644 index 0000000..2dda045 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/retryWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retryWhen.js","sourceRoot":"","sources":["../../src/operator/retryWhen.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AACjE;;;;;;;;;;;;;GAaG;AACH,0BAAkD,QAAsD;IACtG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sample.js b/node_modules/rxjs/_esm2015/operator/sample.js new file mode 100644 index 0000000..82cd108 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sample.js @@ -0,0 +1,39 @@ +import { sample as higherOrder } from '../operators/sample'; +/** + * Emits the most recently emitted value from the source Observable whenever + * another Observable, the `notifier`, emits. + * + * It's like {@link sampleTime}, but samples whenever + * the `notifier` Observable emits something. + * + * + * + * Whenever the `notifier` Observable emits a value or completes, `sample` + * looks at the source Observable and emits whichever value it has most recently + * emitted since the previous sampling, unless the source has not emitted + * anything since the previous sampling. The `notifier` is subscribed to as soon + * as the output Observable is subscribed. + * + * @example On every click, sample the most recent "seconds" timer + * var seconds = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = seconds.sample(clicks); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounce} + * @see {@link sampleTime} + * @see {@link throttle} + * + * @param {Observable} notifier The Observable to use for sampling the + * source Observable. + * @return {Observable} An Observable that emits the results of sampling the + * values emitted by the source Observable whenever the notifier Observable + * emits value or completes. + * @method sample + * @owner Observable + */ +export function sample(notifier) { + return higherOrder(notifier)(this); +} +//# sourceMappingURL=sample.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sample.js.map b/node_modules/rxjs/_esm2015/operator/sample.js.map new file mode 100644 index 0000000..034c1e8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sample.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/operator/sample.ts"],"names":[],"mappings":"OACO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,uBAA+C,QAAyB;IACtE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sampleTime.js b/node_modules/rxjs/_esm2015/operator/sampleTime.js new file mode 100644 index 0000000..43dcc39 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sampleTime.js @@ -0,0 +1,42 @@ +import { async } from '../scheduler/async'; +import { sampleTime as higherOrder } from '../operators/sampleTime'; +/** + * Emits the most recently emitted value from the source Observable within + * periodic time intervals. + * + * Samples the source Observable at periodic time + * intervals, emitting what it samples. + * + * + * + * `sampleTime` periodically looks at the source Observable and emits whichever + * value it has most recently emitted since the previous sampling, unless the + * source has not emitted anything since the previous sampling. The sampling + * happens periodically in time every `period` milliseconds (or the time unit + * defined by the optional `scheduler` argument). The sampling starts as soon as + * the output Observable is subscribed. + * + * @example Every second, emit the most recent click at most once + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.sampleTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sample} + * @see {@link throttleTime} + * + * @param {number} period The sampling period expressed in milliseconds or the + * time unit determined internally by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the sampling. + * @return {Observable} An Observable that emits the results of sampling the + * values emitted by the source Observable at the specified time interval. + * @method sampleTime + * @owner Observable + */ +export function sampleTime(period, scheduler = async) { + return higherOrder(period, scheduler)(this); +} +//# sourceMappingURL=sampleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sampleTime.js.map b/node_modules/rxjs/_esm2015/operator/sampleTime.js.map new file mode 100644 index 0000000..b39d922 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sampleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sampleTime.js","sourceRoot":"","sources":["../../src/operator/sampleTime.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,2BAAmD,MAAc,EAAE,SAAS,GAAe,KAAK;IAC9F,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC/D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/scan.js b/node_modules/rxjs/_esm2015/operator/scan.js new file mode 100644 index 0000000..61c1027 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/scan.js @@ -0,0 +1,46 @@ +import { scan as higherOrderScan } from '../operators/scan'; +/* tslint:enable:max-line-length */ +/** + * Applies an accumulator function over the source Observable, and returns each + * intermediate result, with an optional seed value. + * + * It's like {@link reduce}, but emits the current + * accumulation whenever the source emits a value. + * + * + * + * Combines together all values emitted on the source, using an accumulator + * function that knows how to join a new source value into the accumulation from + * the past. Is similar to {@link reduce}, but emits the intermediate + * accumulations. + * + * Returns an Observable that applies a specified `accumulator` function to each + * item emitted by the source Observable. If a `seed` value is specified, then + * that value will be used as the initial value for the accumulator. If no seed + * value is specified, the first item of the source is used as the seed. + * + * @example Count the number of click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var ones = clicks.mapTo(1); + * var seed = 0; + * var count = ones.scan((acc, one) => acc + one, seed); + * count.subscribe(x => console.log(x)); + * + * @see {@link expand} + * @see {@link mergeScan} + * @see {@link reduce} + * + * @param {function(acc: R, value: T, index: number): R} accumulator + * The accumulator function called on each source value. + * @param {T|R} [seed] The initial accumulation value. + * @return {Observable} An observable of the accumulated values. + * @method scan + * @owner Observable + */ +export function scan(accumulator, seed) { + if (arguments.length >= 2) { + return higherOrderScan(accumulator, seed)(this); + } + return higherOrderScan(accumulator)(this); +} +//# sourceMappingURL=scan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/scan.js.map b/node_modules/rxjs/_esm2015/operator/scan.js.map new file mode 100644 index 0000000..8b964f4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/scan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/operator/scan.ts"],"names":[],"mappings":"OAEO,EAAE,IAAI,IAAI,eAAe,EAAE,MAAM,mBAAmB;AAM3D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAgD,WAAmD,EAAE,IAAY;IAC/G,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAkB,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sequenceEqual.js b/node_modules/rxjs/_esm2015/operator/sequenceEqual.js new file mode 100644 index 0000000..0382ade --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sequenceEqual.js @@ -0,0 +1,57 @@ +import { sequenceEqual as higherOrder } from '../operators/sequenceEqual'; +/** + * Compares all values of two observables in sequence using an optional comparor function + * and returns an observable of a single boolean value representing whether or not the two sequences + * are equal. + * + * Checks to see of all values emitted by both observables are equal, in order. + * + * + * + * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either + * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom + * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the + * observables completes, the operator will wait for the other observable to complete; If the other + * observable emits before completing, the returned observable will emit `false` and complete. If one observable never + * completes or emits after the other complets, the returned observable will never complete. + * + * @example figure out if the Konami code matches + * var code = Rx.Observable.from([ + * "ArrowUp", + * "ArrowUp", + * "ArrowDown", + * "ArrowDown", + * "ArrowLeft", + * "ArrowRight", + * "ArrowLeft", + * "ArrowRight", + * "KeyB", + * "KeyA", + * "Enter" // no start key, clearly. + * ]); + * + * var keys = Rx.Observable.fromEvent(document, 'keyup') + * .map(e => e.code); + * var matches = keys.bufferCount(11, 1) + * .mergeMap( + * last11 => + * Rx.Observable.from(last11) + * .sequenceEqual(code) + * ); + * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched)); + * + * @see {@link combineLatest} + * @see {@link zip} + * @see {@link withLatestFrom} + * + * @param {Observable} compareTo The observable sequence to compare the source sequence to. + * @param {function} [comparor] An optional function to compare each value pair + * @return {Observable} An Observable of a single boolean value representing whether or not + * the values emitted by both observables were equal in sequence. + * @method sequenceEqual + * @owner Observable + */ +export function sequenceEqual(compareTo, comparor) { + return higherOrder(compareTo, comparor)(this); +} +//# sourceMappingURL=sequenceEqual.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/sequenceEqual.js.map b/node_modules/rxjs/_esm2015/operator/sequenceEqual.js.map new file mode 100644 index 0000000..ab2b05f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/sequenceEqual.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sequenceEqual.js","sourceRoot":"","sources":["../../src/operator/sequenceEqual.ts"],"names":[],"mappings":"OACO,EAAE,aAAa,IAAI,WAAW,EAAE,MAAM,4BAA4B;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,8BAAsD,SAAwB,EAC7C,QAAkC;IACjE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/share.js b/node_modules/rxjs/_esm2015/operator/share.js new file mode 100644 index 0000000..4d61305 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/share.js @@ -0,0 +1,22 @@ +import { share as higherOrder } from '../operators/share'; +/** + * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one + * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will + * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`. + * + * This behaves similarly to .publish().refCount(), with a behavior difference when the source observable emits complete. + * .publish().refCount() will not resubscribe to the original source, however .share() will resubscribe to the original source. + * Observable.of("test").publish().refCount() will not re-emit "test" on new subscriptions, Observable.of("test").share() will + * re-emit "test" to new subscriptions. + * + * + * + * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers. + * @method share + * @owner Observable + */ +export function share() { + return higherOrder()(this); +} +; +//# sourceMappingURL=share.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/share.js.map b/node_modules/rxjs/_esm2015/operator/share.js.map new file mode 100644 index 0000000..2ad3b80 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/share.js.map @@ -0,0 +1 @@ +{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/operator/share.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,oBAAoB;AAEzD;;;;;;;;;;;;;;;GAeG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAkB,CAAC;AAC9C,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/shareReplay.js b/node_modules/rxjs/_esm2015/operator/shareReplay.js new file mode 100644 index 0000000..4802820 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/shareReplay.js @@ -0,0 +1,10 @@ +import { shareReplay as higherOrder } from '../operators/shareReplay'; +/** + * @method shareReplay + * @owner Observable + */ +export function shareReplay(bufferSize, windowTime, scheduler) { + return higherOrder(bufferSize, windowTime, scheduler)(this); +} +; +//# sourceMappingURL=shareReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/shareReplay.js.map b/node_modules/rxjs/_esm2015/operator/shareReplay.js.map new file mode 100644 index 0000000..1b12e06 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/shareReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shareReplay.js","sourceRoot":"","sources":["../../src/operator/shareReplay.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAErE;;;GAGG;AACH,4BAAoD,UAAmB,EAAE,UAAmB,EAAE,SAAsB;IAElH,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC/E,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/single.js b/node_modules/rxjs/_esm2015/operator/single.js new file mode 100644 index 0000000..fb00557 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/single.js @@ -0,0 +1,21 @@ +import { single as higherOrder } from '../operators/single'; +/** + * Returns an Observable that emits the single item emitted by the source Observable that matches a specified + * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no + * such items, notify of an IllegalArgumentException or NoSuchElementException respectively. + * + * + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable. + * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches + * the predicate. + . + * @method single + * @owner Observable + */ +export function single(predicate) { + return higherOrder(predicate)(this); +} +//# sourceMappingURL=single.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/single.js.map b/node_modules/rxjs/_esm2015/operator/single.js.map new file mode 100644 index 0000000..2a63ee0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/single.js.map @@ -0,0 +1 @@ +{"version":3,"file":"single.js","sourceRoot":"","sources":["../../src/operator/single.ts"],"names":[],"mappings":"OACO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,uBAA+C,SAAuE;IACpH,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skip.js b/node_modules/rxjs/_esm2015/operator/skip.js new file mode 100644 index 0000000..7d57d54 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skip.js @@ -0,0 +1,16 @@ +import { skip as higherOrder } from '../operators/skip'; +/** + * Returns an Observable that skips the first `count` items emitted by the source Observable. + * + * + * + * @param {Number} count - The number of times, items emitted by source Observable should be skipped. + * @return {Observable} An Observable that skips values emitted by the source Observable. + * + * @method skip + * @owner Observable + */ +export function skip(count) { + return higherOrder(count)(this); +} +//# sourceMappingURL=skip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skip.js.map b/node_modules/rxjs/_esm2015/operator/skip.js.map new file mode 100644 index 0000000..2ec7e83 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skip.js","sourceRoot":"","sources":["../../src/operator/skip.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,mBAAmB;AAEvD;;;;;;;;;;GAUG;AACH,qBAA6C,KAAa;IACxD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipLast.js b/node_modules/rxjs/_esm2015/operator/skipLast.js new file mode 100644 index 0000000..8ee8c71 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipLast.js @@ -0,0 +1,37 @@ +import { skipLast as higherOrder } from '../operators/skipLast'; +/** + * Skip the last `count` values emitted by the source Observable. + * + * + * + * `skipLast` returns an Observable that accumulates a queue with a length + * enough to store the first `count` values. As more values are received, + * values are taken from the front of the queue and produced on the result + * sequence. This causes values to be delayed. + * + * @example Skip the last 2 values of an Observable with many values + * var many = Rx.Observable.range(1, 5); + * var skipLastTwo = many.skipLast(2); + * skipLastTwo.subscribe(x => console.log(x)); + * + * // Results in: + * // 1 2 3 + * + * @see {@link skip} + * @see {@link skipUntil} + * @see {@link skipWhile} + * @see {@link take} + * + * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws + * ArgumentOutOrRangeError if `i < 0`. + * + * @param {number} count Number of elements to skip from the end of the source Observable. + * @returns {Observable} An Observable that skips the last count values + * emitted by the source Observable. + * @method skipLast + * @owner Observable + */ +export function skipLast(count) { + return higherOrder(count)(this); +} +//# sourceMappingURL=skipLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipLast.js.map b/node_modules/rxjs/_esm2015/operator/skipLast.js.map new file mode 100644 index 0000000..1da25f8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipLast.js","sourceRoot":"","sources":["../../src/operator/skipLast.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,uBAAuB;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,yBAAiD,KAAa;IAC5D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipUntil.js b/node_modules/rxjs/_esm2015/operator/skipUntil.js new file mode 100644 index 0000000..bae2817 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipUntil.js @@ -0,0 +1,17 @@ +import { skipUntil as higherOrder } from '../operators/skipUntil'; +/** + * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item. + * + * + * + * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to + * be mirrored by the resulting Observable. + * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits + * an item, then emits the remaining items. + * @method skipUntil + * @owner Observable + */ +export function skipUntil(notifier) { + return higherOrder(notifier)(this); +} +//# sourceMappingURL=skipUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipUntil.js.map b/node_modules/rxjs/_esm2015/operator/skipUntil.js.map new file mode 100644 index 0000000..c33e186 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipUntil.js","sourceRoot":"","sources":["../../src/operator/skipUntil.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;GAWG;AACH,0BAAkD,QAAyB;IACzE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipWhile.js b/node_modules/rxjs/_esm2015/operator/skipWhile.js new file mode 100644 index 0000000..a0f962d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipWhile.js @@ -0,0 +1,17 @@ +import { skipWhile as higherOrder } from '../operators/skipWhile'; +/** + * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds + * true, but emits all further source items as soon as the condition becomes false. + * + * + * + * @param {Function} predicate - A function to test each item emitted from the source Observable. + * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the + * specified predicate becomes false. + * @method skipWhile + * @owner Observable + */ +export function skipWhile(predicate) { + return higherOrder(predicate)(this); +} +//# sourceMappingURL=skipWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/skipWhile.js.map b/node_modules/rxjs/_esm2015/operator/skipWhile.js.map new file mode 100644 index 0000000..72698c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/skipWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipWhile.js","sourceRoot":"","sources":["../../src/operator/skipWhile.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;GAWG;AACH,0BAAkD,SAA+C;IAC/F,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/startWith.js b/node_modules/rxjs/_esm2015/operator/startWith.js new file mode 100644 index 0000000..c00656c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/startWith.js @@ -0,0 +1,20 @@ +import { startWith as higherOrder } from '../operators/startWith'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits the items you specify as arguments before it begins to emit + * items emitted by the source Observable. + * + * + * + * @param {...T} values - Items you want the modified Observable to emit first. + * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling + * the emissions of the `next` notifications. + * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items + * emitted by the source Observable. + * @method startWith + * @owner Observable + */ +export function startWith(...array) { + return higherOrder(...array)(this); +} +//# sourceMappingURL=startWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/startWith.js.map b/node_modules/rxjs/_esm2015/operator/startWith.js.map new file mode 100644 index 0000000..dcae40e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/startWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"startWith.js","sourceRoot":"","sources":["../../src/operator/startWith.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAUjE,mCAAmC;AAEnC;;;;;;;;;;;;;GAaG;AACH,0BAAkD,GAAG,KAA4B;IAC/E,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/subscribeOn.js b/node_modules/rxjs/_esm2015/operator/subscribeOn.js new file mode 100644 index 0000000..e54785b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/subscribeOn.js @@ -0,0 +1,16 @@ +import { subscribeOn as higherOrder } from '../operators/subscribeOn'; +/** + * Asynchronously subscribes Observers to this Observable on the specified IScheduler. + * + * + * + * @param {Scheduler} scheduler - The IScheduler to perform subscription actions on. + * @return {Observable} The source Observable modified so that its subscriptions happen on the specified IScheduler. + . + * @method subscribeOn + * @owner Observable + */ +export function subscribeOn(scheduler, delay = 0) { + return higherOrder(scheduler, delay)(this); +} +//# sourceMappingURL=subscribeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/subscribeOn.js.map b/node_modules/rxjs/_esm2015/operator/subscribeOn.js.map new file mode 100644 index 0000000..02463b5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/subscribeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"subscribeOn.js","sourceRoot":"","sources":["../../src/operator/subscribeOn.ts"],"names":[],"mappings":"OAGO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAErE;;;;;;;;;;GAUG;AACH,4BAAoD,SAAqB,EAAE,KAAK,GAAW,CAAC;IAC1F,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC9D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switch.js b/node_modules/rxjs/_esm2015/operator/switch.js new file mode 100644 index 0000000..bc78aa1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switch.js @@ -0,0 +1,47 @@ +import { switchAll as higherOrder } from '../operators/switchAll'; +/** + * Converts a higher-order Observable into a first-order Observable by + * subscribing to only the most recently emitted of those inner Observables. + * + * Flattens an Observable-of-Observables by dropping the + * previous inner Observable once a new one appears. + * + * + * + * `switch` subscribes to an Observable that emits Observables, also known as a + * higher-order Observable. Each time it observes one of these emitted inner + * Observables, the output Observable subscribes to the inner Observable and + * begins emitting the items emitted by that. So far, it behaves + * like {@link mergeAll}. However, when a new inner Observable is emitted, + * `switch` unsubscribes from the earlier-emitted inner Observable and + * subscribes to the new inner Observable and begins emitting items from it. It + * continues to behave like this for subsequent inner Observables. + * + * @example Rerun an interval Observable on every click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * // Each click event is mapped to an Observable that ticks every second + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000)); + * var switched = higherOrder.switch(); + * // The outcome is that `switched` is essentially a timer that restarts + * // on every click. The interval Observables from older clicks do not merge + * // with the current interval Observable. + * switched.subscribe(x => console.log(x)); + * + * @see {@link combineAll} + * @see {@link concatAll} + * @see {@link exhaust} + * @see {@link mergeAll} + * @see {@link switchMap} + * @see {@link switchMapTo} + * @see {@link zipAll} + * + * @return {Observable} An Observable that emits the items emitted by the + * Observable most recently emitted by the source Observable. + * @method switch + * @name switch + * @owner Observable + */ +export function _switch() { + return higherOrder()(this); +} +//# sourceMappingURL=switch.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switch.js.map b/node_modules/rxjs/_esm2015/operator/switch.js.map new file mode 100644 index 0000000..3e9a6a8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/operator/switch.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAkB,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switchMap.js b/node_modules/rxjs/_esm2015/operator/switchMap.js new file mode 100644 index 0000000..b01f240 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switchMap.js @@ -0,0 +1,53 @@ +import { switchMap as higherOrderSwitchMap } from '../operators/switchMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable, emitting values only from the most recently projected Observable. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link switch}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. Each time it observes one of these + * inner Observables, the output Observable begins emitting the items emitted by + * that inner Observable. When a new inner Observable is emitted, `switchMap` + * stops emitting items from the earlier-emitted inner Observable and begins + * emitting items from the new one. It continues to behave like this for + * subsequent inner Observables. + * + * @example Rerun an interval Observable on every click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMap} + * @see {@link exhaustMap} + * @see {@link mergeMap} + * @see {@link switch} + * @see {@link switchMapTo} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and taking only the values from the most recently + * projected inner Observable. + * @method switchMap + * @owner Observable + */ +export function switchMap(project, resultSelector) { + return higherOrderSwitchMap(project, resultSelector)(this); +} +//# sourceMappingURL=switchMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switchMap.js.map b/node_modules/rxjs/_esm2015/operator/switchMap.js.map new file mode 100644 index 0000000..44999cd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switchMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/operator/switchMap.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,wBAAwB;AAK1E,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,0BAAwD,OAAwD,EAC7E,cAA4F;IAC7H,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switchMapTo.js b/node_modules/rxjs/_esm2015/operator/switchMapTo.js new file mode 100644 index 0000000..7c2ca01 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switchMapTo.js @@ -0,0 +1,48 @@ +import { switchMapTo as higherOrder } from '../operators/switchMapTo'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is flattened multiple + * times with {@link switch} in the output Observable. + * + * It's like {@link switchMap}, but maps each value + * always to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then flattens those resulting Observables into one + * single Observable, which is the output Observable. The output Observables + * emits values only from the most recently emitted instance of + * `innerObservable`. + * + * @example Rerun an interval Observable on every click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.switchMapTo(Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMapTo} + * @see {@link switch} + * @see {@link switchMap} + * @see {@link mergeMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits items from the given + * `innerObservable` (and optionally transformed through `resultSelector`) every + * time a value is emitted on the source Observable, and taking only the values + * from the most recently projected inner Observable. + * @method switchMapTo + * @owner Observable + */ +export function switchMapTo(innerObservable, resultSelector) { + return higherOrder(innerObservable, resultSelector)(this); +} +//# sourceMappingURL=switchMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/switchMapTo.js.map b/node_modules/rxjs/_esm2015/operator/switchMapTo.js.map new file mode 100644 index 0000000..0ca61c3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/switchMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMapTo.js","sourceRoot":"","sources":["../../src/operator/switchMapTo.ts"],"names":[],"mappings":"OACO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAKrE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,4BAA0D,eAA8B,EACnD,cAG0C;IAC7E,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/take.js b/node_modules/rxjs/_esm2015/operator/take.js new file mode 100644 index 0000000..89d7c7d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/take.js @@ -0,0 +1,38 @@ +import { take as higherOrder } from '../operators/take'; +/** + * Emits only the first `count` values emitted by the source Observable. + * + * Takes the first `count` values from the source, then + * completes. + * + * + * + * `take` returns an Observable that emits only the first `count` values emitted + * by the source Observable. If the source emits fewer than `count` values then + * all of its values are emitted. After that, it completes, regardless if the + * source completes. + * + * @example Take the first 5 seconds of an infinite 1-second interval Observable + * var interval = Rx.Observable.interval(1000); + * var five = interval.take(5); + * five.subscribe(x => console.log(x)); + * + * @see {@link takeLast} + * @see {@link takeUntil} + * @see {@link takeWhile} + * @see {@link skip} + * + * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`. + * + * @param {number} count The maximum number of `next` values to emit. + * @return {Observable} An Observable that emits only the first `count` + * values emitted by the source Observable, or all of the values from the source + * if the source emits fewer than `count` values. + * @method take + * @owner Observable + */ +export function take(count) { + return higherOrder(count)(this); +} +//# sourceMappingURL=take.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/take.js.map b/node_modules/rxjs/_esm2015/operator/take.js.map new file mode 100644 index 0000000..c9fdda7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/take.js.map @@ -0,0 +1 @@ +{"version":3,"file":"take.js","sourceRoot":"","sources":["../../src/operator/take.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,mBAAmB;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAA6C,KAAa;IACxD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AACnD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeLast.js b/node_modules/rxjs/_esm2015/operator/takeLast.js new file mode 100644 index 0000000..fa05961 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeLast.js @@ -0,0 +1,41 @@ +import { takeLast as higherOrderTakeLast } from '../operators/takeLast'; +/** + * Emits only the last `count` values emitted by the source Observable. + * + * Remembers the latest `count` values, then emits those + * only when the source completes. + * + * + * + * `takeLast` returns an Observable that emits at most the last `count` values + * emitted by the source Observable. If the source emits fewer than `count` + * values then all of its values are emitted. This operator must wait until the + * `complete` notification emission from the source in order to emit the `next` + * values on the output Observable, because otherwise it is impossible to know + * whether or not more values will be emitted on the source. For this reason, + * all values are emitted synchronously, followed by the complete notification. + * + * @example Take the last 3 values of an Observable with many values + * var many = Rx.Observable.range(1, 100); + * var lastThree = many.takeLast(3); + * lastThree.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeUntil} + * @see {@link takeWhile} + * @see {@link skip} + * + * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`. + * + * @param {number} count The maximum number of values to emit from the end of + * the sequence of values emitted by the source Observable. + * @return {Observable} An Observable that emits at most the last count + * values emitted by the source Observable. + * @method takeLast + * @owner Observable + */ +export function takeLast(count) { + return higherOrderTakeLast(count)(this); +} +//# sourceMappingURL=takeLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeLast.js.map b/node_modules/rxjs/_esm2015/operator/takeLast.js.map new file mode 100644 index 0000000..68763fd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeLast.js","sourceRoot":"","sources":["../../src/operator/takeLast.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,uBAAuB;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,yBAAiD,KAAa;IAC5D,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeUntil.js b/node_modules/rxjs/_esm2015/operator/takeUntil.js new file mode 100644 index 0000000..6acaa40 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeUntil.js @@ -0,0 +1,38 @@ +import { takeUntil as higherOrder } from '../operators/takeUntil'; +/** + * Emits the values emitted by the source Observable until a `notifier` + * Observable emits a value. + * + * Lets values pass until a second Observable, + * `notifier`, emits something. Then, it completes. + * + * + * + * `takeUntil` subscribes and begins mirroring the source Observable. It also + * monitors a second Observable, `notifier` that you provide. If the `notifier` + * emits a value, the output Observable stops mirroring the source Observable + * and completes. + * + * @example Tick every second until the first click happens + * var interval = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = interval.takeUntil(clicks); + * result.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeLast} + * @see {@link takeWhile} + * @see {@link skip} + * + * @param {Observable} notifier The Observable whose first emitted value will + * cause the output Observable of `takeUntil` to stop emitting values from the + * source Observable. + * @return {Observable} An Observable that emits the values from the source + * Observable until such time as `notifier` emits its first value. + * @method takeUntil + * @owner Observable + */ +export function takeUntil(notifier) { + return higherOrder(notifier)(this); +} +//# sourceMappingURL=takeUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeUntil.js.map b/node_modules/rxjs/_esm2015/operator/takeUntil.js.map new file mode 100644 index 0000000..c5c1087 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeUntil.js","sourceRoot":"","sources":["../../src/operator/takeUntil.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,0BAAkD,QAAyB;IACzE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAkB,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeWhile.js b/node_modules/rxjs/_esm2015/operator/takeWhile.js new file mode 100644 index 0000000..9d6bcb3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeWhile.js @@ -0,0 +1,41 @@ +import { takeWhile as higherOrder } from '../operators/takeWhile'; +/** + * Emits values emitted by the source Observable so long as each value satisfies + * the given `predicate`, and then completes as soon as this `predicate` is not + * satisfied. + * + * Takes values from the source only while they pass the + * condition given. When the first value does not satisfy, it completes. + * + * + * + * `takeWhile` subscribes and begins mirroring the source Observable. Each value + * emitted on the source is given to the `predicate` function which returns a + * boolean, representing a condition to be satisfied by the source values. The + * output Observable emits the source values until such time as the `predicate` + * returns false, at which point `takeWhile` stops mirroring the source + * Observable and completes the output Observable. + * + * @example Emit click events only while the clientX property is greater than 200 + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.takeWhile(ev => ev.clientX > 200); + * result.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeLast} + * @see {@link takeUntil} + * @see {@link skip} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates a value emitted by the source Observable and returns a boolean. + * Also takes the (zero-based) index as the second argument. + * @return {Observable} An Observable that emits the values from the source + * Observable so long as each value satisfies the condition defined by the + * `predicate`, then completes. + * @method takeWhile + * @owner Observable + */ +export function takeWhile(predicate) { + return higherOrder(predicate)(this); +} +//# sourceMappingURL=takeWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/takeWhile.js.map b/node_modules/rxjs/_esm2015/operator/takeWhile.js.map new file mode 100644 index 0000000..c24d891 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/takeWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeWhile.js","sourceRoot":"","sources":["../../src/operator/takeWhile.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,0BAAkD,SAA+C;IAC/F,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/throttle.js b/node_modules/rxjs/_esm2015/operator/throttle.js new file mode 100644 index 0000000..1244f94 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/throttle.js @@ -0,0 +1,45 @@ +import { throttle as higherOrder, defaultThrottleConfig } from '../operators/throttle'; +/** + * Emits a value from the source Observable, then ignores subsequent source + * values for a duration determined by another Observable, then repeats this + * process. + * + * It's like {@link throttleTime}, but the silencing + * duration is determined by a second Observable. + * + * + * + * `throttle` emits the source Observable values on the output Observable + * when its internal timer is disabled, and ignores source values when the timer + * is enabled. Initially, the timer is disabled. As soon as the first source + * value arrives, it is forwarded to the output Observable, and then the timer + * is enabled by calling the `durationSelector` function with the source value, + * which returns the "duration" Observable. When the duration Observable emits a + * value or completes, the timer is disabled, and this process repeats for the + * next source value. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.throttle(ev => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounce} + * @see {@link delayWhen} + * @see {@link sample} + * @see {@link throttleTime} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the silencing + * duration for each source value, returned as an Observable or a Promise. + * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults + * to `{ leading: true, trailing: false }`. + * @return {Observable} An Observable that performs the throttle operation to + * limit the rate of emissions from the source. + * @method throttle + * @owner Observable + */ +export function throttle(durationSelector, config = defaultThrottleConfig) { + return higherOrder(durationSelector, config)(this); +} +//# sourceMappingURL=throttle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/throttle.js.map b/node_modules/rxjs/_esm2015/operator/throttle.js.map new file mode 100644 index 0000000..dafc1df --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/throttle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/operator/throttle.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,IAAI,WAAW,EAAkB,qBAAqB,EAAE,MAAM,uBAAuB;AAEtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,yBAC4B,gBAA6D,EAC7D,MAAM,GAAmB,qBAAqB;IACxE,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/throttleTime.js b/node_modules/rxjs/_esm2015/operator/throttleTime.js new file mode 100644 index 0000000..bbad2cb --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/throttleTime.js @@ -0,0 +1,46 @@ +import { async } from '../scheduler/async'; +import { defaultThrottleConfig } from '../operators/throttle'; +import { throttleTime as higherOrder } from '../operators/throttleTime'; +/** + * Emits a value from the source Observable, then ignores subsequent source + * values for `duration` milliseconds, then repeats this process. + * + * Lets a value pass, then ignores source values for the + * next `duration` milliseconds. + * + * + * + * `throttleTime` emits the source Observable values on the output Observable + * when its internal timer is disabled, and ignores source values when the timer + * is enabled. Initially, the timer is disabled. As soon as the first source + * value arrives, it is forwarded to the output Observable, and then the timer + * is enabled. After `duration` milliseconds (or the time unit determined + * internally by the optional `scheduler`) has passed, the timer is disabled, + * and this process repeats for the next source value. Optionally takes a + * {@link IScheduler} for managing timers. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.throttleTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttle} + * + * @param {number} duration Time to wait before emitting another value after + * emitting the last value, measured in milliseconds or the time unit determined + * internally by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the throttling. + * @return {Observable} An Observable that performs the throttle operation to + * limit the rate of emissions from the source. + * @method throttleTime + * @owner Observable + */ +export function throttleTime(duration, scheduler = async, config = defaultThrottleConfig) { + return higherOrder(duration, scheduler, config)(this); +} +//# sourceMappingURL=throttleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/throttleTime.js.map b/node_modules/rxjs/_esm2015/operator/throttleTime.js.map new file mode 100644 index 0000000..bcbfd96 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/throttleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttleTime.js","sourceRoot":"","sources":["../../src/operator/throttleTime.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAkB,qBAAqB,EAAE,MAAM,uBAAuB;OACtE,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,2BAA2B;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,6BACgC,QAAgB,EAChB,SAAS,GAAe,KAAK,EAC7B,MAAM,GAAmB,qBAAqB;IAC5E,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,CAAkB,CAAC;AACzE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeInterval.js b/node_modules/rxjs/_esm2015/operator/timeInterval.js new file mode 100644 index 0000000..499fe76 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeInterval.js @@ -0,0 +1,13 @@ +import { async } from '../scheduler/async'; +import { timeInterval as higherOrder, TimeInterval } from '../operators/timeInterval'; +export { TimeInterval }; +/** + * @param scheduler + * @return {Observable>|WebSocketSubject|Observable} + * @method timeInterval + * @owner Observable + */ +export function timeInterval(scheduler = async) { + return higherOrder(scheduler)(this); +} +//# sourceMappingURL=timeInterval.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeInterval.js.map b/node_modules/rxjs/_esm2015/operator/timeInterval.js.map new file mode 100644 index 0000000..05842d7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeInterval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeInterval.js","sourceRoot":"","sources":["../../src/operator/timeInterval.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAE,YAAY,IAAI,WAAW,EAAE,YAAY,EAAE,MAAM,2BAA2B;AACrF,SAAQ,YAAY,GAAE;AAEtB;;;;;GAKG;AACH,6BAAqD,SAAS,GAAe,KAAK;IAChF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAgC,CAAC;AACrE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeout.js b/node_modules/rxjs/_esm2015/operator/timeout.js new file mode 100644 index 0000000..41781f3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeout.js @@ -0,0 +1,71 @@ +import { async } from '../scheduler/async'; +import { timeout as higherOrder } from '../operators/timeout'; +/** + * + * Errors if Observable does not emit a value in given time span. + * + * Timeouts on Observable that doesn't emit values fast enough. + * + * + * + * `timeout` operator accepts as an argument either a number or a Date. + * + * If number was provided, it returns an Observable that behaves like a source + * Observable, unless there is a period of time where there is no value emitted. + * So if you provide `100` as argument and first value comes after 50ms from + * the moment of subscription, this value will be simply re-emitted by the resulting + * Observable. If however after that 100ms passes without a second value being emitted, + * stream will end with an error and source Observable will be unsubscribed. + * These checks are performed throughout whole lifecycle of Observable - from the moment + * it was subscribed to, until it completes or errors itself. Thus every value must be + * emitted within specified period since previous value. + * + * If provided argument was Date, returned Observable behaves differently. It throws + * if Observable did not complete before provided Date. This means that periods between + * emission of particular values do not matter in this case. If Observable did not complete + * before provided Date, source Observable will be unsubscribed. Other than that, resulting + * stream behaves just as source Observable. + * + * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments) + * when returned Observable will check if source stream emitted value or completed. + * + * @example Check if ticks are emitted within certain timespan + * const seconds = Rx.Observable.interval(1000); + * + * seconds.timeout(1100) // Let's use bigger timespan to be safe, + * // since `interval` might fire a bit later then scheduled. + * .subscribe( + * value => console.log(value), // Will emit numbers just as regular `interval` would. + * err => console.log(err) // Will never be called. + * ); + * + * seconds.timeout(900).subscribe( + * value => console.log(value), // Will never be called. + * err => console.log(err) // Will emit error before even first value is emitted, + * // since it did not arrive within 900ms period. + * ); + * + * @example Use Date to check if Observable completed + * const seconds = Rx.Observable.interval(1000); + * + * seconds.timeout(new Date("December 17, 2020 03:24:00")) + * .subscribe( + * value => console.log(value), // Will emit values as regular `interval` would + * // until December 17, 2020 at 03:24:00. + * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error, + * // since Observable did not complete by then. + * ); + * + * @see {@link timeoutWith} + * + * @param {number|Date} due Number specifying period within which Observable must emit values + * or Date specifying before when Observable should complete + * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur. + * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail. + * @method timeout + * @owner Observable + */ +export function timeout(due, scheduler = async) { + return higherOrder(due, scheduler)(this); +} +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeout.js.map b/node_modules/rxjs/_esm2015/operator/timeout.js.map new file mode 100644 index 0000000..33e3b1d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/operator/timeout.ts"],"names":[],"mappings":"OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAGnC,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAC2B,GAAkB,EAClB,SAAS,GAAe,KAAK;IACtD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,CAAkB,CAAC;AAC5D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeoutWith.js b/node_modules/rxjs/_esm2015/operator/timeoutWith.js new file mode 100644 index 0000000..6fb8a32 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeoutWith.js @@ -0,0 +1,54 @@ +import { async } from '../scheduler/async'; +import { timeoutWith as higherOrder } from '../operators/timeoutWith'; +/* tslint:enable:max-line-length */ +/** + * + * Errors if Observable does not emit a value in given time span, in case of which + * subscribes to the second Observable. + * + * It's a version of `timeout` operator that let's you specify fallback Observable. + * + * + * + * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same, + * still accepting as a first argument either a number or a Date, which control - respectively - + * when values of source Observable should be emitted or when it should complete. + * + * The only difference is that it accepts a second, required parameter. This parameter + * should be an Observable which will be subscribed when source Observable fails any timeout check. + * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting + * values from second Observable. Note that this fallback Observable is not checked for timeouts + * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second + * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that + * stream completes, it completes as well. + * + * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided + * here - as a third, optional parameter. It still is used to schedule timeout checks and - + * as a consequence - when second Observable will be subscribed, since subscription happens + * immediately after failing check. + * + * @example Add fallback observable + * const seconds = Rx.Observable.interval(1000); + * const minutes = Rx.Observable.interval(60 * 1000); + * + * seconds.timeoutWith(900, minutes) + * .subscribe( + * value => console.log(value), // After 900ms, will start emitting `minutes`, + * // since first value of `seconds` will not arrive fast enough. + * err => console.log(err) // Would be called after 900ms in case of `timeout`, + * // but here will never be called. + * ); + * + * @param {number|Date} due Number specifying period within which Observable must emit values + * or Date specifying before when Observable should complete + * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check. + * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur. + * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable + * passed as a second parameter. + * @method timeoutWith + * @owner Observable + */ +export function timeoutWith(due, withObservable, scheduler = async) { + return higherOrder(due, withObservable, scheduler)(this); +} +//# sourceMappingURL=timeoutWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timeoutWith.js.map b/node_modules/rxjs/_esm2015/operator/timeoutWith.js.map new file mode 100644 index 0000000..7df90c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timeoutWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeoutWith.js","sourceRoot":"","sources":["../../src/operator/timeoutWith.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAEnC,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAKrE,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,4BAAuD,GAAkB,EACvC,cAAkC,EAClC,SAAS,GAAe,KAAK;IAC7D,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,IAAW,CAAC,CAAC;AAClE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timestamp.js b/node_modules/rxjs/_esm2015/operator/timestamp.js new file mode 100644 index 0000000..328bbee --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timestamp.js @@ -0,0 +1,12 @@ +import { async } from '../scheduler/async'; +import { timestamp as higherOrder } from '../operators/timestamp'; +/** + * @param scheduler + * @return {Observable>|WebSocketSubject|Observable} + * @method timestamp + * @owner Observable + */ +export function timestamp(scheduler = async) { + return higherOrder(scheduler)(this); +} +//# sourceMappingURL=timestamp.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/timestamp.js.map b/node_modules/rxjs/_esm2015/operator/timestamp.js.map new file mode 100644 index 0000000..adb29c3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/timestamp.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/operator/timestamp.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OACnC,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,wBAAwB;AAEjE;;;;;GAKG;AACH,0BAAkD,SAAS,GAAe,KAAK;IAC7E,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAA6B,CAAC;AAClE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/toArray.js b/node_modules/rxjs/_esm2015/operator/toArray.js new file mode 100644 index 0000000..5c111a2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/toArray.js @@ -0,0 +1,28 @@ +import { toArray as higherOrder } from '../operators/toArray'; +/** + * Collects all source emissions and emits them as an array when the source completes. + * + * Get all values inside an array when the source completes + * + * + * + * `toArray` will wait until the source Observable completes + * before emitting the array containing all emissions. + * When the source Observable errors no array will be emitted. + * + * @example Create array from input + * const input = Rx.Observable.interval(100).take(4); + * + * input.toArray() + * .subscribe(arr => console.log(arr)); // [0,1,2,3] + * + * @see {@link buffer} + * + * @return {Observable|WebSocketSubject|Observable} + * @method toArray + * @owner Observable + */ +export function toArray() { + return higherOrder()(this); +} +//# sourceMappingURL=toArray.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/toArray.js.map b/node_modules/rxjs/_esm2015/operator/toArray.js.map new file mode 100644 index 0000000..c501b6d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/toArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toArray.js","sourceRoot":"","sources":["../../src/operator/toArray.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB;AAE7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IACE,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAoB,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/toPromise.js b/node_modules/rxjs/_esm2015/operator/toPromise.js new file mode 100644 index 0000000..e1eb75d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/toPromise.js @@ -0,0 +1,5 @@ +import { Observable } from '../Observable'; +// HACK: this is here for backward compatability +// TODO(benlesh): remove this in v6. +export const toPromise = Observable.prototype.toPromise; +//# sourceMappingURL=toPromise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/toPromise.js.map b/node_modules/rxjs/_esm2015/operator/toPromise.js.map new file mode 100644 index 0000000..07182d1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/toPromise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toPromise.js","sourceRoot":"","sources":["../../src/operator/toPromise.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,eAAe;AAE1C,gDAAgD;AAChD,oCAAoC;AACpC,OAAO,MAAM,SAAS,GAA0C,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/window.js b/node_modules/rxjs/_esm2015/operator/window.js new file mode 100644 index 0000000..7338f1f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/window.js @@ -0,0 +1,41 @@ +import { window as higherOrder } from '../operators/window'; +/** + * Branch out the source Observable values as a nested Observable whenever + * `windowBoundaries` emits. + * + * It's like {@link buffer}, but emits a nested Observable + * instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits connected, non-overlapping + * windows. It emits the current window and opens a new one whenever the + * Observable `windowBoundaries` emits an item. Because each window is an + * Observable, the output is a higher-order Observable. + * + * @example In every window of 1 second each, emit at most 2 click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var interval = Rx.Observable.interval(1000); + * var result = clicks.window(interval) + * .map(win => win.take(2)) // each window has at most 2 emissions + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link windowWhen} + * @see {@link buffer} + * + * @param {Observable} windowBoundaries An Observable that completes the + * previous window and starts a new window. + * @return {Observable>} An Observable of windows, which are + * Observables emitting values of the source Observable. + * @method window + * @owner Observable + */ +export function window(windowBoundaries) { + return higherOrder(windowBoundaries)(this); +} +//# sourceMappingURL=window.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/window.js.map b/node_modules/rxjs/_esm2015/operator/window.js.map new file mode 100644 index 0000000..887a435 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/window.js.map @@ -0,0 +1 @@ +{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/operator/window.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,uBAA+C,gBAAiC;IAC9E,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAA8B,CAAC;AAC1E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowCount.js b/node_modules/rxjs/_esm2015/operator/windowCount.js new file mode 100644 index 0000000..e2cce8f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowCount.js @@ -0,0 +1,53 @@ +import { windowCount as higherOrder } from '../operators/windowCount'; +/** + * Branch out the source Observable values as a nested Observable with each + * nested Observable emitting at most `windowSize` values. + * + * It's like {@link bufferCount}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits windows every `startWindowEvery` + * items, each containing no more than `windowSize` items. When the source + * Observable completes or encounters an error, the output Observable emits + * the current window and propagates the notification from the source + * Observable. If `startWindowEvery` is not provided, then new windows are + * started immediately at the start of the source and when each window completes + * with size `windowSize`. + * + * @example Ignore every 3rd click event, starting from the first one + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.windowCount(3) + * .map(win => win.skip(1)) // skip first of every 3 clicks + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @example Ignore every 3rd click event, starting from the third one + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.windowCount(2, 3) + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link windowWhen} + * @see {@link bufferCount} + * + * @param {number} windowSize The maximum number of values emitted by each + * window. + * @param {number} [startWindowEvery] Interval at which to start a new window. + * For example if `startWindowEvery` is `2`, then a new window will be started + * on every other value from the source. A new window is started at the + * beginning of the source by default. + * @return {Observable>} An Observable of windows, which in turn + * are Observable of values. + * @method windowCount + * @owner Observable + */ +export function windowCount(windowSize, startWindowEvery = 0) { + return higherOrder(windowSize, startWindowEvery)(this); +} +//# sourceMappingURL=windowCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowCount.js.map b/node_modules/rxjs/_esm2015/operator/windowCount.js.map new file mode 100644 index 0000000..189873f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowCount.js","sourceRoot":"","sources":["../../src/operator/windowCount.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,4BAAoD,UAAkB,EACvC,gBAAgB,GAAW,CAAC;IACzD,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAA8B,CAAC;AACtF,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowTime.js b/node_modules/rxjs/_esm2015/operator/windowTime.js new file mode 100644 index 0000000..d095e64 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowTime.js @@ -0,0 +1,26 @@ +import { async } from '../scheduler/async'; +import { isNumeric } from '../util/isNumeric'; +import { isScheduler } from '../util/isScheduler'; +import { windowTime as higherOrder } from '../operators/windowTime'; +export function windowTime(windowTimeSpan) { + let scheduler = async; + let windowCreationInterval = null; + let maxWindowSize = Number.POSITIVE_INFINITY; + if (isScheduler(arguments[3])) { + scheduler = arguments[3]; + } + if (isScheduler(arguments[2])) { + scheduler = arguments[2]; + } + else if (isNumeric(arguments[2])) { + maxWindowSize = arguments[2]; + } + if (isScheduler(arguments[1])) { + scheduler = arguments[1]; + } + else if (isNumeric(arguments[1])) { + windowCreationInterval = arguments[1]; + } + return higherOrder(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler)(this); +} +//# sourceMappingURL=windowTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowTime.js.map b/node_modules/rxjs/_esm2015/operator/windowTime.js.map new file mode 100644 index 0000000..62e9203 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowTime.js","sourceRoot":"","sources":["../../src/operator/windowTime.ts"],"names":[],"mappings":"OACO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAEnC,EAAE,SAAS,EAAE,MAAM,mBAAmB;OACtC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAwEnE,2BAC8B,cAAsB;IAElD,IAAI,SAAS,GAAe,KAAK,CAAC;IAClC,IAAI,sBAAsB,GAAW,IAAI,CAAC;IAC1C,IAAI,aAAa,GAAW,MAAM,CAAC,iBAAiB,CAAC;IAErD,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,sBAAsB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,IAAI,CAA8B,CAAC;AAC1H,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowToggle.js b/node_modules/rxjs/_esm2015/operator/windowToggle.js new file mode 100644 index 0000000..0b25088 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowToggle.js @@ -0,0 +1,46 @@ +import { windowToggle as higherOrder } from '../operators/windowToggle'; +/** + * Branch out the source Observable values as a nested Observable starting from + * an emission from `openings` and ending when the output of `closingSelector` + * emits. + * + * It's like {@link bufferToggle}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits windows that contain those items + * emitted by the source Observable between the time when the `openings` + * Observable emits an item and when the Observable returned by + * `closingSelector` emits an item. + * + * @example Every other second, emit the click events from the next 500ms + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var openings = Rx.Observable.interval(1000); + * var result = clicks.windowToggle(openings, i => + * i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty() + * ).mergeAll(); + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowWhen} + * @see {@link bufferToggle} + * + * @param {Observable} openings An observable of notifications to start new + * windows. + * @param {function(value: O): Observable} closingSelector A function that takes + * the value emitted by the `openings` observable and returns an Observable, + * which, when it emits (either `next` or `complete`), signals that the + * associated window should complete. + * @return {Observable>} An observable of windows, which in turn + * are Observables. + * @method windowToggle + * @owner Observable + */ +export function windowToggle(openings, closingSelector) { + return higherOrder(openings, closingSelector)(this); +} +//# sourceMappingURL=windowToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowToggle.js.map b/node_modules/rxjs/_esm2015/operator/windowToggle.js.map new file mode 100644 index 0000000..76d54b9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowToggle.js","sourceRoot":"","sources":["../../src/operator/windowToggle.ts"],"names":[],"mappings":"OAEO,EAAE,YAAY,IAAI,WAAW,EAAE,MAAM,2BAA2B;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,6BAAwD,QAAuB,EAC5C,eAAkD;IACnF,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,IAAI,CAA8B,CAAC;AACnF,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowWhen.js b/node_modules/rxjs/_esm2015/operator/windowWhen.js new file mode 100644 index 0000000..7f0f7a0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowWhen.js @@ -0,0 +1,43 @@ +import { windowWhen as higherOrder } from '../operators/windowWhen'; +/** + * Branch out the source Observable values as a nested Observable using a + * factory function of closing Observables to determine when to start a new + * window. + * + * It's like {@link bufferWhen}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits connected, non-overlapping windows. + * It emits the current window and opens a new one whenever the Observable + * produced by the specified `closingSelector` function emits an item. The first + * window is opened immediately when subscribing to the output Observable. + * + * @example Emit only the first two clicks events in every window of [1-5] random seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks + * .windowWhen(() => Rx.Observable.interval(1000 + Math.random() * 4000)) + * .map(win => win.take(2)) // each window has at most 2 emissions + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link bufferWhen} + * + * @param {function(): Observable} closingSelector A function that takes no + * arguments and returns an Observable that signals (on either `next` or + * `complete`) when to close the previous window and start a new one. + * @return {Observable>} An observable of windows, which in turn + * are Observables. + * @method windowWhen + * @owner Observable + */ +export function windowWhen(closingSelector) { + return higherOrder(closingSelector)(this); +} +//# sourceMappingURL=windowWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/windowWhen.js.map b/node_modules/rxjs/_esm2015/operator/windowWhen.js.map new file mode 100644 index 0000000..3cde531 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/windowWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowWhen.js","sourceRoot":"","sources":["../../src/operator/windowWhen.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,yBAAyB;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,2BAAmD,eAAsC;IACvF,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,CAA8B,CAAC;AACzE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/withLatestFrom.js b/node_modules/rxjs/_esm2015/operator/withLatestFrom.js new file mode 100644 index 0000000..693366e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/withLatestFrom.js @@ -0,0 +1,44 @@ +import { withLatestFrom as higherOrder } from '../operators/withLatestFrom'; +/* tslint:enable:max-line-length */ +/** + * Combines the source Observable with other Observables to create an Observable + * whose values are calculated from the latest values of each, only when the + * source emits. + * + * Whenever the source Observable emits a value, it + * computes a formula using that value plus the latest values from other input + * Observables, then emits the output of that formula. + * + * + * + * `withLatestFrom` combines each value from the source Observable (the + * instance) with the latest values from the other input Observables only when + * the source emits a value, optionally using a `project` function to determine + * the value to be emitted on the output Observable. All input Observables must + * emit at least one value before the output Observable will emit a value. + * + * @example On every click event, emit an array with the latest timer event plus the click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var timer = Rx.Observable.interval(1000); + * var result = clicks.withLatestFrom(timer); + * result.subscribe(x => console.log(x)); + * + * @see {@link combineLatest} + * + * @param {ObservableInput} other An input Observable to combine with the source + * Observable. More than one input Observables may be given as argument. + * @param {Function} [project] Projection function for combining values + * together. Receives all values in order of the Observables passed, where the + * first parameter is a value from the source Observable. (e.g. + * `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not + * passed, arrays will be emitted on the output Observable. + * @return {Observable} An Observable of projected values from the most recent + * values from each input Observable, or an array of the most recent values from + * each input Observable. + * @method withLatestFrom + * @owner Observable + */ +export function withLatestFrom(...args) { + return higherOrder(...args)(this); +} +//# sourceMappingURL=withLatestFrom.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/withLatestFrom.js.map b/node_modules/rxjs/_esm2015/operator/withLatestFrom.js.map new file mode 100644 index 0000000..646b7ad --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/withLatestFrom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"withLatestFrom.js","sourceRoot":"","sources":["../../src/operator/withLatestFrom.ts"],"names":[],"mappings":"OACO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,6BAA6B;AAiB3E,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,+BAA0D,GAAG,IAAkE;IAC7H,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/zip.js b/node_modules/rxjs/_esm2015/operator/zip.js new file mode 100644 index 0000000..3246d2a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/zip.js @@ -0,0 +1,12 @@ +import { zip as higherOrder } from '../operators/zip'; +/* tslint:enable:max-line-length */ +/** + * @param observables + * @return {Observable} + * @method zip + * @owner Observable + */ +export function zipProto(...observables) { + return higherOrder(...observables)(this); +} +//# sourceMappingURL=zip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/zip.js.map b/node_modules/rxjs/_esm2015/operator/zip.js.map new file mode 100644 index 0000000..8bc9014 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/zip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/operator/zip.ts"],"names":[],"mappings":"OACO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,kBAAkB;AAkBrD,mCAAmC;AAEnC;;;;;GAKG;AACH,yBAAoD,GAAG,WAAyE;IAC9H,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/zipAll.js b/node_modules/rxjs/_esm2015/operator/zipAll.js new file mode 100644 index 0000000..25522bf --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/zipAll.js @@ -0,0 +1,11 @@ +import { zipAll as higherOrder } from '../operators/zipAll'; +/** + * @param project + * @return {Observable|WebSocketSubject|Observable} + * @method zipAll + * @owner Observable + */ +export function zipAll(project) { + return higherOrder(project)(this); +} +//# sourceMappingURL=zipAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operator/zipAll.js.map b/node_modules/rxjs/_esm2015/operator/zipAll.js.map new file mode 100644 index 0000000..24ffff4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operator/zipAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zipAll.js","sourceRoot":"","sources":["../../src/operator/zipAll.ts"],"names":[],"mappings":"OACO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE3D;;;;;GAKG;AACH,uBAAkD,OAAsC;IACtF,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators.js b/node_modules/rxjs/_esm2015/operators.js new file mode 100644 index 0000000..fab1949 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators.js @@ -0,0 +1,109 @@ +export { audit } from './operators/audit'; +export { auditTime } from './operators/auditTime'; +export { buffer } from './operators/buffer'; +export { bufferCount } from './operators/bufferCount'; +export { bufferTime } from './operators/bufferTime'; +export { bufferToggle } from './operators/bufferToggle'; +export { bufferWhen } from './operators/bufferWhen'; +export { catchError } from './operators/catchError'; +export { combineAll } from './operators/combineAll'; +export { combineLatest } from './operators/combineLatest'; +export { concat } from './operators/concat'; +export { concatAll } from './operators/concatAll'; +export { concatMap } from './operators/concatMap'; +export { concatMapTo } from './operators/concatMapTo'; +export { count } from './operators/count'; +export { debounce } from './operators/debounce'; +export { debounceTime } from './operators/debounceTime'; +export { defaultIfEmpty } from './operators/defaultIfEmpty'; +export { delay } from './operators/delay'; +export { delayWhen } from './operators/delayWhen'; +export { dematerialize } from './operators/dematerialize'; +export { distinct } from './operators/distinct'; +export { distinctUntilChanged } from './operators/distinctUntilChanged'; +export { distinctUntilKeyChanged } from './operators/distinctUntilKeyChanged'; +export { elementAt } from './operators/elementAt'; +export { every } from './operators/every'; +export { exhaust } from './operators/exhaust'; +export { exhaustMap } from './operators/exhaustMap'; +export { expand } from './operators/expand'; +export { filter } from './operators/filter'; +export { finalize } from './operators/finalize'; +export { find } from './operators/find'; +export { findIndex } from './operators/findIndex'; +export { first } from './operators/first'; +export { groupBy } from './operators/groupBy'; +export { ignoreElements } from './operators/ignoreElements'; +export { isEmpty } from './operators/isEmpty'; +export { last } from './operators/last'; +export { map } from './operators/map'; +export { mapTo } from './operators/mapTo'; +export { materialize } from './operators/materialize'; +export { max } from './operators/max'; +export { merge } from './operators/merge'; +export { mergeAll } from './operators/mergeAll'; +export { mergeMap } from './operators/mergeMap'; +export { mergeMap as flatMap } from './operators/mergeMap'; +export { mergeMapTo } from './operators/mergeMapTo'; +export { mergeScan } from './operators/mergeScan'; +export { min } from './operators/min'; +export { multicast } from './operators/multicast'; +export { observeOn } from './operators/observeOn'; +export { onErrorResumeNext } from './operators/onErrorResumeNext'; +export { pairwise } from './operators/pairwise'; +export { partition } from './operators/partition'; +export { pluck } from './operators/pluck'; +export { publish } from './operators/publish'; +export { publishBehavior } from './operators/publishBehavior'; +export { publishLast } from './operators/publishLast'; +export { publishReplay } from './operators/publishReplay'; +export { race } from './operators/race'; +export { reduce } from './operators/reduce'; +export { repeat } from './operators/repeat'; +export { repeatWhen } from './operators/repeatWhen'; +export { retry } from './operators/retry'; +export { retryWhen } from './operators/retryWhen'; +export { refCount } from './operators/refCount'; +export { sample } from './operators/sample'; +export { sampleTime } from './operators/sampleTime'; +export { scan } from './operators/scan'; +export { sequenceEqual } from './operators/sequenceEqual'; +export { share } from './operators/share'; +export { shareReplay } from './operators/shareReplay'; +export { single } from './operators/single'; +export { skip } from './operators/skip'; +export { skipLast } from './operators/skipLast'; +export { skipUntil } from './operators/skipUntil'; +export { skipWhile } from './operators/skipWhile'; +export { startWith } from './operators/startWith'; +/** + * TODO(https://github.com/ReactiveX/rxjs/issues/2900): Add back subscribeOn once it can be + * treeshaken. Currently if this export is added back, it + * forces apps to bring in asap scheduler along with + * Immediate, root, and other supporting code. + */ +// export { subscribeOn } from './operators/subscribeOn'; +export { switchAll } from './operators/switchAll'; +export { switchMap } from './operators/switchMap'; +export { switchMapTo } from './operators/switchMapTo'; +export { take } from './operators/take'; +export { takeLast } from './operators/takeLast'; +export { takeUntil } from './operators/takeUntil'; +export { takeWhile } from './operators/takeWhile'; +export { tap } from './operators/tap'; +export { throttle } from './operators/throttle'; +export { throttleTime } from './operators/throttleTime'; +export { timeInterval } from './operators/timeInterval'; +export { timeout } from './operators/timeout'; +export { timeoutWith } from './operators/timeoutWith'; +export { timestamp } from './operators/timestamp'; +export { toArray } from './operators/toArray'; +export { window } from './operators/window'; +export { windowCount } from './operators/windowCount'; +export { windowTime } from './operators/windowTime'; +export { windowToggle } from './operators/windowToggle'; +export { windowWhen } from './operators/windowWhen'; +export { withLatestFrom } from './operators/withLatestFrom'; +export { zip } from './operators/zip'; +export { zipAll } from './operators/zipAll'; +//# sourceMappingURL=operators.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators.js.map b/node_modules/rxjs/_esm2015/operators.js.map new file mode 100644 index 0000000..ad74b90 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators.js.map @@ -0,0 +1 @@ +{"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/audit.js b/node_modules/rxjs/_esm2015/operators/audit.js new file mode 100644 index 0000000..dd54c90 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/audit.js @@ -0,0 +1,108 @@ +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Ignores source values for a duration determined by another Observable, then + * emits the most recent value from the source Observable, then repeats this + * process. + * + * It's like {@link auditTime}, but the silencing + * duration is determined by a second Observable. + * + * + * + * `audit` is similar to `throttle`, but emits the last value from the silenced + * time window, instead of the first value. `audit` emits the most recent value + * from the source Observable on the output Observable as soon as its internal + * timer becomes disabled, and ignores source values while the timer is enabled. + * Initially, the timer is disabled. As soon as the first source value arrives, + * the timer is enabled by calling the `durationSelector` function with the + * source value, which returns the "duration" Observable. When the duration + * Observable emits a value or completes, the timer is disabled, then the most + * recent source value is emitted on the output Observable, and this process + * repeats for the next source value. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.audit(ev => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounce} + * @see {@link delayWhen} + * @see {@link sample} + * @see {@link throttle} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the silencing + * duration, returned as an Observable or a Promise. + * @return {Observable} An Observable that performs rate-limiting of + * emissions from the source Observable. + * @method audit + * @owner Observable + */ +export function audit(durationSelector) { + return function auditOperatorFunction(source) { + return source.lift(new AuditOperator(durationSelector)); + }; +} +class AuditOperator { + constructor(durationSelector) { + this.durationSelector = durationSelector; + } + call(subscriber, source) { + return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class AuditSubscriber extends OuterSubscriber { + constructor(destination, durationSelector) { + super(destination); + this.durationSelector = durationSelector; + this.hasValue = false; + } + _next(value) { + this.value = value; + this.hasValue = true; + if (!this.throttled) { + const duration = tryCatch(this.durationSelector)(value); + if (duration === errorObject) { + this.destination.error(errorObject.e); + } + else { + const innerSubscription = subscribeToResult(this, duration); + if (innerSubscription.closed) { + this.clearThrottle(); + } + else { + this.add(this.throttled = innerSubscription); + } + } + } + } + clearThrottle() { + const { value, hasValue, throttled } = this; + if (throttled) { + this.remove(throttled); + this.throttled = null; + throttled.unsubscribe(); + } + if (hasValue) { + this.value = null; + this.hasValue = false; + this.destination.next(value); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex) { + this.clearThrottle(); + } + notifyComplete() { + this.clearThrottle(); + } +} +//# sourceMappingURL=audit.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/audit.js.map b/node_modules/rxjs/_esm2015/operators/audit.js.map new file mode 100644 index 0000000..6f36313 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/audit.js.map @@ -0,0 +1 @@ +{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/operators/audit.ts"],"names":[],"mappings":"OAKO,EAAE,QAAQ,EAAE,MAAM,kBAAkB;OACpC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAC7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,sBAAyB,gBAA0D;IACjF,MAAM,CAAC,+BAA+B,MAAqB;QACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,gBAA0D;QAA1D,qBAAgB,GAAhB,gBAAgB,CAA0C;IAC9E,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAO,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAoC,eAAe;IAMjD,YAAY,WAA0B,EAClB,gBAA0D;QAC5E,MAAM,WAAW,CAAC,CAAC;QADD,qBAAgB,GAAhB,gBAAgB,CAA0C;QAJtE,aAAQ,GAAY,KAAK,CAAC;IAMlC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,EAAE,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC5D,EAAE,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC5C,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC;QACD,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAAE,UAAkB,EAAE,UAAkB;QAC7E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/auditTime.js b/node_modules/rxjs/_esm2015/operators/auditTime.js new file mode 100644 index 0000000..ea2b0d3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/auditTime.js @@ -0,0 +1,49 @@ +import { async } from '../scheduler/async'; +import { audit } from './audit'; +import { timer } from '../observable/timer'; +/** + * Ignores source values for `duration` milliseconds, then emits the most recent + * value from the source Observable, then repeats this process. + * + * When it sees a source values, it ignores that plus + * the next ones for `duration` milliseconds, and then it emits the most recent + * value from the source. + * + * + * + * `auditTime` is similar to `throttleTime`, but emits the last value from the + * silenced time window, instead of the first value. `auditTime` emits the most + * recent value from the source Observable on the output Observable as soon as + * its internal timer becomes disabled, and ignores source values while the + * timer is enabled. Initially, the timer is disabled. As soon as the first + * source value arrives, the timer is enabled. After `duration` milliseconds (or + * the time unit determined internally by the optional `scheduler`) has passed, + * the timer is disabled, then the most recent source value is emitted on the + * output Observable, and this process repeats for the next source value. + * Optionally takes a {@link IScheduler} for managing timers. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.auditTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttleTime} + * + * @param {number} duration Time to wait before emitting the most recent source + * value, measured in milliseconds or the time unit determined internally + * by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the rate-limiting behavior. + * @return {Observable} An Observable that performs rate-limiting of + * emissions from the source Observable. + * @method auditTime + * @owner Observable + */ +export function auditTime(duration, scheduler = async) { + return audit(() => timer(duration, scheduler)); +} +//# sourceMappingURL=auditTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/auditTime.js.map b/node_modules/rxjs/_esm2015/operators/auditTime.js.map new file mode 100644 index 0000000..34699b0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/auditTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auditTime.js","sourceRoot":"","sources":["../../src/operators/auditTime.ts"],"names":[],"mappings":"OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAEnC,EAAE,KAAK,EAAE,MAAM,SAAS;OACxB,EAAE,KAAK,EAAE,MAAM,qBAAqB;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,0BAA6B,QAAgB,EAAE,SAAS,GAAe,KAAK;IAC1E,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACjD,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/buffer.js b/node_modules/rxjs/_esm2015/operators/buffer.js new file mode 100644 index 0000000..9241dab --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/buffer.js @@ -0,0 +1,68 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Buffers the source Observable values until `closingNotifier` emits. + * + * Collects values from the past as an array, and emits + * that array only when another Observable emits. + * + * + * + * Buffers the incoming Observable values until the given `closingNotifier` + * Observable emits a value, at which point it emits the buffer on the output + * Observable and starts a new buffer internally, awaiting the next time + * `closingNotifier` emits. + * + * @example On every click, emit array of most recent interval events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var interval = Rx.Observable.interval(1000); + * var buffered = interval.buffer(clicks); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link window} + * + * @param {Observable} closingNotifier An Observable that signals the + * buffer to be emitted on the output Observable. + * @return {Observable} An Observable of buffers, which are arrays of + * values. + * @method buffer + * @owner Observable + */ +export function buffer(closingNotifier) { + return function bufferOperatorFunction(source) { + return source.lift(new BufferOperator(closingNotifier)); + }; +} +class BufferOperator { + constructor(closingNotifier) { + this.closingNotifier = closingNotifier; + } + call(subscriber, source) { + return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferSubscriber extends OuterSubscriber { + constructor(destination, closingNotifier) { + super(destination); + this.buffer = []; + this.add(subscribeToResult(this, closingNotifier)); + } + _next(value) { + this.buffer.push(value); + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const buffer = this.buffer; + this.buffer = []; + this.destination.next(buffer); + } +} +//# sourceMappingURL=buffer.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/buffer.js.map b/node_modules/rxjs/_esm2015/operators/buffer.js.map new file mode 100644 index 0000000..e3d4761 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/buffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/operators/buffer.ts"],"names":[],"mappings":"OAGO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,uBAA0B,eAAgC;IACxD,MAAM,CAAC,gCAAgC,MAAqB;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAI,eAAe,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED;IAEE,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IACpD,CAAC;IAED,IAAI,CAAC,UAA2B,EAAE,MAAW;QAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAkC,eAAe;IAG/C,YAAY,WAA4B,EAAE,eAAgC;QACxE,MAAM,WAAW,CAAC,CAAC;QAHb,WAAM,GAAQ,EAAE,CAAC;QAIvB,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IACrD,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAe,EAC9B,UAAkB,EAAE,UAAkB,EACtC,QAAiC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferCount.js b/node_modules/rxjs/_esm2015/operators/bufferCount.js new file mode 100644 index 0000000..3d7f178 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferCount.js @@ -0,0 +1,129 @@ +import { Subscriber } from '../Subscriber'; +/** + * Buffers the source Observable values until the size hits the maximum + * `bufferSize` given. + * + * Collects values from the past as an array, and emits + * that array only when its size reaches `bufferSize`. + * + * + * + * Buffers a number of values from the source Observable by `bufferSize` then + * emits the buffer and clears it, and starts a new buffer each + * `startBufferEvery` values. If `startBufferEvery` is not provided or is + * `null`, then new buffers are started immediately at the start of the source + * and when each buffer closes and is emitted. + * + * @example Emit the last two click events as an array + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferCount(2); + * buffered.subscribe(x => console.log(x)); + * + * @example On every click, emit the last two click events as an array + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferCount(2, 1); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link pairwise} + * @see {@link windowCount} + * + * @param {number} bufferSize The maximum size of the buffer emitted. + * @param {number} [startBufferEvery] Interval at which to start a new buffer. + * For example if `startBufferEvery` is `2`, then a new buffer will be started + * on every other value from the source. A new buffer is started at the + * beginning of the source by default. + * @return {Observable} An Observable of arrays of buffered values. + * @method bufferCount + * @owner Observable + */ +export function bufferCount(bufferSize, startBufferEvery = null) { + return function bufferCountOperatorFunction(source) { + return source.lift(new BufferCountOperator(bufferSize, startBufferEvery)); + }; +} +class BufferCountOperator { + constructor(bufferSize, startBufferEvery) { + this.bufferSize = bufferSize; + this.startBufferEvery = startBufferEvery; + if (!startBufferEvery || bufferSize === startBufferEvery) { + this.subscriberClass = BufferCountSubscriber; + } + else { + this.subscriberClass = BufferSkipCountSubscriber; + } + } + call(subscriber, source) { + return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferCountSubscriber extends Subscriber { + constructor(destination, bufferSize) { + super(destination); + this.bufferSize = bufferSize; + this.buffer = []; + } + _next(value) { + const buffer = this.buffer; + buffer.push(value); + if (buffer.length == this.bufferSize) { + this.destination.next(buffer); + this.buffer = []; + } + } + _complete() { + const buffer = this.buffer; + if (buffer.length > 0) { + this.destination.next(buffer); + } + super._complete(); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferSkipCountSubscriber extends Subscriber { + constructor(destination, bufferSize, startBufferEvery) { + super(destination); + this.bufferSize = bufferSize; + this.startBufferEvery = startBufferEvery; + this.buffers = []; + this.count = 0; + } + _next(value) { + const { bufferSize, startBufferEvery, buffers, count } = this; + this.count++; + if (count % startBufferEvery === 0) { + buffers.push([]); + } + for (let i = buffers.length; i--;) { + const buffer = buffers[i]; + buffer.push(value); + if (buffer.length === bufferSize) { + buffers.splice(i, 1); + this.destination.next(buffer); + } + } + } + _complete() { + const { buffers, destination } = this; + while (buffers.length > 0) { + let buffer = buffers.shift(); + if (buffer.length > 0) { + destination.next(buffer); + } + } + super._complete(); + } +} +//# sourceMappingURL=bufferCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferCount.js.map b/node_modules/rxjs/_esm2015/operators/bufferCount.js.map new file mode 100644 index 0000000..6490ba2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferCount.js","sourceRoot":"","sources":["../../src/operators/bufferCount.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferTime.js b/node_modules/rxjs/_esm2015/operators/bufferTime.js new file mode 100644 index 0000000..09a49a1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferTime.js @@ -0,0 +1,190 @@ +import { async } from '../scheduler/async'; +import { Subscriber } from '../Subscriber'; +import { isScheduler } from '../util/isScheduler'; +/* tslint:enable:max-line-length */ +/** + * Buffers the source Observable values for a specific time period. + * + * Collects values from the past as an array, and emits + * those arrays periodically in time. + * + * + * + * Buffers values from the source for a specific time duration `bufferTimeSpan`. + * Unless the optional argument `bufferCreationInterval` is given, it emits and + * resets the buffer every `bufferTimeSpan` milliseconds. If + * `bufferCreationInterval` is given, this operator opens the buffer every + * `bufferCreationInterval` milliseconds and closes (emits and resets) the + * buffer every `bufferTimeSpan` milliseconds. When the optional argument + * `maxBufferSize` is specified, the buffer will be closed either after + * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements. + * + * @example Every second, emit an array of the recent click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferTime(1000); + * buffered.subscribe(x => console.log(x)); + * + * @example Every 5 seconds, emit the click events from the next 2 seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferTime(2000, 5000); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferToggle} + * @see {@link bufferWhen} + * @see {@link windowTime} + * + * @param {number} bufferTimeSpan The amount of time to fill each buffer array. + * @param {number} [bufferCreationInterval] The interval at which to start new + * buffers. + * @param {number} [maxBufferSize] The maximum buffer size. + * @param {Scheduler} [scheduler=async] The scheduler on which to schedule the + * intervals that determine buffer boundaries. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferTime + * @owner Observable + */ +export function bufferTime(bufferTimeSpan) { + let length = arguments.length; + let scheduler = async; + if (isScheduler(arguments[arguments.length - 1])) { + scheduler = arguments[arguments.length - 1]; + length--; + } + let bufferCreationInterval = null; + if (length >= 2) { + bufferCreationInterval = arguments[1]; + } + let maxBufferSize = Number.POSITIVE_INFINITY; + if (length >= 3) { + maxBufferSize = arguments[2]; + } + return function bufferTimeOperatorFunction(source) { + return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)); + }; +} +class BufferTimeOperator { + constructor(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { + this.bufferTimeSpan = bufferTimeSpan; + this.bufferCreationInterval = bufferCreationInterval; + this.maxBufferSize = maxBufferSize; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler)); + } +} +class Context { + constructor() { + this.buffer = []; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferTimeSubscriber extends Subscriber { + constructor(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { + super(destination); + this.bufferTimeSpan = bufferTimeSpan; + this.bufferCreationInterval = bufferCreationInterval; + this.maxBufferSize = maxBufferSize; + this.scheduler = scheduler; + this.contexts = []; + const context = this.openContext(); + this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0; + if (this.timespanOnly) { + const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan }; + this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); + } + else { + const closeState = { subscriber: this, context }; + const creationState = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler }; + this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState)); + this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState)); + } + } + _next(value) { + const contexts = this.contexts; + const len = contexts.length; + let filledBufferContext; + for (let i = 0; i < len; i++) { + const context = contexts[i]; + const buffer = context.buffer; + buffer.push(value); + if (buffer.length == this.maxBufferSize) { + filledBufferContext = context; + } + } + if (filledBufferContext) { + this.onBufferFull(filledBufferContext); + } + } + _error(err) { + this.contexts.length = 0; + super._error(err); + } + _complete() { + const { contexts, destination } = this; + while (contexts.length > 0) { + const context = contexts.shift(); + destination.next(context.buffer); + } + super._complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + this.contexts = null; + } + onBufferFull(context) { + this.closeContext(context); + const closeAction = context.closeAction; + closeAction.unsubscribe(); + this.remove(closeAction); + if (!this.closed && this.timespanOnly) { + context = this.openContext(); + const bufferTimeSpan = this.bufferTimeSpan; + const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan }; + this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); + } + } + openContext() { + const context = new Context(); + this.contexts.push(context); + return context; + } + closeContext(context) { + this.destination.next(context.buffer); + const contexts = this.contexts; + const spliceIndex = contexts ? contexts.indexOf(context) : -1; + if (spliceIndex >= 0) { + contexts.splice(contexts.indexOf(context), 1); + } + } +} +function dispatchBufferTimeSpanOnly(state) { + const subscriber = state.subscriber; + const prevContext = state.context; + if (prevContext) { + subscriber.closeContext(prevContext); + } + if (!subscriber.closed) { + state.context = subscriber.openContext(); + state.context.closeAction = this.schedule(state, state.bufferTimeSpan); + } +} +function dispatchBufferCreation(state) { + const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state; + const context = subscriber.openContext(); + const action = this; + if (!subscriber.closed) { + subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber, context })); + action.schedule(state, bufferCreationInterval); + } +} +function dispatchBufferClose(arg) { + const { subscriber, context } = arg; + subscriber.closeContext(context); +} +//# sourceMappingURL=bufferTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferTime.js.map b/node_modules/rxjs/_esm2015/operators/bufferTime.js.map new file mode 100644 index 0000000..1bca1e6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferTime.js","sourceRoot":"","sources":["../../src/operators/bufferTime.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferToggle.js b/node_modules/rxjs/_esm2015/operators/bufferToggle.js new file mode 100644 index 0000000..54a4165 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferToggle.js @@ -0,0 +1,144 @@ +import { Subscription } from '../Subscription'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * Buffers the source Observable values starting from an emission from + * `openings` and ending when the output of `closingSelector` emits. + * + * Collects values from the past as an array. Starts + * collecting only when `opening` emits, and calls the `closingSelector` + * function to get an Observable that tells when to close the buffer. + * + * + * + * Buffers values from the source by opening the buffer via signals from an + * Observable provided to `openings`, and closing and sending the buffers when + * a Subscribable or Promise returned by the `closingSelector` function emits. + * + * @example Every other second, emit the click events from the next 500ms + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var openings = Rx.Observable.interval(1000); + * var buffered = clicks.bufferToggle(openings, i => + * i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty() + * ); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferWhen} + * @see {@link windowToggle} + * + * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new + * buffers. + * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes + * the value emitted by the `openings` observable and returns a Subscribable or Promise, + * which, when it emits, signals that the associated buffer should be emitted + * and cleared. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferToggle + * @owner Observable + */ +export function bufferToggle(openings, closingSelector) { + return function bufferToggleOperatorFunction(source) { + return source.lift(new BufferToggleOperator(openings, closingSelector)); + }; +} +class BufferToggleOperator { + constructor(openings, closingSelector) { + this.openings = openings; + this.closingSelector = closingSelector; + } + call(subscriber, source) { + return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferToggleSubscriber extends OuterSubscriber { + constructor(destination, openings, closingSelector) { + super(destination); + this.openings = openings; + this.closingSelector = closingSelector; + this.contexts = []; + this.add(subscribeToResult(this, openings)); + } + _next(value) { + const contexts = this.contexts; + const len = contexts.length; + for (let i = 0; i < len; i++) { + contexts[i].buffer.push(value); + } + } + _error(err) { + const contexts = this.contexts; + while (contexts.length > 0) { + const context = contexts.shift(); + context.subscription.unsubscribe(); + context.buffer = null; + context.subscription = null; + } + this.contexts = null; + super._error(err); + } + _complete() { + const contexts = this.contexts; + while (contexts.length > 0) { + const context = contexts.shift(); + this.destination.next(context.buffer); + context.subscription.unsubscribe(); + context.buffer = null; + context.subscription = null; + } + this.contexts = null; + super._complete(); + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue); + } + notifyComplete(innerSub) { + this.closeBuffer(innerSub.context); + } + openBuffer(value) { + try { + const closingSelector = this.closingSelector; + const closingNotifier = closingSelector.call(this, value); + if (closingNotifier) { + this.trySubscribe(closingNotifier); + } + } + catch (err) { + this._error(err); + } + } + closeBuffer(context) { + const contexts = this.contexts; + if (contexts && context) { + const { buffer, subscription } = context; + this.destination.next(buffer); + contexts.splice(contexts.indexOf(context), 1); + this.remove(subscription); + subscription.unsubscribe(); + } + } + trySubscribe(closingNotifier) { + const contexts = this.contexts; + const buffer = []; + const subscription = new Subscription(); + const context = { buffer, subscription }; + contexts.push(context); + const innerSubscription = subscribeToResult(this, closingNotifier, context); + if (!innerSubscription || innerSubscription.closed) { + this.closeBuffer(context); + } + else { + innerSubscription.context = context; + this.add(innerSubscription); + subscription.add(innerSubscription); + } + } +} +//# sourceMappingURL=bufferToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferToggle.js.map b/node_modules/rxjs/_esm2015/operators/bufferToggle.js.map new file mode 100644 index 0000000..3ffd53d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferToggle.js","sourceRoot":"","sources":["../../src/operators/bufferToggle.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferWhen.js b/node_modules/rxjs/_esm2015/operators/bufferWhen.js new file mode 100644 index 0000000..0c9b6dc --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferWhen.js @@ -0,0 +1,114 @@ +import { Subscription } from '../Subscription'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Buffers the source Observable values, using a factory function of closing + * Observables to determine when to close, emit, and reset the buffer. + * + * Collects values from the past as an array. When it + * starts collecting values, it calls a function that returns an Observable that + * tells when to close the buffer and restart collecting. + * + * + * + * Opens a buffer immediately, then closes the buffer when the observable + * returned by calling `closingSelector` function emits a value. When it closes + * the buffer, it immediately opens a new buffer and repeats the process. + * + * @example Emit an array of the last clicks every [1-5] random seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var buffered = clicks.bufferWhen(() => + * Rx.Observable.interval(1000 + Math.random() * 4000) + * ); + * buffered.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * @see {@link bufferTime} + * @see {@link bufferToggle} + * @see {@link windowWhen} + * + * @param {function(): Observable} closingSelector A function that takes no + * arguments and returns an Observable that signals buffer closure. + * @return {Observable} An observable of arrays of buffered values. + * @method bufferWhen + * @owner Observable + */ +export function bufferWhen(closingSelector) { + return function (source) { + return source.lift(new BufferWhenOperator(closingSelector)); + }; +} +class BufferWhenOperator { + constructor(closingSelector) { + this.closingSelector = closingSelector; + } + call(subscriber, source) { + return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class BufferWhenSubscriber extends OuterSubscriber { + constructor(destination, closingSelector) { + super(destination); + this.closingSelector = closingSelector; + this.subscribing = false; + this.openBuffer(); + } + _next(value) { + this.buffer.push(value); + } + _complete() { + const buffer = this.buffer; + if (buffer) { + this.destination.next(buffer); + } + super._complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + this.buffer = null; + this.subscribing = false; + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openBuffer(); + } + notifyComplete() { + if (this.subscribing) { + this.complete(); + } + else { + this.openBuffer(); + } + } + openBuffer() { + let { closingSubscription } = this; + if (closingSubscription) { + this.remove(closingSubscription); + closingSubscription.unsubscribe(); + } + const buffer = this.buffer; + if (this.buffer) { + this.destination.next(buffer); + } + this.buffer = []; + const closingNotifier = tryCatch(this.closingSelector)(); + if (closingNotifier === errorObject) { + this.error(errorObject.e); + } + else { + closingSubscription = new Subscription(); + this.closingSubscription = closingSubscription; + this.add(closingSubscription); + this.subscribing = true; + closingSubscription.add(subscribeToResult(this, closingNotifier)); + this.subscribing = false; + } + } +} +//# sourceMappingURL=bufferWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/bufferWhen.js.map b/node_modules/rxjs/_esm2015/operators/bufferWhen.js.map new file mode 100644 index 0000000..00355da --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/bufferWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bufferWhen.js","sourceRoot":"","sources":["../../src/operators/bufferWhen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/catchError.js b/node_modules/rxjs/_esm2015/operators/catchError.js new file mode 100644 index 0000000..7a32d7e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/catchError.js @@ -0,0 +1,106 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Catches errors on the observable to be handled by returning a new observable or throwing an error. + * + * + * + * @example Continues with a different Observable when there's an error + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n == 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch(err => Observable.of('I', 'II', 'III', 'IV', 'V')) + * .subscribe(x => console.log(x)); + * // 1, 2, 3, I, II, III, IV, V + * + * @example Retries the caught source Observable again in case of error, similar to retry() operator + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n === 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch((err, caught) => caught) + * .take(30) + * .subscribe(x => console.log(x)); + * // 1, 2, 3, 1, 2, 3, ... + * + * @example Throws a new error when the source Observable throws an error + * + * Observable.of(1, 2, 3, 4, 5) + * .map(n => { + * if (n == 4) { + * throw 'four!'; + * } + * return n; + * }) + * .catch(err => { + * throw 'error in source. Details: ' + err; + * }) + * .subscribe( + * x => console.log(x), + * err => console.log(err) + * ); + * // 1, 2, 3, error in source. Details: four! + * + * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which + * is the source observable, in case you'd like to "retry" that observable by returning it again. Whatever observable + * is returned by the `selector` will be used to continue the observable chain. + * @return {Observable} An observable that originates from either the source or the observable returned by the + * catch `selector` function. + * @name catchError + */ +export function catchError(selector) { + return function catchErrorOperatorFunction(source) { + const operator = new CatchOperator(selector); + const caught = source.lift(operator); + return (operator.caught = caught); + }; +} +class CatchOperator { + constructor(selector) { + this.selector = selector; + } + call(subscriber, source) { + return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class CatchSubscriber extends OuterSubscriber { + constructor(destination, selector, caught) { + super(destination); + this.selector = selector; + this.caught = caught; + } + // NOTE: overriding `error` instead of `_error` because we don't want + // to have this flag this subscriber as `isStopped`. We can mimic the + // behavior of the RetrySubscriber (from the `retry` operator), where + // we unsubscribe from our source chain, reset our Subscriber flags, + // then subscribe to the selector result. + error(err) { + if (!this.isStopped) { + let result; + try { + result = this.selector(err, this.caught); + } + catch (err2) { + super.error(err2); + return; + } + this._unsubscribeAndRecycle(); + this.add(subscribeToResult(this, result)); + } + } +} +//# sourceMappingURL=catchError.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/catchError.js.map b/node_modules/rxjs/_esm2015/operators/catchError.js.map new file mode 100644 index 0000000..dbf7fcb --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/catchError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"catchError.js","sourceRoot":"","sources":["../../src/operators/catchError.ts"],"names":[],"mappings":"OAIO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAC7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,2BAAiC,QAAiE;IAChG,MAAM,CAAC,oCAAoC,MAAqB;QAC9D,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAuB,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED;IAGE,YAAoB,QAAqE;QAArE,aAAQ,GAAR,QAAQ,CAA6D;IACzF,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAoC,eAAe;IACjD,YAAY,WAA4B,EACpB,QAAqE,EACrE,MAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAA6D;QACrE,WAAM,GAAN,MAAM,CAAe;IAEzC,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,qEAAqE;IACrE,oEAAoE;IACpE,yCAAyC;IACzC,KAAK,CAAC,GAAQ;QACZ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,MAAW,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAE;YAAA,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACd,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM,CAAC;YACT,CAAC;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/combineAll.js b/node_modules/rxjs/_esm2015/operators/combineAll.js new file mode 100644 index 0000000..aa581e7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/combineAll.js @@ -0,0 +1,5 @@ +import { CombineLatestOperator } from '../operators/combineLatest'; +export function combineAll(project) { + return (source) => source.lift(new CombineLatestOperator(project)); +} +//# sourceMappingURL=combineAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/combineAll.js.map b/node_modules/rxjs/_esm2015/operators/combineAll.js.map new file mode 100644 index 0000000..60a319f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/combineAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineAll.js","sourceRoot":"","sources":["../../src/operators/combineAll.ts"],"names":[],"mappings":"OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B;AAIlE,2BAAiC,OAAsC;IACrE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/combineLatest.js b/node_modules/rxjs/_esm2015/operators/combineLatest.js new file mode 100644 index 0000000..a5b8d00 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/combineLatest.js @@ -0,0 +1,135 @@ +import { ArrayObservable } from '../observable/ArrayObservable'; +import { isArray } from '../util/isArray'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +const none = {}; +/* tslint:enable:max-line-length */ +/** + * Combines multiple Observables to create an Observable whose values are + * calculated from the latest values of each of its input Observables. + * + * Whenever any input Observable emits a value, it + * computes a formula using the latest values from all the inputs, then emits + * the output of that formula. + * + * + * + * `combineLatest` combines the values from this Observable with values from + * Observables passed as arguments. This is done by subscribing to each + * Observable, in order, and collecting an array of each of the most recent + * values any time any of the input Observables emits, then either taking that + * array and passing it as arguments to an optional `project` function and + * emitting the return value of that, or just emitting the array of recent + * values directly if there is no `project` function. + * + * @example Dynamically calculate the Body-Mass Index from an Observable of weight and one for height + * var weight = Rx.Observable.of(70, 72, 76, 79, 75); + * var height = Rx.Observable.of(1.76, 1.77, 1.78); + * var bmi = weight.combineLatest(height, (w, h) => w / (h * h)); + * bmi.subscribe(x => console.log('BMI is ' + x)); + * + * // With output to console: + * // BMI is 24.212293388429753 + * // BMI is 23.93948099205209 + * // BMI is 23.671253629592222 + * + * @see {@link combineAll} + * @see {@link merge} + * @see {@link withLatestFrom} + * + * @param {ObservableInput} other An input Observable to combine with the source + * Observable. More than one input Observables may be given as argument. + * @param {function} [project] An optional function to project the values from + * the combined latest values into a new value on the output Observable. + * @return {Observable} An Observable of projected values from the most recent + * values from each input Observable, or an array of the most recent values from + * each input Observable. + * @method combineLatest + * @owner Observable + */ +export function combineLatest(...observables) { + let project = null; + if (typeof observables[observables.length - 1] === 'function') { + project = observables.pop(); + } + // if the first and only other argument besides the resultSelector is an array + // assume it's been called with `combineLatest([obs1, obs2, obs3], project)` + if (observables.length === 1 && isArray(observables[0])) { + observables = observables[0].slice(); + } + return (source) => source.lift.call(new ArrayObservable([source, ...observables]), new CombineLatestOperator(project)); +} +export class CombineLatestOperator { + constructor(project) { + this.project = project; + } + call(subscriber, source) { + return source.subscribe(new CombineLatestSubscriber(subscriber, this.project)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class CombineLatestSubscriber extends OuterSubscriber { + constructor(destination, project) { + super(destination); + this.project = project; + this.active = 0; + this.values = []; + this.observables = []; + } + _next(observable) { + this.values.push(none); + this.observables.push(observable); + } + _complete() { + const observables = this.observables; + const len = observables.length; + if (len === 0) { + this.destination.complete(); + } + else { + this.active = len; + this.toRespond = len; + for (let i = 0; i < len; i++) { + const observable = observables[i]; + this.add(subscribeToResult(this, observable, observable, i)); + } + } + } + notifyComplete(unused) { + if ((this.active -= 1) === 0) { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const values = this.values; + const oldVal = values[outerIndex]; + const toRespond = !this.toRespond + ? 0 + : oldVal === none ? --this.toRespond : this.toRespond; + values[outerIndex] = innerValue; + if (toRespond === 0) { + if (this.project) { + this._tryProject(values); + } + else { + this.destination.next(values.slice()); + } + } + } + _tryProject(values) { + let result; + try { + result = this.project.apply(this, values); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } +} +//# sourceMappingURL=combineLatest.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/combineLatest.js.map b/node_modules/rxjs/_esm2015/operators/combineLatest.js.map new file mode 100644 index 0000000..a36d2a1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/combineLatest.js.map @@ -0,0 +1 @@ +{"version":3,"file":"combineLatest.js","sourceRoot":"","sources":["../../src/operators/combineLatest.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concat.js b/node_modules/rxjs/_esm2015/operators/concat.js new file mode 100644 index 0000000..5784eb6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concat.js @@ -0,0 +1,56 @@ +import { concat as concatStatic } from '../observable/concat'; +export { concat as concatStatic } from '../observable/concat'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which sequentially emits all values from every + * given input Observable after the current Observable. + * + * Concatenates multiple Observables together by + * sequentially emitting their values, one Observable after the other. + * + * + * + * Joins this Observable with multiple other Observables by subscribing to them + * one at a time, starting with the source, and merging their results into the + * output Observable. Will wait for each Observable to complete before moving + * on to the next. + * + * @example Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10 + * var timer = Rx.Observable.interval(1000).take(4); + * var sequence = Rx.Observable.range(1, 10); + * var result = timer.concat(sequence); + * result.subscribe(x => console.log(x)); + * + * // results in: + * // 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10 + * + * @example Concatenate 3 Observables + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var result = timer1.concat(timer2, timer3); + * result.subscribe(x => console.log(x)); + * + * // results in the following: + * // (Prints to console sequentially) + * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9 + * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5 + * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9 + * + * @see {@link concatAll} + * @see {@link concatMap} + * @see {@link concatMapTo} + * + * @param {ObservableInput} other An input Observable to concatenate after the source + * Observable. More than one input Observables may be given as argument. + * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each + * Observable subscription on. + * @return {Observable} All values of each passed Observable merged into a + * single Observable, in order, in serial fashion. + * @method concat + * @owner Observable + */ +export function concat(...observables) { + return (source) => source.lift.call(concatStatic(source, ...observables)); +} +//# sourceMappingURL=concat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concat.js.map b/node_modules/rxjs/_esm2015/operators/concat.js.map new file mode 100644 index 0000000..043a4e9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/operators/concat.ts"],"names":[],"mappings":"OAGO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,sBAAsB;AAE7D,SAAS,MAAM,IAAI,YAAY,QAAQ,sBAAsB,CAAC;AAW9D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,uBAA6B,GAAG,WAAqD;IACnF,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAO,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AACjG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatAll.js b/node_modules/rxjs/_esm2015/operators/concatAll.js new file mode 100644 index 0000000..07ace5b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatAll.js @@ -0,0 +1,53 @@ +import { mergeAll } from './mergeAll'; +/** + * Converts a higher-order Observable into a first-order Observable by + * concatenating the inner Observables in order. + * + * Flattens an Observable-of-Observables by putting one + * inner Observable after the other. + * + * + * + * Joins every Observable emitted by the source (a higher-order Observable), in + * a serial fashion. It subscribes to each inner Observable only after the + * previous inner Observable has completed, and merges all of their values into + * the returned observable. + * + * __Warning:__ If the source Observable emits Observables quickly and + * endlessly, and the inner Observables it emits generally complete slower than + * the source emits, you can run into memory issues as the incoming Observables + * collect in an unbounded buffer. + * + * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set + * to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4)); + * var firstOrder = higherOrder.concatAll(); + * firstOrder.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link combineAll} + * @see {@link concat} + * @see {@link concatMap} + * @see {@link concatMapTo} + * @see {@link exhaust} + * @see {@link mergeAll} + * @see {@link switch} + * @see {@link zipAll} + * + * @return {Observable} An Observable emitting values from all the inner + * Observables concatenated. + * @method concatAll + * @owner Observable + */ +export function concatAll() { + return mergeAll(1); +} +//# sourceMappingURL=concatAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatAll.js.map b/node_modules/rxjs/_esm2015/operators/concatAll.js.map new file mode 100644 index 0000000..a45ad9f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatAll.js","sourceRoot":"","sources":["../../src/operators/concatAll.ts"],"names":[],"mappings":"OACO,EAAE,QAAQ,EAAE,MAAM,YAAY;AAGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH;IACE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatMap.js b/node_modules/rxjs/_esm2015/operators/concatMap.js new file mode 100644 index 0000000..efce943 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatMap.js @@ -0,0 +1,65 @@ +import { mergeMap } from './mergeMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable, in a serialized fashion waiting for each one to complete before + * merging the next. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link concatAll}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. Each new inner Observable is + * concatenated with the previous inner Observable. + * + * __Warning:__ if source values arrive endlessly and faster than their + * corresponding inner Observables can complete, it will result in memory issues + * as inner Observables amass in an unbounded buffer waiting for their turn to + * be subscribed to. + * + * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set + * to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.concatMap(ev => Rx.Observable.interval(1000).take(4)); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link concat} + * @see {@link concatAll} + * @see {@link concatMapTo} + * @see {@link exhaustMap} + * @see {@link mergeMap} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and taking values from each projected inner + * Observable sequentially. + * @method concatMap + * @owner Observable + */ +export function concatMap(project, resultSelector) { + return mergeMap(project, resultSelector, 1); +} +//# sourceMappingURL=concatMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatMap.js.map b/node_modules/rxjs/_esm2015/operators/concatMap.js.map new file mode 100644 index 0000000..c7ffe1b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMap.js","sourceRoot":"","sources":["../../src/operators/concatMap.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY;AAOrC,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,0BAAmC,OAAyD,EACzD,cAA4F;IAC7H,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatMapTo.js b/node_modules/rxjs/_esm2015/operators/concatMapTo.js new file mode 100644 index 0000000..48a3d04 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatMapTo.js @@ -0,0 +1,62 @@ +import { concatMap } from './concatMap'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is merged multiple + * times in a serialized fashion on the output Observable. + * + * It's like {@link concatMap}, but maps each value + * always to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then flattens those resulting Observables into one + * single Observable, which is the output Observable. Each new `innerObservable` + * instance emitted on the output Observable is concatenated with the previous + * `innerObservable` instance. + * + * __Warning:__ if source values arrive endlessly and faster than their + * corresponding inner Observables can complete, it will result in memory issues + * as inner Observables amass in an unbounded buffer waiting for their turn to + * be subscribed to. + * + * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter + * set to `1`. + * + * @example For each click event, tick every second from 0 to 3, with no concurrency + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.concatMapTo(Rx.Observable.interval(1000).take(4)); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // (results are not concurrent) + * // For every click on the "document" it will emit values 0 to 3 spaced + * // on a 1000ms interval + * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 + * + * @see {@link concat} + * @see {@link concatAll} + * @see {@link concatMap} + * @see {@link mergeMapTo} + * @see {@link switchMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An observable of values merged together by joining the + * passed observable with itself, one after the other, for each value emitted + * from the source. + * @method concatMapTo + * @owner Observable + */ +export function concatMapTo(innerObservable, resultSelector) { + return concatMap(() => innerObservable, resultSelector); +} +//# sourceMappingURL=concatMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/concatMapTo.js.map b/node_modules/rxjs/_esm2015/operators/concatMapTo.js.map new file mode 100644 index 0000000..f827b97 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/concatMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"concatMapTo.js","sourceRoot":"","sources":["../../src/operators/concatMapTo.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,EAAE,MAAM,aAAa;AAMvC,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,4BACE,eAA8B,EAC9B,cAA4F;IAE5F,MAAM,CAAC,SAAS,CAAC,MAAM,eAAe,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/count.js b/node_modules/rxjs/_esm2015/operators/count.js new file mode 100644 index 0000000..b46e707 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/count.js @@ -0,0 +1,101 @@ +import { Subscriber } from '../Subscriber'; +/** + * Counts the number of emissions on the source and emits that number when the + * source completes. + * + * Tells how many values were emitted, when the source + * completes. + * + * + * + * `count` transforms an Observable that emits values into an Observable that + * emits a single value that represents the number of values emitted by the + * source Observable. If the source Observable terminates with an error, `count` + * will pass this error notification along without emitting a value first. If + * the source Observable does not terminate at all, `count` will neither emit + * a value nor terminate. This operator takes an optional `predicate` function + * as argument, in which case the output emission will represent the number of + * source values that matched `true` with the `predicate`. + * + * @example Counts how many seconds have passed before the first click happened + * var seconds = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var secondsBeforeClick = seconds.takeUntil(clicks); + * var result = secondsBeforeClick.count(); + * result.subscribe(x => console.log(x)); + * + * @example Counts how many odd numbers are there between 1 and 7 + * var numbers = Rx.Observable.range(1, 7); + * var result = numbers.count(i => i % 2 === 1); + * result.subscribe(x => console.log(x)); + * + * // Results in: + * // 4 + * + * @see {@link max} + * @see {@link min} + * @see {@link reduce} + * + * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A + * boolean function to select what values are to be counted. It is provided with + * arguments of: + * - `value`: the value from the source Observable. + * - `index`: the (zero-based) "index" of the value from the source Observable. + * - `source`: the source Observable instance itself. + * @return {Observable} An Observable of one number that represents the count as + * described above. + * @method count + * @owner Observable + */ +export function count(predicate) { + return (source) => source.lift(new CountOperator(predicate, source)); +} +class CountOperator { + constructor(predicate, source) { + this.predicate = predicate; + this.source = source; + } + call(subscriber, source) { + return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class CountSubscriber extends Subscriber { + constructor(destination, predicate, source) { + super(destination); + this.predicate = predicate; + this.source = source; + this.count = 0; + this.index = 0; + } + _next(value) { + if (this.predicate) { + this._tryPredicate(value); + } + else { + this.count++; + } + } + _tryPredicate(value) { + let result; + try { + result = this.predicate(value, this.index++, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this.count++; + } + } + _complete() { + this.destination.next(this.count); + this.destination.complete(); + } +} +//# sourceMappingURL=count.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/count.js.map b/node_modules/rxjs/_esm2015/operators/count.js.map new file mode 100644 index 0000000..40cd823 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/count.js.map @@ -0,0 +1 @@ +{"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/operators/count.ts"],"names":[],"mappings":"OAGO,EAAE,UAAU,EAAE,MAAM,eAAe;AAG1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,sBAAyB,SAAuE;IAC9F,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;IACE,YAAoB,SAAuE,EACvE,MAAsB;QADtB,cAAS,GAAT,SAAS,CAA8D;QACvE,WAAM,GAAN,MAAM,CAAgB;IAC1C,CAAC;IAED,IAAI,CAAC,UAA8B,EAAE,MAAW;QAC9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAiC,UAAU;IAIzC,YAAY,WAA6B,EACrB,SAAuE,EACvE,MAAsB;QACxC,MAAM,WAAW,CAAC,CAAC;QAFD,cAAS,GAAT,SAAS,CAA8D;QACvE,WAAM,GAAN,MAAM,CAAgB;QALlC,UAAK,GAAW,CAAC,CAAC;QAClB,UAAK,GAAW,CAAC,CAAC;IAM1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAQ;QAC5B,IAAI,MAAW,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QAED,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/debounce.js b/node_modules/rxjs/_esm2015/operators/debounce.js new file mode 100644 index 0000000..27cd9de --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/debounce.js @@ -0,0 +1,117 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Emits a value from the source Observable only after a particular time span + * determined by another Observable has passed without another source emission. + * + * It's like {@link debounceTime}, but the time span of + * emission silence is determined by a second Observable. + * + * + * + * `debounce` delays values emitted by the source Observable, but drops previous + * pending delayed emissions if a new value arrives on the source Observable. + * This operator keeps track of the most recent value from the source + * Observable, and spawns a duration Observable by calling the + * `durationSelector` function. The value is emitted only when the duration + * Observable emits a value or completes, and if no other value was emitted on + * the source Observable since the duration Observable was spawned. If a new + * value appears before the duration Observable emits, the previous value will + * be dropped and will not be emitted on the output Observable. + * + * Like {@link debounceTime}, this is a rate-limiting operator, and also a + * delay-like operator since output emissions do not necessarily occur at the + * same time as they did on the source Observable. + * + * @example Emit the most recent click after a burst of clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.debounce(() => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounceTime} + * @see {@link delayWhen} + * @see {@link throttle} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the timeout + * duration for each source value, returned as an Observable or a Promise. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified duration Observable returned by + * `durationSelector`, and may drop some values if they occur too frequently. + * @method debounce + * @owner Observable + */ +export function debounce(durationSelector) { + return (source) => source.lift(new DebounceOperator(durationSelector)); +} +class DebounceOperator { + constructor(durationSelector) { + this.durationSelector = durationSelector; + } + call(subscriber, source) { + return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DebounceSubscriber extends OuterSubscriber { + constructor(destination, durationSelector) { + super(destination); + this.durationSelector = durationSelector; + this.hasValue = false; + this.durationSubscription = null; + } + _next(value) { + try { + const result = this.durationSelector.call(this, value); + if (result) { + this._tryNext(value, result); + } + } + catch (err) { + this.destination.error(err); + } + } + _complete() { + this.emitValue(); + this.destination.complete(); + } + _tryNext(value, duration) { + let subscription = this.durationSubscription; + this.value = value; + this.hasValue = true; + if (subscription) { + subscription.unsubscribe(); + this.remove(subscription); + } + subscription = subscribeToResult(this, duration); + if (!subscription.closed) { + this.add(this.durationSubscription = subscription); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.emitValue(); + } + notifyComplete() { + this.emitValue(); + } + emitValue() { + if (this.hasValue) { + const value = this.value; + const subscription = this.durationSubscription; + if (subscription) { + this.durationSubscription = null; + subscription.unsubscribe(); + this.remove(subscription); + } + this.value = null; + this.hasValue = false; + super._next(value); + } + } +} +//# sourceMappingURL=debounce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/debounce.js.map b/node_modules/rxjs/_esm2015/operators/debounce.js.map new file mode 100644 index 0000000..8f6bb36 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/debounce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/operators/debounce.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/debounceTime.js b/node_modules/rxjs/_esm2015/operators/debounceTime.js new file mode 100644 index 0000000..fbe84af --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/debounceTime.js @@ -0,0 +1,105 @@ +import { Subscriber } from '../Subscriber'; +import { async } from '../scheduler/async'; +/** + * Emits a value from the source Observable only after a particular time span + * has passed without another source emission. + * + * It's like {@link delay}, but passes only the most + * recent value from each burst of emissions. + * + * + * + * `debounceTime` delays values emitted by the source Observable, but drops + * previous pending delayed emissions if a new value arrives on the source + * Observable. This operator keeps track of the most recent value from the + * source Observable, and emits that only when `dueTime` enough time has passed + * without any other value appearing on the source Observable. If a new value + * appears before `dueTime` silence occurs, the previous value will be dropped + * and will not be emitted on the output Observable. + * + * This is a rate-limiting operator, because it is impossible for more than one + * value to be emitted in any time window of duration `dueTime`, but it is also + * a delay-like operator since output emissions do not occur at the same time as + * they did on the source Observable. Optionally takes a {@link IScheduler} for + * managing timers. + * + * @example Emit the most recent click after a burst of clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.debounceTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounce} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttleTime} + * + * @param {number} dueTime The timeout duration in milliseconds (or the time + * unit determined internally by the optional `scheduler`) for the window of + * time required to wait for emission silence before emitting the most recent + * source value. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the timeout for each value. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified `dueTime`, and may drop some values if they occur + * too frequently. + * @method debounceTime + * @owner Observable + */ +export function debounceTime(dueTime, scheduler = async) { + return (source) => source.lift(new DebounceTimeOperator(dueTime, scheduler)); +} +class DebounceTimeOperator { + constructor(dueTime, scheduler) { + this.dueTime = dueTime; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DebounceTimeSubscriber extends Subscriber { + constructor(destination, dueTime, scheduler) { + super(destination); + this.dueTime = dueTime; + this.scheduler = scheduler; + this.debouncedSubscription = null; + this.lastValue = null; + this.hasValue = false; + } + _next(value) { + this.clearDebounce(); + this.lastValue = value; + this.hasValue = true; + this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this)); + } + _complete() { + this.debouncedNext(); + this.destination.complete(); + } + debouncedNext() { + this.clearDebounce(); + if (this.hasValue) { + this.destination.next(this.lastValue); + this.lastValue = null; + this.hasValue = false; + } + } + clearDebounce() { + const debouncedSubscription = this.debouncedSubscription; + if (debouncedSubscription !== null) { + this.remove(debouncedSubscription); + debouncedSubscription.unsubscribe(); + this.debouncedSubscription = null; + } + } +} +function dispatchNext(subscriber) { + subscriber.debouncedNext(); +} +//# sourceMappingURL=debounceTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/debounceTime.js.map b/node_modules/rxjs/_esm2015/operators/debounceTime.js.map new file mode 100644 index 0000000..6d482a7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/debounceTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debounceTime.js","sourceRoot":"","sources":["../../src/operators/debounceTime.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OAGnC,EAAE,KAAK,EAAE,MAAM,oBAAoB;AAG1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6BAAgC,OAAe,EAAE,SAAS,GAAe,KAAK;IAC5E,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED;IACE,YAAoB,OAAe,EAAU,SAAqB;QAA9C,YAAO,GAAP,OAAO,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAY;IAClE,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,qCAAwC,UAAU;IAKhD,YAAY,WAA0B,EAClB,OAAe,EACf,SAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAAY;QANjC,0BAAqB,GAAiB,IAAI,CAAC;QAC3C,cAAS,GAAM,IAAI,CAAC;QACpB,aAAQ,GAAY,KAAK,CAAC;IAMlC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACnG,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEzD,EAAE,CAAC,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACnC,qBAAqB,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED,sBAAsB,UAAuC;IAC3D,UAAU,CAAC,aAAa,EAAE,CAAC;AAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js b/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js new file mode 100644 index 0000000..1b0b255 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js @@ -0,0 +1,66 @@ +import { Subscriber } from '../Subscriber'; +/* tslint:enable:max-line-length */ +/** + * Emits a given value if the source Observable completes without emitting any + * `next` value, otherwise mirrors the source Observable. + * + * If the source Observable turns out to be empty, then + * this operator will emit a default value. + * + * + * + * `defaultIfEmpty` emits the values emitted by the source Observable or a + * specified default value if the source Observable is empty (completes without + * having emitted any `next` value). + * + * @example If no clicks happen in 5 seconds, then emit "no clicks" + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var clicksBeforeFive = clicks.takeUntil(Rx.Observable.interval(5000)); + * var result = clicksBeforeFive.defaultIfEmpty('no clicks'); + * result.subscribe(x => console.log(x)); + * + * @see {@link empty} + * @see {@link last} + * + * @param {any} [defaultValue=null] The default value used if the source + * Observable is empty. + * @return {Observable} An Observable that emits either the specified + * `defaultValue` if the source Observable emits no items, or the values emitted + * by the source Observable. + * @method defaultIfEmpty + * @owner Observable + */ +export function defaultIfEmpty(defaultValue = null) { + return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue)); +} +class DefaultIfEmptyOperator { + constructor(defaultValue) { + this.defaultValue = defaultValue; + } + call(subscriber, source) { + return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DefaultIfEmptySubscriber extends Subscriber { + constructor(destination, defaultValue) { + super(destination); + this.defaultValue = defaultValue; + this.isEmpty = true; + } + _next(value) { + this.isEmpty = false; + this.destination.next(value); + } + _complete() { + if (this.isEmpty) { + this.destination.next(this.defaultValue); + } + this.destination.complete(); + } +} +//# sourceMappingURL=defaultIfEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js.map b/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js.map new file mode 100644 index 0000000..ee93ac5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/defaultIfEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"defaultIfEmpty.js","sourceRoot":"","sources":["../../src/operators/defaultIfEmpty.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAM1C,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,+BAAqC,YAAY,GAAM,IAAI;IACzD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAAsB,CAAC;AAC/G,CAAC;AAED;IAEE,YAAoB,YAAe;QAAf,iBAAY,GAAZ,YAAY,CAAG;IACnC,CAAC;IAED,IAAI,CAAC,UAA6B,EAAE,MAAW;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,uCAA6C,UAAU;IAGrD,YAAY,WAA8B,EAAU,YAAe;QACjE,MAAM,WAAW,CAAC,CAAC;QAD+B,iBAAY,GAAZ,YAAY,CAAG;QAF3D,YAAO,GAAY,IAAI,CAAC;IAIhC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAES,SAAS;QACjB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/delay.js b/node_modules/rxjs/_esm2015/operators/delay.js new file mode 100644 index 0000000..e01e4bd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/delay.js @@ -0,0 +1,124 @@ +import { async } from '../scheduler/async'; +import { isDate } from '../util/isDate'; +import { Subscriber } from '../Subscriber'; +import { Notification } from '../Notification'; +/** + * Delays the emission of items from the source Observable by a given timeout or + * until a given Date. + * + * Time shifts each item by some specified amount of + * milliseconds. + * + * + * + * If the delay argument is a Number, this operator time shifts the source + * Observable by that amount of time expressed in milliseconds. The relative + * time intervals between the values are preserved. + * + * If the delay argument is a Date, this operator time shifts the start of the + * Observable execution until the given date occurs. + * + * @example Delay each click by one second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var delayedClicks = clicks.delay(1000); // each click emitted after 1 second + * delayedClicks.subscribe(x => console.log(x)); + * + * @example Delay all clicks until a future date happens + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var date = new Date('March 15, 2050 12:00:00'); // in the future + * var delayedClicks = clicks.delay(date); // click emitted only after that date + * delayedClicks.subscribe(x => console.log(x)); + * + * @see {@link debounceTime} + * @see {@link delayWhen} + * + * @param {number|Date} delay The delay duration in milliseconds (a `number`) or + * a `Date` until which the emission of the source items is delayed. + * @param {Scheduler} [scheduler=async] The IScheduler to use for + * managing the timers that handle the time-shift for each item. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by the specified timeout or Date. + * @method delay + * @owner Observable + */ +export function delay(delay, scheduler = async) { + const absoluteDelay = isDate(delay); + const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay); + return (source) => source.lift(new DelayOperator(delayFor, scheduler)); +} +class DelayOperator { + constructor(delay, scheduler) { + this.delay = delay; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DelaySubscriber extends Subscriber { + constructor(destination, delay, scheduler) { + super(destination); + this.delay = delay; + this.scheduler = scheduler; + this.queue = []; + this.active = false; + this.errored = false; + } + static dispatch(state) { + const source = state.source; + const queue = source.queue; + const scheduler = state.scheduler; + const destination = state.destination; + while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) { + queue.shift().notification.observe(destination); + } + if (queue.length > 0) { + const delay = Math.max(0, queue[0].time - scheduler.now()); + this.schedule(state, delay); + } + else { + this.unsubscribe(); + source.active = false; + } + } + _schedule(scheduler) { + this.active = true; + this.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, { + source: this, destination: this.destination, scheduler: scheduler + })); + } + scheduleNotification(notification) { + if (this.errored === true) { + return; + } + const scheduler = this.scheduler; + const message = new DelayMessage(scheduler.now() + this.delay, notification); + this.queue.push(message); + if (this.active === false) { + this._schedule(scheduler); + } + } + _next(value) { + this.scheduleNotification(Notification.createNext(value)); + } + _error(err) { + this.errored = true; + this.queue = []; + this.destination.error(err); + } + _complete() { + this.scheduleNotification(Notification.createComplete()); + } +} +class DelayMessage { + constructor(time, notification) { + this.time = time; + this.notification = notification; + } +} +//# sourceMappingURL=delay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/delay.js.map b/node_modules/rxjs/_esm2015/operators/delay.js.map new file mode 100644 index 0000000..bcd4e78 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/delay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delay.js","sourceRoot":"","sources":["../../src/operators/delay.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/delayWhen.js b/node_modules/rxjs/_esm2015/operators/delayWhen.js new file mode 100644 index 0000000..d2b97c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/delayWhen.js @@ -0,0 +1,178 @@ +import { Subscriber } from '../Subscriber'; +import { Observable } from '../Observable'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Delays the emission of items from the source Observable by a given time span + * determined by the emissions of another Observable. + * + * It's like {@link delay}, but the time span of the + * delay duration is determined by a second Observable. + * + * + * + * `delayWhen` time shifts each emitted value from the source Observable by a + * time span determined by another Observable. When the source emits a value, + * the `delayDurationSelector` function is called with the source value as + * argument, and should return an Observable, called the "duration" Observable. + * The source value is emitted on the output Observable only when the duration + * Observable emits a value or completes. + * + * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which + * is an Observable. When `subscriptionDelay` emits its first value or + * completes, the source Observable is subscribed to and starts behaving like + * described in the previous paragraph. If `subscriptionDelay` is not provided, + * `delayWhen` will subscribe to the source Observable as soon as the output + * Observable is subscribed. + * + * @example Delay each click by a random amount of time, between 0 and 5 seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var delayedClicks = clicks.delayWhen(event => + * Rx.Observable.interval(Math.random() * 5000) + * ); + * delayedClicks.subscribe(x => console.log(x)); + * + * @see {@link debounce} + * @see {@link delay} + * + * @param {function(value: T): Observable} delayDurationSelector A function that + * returns an Observable for each value emitted by the source Observable, which + * is then used to delay the emission of that item on the output Observable + * until the Observable returned from this function emits a value. + * @param {Observable} subscriptionDelay An Observable that triggers the + * subscription to the source Observable once it emits any value. + * @return {Observable} An Observable that delays the emissions of the source + * Observable by an amount of time specified by the Observable returned by + * `delayDurationSelector`. + * @method delayWhen + * @owner Observable + */ +export function delayWhen(delayDurationSelector, subscriptionDelay) { + if (subscriptionDelay) { + return (source) => new SubscriptionDelayObservable(source, subscriptionDelay) + .lift(new DelayWhenOperator(delayDurationSelector)); + } + return (source) => source.lift(new DelayWhenOperator(delayDurationSelector)); +} +class DelayWhenOperator { + constructor(delayDurationSelector) { + this.delayDurationSelector = delayDurationSelector; + } + call(subscriber, source) { + return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DelayWhenSubscriber extends OuterSubscriber { + constructor(destination, delayDurationSelector) { + super(destination); + this.delayDurationSelector = delayDurationSelector; + this.completed = false; + this.delayNotifierSubscriptions = []; + this.values = []; + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(outerValue); + this.removeSubscription(innerSub); + this.tryComplete(); + } + notifyError(error, innerSub) { + this._error(error); + } + notifyComplete(innerSub) { + const value = this.removeSubscription(innerSub); + if (value) { + this.destination.next(value); + } + this.tryComplete(); + } + _next(value) { + try { + const delayNotifier = this.delayDurationSelector(value); + if (delayNotifier) { + this.tryDelay(delayNotifier, value); + } + } + catch (err) { + this.destination.error(err); + } + } + _complete() { + this.completed = true; + this.tryComplete(); + } + removeSubscription(subscription) { + subscription.unsubscribe(); + const subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription); + let value = null; + if (subscriptionIdx !== -1) { + value = this.values[subscriptionIdx]; + this.delayNotifierSubscriptions.splice(subscriptionIdx, 1); + this.values.splice(subscriptionIdx, 1); + } + return value; + } + tryDelay(delayNotifier, value) { + const notifierSubscription = subscribeToResult(this, delayNotifier, value); + if (notifierSubscription && !notifierSubscription.closed) { + this.add(notifierSubscription); + this.delayNotifierSubscriptions.push(notifierSubscription); + } + this.values.push(value); + } + tryComplete() { + if (this.completed && this.delayNotifierSubscriptions.length === 0) { + this.destination.complete(); + } + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SubscriptionDelayObservable extends Observable { + constructor(/** @deprecated internal use only */ source, subscriptionDelay) { + super(); + this.source = source; + this.subscriptionDelay = subscriptionDelay; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SubscriptionDelaySubscriber extends Subscriber { + constructor(parent, source) { + super(); + this.parent = parent; + this.source = source; + this.sourceSubscribed = false; + } + _next(unused) { + this.subscribeToSource(); + } + _error(err) { + this.unsubscribe(); + this.parent.error(err); + } + _complete() { + this.subscribeToSource(); + } + subscribeToSource() { + if (!this.sourceSubscribed) { + this.sourceSubscribed = true; + this.unsubscribe(); + this.source.subscribe(this.parent); + } + } +} +//# sourceMappingURL=delayWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/delayWhen.js.map b/node_modules/rxjs/_esm2015/operators/delayWhen.js.map new file mode 100644 index 0000000..0b57e8a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/delayWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delayWhen.js","sourceRoot":"","sources":["../../src/operators/delayWhen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/dematerialize.js b/node_modules/rxjs/_esm2015/operators/dematerialize.js new file mode 100644 index 0000000..fa1dcd4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/dematerialize.js @@ -0,0 +1,65 @@ +import { Subscriber } from '../Subscriber'; +/** + * Converts an Observable of {@link Notification} objects into the emissions + * that they represent. + * + * Unwraps {@link Notification} objects as actual `next`, + * `error` and `complete` emissions. The opposite of {@link materialize}. + * + * + * + * `dematerialize` is assumed to operate an Observable that only emits + * {@link Notification} objects as `next` emissions, and does not emit any + * `error`. Such Observable is the output of a `materialize` operation. Those + * notifications are then unwrapped using the metadata they contain, and emitted + * as `next`, `error`, and `complete` on the output Observable. + * + * Use this operator in conjunction with {@link materialize}. + * + * @example Convert an Observable of Notifications to an actual Observable + * var notifA = new Rx.Notification('N', 'A'); + * var notifB = new Rx.Notification('N', 'B'); + * var notifE = new Rx.Notification('E', void 0, + * new TypeError('x.toUpperCase is not a function') + * ); + * var materialized = Rx.Observable.of(notifA, notifB, notifE); + * var upperCase = materialized.dematerialize(); + * upperCase.subscribe(x => console.log(x), e => console.error(e)); + * + * // Results in: + * // A + * // B + * // TypeError: x.toUpperCase is not a function + * + * @see {@link Notification} + * @see {@link materialize} + * + * @return {Observable} An Observable that emits items and notifications + * embedded in Notification objects emitted by the source Observable. + * @method dematerialize + * @owner Observable + */ +export function dematerialize() { + return function dematerializeOperatorFunction(source) { + return source.lift(new DeMaterializeOperator()); + }; +} +class DeMaterializeOperator { + call(subscriber, source) { + return source.subscribe(new DeMaterializeSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DeMaterializeSubscriber extends Subscriber { + constructor(destination) { + super(destination); + } + _next(value) { + value.observe(this.destination); + } +} +//# sourceMappingURL=dematerialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/dematerialize.js.map b/node_modules/rxjs/_esm2015/operators/dematerialize.js.map new file mode 100644 index 0000000..286b1ab --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/dematerialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dematerialize.js","sourceRoot":"","sources":["../../src/operators/dematerialize.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;IACE,MAAM,CAAC,uCAAuC,MAAmC;QAC/E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,IAAI,CAAC,UAA2B,EAAE,MAAW;QAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,sCAAmE,UAAU;IAC3E,YAAY,WAA4B;QACtC,MAAM,WAAW,CAAC,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinct.js b/node_modules/rxjs/_esm2015/operators/distinct.js new file mode 100644 index 0000000..f54b53b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinct.js @@ -0,0 +1,109 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { Set } from '../util/Set'; +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items. + * + * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will + * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the + * source observable directly with an equality check against previous values. + * + * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking. + * + * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the + * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct` + * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so + * that the internal `Set` can be "flushed", basically clearing it of values. + * + * @example A simple example with numbers + * Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1) + * .distinct() + * .subscribe(x => console.log(x)); // 1, 2, 3, 4 + * + * @example An example using a keySelector function + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}) + * .distinct((p: Person) => p.name) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * + * @see {@link distinctUntilChanged} + * @see {@link distinctUntilKeyChanged} + * + * @param {function} [keySelector] Optional function to select which value you want to check as distinct. + * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator. + * @return {Observable} An Observable that emits items from the source Observable with distinct values. + * @method distinct + * @owner Observable + */ +export function distinct(keySelector, flushes) { + return (source) => source.lift(new DistinctOperator(keySelector, flushes)); +} +class DistinctOperator { + constructor(keySelector, flushes) { + this.keySelector = keySelector; + this.flushes = flushes; + } + call(subscriber, source) { + return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class DistinctSubscriber extends OuterSubscriber { + constructor(destination, keySelector, flushes) { + super(destination); + this.keySelector = keySelector; + this.values = new Set(); + if (flushes) { + this.add(subscribeToResult(this, flushes)); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.values.clear(); + } + notifyError(error, innerSub) { + this._error(error); + } + _next(value) { + if (this.keySelector) { + this._useKeySelector(value); + } + else { + this._finalizeNext(value, value); + } + } + _useKeySelector(value) { + let key; + const { destination } = this; + try { + key = this.keySelector(value); + } + catch (err) { + destination.error(err); + return; + } + this._finalizeNext(key, value); + } + _finalizeNext(key, value) { + const { values } = this; + if (!values.has(key)) { + values.add(key); + this.destination.next(value); + } + } +} +//# sourceMappingURL=distinct.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinct.js.map b/node_modules/rxjs/_esm2015/operators/distinct.js.map new file mode 100644 index 0000000..8dbba1e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinct.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinct.js","sourceRoot":"","sources":["../../src/operators/distinct.ts"],"names":[],"mappings":"OAIO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAQ,GAAG,EAAE,MAAM,aAAa;AAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,yBAA+B,WAA6B,EAC7B,OAAyB;IACtD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;IACE,YAAoB,WAA4B,EAAU,OAAwB;QAA9D,gBAAW,GAAX,WAAW,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAiB;IAClF,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,wCAA8C,eAAe;IAG3D,YAAY,WAA0B,EAAU,WAA4B,EAAE,OAAwB;QACpG,MAAM,WAAW,CAAC,CAAC;QAD2B,gBAAW,GAAX,WAAW,CAAiB;QAFpE,WAAM,GAAY,IAAI,GAAG,EAAK,CAAC;QAKrC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,QAA+B;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAQ;QAC9B,IAAI,GAAM,CAAC;QACX,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,aAAa,CAAC,GAAQ,EAAE,KAAQ;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AAEH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js b/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js new file mode 100644 index 0000000..370ed58 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js @@ -0,0 +1,98 @@ +import { Subscriber } from '../Subscriber'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item. + * + * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted. + * + * If a comparator function is not provided, an equality check is used by default. + * + * @example A simple example with numbers + * Observable.of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4) + * .distinctUntilChanged() + * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4 + * + * @example An example using a compare function + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}) + * { age: 6, name: 'Foo'}) + * .distinctUntilChanged((p: Person, q: Person) => p.name === q.name) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo' } + * + * @see {@link distinct} + * @see {@link distinctUntilKeyChanged} + * + * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source. + * @return {Observable} An Observable that emits items from the source Observable with distinct values. + * @method distinctUntilChanged + * @owner Observable + */ +export function distinctUntilChanged(compare, keySelector) { + return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector)); +} +class DistinctUntilChangedOperator { + constructor(compare, keySelector) { + this.compare = compare; + this.keySelector = keySelector; + } + call(subscriber, source) { + return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DistinctUntilChangedSubscriber extends Subscriber { + constructor(destination, compare, keySelector) { + super(destination); + this.keySelector = keySelector; + this.hasKey = false; + if (typeof compare === 'function') { + this.compare = compare; + } + } + compare(x, y) { + return x === y; + } + _next(value) { + const keySelector = this.keySelector; + let key = value; + if (keySelector) { + key = tryCatch(this.keySelector)(value); + if (key === errorObject) { + return this.destination.error(errorObject.e); + } + } + let result = false; + if (this.hasKey) { + result = tryCatch(this.compare)(this.key, key); + if (result === errorObject) { + return this.destination.error(errorObject.e); + } + } + else { + this.hasKey = true; + } + if (Boolean(result) === false) { + this.key = key; + this.destination.next(value); + } + } +} +//# sourceMappingURL=distinctUntilChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js.map b/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js.map new file mode 100644 index 0000000..e18f740 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinctUntilChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilChanged.js","sourceRoot":"","sources":["../../src/operators/distinctUntilChanged.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,QAAQ,EAAE,MAAM,kBAAkB;OACpC,EAAE,WAAW,EAAE,MAAM,qBAAqB;AAQjD,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qCAA2C,OAAiC,EAAE,WAAyB;IACrG,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAO,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC9G,CAAC;AAED;IACE,YAAoB,OAAgC,EAChC,WAAwB;QADxB,YAAO,GAAP,OAAO,CAAyB;QAChC,gBAAW,GAAX,WAAW,CAAa;IAC5C,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,8BAA8B,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,6CAAmD,UAAU;IAI3D,YAAY,WAA0B,EAC1B,OAAgC,EACxB,WAAwB;QAC1C,MAAM,WAAW,CAAC,CAAC;QADD,gBAAW,GAAX,WAAW,CAAa;QAJpC,WAAM,GAAY,KAAK,CAAC;QAM9B,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,CAAM,EAAE,CAAM;QAC5B,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAES,KAAK,CAAC,KAAQ;QAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,GAAG,GAAQ,KAAK,CAAC;QAErB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;YACxC,EAAE,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,GAAQ,KAAK,CAAC;QAExB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/C,EAAE,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js b/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js new file mode 100644 index 0000000..8057249 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js @@ -0,0 +1,63 @@ +import { distinctUntilChanged } from './distinctUntilChanged'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item, + * using a property accessed by using the key provided to check if the two items are distinct. + * + * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted. + * + * If a comparator function is not provided, an equality check is used by default. + * + * @example An example comparing the name of persons + * + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo'}, + * { age: 6, name: 'Foo'}) + * .distinctUntilKeyChanged('name') + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo' } + * + * @example An example comparing the first letters of the name + * + * interface Person { + * age: number, + * name: string + * } + * + * Observable.of( + * { age: 4, name: 'Foo1'}, + * { age: 7, name: 'Bar'}, + * { age: 5, name: 'Foo2'}, + * { age: 6, name: 'Foo3'}) + * .distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)) + * .subscribe(x => console.log(x)); + * + * // displays: + * // { age: 4, name: 'Foo1' } + * // { age: 7, name: 'Bar' } + * // { age: 5, name: 'Foo2' } + * + * @see {@link distinct} + * @see {@link distinctUntilChanged} + * + * @param {string} key String key for object property lookup on each item. + * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source. + * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified. + * @method distinctUntilKeyChanged + * @owner Observable + */ +export function distinctUntilKeyChanged(key, compare) { + return distinctUntilChanged((x, y) => compare ? compare(x[key], y[key]) : x[key] === y[key]); +} +//# sourceMappingURL=distinctUntilKeyChanged.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js.map b/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js.map new file mode 100644 index 0000000..9fd0b3b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/distinctUntilKeyChanged.js.map @@ -0,0 +1 @@ +{"version":3,"file":"distinctUntilKeyChanged.js","sourceRoot":"","sources":["../../src/operators/distinctUntilKeyChanged.ts"],"names":[],"mappings":"OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB;AAM7D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,wCAA2C,GAAW,EAAE,OAAiC;IACvF,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAI,EAAE,CAAI,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/elementAt.js b/node_modules/rxjs/_esm2015/operators/elementAt.js new file mode 100644 index 0000000..968333e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/elementAt.js @@ -0,0 +1,90 @@ +import { Subscriber } from '../Subscriber'; +import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError'; +/** + * Emits the single value at the specified `index` in a sequence of emissions + * from the source Observable. + * + * Emits only the i-th value, then completes. + * + * + * + * `elementAt` returns an Observable that emits the item at the specified + * `index` in the source Observable, or a default value if that `index` is out + * of range and the `default` argument is provided. If the `default` argument is + * not given and the `index` is out of range, the output Observable will emit an + * `ArgumentOutOfRangeError` error. + * + * @example Emit only the third click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.elementAt(2); + * result.subscribe(x => console.log(x)); + * + * // Results in: + * // click 1 = nothing + * // click 2 = nothing + * // click 3 = MouseEvent object logged to console + * + * @see {@link first} + * @see {@link last} + * @see {@link skip} + * @see {@link single} + * @see {@link take} + * + * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the + * Observable has completed before emitting the i-th `next` notification. + * + * @param {number} index Is the number `i` for the i-th source emission that has + * happened since the subscription, starting from the number `0`. + * @param {T} [defaultValue] The default value returned for missing indices. + * @return {Observable} An Observable that emits a single item, if it is found. + * Otherwise, will emit the default value if given. If not, then emits an error. + * @method elementAt + * @owner Observable + */ +export function elementAt(index, defaultValue) { + return (source) => source.lift(new ElementAtOperator(index, defaultValue)); +} +class ElementAtOperator { + constructor(index, defaultValue) { + this.index = index; + this.defaultValue = defaultValue; + if (index < 0) { + throw new ArgumentOutOfRangeError; + } + } + call(subscriber, source) { + return source.subscribe(new ElementAtSubscriber(subscriber, this.index, this.defaultValue)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class ElementAtSubscriber extends Subscriber { + constructor(destination, index, defaultValue) { + super(destination); + this.index = index; + this.defaultValue = defaultValue; + } + _next(x) { + if (this.index-- === 0) { + this.destination.next(x); + this.destination.complete(); + } + } + _complete() { + const destination = this.destination; + if (this.index >= 0) { + if (typeof this.defaultValue !== 'undefined') { + destination.next(this.defaultValue); + } + else { + destination.error(new ArgumentOutOfRangeError); + } + } + destination.complete(); + } +} +//# sourceMappingURL=elementAt.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/elementAt.js.map b/node_modules/rxjs/_esm2015/operators/elementAt.js.map new file mode 100644 index 0000000..db04cdf --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/elementAt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"elementAt.js","sourceRoot":"","sources":["../../src/operators/elementAt.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,uBAAuB,EAAE,MAAM,iCAAiC;AAKzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,0BAA6B,KAAa,EAAE,YAAgB;IAC1D,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED;IAEE,YAAoB,KAAa,EAAU,YAAgB;QAAvC,UAAK,GAAL,KAAK,CAAQ;QAAU,iBAAY,GAAZ,YAAY,CAAI;QACzD,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,uBAAuB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAqC,UAAU;IAE7C,YAAY,WAA0B,EAAU,KAAa,EAAU,YAAgB;QACrF,MAAM,WAAW,CAAC,CAAC;QAD2B,UAAK,GAAL,KAAK,CAAQ;QAAU,iBAAY,GAAZ,YAAY,CAAI;IAEvF,CAAC;IAES,KAAK,CAAC,CAAI;QAClB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC;gBAC7C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,WAAW,CAAC,KAAK,CAAC,IAAI,uBAAuB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/every.js b/node_modules/rxjs/_esm2015/operators/every.js new file mode 100644 index 0000000..c05243d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/every.js @@ -0,0 +1,64 @@ +import { Subscriber } from '../Subscriber'; +/** + * Returns an Observable that emits whether or not every item of the source satisfies the condition specified. + * + * @example A simple example emitting true if all elements are less than 5, false otherwise + * Observable.of(1, 2, 3, 4, 5, 6) + * .every(x => x < 5) + * .subscribe(x => console.log(x)); // -> false + * + * @param {function} predicate A function for determining if an item meets a specified condition. + * @param {any} [thisArg] Optional object to use for `this` in the callback. + * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified. + * @method every + * @owner Observable + */ +export function every(predicate, thisArg) { + return (source) => source.lift(new EveryOperator(predicate, thisArg, source)); +} +class EveryOperator { + constructor(predicate, thisArg, source) { + this.predicate = predicate; + this.thisArg = thisArg; + this.source = source; + } + call(observer, source) { + return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class EverySubscriber extends Subscriber { + constructor(destination, predicate, thisArg, source) { + super(destination); + this.predicate = predicate; + this.thisArg = thisArg; + this.source = source; + this.index = 0; + this.thisArg = thisArg || this; + } + notifyComplete(everyValueMatch) { + this.destination.next(everyValueMatch); + this.destination.complete(); + } + _next(value) { + let result = false; + try { + result = this.predicate.call(this.thisArg, value, this.index++, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (!result) { + this.notifyComplete(false); + } + } + _complete() { + this.notifyComplete(true); + } +} +//# sourceMappingURL=every.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/every.js.map b/node_modules/rxjs/_esm2015/operators/every.js.map new file mode 100644 index 0000000..f68f4ec --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/every.js.map @@ -0,0 +1 @@ +{"version":3,"file":"every.js","sourceRoot":"","sources":["../../src/operators/every.ts"],"names":[],"mappings":"OAGO,EAAE,UAAU,EAAE,MAAM,eAAe;AAG1C;;;;;;;;;;;;;GAaG;AACH,sBAAyB,SAAsE,EACtE,OAAa;IACpC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;IACE,YAAoB,SAAsE,EACtE,OAAa,EACb,MAAsB;QAFtB,cAAS,GAAT,SAAS,CAA6D;QACtE,YAAO,GAAP,OAAO,CAAM;QACb,WAAM,GAAN,MAAM,CAAgB;IAC1C,CAAC;IAED,IAAI,CAAC,QAA6B,EAAE,MAAW;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAiC,UAAU;IAGzC,YAAY,WAA8B,EACtB,SAAsE,EACtE,OAAY,EACZ,MAAsB;QACxC,MAAM,WAAW,CAAC,CAAC;QAHD,cAAS,GAAT,SAAS,CAA6D;QACtE,YAAO,GAAP,OAAO,CAAK;QACZ,WAAM,GAAN,MAAM,CAAgB;QALlC,UAAK,GAAW,CAAC,CAAC;QAOxB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;IAEO,cAAc,CAAC,eAAwB;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QAED,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/exhaust.js b/node_modules/rxjs/_esm2015/operators/exhaust.js new file mode 100644 index 0000000..5b40330 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/exhaust.js @@ -0,0 +1,77 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Converts a higher-order Observable into a first-order Observable by dropping + * inner Observables while the previous inner Observable has not yet completed. + * + * Flattens an Observable-of-Observables by dropping the + * next inner Observables while the current inner is still executing. + * + * + * + * `exhaust` subscribes to an Observable that emits Observables, also known as a + * higher-order Observable. Each time it observes one of these emitted inner + * Observables, the output Observable begins emitting the items emitted by that + * inner Observable. So far, it behaves like {@link mergeAll}. However, + * `exhaust` ignores every new inner Observable if the previous Observable has + * not yet completed. Once that one completes, it will accept and flatten the + * next inner Observable and repeat this process. + * + * @example Run a finite timer for each click, only if there is no currently active timer + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(5)); + * var result = higherOrder.exhaust(); + * result.subscribe(x => console.log(x)); + * + * @see {@link combineAll} + * @see {@link concatAll} + * @see {@link switch} + * @see {@link mergeAll} + * @see {@link exhaustMap} + * @see {@link zipAll} + * + * @return {Observable} An Observable that takes a source of Observables and propagates the first observable + * exclusively until it completes before subscribing to the next. + * @method exhaust + * @owner Observable + */ +export function exhaust() { + return (source) => source.lift(new SwitchFirstOperator()); +} +class SwitchFirstOperator { + call(subscriber, source) { + return source.subscribe(new SwitchFirstSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SwitchFirstSubscriber extends OuterSubscriber { + constructor(destination) { + super(destination); + this.hasCompleted = false; + this.hasSubscription = false; + } + _next(value) { + if (!this.hasSubscription) { + this.hasSubscription = true; + this.add(subscribeToResult(this, value)); + } + } + _complete() { + this.hasCompleted = true; + if (!this.hasSubscription) { + this.destination.complete(); + } + } + notifyComplete(innerSub) { + this.remove(innerSub); + this.hasSubscription = false; + if (this.hasCompleted) { + this.destination.complete(); + } + } +} +//# sourceMappingURL=exhaust.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/exhaust.js.map b/node_modules/rxjs/_esm2015/operators/exhaust.js.map new file mode 100644 index 0000000..5adec09 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/exhaust.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaust.js","sourceRoot":"","sources":["../../src/operators/exhaust.ts"],"names":[],"mappings":"OAIO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAC7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IACE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAK,CAAC,CAAC;AAC9E,CAAC;AAED;IACE,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,oCAAuC,eAAe;IAIpD,YAAY,WAA0B;QACpC,MAAM,WAAW,CAAC,CAAC;QAJb,iBAAY,GAAY,KAAK,CAAC;QAC9B,oBAAe,GAAY,KAAK,CAAC;IAIzC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,QAAsB;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/exhaustMap.js b/node_modules/rxjs/_esm2015/operators/exhaustMap.js new file mode 100644 index 0000000..5cc403b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/exhaustMap.js @@ -0,0 +1,128 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable only if the previous projected Observable has completed. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link exhaust}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. When it projects a source value to + * an Observable, the output Observable begins emitting the items emitted by + * that projected Observable. However, `exhaustMap` ignores every new projected + * Observable if the previous projected Observable has not yet completed. Once + * that one completes, it will accept and flatten the next projected Observable + * and repeat this process. + * + * @example Run a finite timer for each click, only if there is no currently active timer + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.exhaustMap((ev) => Rx.Observable.interval(1000).take(5)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMap} + * @see {@link exhaust} + * @see {@link mergeMap} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable containing projected Observables + * of each item of the source, ignoring projected Observables that start before + * their preceding Observable has completed. + * @method exhaustMap + * @owner Observable + */ +export function exhaustMap(project, resultSelector) { + return (source) => source.lift(new SwitchFirstMapOperator(project, resultSelector)); +} +class SwitchFirstMapOperator { + constructor(project, resultSelector) { + this.project = project; + this.resultSelector = resultSelector; + } + call(subscriber, source) { + return source.subscribe(new SwitchFirstMapSubscriber(subscriber, this.project, this.resultSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SwitchFirstMapSubscriber extends OuterSubscriber { + constructor(destination, project, resultSelector) { + super(destination); + this.project = project; + this.resultSelector = resultSelector; + this.hasSubscription = false; + this.hasCompleted = false; + this.index = 0; + } + _next(value) { + if (!this.hasSubscription) { + this.tryNext(value); + } + } + tryNext(value) { + const index = this.index++; + const destination = this.destination; + try { + const result = this.project(value, index); + this.hasSubscription = true; + this.add(subscribeToResult(this, result, value, index)); + } + catch (err) { + destination.error(err); + } + } + _complete() { + this.hasCompleted = true; + if (!this.hasSubscription) { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const { resultSelector, destination } = this; + if (resultSelector) { + this.trySelectResult(outerValue, innerValue, outerIndex, innerIndex); + } + else { + destination.next(innerValue); + } + } + trySelectResult(outerValue, innerValue, outerIndex, innerIndex) { + const { resultSelector, destination } = this; + try { + const result = resultSelector(outerValue, innerValue, outerIndex, innerIndex); + destination.next(result); + } + catch (err) { + destination.error(err); + } + } + notifyError(err) { + this.destination.error(err); + } + notifyComplete(innerSub) { + this.remove(innerSub); + this.hasSubscription = false; + if (this.hasCompleted) { + this.destination.complete(); + } + } +} +//# sourceMappingURL=exhaustMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/exhaustMap.js.map b/node_modules/rxjs/_esm2015/operators/exhaustMap.js.map new file mode 100644 index 0000000..5f1c28f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/exhaustMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../../src/operators/exhaustMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/expand.js b/node_modules/rxjs/_esm2015/operators/expand.js new file mode 100644 index 0000000..1dd88fd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/expand.js @@ -0,0 +1,137 @@ +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Recursively projects each source value to an Observable which is merged in + * the output Observable. + * + * It's similar to {@link mergeMap}, but applies the + * projection function to every source value as well as every output value. + * It's recursive. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an Observable, and then merging those resulting Observables and + * emitting the results of this merger. *Expand* will re-emit on the output + * Observable every source value. Then, each output value is given to the + * `project` function which returns an inner Observable to be merged on the + * output Observable. Those output values resulting from the projection are also + * given to the `project` function to produce new output values. This is how + * *expand* behaves recursively. + * + * @example Start emitting the powers of two on every click, at most 10 of them + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var powersOfTwo = clicks + * .mapTo(1) + * .expand(x => Rx.Observable.of(2 * x).delay(1000)) + * .take(10); + * powersOfTwo.subscribe(x => console.log(x)); + * + * @see {@link mergeMap} + * @see {@link mergeScan} + * + * @param {function(value: T, index: number) => Observable} project A function + * that, when applied to an item emitted by the source or the output Observable, + * returns an Observable. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @param {Scheduler} [scheduler=null] The IScheduler to use for subscribing to + * each projected inner Observable. + * @return {Observable} An Observable that emits the source values and also + * result of applying the projection function to each value emitted on the + * output Observable and and merging the results of the Observables obtained + * from this transformation. + * @method expand + * @owner Observable + */ +export function expand(project, concurrent = Number.POSITIVE_INFINITY, scheduler = undefined) { + concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent; + return (source) => source.lift(new ExpandOperator(project, concurrent, scheduler)); +} +export class ExpandOperator { + constructor(project, concurrent, scheduler) { + this.project = project; + this.concurrent = concurrent; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class ExpandSubscriber extends OuterSubscriber { + constructor(destination, project, concurrent, scheduler) { + super(destination); + this.project = project; + this.concurrent = concurrent; + this.scheduler = scheduler; + this.index = 0; + this.active = 0; + this.hasCompleted = false; + if (concurrent < Number.POSITIVE_INFINITY) { + this.buffer = []; + } + } + static dispatch(arg) { + const { subscriber, result, value, index } = arg; + subscriber.subscribeToProjection(result, value, index); + } + _next(value) { + const destination = this.destination; + if (destination.closed) { + this._complete(); + return; + } + const index = this.index++; + if (this.active < this.concurrent) { + destination.next(value); + let result = tryCatch(this.project)(value, index); + if (result === errorObject) { + destination.error(errorObject.e); + } + else if (!this.scheduler) { + this.subscribeToProjection(result, value, index); + } + else { + const state = { subscriber: this, result, value, index }; + this.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state)); + } + } + else { + this.buffer.push(value); + } + } + subscribeToProjection(result, value, index) { + this.active++; + this.add(subscribeToResult(this, result, value, index)); + } + _complete() { + this.hasCompleted = true; + if (this.hasCompleted && this.active === 0) { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this._next(innerValue); + } + notifyComplete(innerSub) { + const buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer && buffer.length > 0) { + this._next(buffer.shift()); + } + if (this.hasCompleted && this.active === 0) { + this.destination.complete(); + } + } +} +//# sourceMappingURL=expand.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/expand.js.map b/node_modules/rxjs/_esm2015/operators/expand.js.map new file mode 100644 index 0000000..4940e9c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/expand.js.map @@ -0,0 +1 @@ +{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/operators/expand.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/filter.js b/node_modules/rxjs/_esm2015/operators/filter.js new file mode 100644 index 0000000..e4ac7e6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/filter.js @@ -0,0 +1,84 @@ +import { Subscriber } from '../Subscriber'; +/* tslint:enable:max-line-length */ +/** + * Filter items emitted by the source Observable by only emitting those that + * satisfy a specified predicate. + * + * Like + * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter), + * it only emits a value from the source if it passes a criterion function. + * + * + * + * Similar to the well-known `Array.prototype.filter` method, this operator + * takes values from the source Observable, passes them through a `predicate` + * function and only emits those values that yielded `true`. + * + * @example Emit only click events whose target was a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV'); + * clicksOnDivs.subscribe(x => console.log(x)); + * + * @see {@link distinct} + * @see {@link distinctUntilChanged} + * @see {@link distinctUntilKeyChanged} + * @see {@link ignoreElements} + * @see {@link partition} + * @see {@link skip} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates each value emitted by the source Observable. If it returns `true`, + * the value is emitted, if `false` the value is not passed to the output + * Observable. The `index` parameter is the number `i` for the i-th source + * emission that has happened since the subscription, starting from the number + * `0`. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of values from the source that were + * allowed by the `predicate` function. + * @method filter + * @owner Observable + */ +export function filter(predicate, thisArg) { + return function filterOperatorFunction(source) { + return source.lift(new FilterOperator(predicate, thisArg)); + }; +} +class FilterOperator { + constructor(predicate, thisArg) { + this.predicate = predicate; + this.thisArg = thisArg; + } + call(subscriber, source) { + return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class FilterSubscriber extends Subscriber { + constructor(destination, predicate, thisArg) { + super(destination); + this.predicate = predicate; + this.thisArg = thisArg; + this.count = 0; + } + // the try catch block below is left specifically for + // optimization and perf reasons. a tryCatcher is not necessary here. + _next(value) { + let result; + try { + result = this.predicate.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this.destination.next(value); + } + } +} +//# sourceMappingURL=filter.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/filter.js.map b/node_modules/rxjs/_esm2015/operators/filter.js.map new file mode 100644 index 0000000..f36f38f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/filter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/operators/filter.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAU1C,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,uBAA0B,SAA+C,EAC/C,OAAa;IACrC,MAAM,CAAC,gCAAgC,MAAqB;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,SAA+C,EAC/C,OAAa;QADb,cAAS,GAAT,SAAS,CAAsC;QAC/C,YAAO,GAAP,OAAO,CAAM;IACjC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAkC,UAAU;IAI1C,YAAY,WAA0B,EAClB,SAA+C,EAC/C,OAAY;QAC9B,MAAM,WAAW,CAAC,CAAC;QAFD,cAAS,GAAT,SAAS,CAAsC;QAC/C,YAAO,GAAP,OAAO,CAAK;QAJhC,UAAK,GAAW,CAAC,CAAC;IAMlB,CAAC;IAED,qDAAqD;IACrD,qEAAqE;IAC3D,KAAK,CAAC,KAAQ;QACtB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClE,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/finalize.js b/node_modules/rxjs/_esm2015/operators/finalize.js new file mode 100644 index 0000000..c0662f3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/finalize.js @@ -0,0 +1,33 @@ +import { Subscriber } from '../Subscriber'; +import { Subscription } from '../Subscription'; +/** + * Returns an Observable that mirrors the source Observable, but will call a specified function when + * the source terminates on complete or error. + * @param {function} callback Function to be called when source terminates. + * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination. + * @method finally + * @owner Observable + */ +export function finalize(callback) { + return (source) => source.lift(new FinallyOperator(callback)); +} +class FinallyOperator { + constructor(callback) { + this.callback = callback; + } + call(subscriber, source) { + return source.subscribe(new FinallySubscriber(subscriber, this.callback)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class FinallySubscriber extends Subscriber { + constructor(destination, callback) { + super(destination); + this.add(new Subscription(callback)); + } +} +//# sourceMappingURL=finalize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/finalize.js.map b/node_modules/rxjs/_esm2015/operators/finalize.js.map new file mode 100644 index 0000000..036d824 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/finalize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"finalize.js","sourceRoot":"","sources":["../../src/operators/finalize.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAiB,MAAM,iBAAiB;AAI7D;;;;;;;GAOG;AACH,yBAA4B,QAAoB;IAC9C,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;IACE,YAAoB,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;IACxC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,gCAAmC,UAAU;IAC3C,YAAY,WAA0B,EAAE,QAAoB;QAC1D,MAAM,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/find.js b/node_modules/rxjs/_esm2015/operators/find.js new file mode 100644 index 0000000..645ba6d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/find.js @@ -0,0 +1,88 @@ +import { Subscriber } from '../Subscriber'; +/** + * Emits only the first value emitted by the source Observable that meets some + * condition. + * + * Finds the first value that passes some test and emits + * that. + * + * + * + * `find` searches for the first item in the source Observable that matches the + * specified condition embodied by the `predicate`, and returns the first + * occurrence in the source. Unlike {@link first}, the `predicate` is required + * in `find`, and does not emit an error if a valid value is not found. + * + * @example Find and emit the first click that happens on a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.find(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link first} + * @see {@link findIndex} + * @see {@link take} + * + * @param {function(value: T, index: number, source: Observable): boolean} predicate + * A function called with each item to test for condition matching. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of the first item that matches the + * condition. + * @method find + * @owner Observable + */ +export function find(predicate, thisArg) { + if (typeof predicate !== 'function') { + throw new TypeError('predicate is not a function'); + } + return (source) => source.lift(new FindValueOperator(predicate, source, false, thisArg)); +} +export class FindValueOperator { + constructor(predicate, source, yieldIndex, thisArg) { + this.predicate = predicate; + this.source = source; + this.yieldIndex = yieldIndex; + this.thisArg = thisArg; + } + call(observer, source) { + return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class FindValueSubscriber extends Subscriber { + constructor(destination, predicate, source, yieldIndex, thisArg) { + super(destination); + this.predicate = predicate; + this.source = source; + this.yieldIndex = yieldIndex; + this.thisArg = thisArg; + this.index = 0; + } + notifyComplete(value) { + const destination = this.destination; + destination.next(value); + destination.complete(); + } + _next(value) { + const { predicate, thisArg } = this; + const index = this.index++; + try { + const result = predicate.call(thisArg || this, value, index, this.source); + if (result) { + this.notifyComplete(this.yieldIndex ? index : value); + } + } + catch (err) { + this.destination.error(err); + } + } + _complete() { + this.notifyComplete(this.yieldIndex ? -1 : undefined); + } +} +//# sourceMappingURL=find.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/find.js.map b/node_modules/rxjs/_esm2015/operators/find.js.map new file mode 100644 index 0000000..ac74dbb --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/find.js.map @@ -0,0 +1 @@ +{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/operators/find.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAW1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAwB,SAAsE,EACtE,OAAa;IACnC,EAAE,CAAC,CAAC,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1G,CAAC;AAED;IACE,YAAoB,SAAsE,EACtE,MAAqB,EACrB,UAAmB,EACnB,OAAa;QAHb,cAAS,GAAT,SAAS,CAA6D;QACtE,WAAM,GAAN,MAAM,CAAe;QACrB,eAAU,GAAV,UAAU,CAAS;QACnB,YAAO,GAAP,OAAO,CAAM;IACjC,CAAC;IAED,IAAI,CAAC,QAAuB,EAAE,MAAW;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,yCAA4C,UAAU;IAGpD,YAAY,WAA0B,EAClB,SAAsE,EACtE,MAAqB,EACrB,UAAmB,EACnB,OAAa;QAC/B,MAAM,WAAW,CAAC,CAAC;QAJD,cAAS,GAAT,SAAS,CAA6D;QACtE,WAAM,GAAN,MAAM,CAAe;QACrB,eAAU,GAAV,UAAU,CAAS;QACnB,YAAO,GAAP,OAAO,CAAM;QANzB,UAAK,GAAW,CAAC,CAAC;IAQ1B,CAAC;IAEO,cAAc,CAAC,KAAU;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1E,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/findIndex.js b/node_modules/rxjs/_esm2015/operators/findIndex.js new file mode 100644 index 0000000..7703e71 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/findIndex.js @@ -0,0 +1,39 @@ +import { FindValueOperator } from '../operators/find'; +/** + * Emits only the index of the first value emitted by the source Observable that + * meets some condition. + * + * It's like {@link find}, but emits the index of the + * found value, not the value itself. + * + * + * + * `findIndex` searches for the first item in the source Observable that matches + * the specified condition embodied by the `predicate`, and returns the + * (zero-based) index of the first occurrence in the source. Unlike + * {@link first}, the `predicate` is required in `findIndex`, and does not emit + * an error if a valid value is not found. + * + * @example Emit the index of first click that happens on a DIV element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.findIndex(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link find} + * @see {@link first} + * @see {@link take} + * + * @param {function(value: T, index: number, source: Observable): boolean} predicate + * A function called with each item to test for condition matching. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {Observable} An Observable of the index of the first item that + * matches the condition. + * @method find + * @owner Observable + */ +export function findIndex(predicate, thisArg) { + return (source) => source.lift(new FindValueOperator(predicate, source, true, thisArg)); +} +//# sourceMappingURL=findIndex.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/findIndex.js.map b/node_modules/rxjs/_esm2015/operators/findIndex.js.map new file mode 100644 index 0000000..458d0a1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/findIndex.js.map @@ -0,0 +1 @@ +{"version":3,"file":"findIndex.js","sourceRoot":"","sources":["../../src/operators/findIndex.ts"],"names":[],"mappings":"OACO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,0BAA6B,SAAsE,EACtE,OAAa;IACxC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAoB,CAAC;AAC5H,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/first.js b/node_modules/rxjs/_esm2015/operators/first.js new file mode 100644 index 0000000..6b012f0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/first.js @@ -0,0 +1,142 @@ +import { Subscriber } from '../Subscriber'; +import { EmptyError } from '../util/EmptyError'; +/** + * Emits only the first value (or the first value that meets some condition) + * emitted by the source Observable. + * + * Emits only the first value. Or emits only the first + * value that passes some test. + * + * + * + * If called with no arguments, `first` emits the first value of the source + * Observable, then completes. If called with a `predicate` function, `first` + * emits the first value of the source that matches the specified condition. It + * may also take a `resultSelector` function to produce the output value from + * the input value, and a `defaultValue` to emit in case the source completes + * before it is able to emit a valid value. Throws an error if `defaultValue` + * was not provided and a matching element is not found. + * + * @example Emit only the first click that happens on the DOM + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.first(); + * result.subscribe(x => console.log(x)); + * + * @example Emits the first click that happens on a DIV + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.first(ev => ev.target.tagName === 'DIV'); + * result.subscribe(x => console.log(x)); + * + * @see {@link filter} + * @see {@link find} + * @see {@link take} + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * + * @param {function(value: T, index: number, source: Observable): boolean} [predicate] + * An optional function called with each item to test for condition matching. + * @param {function(value: T, index: number): R} [resultSelector] A function to + * produce the value on the output Observable based on the values + * and the indices of the source Observable. The arguments passed to this + * function are: + * - `value`: the value that was emitted on the source. + * - `index`: the "index" of the value from the source. + * @param {R} [defaultValue] The default value emitted in case no valid value + * was found on the source. + * @return {Observable} An Observable of the first item that matches the + * condition. + * @method first + * @owner Observable + */ +export function first(predicate, resultSelector, defaultValue) { + return (source) => source.lift(new FirstOperator(predicate, resultSelector, defaultValue, source)); +} +class FirstOperator { + constructor(predicate, resultSelector, defaultValue, source) { + this.predicate = predicate; + this.resultSelector = resultSelector; + this.defaultValue = defaultValue; + this.source = source; + } + call(observer, source) { + return source.subscribe(new FirstSubscriber(observer, this.predicate, this.resultSelector, this.defaultValue, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class FirstSubscriber extends Subscriber { + constructor(destination, predicate, resultSelector, defaultValue, source) { + super(destination); + this.predicate = predicate; + this.resultSelector = resultSelector; + this.defaultValue = defaultValue; + this.source = source; + this.index = 0; + this.hasCompleted = false; + this._emitted = false; + } + _next(value) { + const index = this.index++; + if (this.predicate) { + this._tryPredicate(value, index); + } + else { + this._emit(value, index); + } + } + _tryPredicate(value, index) { + let result; + try { + result = this.predicate(value, index, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this._emit(value, index); + } + } + _emit(value, index) { + if (this.resultSelector) { + this._tryResultSelector(value, index); + return; + } + this._emitFinal(value); + } + _tryResultSelector(value, index) { + let result; + try { + result = this.resultSelector(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this._emitFinal(result); + } + _emitFinal(value) { + const destination = this.destination; + if (!this._emitted) { + this._emitted = true; + destination.next(value); + destination.complete(); + this.hasCompleted = true; + } + } + _complete() { + const destination = this.destination; + if (!this.hasCompleted && typeof this.defaultValue !== 'undefined') { + destination.next(this.defaultValue); + destination.complete(); + } + else if (!this.hasCompleted) { + destination.error(new EmptyError); + } + } +} +//# sourceMappingURL=first.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/first.js.map b/node_modules/rxjs/_esm2015/operators/first.js.map new file mode 100644 index 0000000..f019f16 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/first.js.map @@ -0,0 +1 @@ +{"version":3,"file":"first.js","sourceRoot":"","sources":["../../src/operators/first.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,UAAU,EAAE,MAAM,oBAAoB;AAiB/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,sBAA4B,SAAuE,EACvE,cAAwD,EACxD,YAAgB;IAC1C,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AACpH,CAAC;AAED;IACE,YAAoB,SAAuE,EACvE,cAAwD,EACxD,YAAkB,EAClB,MAAsB;QAHtB,cAAS,GAAT,SAAS,CAA8D;QACvE,mBAAc,GAAd,cAAc,CAA0C;QACxD,iBAAY,GAAZ,YAAY,CAAM;QAClB,WAAM,GAAN,MAAM,CAAgB;IAC1C,CAAC;IAED,IAAI,CAAC,QAAuB,EAAE,MAAW;QACvC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9H,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAoC,UAAU;IAK5C,YAAY,WAA0B,EAClB,SAAuE,EACvE,cAAwD,EACxD,YAAkB,EAClB,MAAsB;QACxC,MAAM,WAAW,CAAC,CAAC;QAJD,cAAS,GAAT,SAAS,CAA8D;QACvE,mBAAc,GAAd,cAAc,CAA0C;QACxD,iBAAY,GAAZ,YAAY,CAAM;QAClB,WAAM,GAAN,MAAM,CAAgB;QARlC,UAAK,GAAW,CAAC,CAAC;QAClB,iBAAY,GAAY,KAAK,CAAC;QAC9B,aAAQ,GAAY,KAAK,CAAC;IAQlC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAQ,EAAE,KAAa;QAC3C,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QACD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAU,EAAE,KAAa;QACrC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAEO,kBAAkB,CAAC,KAAQ,EAAE,KAAa;QAChD,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAS,IAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAEO,UAAU,CAAC,KAAU;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,WAAW,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC;YACnE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9B,WAAW,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/groupBy.js b/node_modules/rxjs/_esm2015/operators/groupBy.js new file mode 100644 index 0000000..c5b0177 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/groupBy.js @@ -0,0 +1,257 @@ +import { Subscriber } from '../Subscriber'; +import { Subscription } from '../Subscription'; +import { Observable } from '../Observable'; +import { Subject } from '../Subject'; +import { Map } from '../util/Map'; +import { FastMap } from '../util/FastMap'; +/* tslint:enable:max-line-length */ +/** + * Groups the items emitted by an Observable according to a specified criterion, + * and emits these grouped items as `GroupedObservables`, one + * {@link GroupedObservable} per group. + * + * + * + * @example Group objects by id and return as array + * Observable.of({id: 1, name: 'aze1'}, + * {id: 2, name: 'sf2'}, + * {id: 2, name: 'dg2'}, + * {id: 1, name: 'erg1'}, + * {id: 1, name: 'df1'}, + * {id: 2, name: 'sfqfb2'}, + * {id: 3, name: 'qfs3'}, + * {id: 2, name: 'qsgqsfg2'} + * ) + * .groupBy(p => p.id) + * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], [])) + * .subscribe(p => console.log(p)); + * + * // displays: + * // [ { id: 1, name: 'aze1' }, + * // { id: 1, name: 'erg1' }, + * // { id: 1, name: 'df1' } ] + * // + * // [ { id: 2, name: 'sf2' }, + * // { id: 2, name: 'dg2' }, + * // { id: 2, name: 'sfqfb2' }, + * // { id: 2, name: 'qsgqsfg2' } ] + * // + * // [ { id: 3, name: 'qfs3' } ] + * + * @example Pivot data on the id field + * Observable.of({id: 1, name: 'aze1'}, + * {id: 2, name: 'sf2'}, + * {id: 2, name: 'dg2'}, + * {id: 1, name: 'erg1'}, + * {id: 1, name: 'df1'}, + * {id: 2, name: 'sfqfb2'}, + * {id: 3, name: 'qfs1'}, + * {id: 2, name: 'qsgqsfg2'} + * ) + * .groupBy(p => p.id, p => p.name) + * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], ["" + group$.key])) + * .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)})) + * .subscribe(p => console.log(p)); + * + * // displays: + * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] } + * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] } + * // { id: 3, values: [ 'qfs1' ] } + * + * @param {function(value: T): K} keySelector A function that extracts the key + * for each item. + * @param {function(value: T): R} [elementSelector] A function that extracts the + * return element for each item. + * @param {function(grouped: GroupedObservable): Observable} [durationSelector] + * A function that returns an Observable to determine how long each group should + * exist. + * @return {Observable>} An Observable that emits + * GroupedObservables, each of which corresponds to a unique key value and each + * of which emits those items from the source Observable that share that key + * value. + * @method groupBy + * @owner Observable + */ +export function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) { + return (source) => source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector)); +} +class GroupByOperator { + constructor(keySelector, elementSelector, durationSelector, subjectSelector) { + this.keySelector = keySelector; + this.elementSelector = elementSelector; + this.durationSelector = durationSelector; + this.subjectSelector = subjectSelector; + } + call(subscriber, source) { + return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class GroupBySubscriber extends Subscriber { + constructor(destination, keySelector, elementSelector, durationSelector, subjectSelector) { + super(destination); + this.keySelector = keySelector; + this.elementSelector = elementSelector; + this.durationSelector = durationSelector; + this.subjectSelector = subjectSelector; + this.groups = null; + this.attemptedToUnsubscribe = false; + this.count = 0; + } + _next(value) { + let key; + try { + key = this.keySelector(value); + } + catch (err) { + this.error(err); + return; + } + this._group(value, key); + } + _group(value, key) { + let groups = this.groups; + if (!groups) { + groups = this.groups = typeof key === 'string' ? new FastMap() : new Map(); + } + let group = groups.get(key); + let element; + if (this.elementSelector) { + try { + element = this.elementSelector(value); + } + catch (err) { + this.error(err); + } + } + else { + element = value; + } + if (!group) { + group = this.subjectSelector ? this.subjectSelector() : new Subject(); + groups.set(key, group); + const groupedObservable = new GroupedObservable(key, group, this); + this.destination.next(groupedObservable); + if (this.durationSelector) { + let duration; + try { + duration = this.durationSelector(new GroupedObservable(key, group)); + } + catch (err) { + this.error(err); + return; + } + this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this))); + } + } + if (!group.closed) { + group.next(element); + } + } + _error(err) { + const groups = this.groups; + if (groups) { + groups.forEach((group, key) => { + group.error(err); + }); + groups.clear(); + } + this.destination.error(err); + } + _complete() { + const groups = this.groups; + if (groups) { + groups.forEach((group, key) => { + group.complete(); + }); + groups.clear(); + } + this.destination.complete(); + } + removeGroup(key) { + this.groups.delete(key); + } + unsubscribe() { + if (!this.closed) { + this.attemptedToUnsubscribe = true; + if (this.count === 0) { + super.unsubscribe(); + } + } + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class GroupDurationSubscriber extends Subscriber { + constructor(key, group, parent) { + super(group); + this.key = key; + this.group = group; + this.parent = parent; + } + _next(value) { + this.complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + const { parent, key } = this; + this.key = this.parent = null; + if (parent) { + parent.removeGroup(key); + } + } +} +/** + * An Observable representing values belonging to the same group represented by + * a common key. The values emitted by a GroupedObservable come from the source + * Observable. The common key is available as the field `key` on a + * GroupedObservable instance. + * + * @class GroupedObservable + */ +export class GroupedObservable extends Observable { + constructor(key, groupSubject, refCountSubscription) { + super(); + this.key = key; + this.groupSubject = groupSubject; + this.refCountSubscription = refCountSubscription; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const subscription = new Subscription(); + const { refCountSubscription, groupSubject } = this; + if (refCountSubscription && !refCountSubscription.closed) { + subscription.add(new InnerRefCountSubscription(refCountSubscription)); + } + subscription.add(groupSubject.subscribe(subscriber)); + return subscription; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class InnerRefCountSubscription extends Subscription { + constructor(parent) { + super(); + this.parent = parent; + parent.count++; + } + unsubscribe() { + const parent = this.parent; + if (!parent.closed && !this.closed) { + super.unsubscribe(); + parent.count -= 1; + if (parent.count === 0 && parent.attemptedToUnsubscribe) { + parent.unsubscribe(); + } + } + } +} +//# sourceMappingURL=groupBy.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/groupBy.js.map b/node_modules/rxjs/_esm2015/operators/groupBy.js.map new file mode 100644 index 0000000..3a55fb7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/groupBy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"groupBy.js","sourceRoot":"","sources":["../../src/operators/groupBy.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/ignoreElements.js b/node_modules/rxjs/_esm2015/operators/ignoreElements.js new file mode 100644 index 0000000..8569612 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/ignoreElements.js @@ -0,0 +1,33 @@ +import { Subscriber } from '../Subscriber'; +import { noop } from '../util/noop'; +/** + * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`. + * + * + * + * @return {Observable} An empty Observable that only calls `complete` + * or `error`, based on which one is called by the source Observable. + * @method ignoreElements + * @owner Observable + */ +export function ignoreElements() { + return function ignoreElementsOperatorFunction(source) { + return source.lift(new IgnoreElementsOperator()); + }; +} +class IgnoreElementsOperator { + call(subscriber, source) { + return source.subscribe(new IgnoreElementsSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class IgnoreElementsSubscriber extends Subscriber { + _next(unused) { + noop(); + } +} +//# sourceMappingURL=ignoreElements.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/ignoreElements.js.map b/node_modules/rxjs/_esm2015/operators/ignoreElements.js.map new file mode 100644 index 0000000..667d020 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/ignoreElements.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ignoreElements.js","sourceRoot":"","sources":["../../src/operators/ignoreElements.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,IAAI,EAAE,MAAM,cAAc;AAGnC;;;;;;;;;GASG;AACH;IACE,MAAM,CAAC,wCAAwC,MAAqB;QAClE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,uCAA0C,UAAU;IACxC,KAAK,CAAC,MAAS;QACvB,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/isEmpty.js b/node_modules/rxjs/_esm2015/operators/isEmpty.js new file mode 100644 index 0000000..1f33bcf --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/isEmpty.js @@ -0,0 +1,31 @@ +import { Subscriber } from '../Subscriber'; +export function isEmpty() { + return (source) => source.lift(new IsEmptyOperator()); +} +class IsEmptyOperator { + call(observer, source) { + return source.subscribe(new IsEmptySubscriber(observer)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class IsEmptySubscriber extends Subscriber { + constructor(destination) { + super(destination); + } + notifyComplete(isEmpty) { + const destination = this.destination; + destination.next(isEmpty); + destination.complete(); + } + _next(value) { + this.notifyComplete(false); + } + _complete() { + this.notifyComplete(true); + } +} +//# sourceMappingURL=isEmpty.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/isEmpty.js.map b/node_modules/rxjs/_esm2015/operators/isEmpty.js.map new file mode 100644 index 0000000..ebf2307 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/isEmpty.js.map @@ -0,0 +1 @@ +{"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../src/operators/isEmpty.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;IACE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;IACE,IAAI,CAAE,QAA6B,EAAE,MAAW;QAC9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,gCAAgC,UAAU;IACxC,YAAY,WAAgC;QAC1C,MAAM,WAAW,CAAC,CAAC;IACrB,CAAC;IAEO,cAAc,CAAC,OAAgB;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAES,KAAK,CAAC,KAAc;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/last.js b/node_modules/rxjs/_esm2015/operators/last.js new file mode 100644 index 0000000..0dedbda --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/last.js @@ -0,0 +1,109 @@ +import { Subscriber } from '../Subscriber'; +import { EmptyError } from '../util/EmptyError'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits only the last item emitted by the source Observable. + * It optionally takes a predicate function as a parameter, in which case, rather than emitting + * the last item from the source Observable, the resulting Observable will emit the last item + * from the source Observable that satisfies the predicate. + * + * + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * @param {function} predicate - The condition any source emitted item has to satisfy. + * @return {Observable} An Observable that emits only the last item satisfying the given condition + * from the source, or an NoSuchElementException if no such items are emitted. + * @throws - Throws if no items that match the predicate are emitted by the source Observable. + * @method last + * @owner Observable + */ +export function last(predicate, resultSelector, defaultValue) { + return (source) => source.lift(new LastOperator(predicate, resultSelector, defaultValue, source)); +} +class LastOperator { + constructor(predicate, resultSelector, defaultValue, source) { + this.predicate = predicate; + this.resultSelector = resultSelector; + this.defaultValue = defaultValue; + this.source = source; + } + call(observer, source) { + return source.subscribe(new LastSubscriber(observer, this.predicate, this.resultSelector, this.defaultValue, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class LastSubscriber extends Subscriber { + constructor(destination, predicate, resultSelector, defaultValue, source) { + super(destination); + this.predicate = predicate; + this.resultSelector = resultSelector; + this.defaultValue = defaultValue; + this.source = source; + this.hasValue = false; + this.index = 0; + if (typeof defaultValue !== 'undefined') { + this.lastValue = defaultValue; + this.hasValue = true; + } + } + _next(value) { + const index = this.index++; + if (this.predicate) { + this._tryPredicate(value, index); + } + else { + if (this.resultSelector) { + this._tryResultSelector(value, index); + return; + } + this.lastValue = value; + this.hasValue = true; + } + } + _tryPredicate(value, index) { + let result; + try { + result = this.predicate(value, index, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + if (this.resultSelector) { + this._tryResultSelector(value, index); + return; + } + this.lastValue = value; + this.hasValue = true; + } + } + _tryResultSelector(value, index) { + let result; + try { + result = this.resultSelector(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this.lastValue = result; + this.hasValue = true; + } + _complete() { + const destination = this.destination; + if (this.hasValue) { + destination.next(this.lastValue); + destination.complete(); + } + else { + destination.error(new EmptyError); + } + } +} +//# sourceMappingURL=last.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/last.js.map b/node_modules/rxjs/_esm2015/operators/last.js.map new file mode 100644 index 0000000..6d78739 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/last.js.map @@ -0,0 +1 @@ +{"version":3,"file":"last.js","sourceRoot":"","sources":["../../src/operators/last.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/map.js b/node_modules/rxjs/_esm2015/operators/map.js new file mode 100644 index 0000000..835e3c3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/map.js @@ -0,0 +1,78 @@ +import { Subscriber } from '../Subscriber'; +/** + * Applies a given `project` function to each value emitted by the source + * Observable, and emits the resulting values as an Observable. + * + * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), + * it passes each source value through a transformation function to get + * corresponding output values. + * + * + * + * Similar to the well known `Array.prototype.map` function, this operator + * applies a projection to each value and emits that projection in the output + * Observable. + * + * @example Map every click to the clientX position of that click + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var positions = clicks.map(ev => ev.clientX); + * positions.subscribe(x => console.log(x)); + * + * @see {@link mapTo} + * @see {@link pluck} + * + * @param {function(value: T, index: number): R} project The function to apply + * to each `value` emitted by the source Observable. The `index` parameter is + * the number `i` for the i-th emission that has happened since the + * subscription, starting from the number `0`. + * @param {any} [thisArg] An optional argument to define what `this` is in the + * `project` function. + * @return {Observable} An Observable that emits the values from the source + * Observable transformed by the given `project` function. + * @method map + * @owner Observable + */ +export function map(project, thisArg) { + return function mapOperation(source) { + if (typeof project !== 'function') { + throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); + } + return source.lift(new MapOperator(project, thisArg)); + }; +} +export class MapOperator { + constructor(project, thisArg) { + this.project = project; + this.thisArg = thisArg; + } + call(subscriber, source) { + return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class MapSubscriber extends Subscriber { + constructor(destination, project, thisArg) { + super(destination); + this.project = project; + this.count = 0; + this.thisArg = thisArg || this; + } + // NOTE: This looks unoptimized, but it's actually purposefully NOT + // using try/catch optimizations. + _next(value) { + let result; + try { + result = this.project.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } +} +//# sourceMappingURL=map.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/map.js.map b/node_modules/rxjs/_esm2015/operators/map.js.map new file mode 100644 index 0000000..e469120 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/map.js.map @@ -0,0 +1 @@ +{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/operators/map.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,oBAA0B,OAAuC,EAAE,OAAa;IAC9E,MAAM,CAAC,sBAAsB,MAAqB;QAChD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,OAAuC,EAAU,OAAY;QAA7D,YAAO,GAAP,OAAO,CAAgC;QAAU,YAAO,GAAP,OAAO,CAAK;IACjF,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,4BAAkC,UAAU;IAI1C,YAAY,WAA0B,EAClB,OAAuC,EAC/C,OAAY;QACtB,MAAM,WAAW,CAAC,CAAC;QAFD,YAAO,GAAP,OAAO,CAAgC;QAJ3D,UAAK,GAAW,CAAC,CAAC;QAOhB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;IAED,mEAAmE;IACnE,iCAAiC;IACvB,KAAK,CAAC,KAAQ;QACtB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mapTo.js b/node_modules/rxjs/_esm2015/operators/mapTo.js new file mode 100644 index 0000000..cacf1c0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mapTo.js @@ -0,0 +1,53 @@ +import { Subscriber } from '../Subscriber'; +/** + * Emits the given constant value on the output Observable every time the source + * Observable emits a value. + * + * Like {@link map}, but it maps every source value to + * the same output value every time. + * + * + * + * Takes a constant `value` as argument, and emits that whenever the source + * Observable emits a value. In other words, ignores the actual source value, + * and simply uses the emission moment to know when to emit the given `value`. + * + * @example Map every click to the string 'Hi' + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var greetings = clicks.mapTo('Hi'); + * greetings.subscribe(x => console.log(x)); + * + * @see {@link map} + * + * @param {any} value The value to map each source value to. + * @return {Observable} An Observable that emits the given `value` every time + * the source Observable emits something. + * @method mapTo + * @owner Observable + */ +export function mapTo(value) { + return (source) => source.lift(new MapToOperator(value)); +} +class MapToOperator { + constructor(value) { + this.value = value; + } + call(subscriber, source) { + return source.subscribe(new MapToSubscriber(subscriber, this.value)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class MapToSubscriber extends Subscriber { + constructor(destination, value) { + super(destination); + this.value = value; + } + _next(x) { + this.destination.next(this.value); + } +} +//# sourceMappingURL=mapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mapTo.js.map b/node_modules/rxjs/_esm2015/operators/mapTo.js.map new file mode 100644 index 0000000..36c323e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mapTo.js","sourceRoot":"","sources":["../../src/operators/mapTo.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sBAA4B,KAAQ;IAClC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;IAIE,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAoC,UAAU;IAI5C,YAAY,WAA0B,EAAE,KAAQ;QAC9C,MAAM,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,CAAI;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/materialize.js b/node_modules/rxjs/_esm2015/operators/materialize.js new file mode 100644 index 0000000..46cb8bd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/materialize.js @@ -0,0 +1,80 @@ +import { Subscriber } from '../Subscriber'; +import { Notification } from '../Notification'; +/** + * Represents all of the notifications from the source Observable as `next` + * emissions marked with their original types within {@link Notification} + * objects. + * + * Wraps `next`, `error` and `complete` emissions in + * {@link Notification} objects, emitted as `next` on the output Observable. + * + * + * + * + * `materialize` returns an Observable that emits a `next` notification for each + * `next`, `error`, or `complete` emission of the source Observable. When the + * source Observable emits `complete`, the output Observable will emit `next` as + * a Notification of type "complete", and then it will emit `complete` as well. + * When the source Observable emits `error`, the output will emit `next` as a + * Notification of type "error", and then `complete`. + * + * This operator is useful for producing metadata of the source Observable, to + * be consumed as `next` emissions. Use it in conjunction with + * {@link dematerialize}. + * + * @example Convert a faulty Observable to an Observable of Notifications + * var letters = Rx.Observable.of('a', 'b', 13, 'd'); + * var upperCase = letters.map(x => x.toUpperCase()); + * var materialized = upperCase.materialize(); + * materialized.subscribe(x => console.log(x)); + * + * // Results in the following: + * // - Notification {kind: "N", value: "A", error: undefined, hasValue: true} + * // - Notification {kind: "N", value: "B", error: undefined, hasValue: true} + * // - Notification {kind: "E", value: undefined, error: TypeError: + * // x.toUpperCase is not a function at MapSubscriber.letters.map.x + * // [as project] (http://1…, hasValue: false} + * + * @see {@link Notification} + * @see {@link dematerialize} + * + * @return {Observable>} An Observable that emits + * {@link Notification} objects that wrap the original emissions from the source + * Observable with metadata. + * @method materialize + * @owner Observable + */ +export function materialize() { + return function materializeOperatorFunction(source) { + return source.lift(new MaterializeOperator()); + }; +} +class MaterializeOperator { + call(subscriber, source) { + return source.subscribe(new MaterializeSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class MaterializeSubscriber extends Subscriber { + constructor(destination) { + super(destination); + } + _next(value) { + this.destination.next(Notification.createNext(value)); + } + _error(err) { + const destination = this.destination; + destination.next(Notification.createError(err)); + destination.complete(); + } + _complete() { + const destination = this.destination; + destination.next(Notification.createComplete()); + destination.complete(); + } +} +//# sourceMappingURL=materialize.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/materialize.js.map b/node_modules/rxjs/_esm2015/operators/materialize.js.map new file mode 100644 index 0000000..9ae3d04 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/materialize.js.map @@ -0,0 +1 @@ +{"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/operators/materialize.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAE,MAAM,iBAAiB;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH;IACE,MAAM,CAAC,qCAAqC,MAAqB;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,IAAI,CAAC,UAAuC,EAAE,MAAW;QACvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,oCAAuC,UAAU;IAC/C,YAAY,WAAwC;QAClD,MAAM,WAAW,CAAC,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAES,MAAM,CAAC,GAAQ;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAES,SAAS;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;QAChD,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/max.js b/node_modules/rxjs/_esm2015/operators/max.js new file mode 100644 index 0000000..e144fd5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/max.js @@ -0,0 +1,39 @@ +import { reduce } from './reduce'; +/** + * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function), + * and when source Observable completes it emits a single item: the item with the largest value. + * + * + * + * @example Get the maximal value of a series of numbers + * Rx.Observable.of(5, 4, 7, 2, 8) + * .max() + * .subscribe(x => console.log(x)); // -> 8 + * + * @example Use a comparer function to get the maximal item + * interface Person { + * age: number, + * name: string + * } + * Observable.of({age: 7, name: 'Foo'}, + * {age: 5, name: 'Bar'}, + * {age: 9, name: 'Beer'}) + * .max((a: Person, b: Person) => a.age < b.age ? -1 : 1) + * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer' + * } + * + * @see {@link min} + * + * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the + * value of two items. + * @return {Observable} An Observable that emits item with the largest value. + * @method max + * @owner Observable + */ +export function max(comparer) { + const max = (typeof comparer === 'function') + ? (x, y) => comparer(x, y) > 0 ? x : y + : (x, y) => x > y ? x : y; + return reduce(max); +} +//# sourceMappingURL=max.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/max.js.map b/node_modules/rxjs/_esm2015/operators/max.js.map new file mode 100644 index 0000000..19a6c48 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/max.js.map @@ -0,0 +1 @@ +{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/operators/max.ts"],"names":[],"mappings":"OAAO,EAAE,MAAM,EAAE,MAAM,UAAU;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,oBAAuB,QAAiC;IACtD,MAAM,GAAG,GAAsB,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC;UAC3D,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;UACpC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/merge.js b/node_modules/rxjs/_esm2015/operators/merge.js new file mode 100644 index 0000000..d032c77 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/merge.js @@ -0,0 +1,53 @@ +import { merge as mergeStatic } from '../observable/merge'; +export { merge as mergeStatic } from '../observable/merge'; +/* tslint:enable:max-line-length */ +/** + * Creates an output Observable which concurrently emits all values from every + * given input Observable. + * + * Flattens multiple Observables together by blending + * their values into one Observable. + * + * + * + * `merge` subscribes to each given input Observable (either the source or an + * Observable given as argument), and simply forwards (without doing any + * transformation) all the values from all the input Observables to the output + * Observable. The output Observable only completes once all input Observables + * have completed. Any error delivered by an input Observable will be immediately + * emitted on the output Observable. + * + * @example Merge together two Observables: 1s interval and clicks + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var timer = Rx.Observable.interval(1000); + * var clicksOrTimer = clicks.merge(timer); + * clicksOrTimer.subscribe(x => console.log(x)); + * + * @example Merge together 3 Observables, but only 2 run concurrently + * var timer1 = Rx.Observable.interval(1000).take(10); + * var timer2 = Rx.Observable.interval(2000).take(6); + * var timer3 = Rx.Observable.interval(500).take(10); + * var concurrent = 2; // the argument + * var merged = timer1.merge(timer2, timer3, concurrent); + * merged.subscribe(x => console.log(x)); + * + * @see {@link mergeAll} + * @see {@link mergeMap} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * + * @param {ObservableInput} other An input Observable to merge with the source + * Observable. More than one input Observables may be given as argument. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @param {Scheduler} [scheduler=null] The IScheduler to use for managing + * concurrency of input Observables. + * @return {Observable} An Observable that emits items that are the result of + * every input Observable. + * @method merge + * @owner Observable + */ +export function merge(...observables) { + return (source) => source.lift.call(mergeStatic(source, ...observables)); +} +//# sourceMappingURL=merge.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/merge.js.map b/node_modules/rxjs/_esm2015/operators/merge.js.map new file mode 100644 index 0000000..78f26ad --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/merge.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/operators/merge.ts"],"names":[],"mappings":"OAGO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB;AAE1D,SAAS,KAAK,IAAI,WAAW,QAAQ,qBAAqB,CAAC;AAiB3D,mCAAmC;AACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,sBAA4B,GAAG,WAA8D;IAC3F,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AAC1F,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeAll.js b/node_modules/rxjs/_esm2015/operators/mergeAll.js new file mode 100644 index 0000000..98d0ba1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeAll.js @@ -0,0 +1,50 @@ +import { mergeMap } from './mergeMap'; +import { identity } from '../util/identity'; +/** + * Converts a higher-order Observable into a first-order Observable which + * concurrently delivers all values that are emitted on the inner Observables. + * + * Flattens an Observable-of-Observables. + * + * + * + * `mergeAll` subscribes to an Observable that emits Observables, also known as + * a higher-order Observable. Each time it observes one of these emitted inner + * Observables, it subscribes to that and delivers all the values from the + * inner Observable on the output Observable. The output Observable only + * completes once all inner Observables have completed. Any error delivered by + * a inner Observable will be immediately emitted on the output Observable. + * + * @example Spawn a new interval Observable for each click event, and blend their outputs as one Observable + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000)); + * var firstOrder = higherOrder.mergeAll(); + * firstOrder.subscribe(x => console.log(x)); + * + * @example Count from 0 to 9 every second for each click, but only allow 2 concurrent timers + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10)); + * var firstOrder = higherOrder.mergeAll(2); + * firstOrder.subscribe(x => console.log(x)); + * + * @see {@link combineAll} + * @see {@link concatAll} + * @see {@link exhaust} + * @see {@link merge} + * @see {@link mergeMap} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * @see {@link switch} + * @see {@link zipAll} + * + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits values coming from all the + * inner Observables emitted by the source Observable. + * @method mergeAll + * @owner Observable + */ +export function mergeAll(concurrent = Number.POSITIVE_INFINITY) { + return mergeMap(identity, null, concurrent); +} +//# sourceMappingURL=mergeAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeAll.js.map b/node_modules/rxjs/_esm2015/operators/mergeAll.js.map new file mode 100644 index 0000000..7755728 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeAll.js","sourceRoot":"","sources":["../../src/operators/mergeAll.ts"],"names":[],"mappings":"OAEO,EAAE,QAAQ,EAAE,MAAM,YAAY;OAC9B,EAAE,QAAQ,EAAE,MAAM,kBAAkB;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,yBAA4B,UAAU,GAAW,MAAM,CAAC,iBAAiB;IACvE,MAAM,CAAC,QAAQ,CAAC,QAA4D,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAClG,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeMap.js b/node_modules/rxjs/_esm2015/operators/mergeMap.js new file mode 100644 index 0000000..17163f0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeMap.js @@ -0,0 +1,158 @@ +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link mergeAll}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an Observable, and then merging those resulting Observables and + * emitting the results of this merger. + * + * @example Map and flatten each letter to an Observable ticking every 1 second + * var letters = Rx.Observable.of('a', 'b', 'c'); + * var result = letters.mergeMap(x => + * Rx.Observable.interval(1000).map(i => x+i) + * ); + * result.subscribe(x => console.log(x)); + * + * // Results in the following: + * // a0 + * // b0 + * // c0 + * // a1 + * // b1 + * // c1 + * // continues to list a,b,c with respective ascending integers + * + * @see {@link concatMap} + * @see {@link exhaustMap} + * @see {@link merge} + * @see {@link mergeAll} + * @see {@link mergeMapTo} + * @see {@link mergeScan} + * @see {@link switchMap} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and merging the results of the Observables obtained + * from this transformation. + * @method mergeMap + * @owner Observable + */ +export function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + return function mergeMapOperatorFunction(source) { + if (typeof resultSelector === 'number') { + concurrent = resultSelector; + resultSelector = null; + } + return source.lift(new MergeMapOperator(project, resultSelector, concurrent)); + }; +} +export class MergeMapOperator { + constructor(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + this.project = project; + this.resultSelector = resultSelector; + this.concurrent = concurrent; + } + call(observer, source) { + return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class MergeMapSubscriber extends OuterSubscriber { + constructor(destination, project, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + super(destination); + this.project = project; + this.resultSelector = resultSelector; + this.concurrent = concurrent; + this.hasCompleted = false; + this.buffer = []; + this.active = 0; + this.index = 0; + } + _next(value) { + if (this.active < this.concurrent) { + this._tryNext(value); + } + else { + this.buffer.push(value); + } + } + _tryNext(value) { + let result; + const index = this.index++; + try { + result = this.project(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this.active++; + this._innerSub(result, value, index); + } + _innerSub(ish, value, index) { + this.add(subscribeToResult(this, ish, value, index)); + } + _complete() { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (this.resultSelector) { + this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + else { + this.destination.next(innerValue); + } + } + _notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex) { + let result; + try { + result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } + notifyComplete(innerSub) { + const buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + this.destination.complete(); + } + } +} +//# sourceMappingURL=mergeMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeMap.js.map b/node_modules/rxjs/_esm2015/operators/mergeMap.js.map new file mode 100644 index 0000000..29bb824 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMap.js","sourceRoot":"","sources":["../../src/operators/mergeMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeMapTo.js b/node_modules/rxjs/_esm2015/operators/mergeMapTo.js new file mode 100644 index 0000000..560b3fc --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeMapTo.js @@ -0,0 +1,140 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is merged multiple + * times in the output Observable. + * + * It's like {@link mergeMap}, but maps each value always + * to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then merges those resulting Observables into one + * single Observable, which is the output Observable. + * + * @example For each click event, start an interval Observable ticking every 1 second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.mergeMapTo(Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMapTo} + * @see {@link merge} + * @see {@link mergeAll} + * @see {@link mergeMap} + * @see {@link mergeScan} + * @see {@link switchMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input + * Observables being subscribed to concurrently. + * @return {Observable} An Observable that emits items from the given + * `innerObservable` (and optionally transformed through `resultSelector`) every + * time a value is emitted on the source Observable. + * @method mergeMapTo + * @owner Observable + */ +export function mergeMapTo(innerObservable, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + if (typeof resultSelector === 'number') { + concurrent = resultSelector; + resultSelector = null; + } + return (source) => source.lift(new MergeMapToOperator(innerObservable, resultSelector, concurrent)); +} +// TODO: Figure out correct signature here: an Operator, R> +// needs to implement call(observer: Subscriber): Subscriber> +export class MergeMapToOperator { + constructor(ish, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + this.ish = ish; + this.resultSelector = resultSelector; + this.concurrent = concurrent; + } + call(observer, source) { + return source.subscribe(new MergeMapToSubscriber(observer, this.ish, this.resultSelector, this.concurrent)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class MergeMapToSubscriber extends OuterSubscriber { + constructor(destination, ish, resultSelector, concurrent = Number.POSITIVE_INFINITY) { + super(destination); + this.ish = ish; + this.resultSelector = resultSelector; + this.concurrent = concurrent; + this.hasCompleted = false; + this.buffer = []; + this.active = 0; + this.index = 0; + } + _next(value) { + if (this.active < this.concurrent) { + const resultSelector = this.resultSelector; + const index = this.index++; + const ish = this.ish; + const destination = this.destination; + this.active++; + this._innerSub(ish, destination, resultSelector, value, index); + } + else { + this.buffer.push(value); + } + } + _innerSub(ish, destination, resultSelector, value, index) { + this.add(subscribeToResult(this, ish, value, index)); + } + _complete() { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const { resultSelector, destination } = this; + if (resultSelector) { + this.trySelectResult(outerValue, innerValue, outerIndex, innerIndex); + } + else { + destination.next(innerValue); + } + } + trySelectResult(outerValue, innerValue, outerIndex, innerIndex) { + const { resultSelector, destination } = this; + let result; + try { + result = resultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + catch (err) { + destination.error(err); + return; + } + destination.next(result); + } + notifyError(err) { + this.destination.error(err); + } + notifyComplete(innerSub) { + const buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + this.destination.complete(); + } + } +} +//# sourceMappingURL=mergeMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeMapTo.js.map b/node_modules/rxjs/_esm2015/operators/mergeMapTo.js.map new file mode 100644 index 0000000..c636d6e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeMapTo.js","sourceRoot":"","sources":["../../src/operators/mergeMapTo.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeScan.js b/node_modules/rxjs/_esm2015/operators/mergeScan.js new file mode 100644 index 0000000..fde7709 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeScan.js @@ -0,0 +1,116 @@ +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { OuterSubscriber } from '../OuterSubscriber'; +/** + * Applies an accumulator function over the source Observable where the + * accumulator function itself returns an Observable, then each intermediate + * Observable returned is merged into the output Observable. + * + * It's like {@link scan}, but the Observables returned + * by the accumulator are merged into the outer Observable. + * + * @example Count the number of click events + * const click$ = Rx.Observable.fromEvent(document, 'click'); + * const one$ = click$.mapTo(1); + * const seed = 0; + * const count$ = one$.mergeScan((acc, one) => Rx.Observable.of(acc + one), seed); + * count$.subscribe(x => console.log(x)); + * + * // Results: + * 1 + * 2 + * 3 + * 4 + * // ...and so on for each click + * + * @param {function(acc: R, value: T): Observable} accumulator + * The accumulator function called on each source value. + * @param seed The initial accumulation value. + * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of + * input Observables being subscribed to concurrently. + * @return {Observable} An observable of the accumulated values. + * @method mergeScan + * @owner Observable + */ +export function mergeScan(accumulator, seed, concurrent = Number.POSITIVE_INFINITY) { + return (source) => source.lift(new MergeScanOperator(accumulator, seed, concurrent)); +} +export class MergeScanOperator { + constructor(accumulator, seed, concurrent) { + this.accumulator = accumulator; + this.seed = seed; + this.concurrent = concurrent; + } + call(subscriber, source) { + return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class MergeScanSubscriber extends OuterSubscriber { + constructor(destination, accumulator, acc, concurrent) { + super(destination); + this.accumulator = accumulator; + this.acc = acc; + this.concurrent = concurrent; + this.hasValue = false; + this.hasCompleted = false; + this.buffer = []; + this.active = 0; + this.index = 0; + } + _next(value) { + if (this.active < this.concurrent) { + const index = this.index++; + const ish = tryCatch(this.accumulator)(this.acc, value); + const destination = this.destination; + if (ish === errorObject) { + destination.error(errorObject.e); + } + else { + this.active++; + this._innerSub(ish, value, index); + } + } + else { + this.buffer.push(value); + } + } + _innerSub(ish, value, index) { + this.add(subscribeToResult(this, ish, value, index)); + } + _complete() { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + if (this.hasValue === false) { + this.destination.next(this.acc); + } + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const { destination } = this; + this.acc = innerValue; + this.hasValue = true; + destination.next(innerValue); + } + notifyComplete(innerSub) { + const buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + if (this.hasValue === false) { + this.destination.next(this.acc); + } + this.destination.complete(); + } + } +} +//# sourceMappingURL=mergeScan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/mergeScan.js.map b/node_modules/rxjs/_esm2015/operators/mergeScan.js.map new file mode 100644 index 0000000..22288fd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/mergeScan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mergeScan.js","sourceRoot":"","sources":["../../src/operators/mergeScan.ts"],"names":[],"mappings":"OAIO,EAAE,QAAQ,EAAE,MAAM,kBAAkB;OACpC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAC1C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;OACtD,EAAE,eAAe,EAAE,MAAM,oBAAoB;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0BAAgC,WAAgD,EAChD,IAAO,EACP,UAAU,GAAW,MAAM,CAAC,iBAAiB;IAC3E,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AACtG,CAAC;AAED;IACE,YAAoB,WAAgD,EAChD,IAAO,EACP,UAAkB;QAFlB,gBAAW,GAAX,WAAW,CAAqC;QAChD,SAAI,GAAJ,IAAI,CAAG;QACP,eAAU,GAAV,UAAU,CAAQ;IACtC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAC7C,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CACzD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,yCAA+C,eAAe;IAO5D,YAAY,WAA0B,EAClB,WAAgD,EAChD,GAAM,EACN,UAAkB;QACpC,MAAM,WAAW,CAAC,CAAC;QAHD,gBAAW,GAAX,WAAW,CAAqC;QAChD,QAAG,GAAH,GAAG,CAAG;QACN,eAAU,GAAV,UAAU,CAAQ;QAT9B,aAAQ,GAAY,KAAK,CAAC;QAC1B,iBAAY,GAAY,KAAK,CAAC;QAC9B,WAAM,GAAsB,EAAE,CAAC;QAC/B,WAAM,GAAW,CAAC,CAAC;QACjB,UAAK,GAAW,CAAC,CAAC;IAO5B,CAAC;IAES,KAAK,CAAC,KAAU;QACxB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,EAAE,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC;gBACxB,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAQ,EAAE,KAAQ,EAAE,KAAa;QACjD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAO,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,QAAsB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAClD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/min.js b/node_modules/rxjs/_esm2015/operators/min.js new file mode 100644 index 0000000..bf9b018 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/min.js @@ -0,0 +1,39 @@ +import { reduce } from './reduce'; +/** + * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function), + * and when source Observable completes it emits a single item: the item with the smallest value. + * + * + * + * @example Get the minimal value of a series of numbers + * Rx.Observable.of(5, 4, 7, 2, 8) + * .min() + * .subscribe(x => console.log(x)); // -> 2 + * + * @example Use a comparer function to get the minimal item + * interface Person { + * age: number, + * name: string + * } + * Observable.of({age: 7, name: 'Foo'}, + * {age: 5, name: 'Bar'}, + * {age: 9, name: 'Beer'}) + * .min( (a: Person, b: Person) => a.age < b.age ? -1 : 1) + * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar' + * } + * + * @see {@link max} + * + * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the + * value of two items. + * @return {Observable} An Observable that emits item with the smallest value. + * @method min + * @owner Observable + */ +export function min(comparer) { + const min = (typeof comparer === 'function') + ? (x, y) => comparer(x, y) < 0 ? x : y + : (x, y) => x < y ? x : y; + return reduce(min); +} +//# sourceMappingURL=min.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/min.js.map b/node_modules/rxjs/_esm2015/operators/min.js.map new file mode 100644 index 0000000..3fb0f52 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"min.js","sourceRoot":"","sources":["../../src/operators/min.ts"],"names":[],"mappings":"OAAO,EAAE,MAAM,EAAE,MAAM,UAAU;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,oBAAuB,QAAiC;IACtD,MAAM,GAAG,GAAsB,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC;UAC3D,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;UACpC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/multicast.js b/node_modules/rxjs/_esm2015/operators/multicast.js new file mode 100644 index 0000000..c675695 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/multicast.js @@ -0,0 +1,55 @@ +import { connectableObservableDescriptor } from '../observable/ConnectableObservable'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits the results of invoking a specified selector on items + * emitted by a ConnectableObservable that shares a single subscription to the underlying stream. + * + * + * + * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through + * which the source sequence's elements will be multicast to the selector function + * or Subject to push source elements into. + * @param {Function} [selector] - Optional selector function that can use the multicasted source stream + * as many times as needed, without causing multiple subscriptions to the source stream. + * Subscribers to the given source will receive all notifications of the source from the + * time of the subscription forward. + * @return {Observable} An Observable that emits the results of invoking the selector + * on the items emitted by a `ConnectableObservable` that shares a single subscription to + * the underlying stream. + * @method multicast + * @owner Observable + */ +export function multicast(subjectOrSubjectFactory, selector) { + return function multicastOperatorFunction(source) { + let subjectFactory; + if (typeof subjectOrSubjectFactory === 'function') { + subjectFactory = subjectOrSubjectFactory; + } + else { + subjectFactory = function subjectFactory() { + return subjectOrSubjectFactory; + }; + } + if (typeof selector === 'function') { + return source.lift(new MulticastOperator(subjectFactory, selector)); + } + const connectable = Object.create(source, connectableObservableDescriptor); + connectable.source = source; + connectable.subjectFactory = subjectFactory; + return connectable; + }; +} +export class MulticastOperator { + constructor(subjectFactory, selector) { + this.subjectFactory = subjectFactory; + this.selector = selector; + } + call(subscriber, source) { + const { selector } = this; + const subject = this.subjectFactory(); + const subscription = selector(subject).subscribe(subscriber); + subscription.add(source.subscribe(subject)); + return subscription; + } +} +//# sourceMappingURL=multicast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/multicast.js.map b/node_modules/rxjs/_esm2015/operators/multicast.js.map new file mode 100644 index 0000000..247e4f0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/multicast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../../src/operators/multicast.ts"],"names":[],"mappings":"OAIO,EAAyB,+BAA+B,EAAE,MAAM,qCAAqC;AAO5G,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;GAkBG;AACH,0BAAgC,uBAAwD,EACxD,QAAmD;IACjF,MAAM,CAAC,mCAAmC,MAAqB;QAC7D,IAAI,cAAgC,CAAC;QACrC,EAAE,CAAC,CAAC,OAAO,uBAAuB,KAAK,UAAU,CAAC,CAAC,CAAC;YAClD,cAAc,GAAqB,uBAAuB,CAAC;QAC7D,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,cAAc,GAAG;gBACf,MAAM,CAAa,uBAAuB,CAAC;YAC7C,CAAC,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,WAAW,GAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QAChF,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;QAC5B,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;QAE5C,MAAM,CAA4B,WAAW,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,cAAgC,EAChC,QAAkD;QADlD,mBAAc,GAAd,cAAc,CAAkB;QAChC,aAAQ,GAAR,QAAQ,CAA0C;IACtE,CAAC;IACD,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7D,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/observeOn.js b/node_modules/rxjs/_esm2015/operators/observeOn.js new file mode 100644 index 0000000..52eab99 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/observeOn.js @@ -0,0 +1,98 @@ +import { Subscriber } from '../Subscriber'; +import { Notification } from '../Notification'; +/** + * + * Re-emits all notifications from source Observable with specified scheduler. + * + * Ensure a specific scheduler is used, from outside of an Observable. + * + * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule + * notifications emitted by the source Observable. It might be useful, if you do not have control over + * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless. + * + * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable, + * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal + * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits + * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`. + * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split + * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source + * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a + * little bit more, to ensure that they are emitted at expected moments. + * + * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications + * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn` + * will delay all notifications - including error notifications - while `delay` will pass through error + * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator + * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used + * for notification emissions in general. + * + * @example Ensure values in subscribe are called just before browser repaint. + * const intervals = Rx.Observable.interval(10); // Intervals are scheduled + * // with async scheduler by default... + * + * intervals + * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame + * .subscribe(val => { // scheduler to ensure smooth animation. + * someDiv.style.height = val + 'px'; + * }); + * + * @see {@link delay} + * + * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable. + * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled. + * @return {Observable} Observable that emits the same notifications as the source Observable, + * but with provided scheduler. + * + * @method observeOn + * @owner Observable + */ +export function observeOn(scheduler, delay = 0) { + return function observeOnOperatorFunction(source) { + return source.lift(new ObserveOnOperator(scheduler, delay)); + }; +} +export class ObserveOnOperator { + constructor(scheduler, delay = 0) { + this.scheduler = scheduler; + this.delay = delay; + } + call(subscriber, source) { + return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class ObserveOnSubscriber extends Subscriber { + constructor(destination, scheduler, delay = 0) { + super(destination); + this.scheduler = scheduler; + this.delay = delay; + } + static dispatch(arg) { + const { notification, destination } = arg; + notification.observe(destination); + this.unsubscribe(); + } + scheduleMessage(notification) { + this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination))); + } + _next(value) { + this.scheduleMessage(Notification.createNext(value)); + } + _error(err) { + this.scheduleMessage(Notification.createError(err)); + } + _complete() { + this.scheduleMessage(Notification.createComplete()); + } +} +export class ObserveOnMessage { + constructor(notification, destination) { + this.notification = notification; + this.destination = destination; + } +} +//# sourceMappingURL=observeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/observeOn.js.map b/node_modules/rxjs/_esm2015/operators/observeOn.js.map new file mode 100644 index 0000000..3492a8c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/observeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"observeOn.js","sourceRoot":"","sources":["../../src/operators/observeOn.ts"],"names":[],"mappings":"OAIO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAE,MAAM,iBAAiB;AAK9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0BAA6B,SAAqB,EAAE,KAAK,GAAW,CAAC;IACnE,MAAM,CAAC,mCAAmC,MAAqB;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,SAAqB,EAAU,KAAK,GAAW,CAAC;QAAhD,cAAS,GAAT,SAAS,CAAY;QAAU,UAAK,GAAL,KAAK,CAAY;IACpE,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,yCAA4C,UAAU;IAOpD,YAAY,WAA0B,EAClB,SAAqB,EACrB,KAAK,GAAW,CAAC;QACnC,MAAM,WAAW,CAAC,CAAC;QAFD,cAAS,GAAT,SAAS,CAAY;QACrB,UAAK,GAAL,KAAK,CAAY;IAErC,CAAC;IAVD,OAAO,QAAQ,CAAiC,GAAqB;QACnE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;QAC1C,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAQO,eAAe,CAAC,YAA+B;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAC9B,mBAAmB,CAAC,QAAQ,EAC5B,IAAI,CAAC,KAAK,EACV,IAAI,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CACrD,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAES,MAAM,CAAC,GAAQ;QACvB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;IACE,YAAmB,YAA+B,EAC/B,WAAiC;QADjC,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,gBAAW,GAAX,WAAW,CAAsB;IACpD,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js b/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js new file mode 100644 index 0000000..dd96f13 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js @@ -0,0 +1,118 @@ +import { FromObservable } from '../observable/FromObservable'; +import { isArray } from '../util/isArray'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one + * that was passed. + * + * Execute series of Observables no matter what, even if it means swallowing errors. + * + * + * + * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as + * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same + * as the source. + * + * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable. + * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext` + * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting + * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another + * Observable in provided series, no matter if previous Observable completed or ended with an error. This will + * be happening until there is no more Observables left in the series, at which point returned Observable will + * complete - even if the last subscribed stream ended with an error. + * + * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive + * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable + * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with + * an error. + * + * Note that you do not get any access to errors emitted by the Observables. In particular do not + * expect these errors to appear in error callback passed to {@link subscribe}. If you want to take + * specific actions based on what error was emitted by an Observable, you should try out {@link catch} instead. + * + * + * @example Subscribe to the next Observable after map fails + * Rx.Observable.of(1, 2, 3, 0) + * .map(x => { + * if (x === 0) { throw Error(); } + return 10 / x; + * }) + * .onErrorResumeNext(Rx.Observable.of(1, 2, 3)) + * .subscribe( + * val => console.log(val), + * err => console.log(err), // Will never be called. + * () => console.log('that\'s it!') + * ); + * + * // Logs: + * // 10 + * // 5 + * // 3.3333333333333335 + * // 1 + * // 2 + * // 3 + * // "that's it!" + * + * @see {@link concat} + * @see {@link catch} + * + * @param {...ObservableInput} observables Observables passed either directly or as an array. + * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes + * to the next passed Observable and so on, until it completes or runs out of Observables. + * @method onErrorResumeNext + * @owner Observable + */ +export function onErrorResumeNext(...nextSources) { + if (nextSources.length === 1 && isArray(nextSources[0])) { + nextSources = nextSources[0]; + } + return (source) => source.lift(new OnErrorResumeNextOperator(nextSources)); +} +/* tslint:enable:max-line-length */ +export function onErrorResumeNextStatic(...nextSources) { + let source = null; + if (nextSources.length === 1 && isArray(nextSources[0])) { + nextSources = nextSources[0]; + } + source = nextSources.shift(); + return new FromObservable(source, null).lift(new OnErrorResumeNextOperator(nextSources)); +} +class OnErrorResumeNextOperator { + constructor(nextSources) { + this.nextSources = nextSources; + } + call(subscriber, source) { + return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources)); + } +} +class OnErrorResumeNextSubscriber extends OuterSubscriber { + constructor(destination, nextSources) { + super(destination); + this.destination = destination; + this.nextSources = nextSources; + } + notifyError(error, innerSub) { + this.subscribeToNextSource(); + } + notifyComplete(innerSub) { + this.subscribeToNextSource(); + } + _error(err) { + this.subscribeToNextSource(); + } + _complete() { + this.subscribeToNextSource(); + } + subscribeToNextSource() { + const next = this.nextSources.shift(); + if (next) { + this.add(subscribeToResult(this, next)); + } + else { + this.destination.complete(); + } + } +} +//# sourceMappingURL=onErrorResumeNext.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js.map b/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js.map new file mode 100644 index 0000000..0bdc2c9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/onErrorResumeNext.js.map @@ -0,0 +1 @@ +{"version":3,"file":"onErrorResumeNext.js","sourceRoot":"","sources":["../../src/operators/onErrorResumeNext.ts"],"names":[],"mappings":"OACO,EAAE,cAAc,EAAE,MAAM,8BAA8B;OAGtD,EAAE,OAAO,EAAE,MAAM,iBAAiB;OAClC,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAW7D,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,kCAAwC,GAAG,WAE2C;IACpF,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,WAAW,GAA2B,WAAW,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAO,WAAW,CAAC,CAAC,CAAC;AAClG,CAAC;AAWD,mCAAmC;AAEnC,wCAA8C,GAAG,WAE4C;IAC3F,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,WAAW,GAAgC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IAE7B,MAAM,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAO,WAAW,CAAC,CAAC,CAAC;AACjG,CAAC;AAED;IACE,YAAoB,WAAwC;QAAxC,gBAAW,GAAX,WAAW,CAA6B;IAC5D,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,0CAAgD,eAAe;IAC7D,YAAsB,WAA0B,EAC5B,WAAwC;QAC1D,MAAM,WAAW,CAAC,CAAC;QAFC,gBAAW,GAAX,WAAW,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAA6B;IAE5D,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,QAAiC;QACvD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,QAAiC;QAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAES,MAAM,CAAC,GAAQ;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,qBAAqB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACtC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/pairwise.js b/node_modules/rxjs/_esm2015/operators/pairwise.js new file mode 100644 index 0000000..9023898 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/pairwise.js @@ -0,0 +1,65 @@ +import { Subscriber } from '../Subscriber'; +/** + * Groups pairs of consecutive emissions together and emits them as an array of + * two values. + * + * Puts the current value and previous value together as + * an array, and emits that. + * + * + * + * The Nth emission from the source Observable will cause the output Observable + * to emit an array [(N-1)th, Nth] of the previous and the current value, as a + * pair. For this reason, `pairwise` emits on the second and subsequent + * emissions from the source Observable, but not on the first emission, because + * there is no previous value in that case. + * + * @example On every click (starting from the second), emit the relative distance to the previous click + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var pairs = clicks.pairwise(); + * var distance = pairs.map(pair => { + * var x0 = pair[0].clientX; + * var y0 = pair[0].clientY; + * var x1 = pair[1].clientX; + * var y1 = pair[1].clientY; + * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2)); + * }); + * distance.subscribe(x => console.log(x)); + * + * @see {@link buffer} + * @see {@link bufferCount} + * + * @return {Observable>} An Observable of pairs (as arrays) of + * consecutive values from the source Observable. + * @method pairwise + * @owner Observable + */ +export function pairwise() { + return (source) => source.lift(new PairwiseOperator()); +} +class PairwiseOperator { + call(subscriber, source) { + return source.subscribe(new PairwiseSubscriber(subscriber)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class PairwiseSubscriber extends Subscriber { + constructor(destination) { + super(destination); + this.hasPrev = false; + } + _next(value) { + if (this.hasPrev) { + this.destination.next([this.prev, value]); + } + else { + this.hasPrev = true; + } + this.prev = value; + } +} +//# sourceMappingURL=pairwise.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/pairwise.js.map b/node_modules/rxjs/_esm2015/operators/pairwise.js.map new file mode 100644 index 0000000..73f357d --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/pairwise.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pairwise.js","sourceRoot":"","sources":["../../src/operators/pairwise.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAG1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IACE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;IACE,IAAI,CAAC,UAA8B,EAAE,MAAW;QAC9C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,iCAAoC,UAAU;IAI5C,YAAY,WAA+B;QACzC,MAAM,WAAW,CAAC,CAAC;QAHb,YAAO,GAAY,KAAK,CAAC;IAIjC,CAAC;IAED,KAAK,CAAC,KAAQ;QACZ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/partition.js b/node_modules/rxjs/_esm2015/operators/partition.js new file mode 100644 index 0000000..f3e626b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/partition.js @@ -0,0 +1,50 @@ +import { not } from '../util/not'; +import { filter } from './filter'; +/** + * Splits the source Observable into two, one with values that satisfy a + * predicate, and another with values that don't satisfy the predicate. + * + * It's like {@link filter}, but returns two Observables: + * one like the output of {@link filter}, and the other with values that did not + * pass the condition. + * + * + * + * `partition` outputs an array with two Observables that partition the values + * from the source Observable through the given `predicate` function. The first + * Observable in that array emits source values for which the predicate argument + * returns true. The second Observable emits source values for which the + * predicate returns false. The first behaves like {@link filter} and the second + * behaves like {@link filter} with the predicate negated. + * + * @example Partition click events into those on DIV elements and those elsewhere + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var parts = clicks.partition(ev => ev.target.tagName === 'DIV'); + * var clicksOnDivs = parts[0]; + * var clicksElsewhere = parts[1]; + * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x)); + * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x)); + * + * @see {@link filter} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates each value emitted by the source Observable. If it returns `true`, + * the value is emitted on the first Observable in the returned array, if + * `false` the value is emitted on the second Observable in the array. The + * `index` parameter is the number `i` for the i-th source emission that has + * happened since the subscription, starting from the number `0`. + * @param {any} [thisArg] An optional argument to determine the value of `this` + * in the `predicate` function. + * @return {[Observable, Observable]} An array with two Observables: one + * with values that passed the predicate, and another with values that did not + * pass the predicate. + * @method partition + * @owner Observable + */ +export function partition(predicate, thisArg) { + return (source) => [ + filter(predicate, thisArg)(source), + filter(not(predicate, thisArg))(source) + ]; +} +//# sourceMappingURL=partition.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/partition.js.map b/node_modules/rxjs/_esm2015/operators/partition.js.map new file mode 100644 index 0000000..8f9b187 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/partition.js.map @@ -0,0 +1 @@ +{"version":3,"file":"partition.js","sourceRoot":"","sources":["../../src/operators/partition.ts"],"names":[],"mappings":"OAAO,EAAE,GAAG,EAAE,MAAM,aAAa;OAC1B,EAAE,MAAM,EAAE,MAAM,UAAU;AAIjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,0BAA6B,SAA+C,EAC/C,OAAa;IACxC,MAAM,CAAC,CAAC,MAAqB,KAAK;QAChC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAQ,CAAC,CAAC,MAAM,CAAC;KACb,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/pluck.js b/node_modules/rxjs/_esm2015/operators/pluck.js new file mode 100644 index 0000000..913de44 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/pluck.js @@ -0,0 +1,51 @@ +import { map } from './map'; +/** + * Maps each source value (an object) to its specified nested property. + * + * Like {@link map}, but meant only for picking one of + * the nested properties of every emitted object. + * + * + * + * Given a list of strings describing a path to an object property, retrieves + * the value of a specified nested property from all values in the source + * Observable. If a property can't be resolved, it will return `undefined` for + * that value. + * + * @example Map every click to the tagName of the clicked target element + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var tagNames = clicks.pluck('target', 'tagName'); + * tagNames.subscribe(x => console.log(x)); + * + * @see {@link map} + * + * @param {...string} properties The nested properties to pluck from each source + * value (an object). + * @return {Observable} A new Observable of property values from the source values. + * @method pluck + * @owner Observable + */ +export function pluck(...properties) { + const length = properties.length; + if (length === 0) { + throw new Error('list of properties cannot be empty.'); + } + return (source) => map(plucker(properties, length))(source); +} +function plucker(props, length) { + const mapper = (x) => { + let currentProp = x; + for (let i = 0; i < length; i++) { + const p = currentProp[props[i]]; + if (typeof p !== 'undefined') { + currentProp = p; + } + else { + return undefined; + } + } + return currentProp; + }; + return mapper; +} +//# sourceMappingURL=pluck.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/pluck.js.map b/node_modules/rxjs/_esm2015/operators/pluck.js.map new file mode 100644 index 0000000..5db6dae --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/pluck.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pluck.js","sourceRoot":"","sources":["../../src/operators/pluck.ts"],"names":[],"mappings":"OACO,EAAE,GAAG,EAAE,MAAM,OAAO;AAG3B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,sBAA4B,GAAG,UAAoB;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,CAAC,MAAqB,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,MAAa,CAAC,CAAC;AACpF,CAAC;AAED,iBAAiB,KAAe,EAAE,MAAc;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAS;QACvB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;gBAC7B,WAAW,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,CAAC,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publish.js b/node_modules/rxjs/_esm2015/operators/publish.js new file mode 100644 index 0000000..1c4bdd8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publish.js @@ -0,0 +1,22 @@ +import { Subject } from '../Subject'; +import { multicast } from './multicast'; +/* tslint:enable:max-line-length */ +/** + * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called + * before it begins emitting items to those Observers that have subscribed to it. + * + * + * + * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times + * as needed, without causing multiple subscriptions to the source sequence. + * Subscribers to the given source will receive all notifications of the source from the time of the subscription on. + * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers. + * @method publish + * @owner Observable + */ +export function publish(selector) { + return selector ? + multicast(() => new Subject(), selector) : + multicast(new Subject()); +} +//# sourceMappingURL=publish.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publish.js.map b/node_modules/rxjs/_esm2015/operators/publish.js.map new file mode 100644 index 0000000..4ce3976 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publish.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/operators/publish.ts"],"names":[],"mappings":"OACO,EAAE,OAAO,EAAE,MAAM,YAAY;OAC7B,EAAE,SAAS,EAAE,MAAM,aAAa;AAQvC,mCAAmC;AAEnC;;;;;;;;;;;;GAYG;AACH,wBAA8B,QAAiC;IAC7D,MAAM,CAAC,QAAQ;QACb,SAAS,CAAC,MAAM,IAAI,OAAO,EAAK,EAAE,QAAQ,CAAC;QAC3C,SAAS,CAAC,IAAI,OAAO,EAAK,CAAC,CAAC;AAChC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishBehavior.js b/node_modules/rxjs/_esm2015/operators/publishBehavior.js new file mode 100644 index 0000000..ecb2b93 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishBehavior.js @@ -0,0 +1,12 @@ +import { BehaviorSubject } from '../BehaviorSubject'; +import { multicast } from './multicast'; +/** + * @param value + * @return {ConnectableObservable} + * @method publishBehavior + * @owner Observable + */ +export function publishBehavior(value) { + return (source) => multicast(new BehaviorSubject(value))(source); +} +//# sourceMappingURL=publishBehavior.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishBehavior.js.map b/node_modules/rxjs/_esm2015/operators/publishBehavior.js.map new file mode 100644 index 0000000..c1b9669 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishBehavior.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishBehavior.js","sourceRoot":"","sources":["../../src/operators/publishBehavior.ts"],"names":[],"mappings":"OACO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAC7C,EAAE,SAAS,EAAE,MAAM,aAAa;AAIvC;;;;;GAKG;AACH,gCAAmC,KAAQ;IACzC,MAAM,CAAC,CAAC,MAAqB,KAAK,SAAS,CAAC,IAAI,eAAe,CAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAA6B,CAAC;AACjH,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishLast.js b/node_modules/rxjs/_esm2015/operators/publishLast.js new file mode 100644 index 0000000..5d4ea44 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishLast.js @@ -0,0 +1,6 @@ +import { AsyncSubject } from '../AsyncSubject'; +import { multicast } from './multicast'; +export function publishLast() { + return (source) => multicast(new AsyncSubject())(source); +} +//# sourceMappingURL=publishLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishLast.js.map b/node_modules/rxjs/_esm2015/operators/publishLast.js.map new file mode 100644 index 0000000..049b13c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishLast.js","sourceRoot":"","sources":["../../src/operators/publishLast.ts"],"names":[],"mappings":"OACO,EAAE,YAAY,EAAE,MAAM,iBAAiB;OACvC,EAAE,SAAS,EAAE,MAAM,aAAa;AAIvC;IACE,MAAM,CAAC,CAAC,MAAqB,KAAK,SAAS,CAAC,IAAI,YAAY,EAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishReplay.js b/node_modules/rxjs/_esm2015/operators/publishReplay.js new file mode 100644 index 0000000..0372c04 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishReplay.js @@ -0,0 +1,12 @@ +import { ReplaySubject } from '../ReplaySubject'; +import { multicast } from './multicast'; +/* tslint:enable:max-line-length */ +export function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { + if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') { + scheduler = selectorOrScheduler; + } + const selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined; + const subject = new ReplaySubject(bufferSize, windowTime, scheduler); + return (source) => multicast(() => subject, selector)(source); +} +//# sourceMappingURL=publishReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/publishReplay.js.map b/node_modules/rxjs/_esm2015/operators/publishReplay.js.map new file mode 100644 index 0000000..8fd644a --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/publishReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"publishReplay.js","sourceRoot":"","sources":["../../src/operators/publishReplay.ts"],"names":[],"mappings":"OACO,EAAE,aAAa,EAAE,MAAM,kBAAkB;OAEzC,EAAE,SAAS,EAAE,MAAM,aAAa;AAQvC,mCAAmC;AAEnC,8BAAoC,UAAmB,EACnB,UAAmB,EACnB,mBAAyD,EACzD,SAAsB;IAExD,EAAE,CAAC,CAAC,mBAAmB,IAAI,OAAO,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC;QACrE,SAAS,GAAG,mBAAmB,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,mBAAmB,KAAK,UAAU,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7F,MAAM,OAAO,GAAG,IAAI,aAAa,CAAI,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAExE,MAAM,CAAC,CAAC,MAAqB,KAAK,SAAS,CAAC,MAAM,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,CAA6C,CAAC;AAC3H,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/race.js b/node_modules/rxjs/_esm2015/operators/race.js new file mode 100644 index 0000000..dfbcf9e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/race.js @@ -0,0 +1,22 @@ +import { isArray } from '../util/isArray'; +import { race as raceStatic } from '../observable/race'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that mirrors the first source Observable to emit an item + * from the combination of this Observable and supplied Observables. + * @param {...Observables} ...observables Sources used to race for which Observable emits first. + * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item. + * @method race + * @owner Observable + */ +export function race(...observables) { + return function raceOperatorFunction(source) { + // if the only argument is an array, it was most likely called with + // `pair([obs1, obs2, ...])` + if (observables.length === 1 && isArray(observables[0])) { + observables = observables[0]; + } + return source.lift.call(raceStatic(source, ...observables)); + }; +} +//# sourceMappingURL=race.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/race.js.map b/node_modules/rxjs/_esm2015/operators/race.js.map new file mode 100644 index 0000000..5541fca --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/race.js.map @@ -0,0 +1 @@ +{"version":3,"file":"race.js","sourceRoot":"","sources":["../../src/operators/race.ts"],"names":[],"mappings":"OACO,EAAE,OAAO,EAAE,MAAM,iBAAiB;OAElC,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,oBAAoB;AAOvD,mCAAmC;AAEnC;;;;;;;GAOG;AACH,qBAAwB,GAAG,WAAwD;IACjF,MAAM,CAAC,8BAA8B,MAAqB;QACxD,mEAAmE;QACnE,4BAA4B;QAC5B,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,WAAW,GAAyB,WAAW,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAI,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/reduce.js b/node_modules/rxjs/_esm2015/operators/reduce.js new file mode 100644 index 0000000..e9f3b36 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/reduce.js @@ -0,0 +1,67 @@ +import { scan } from './scan'; +import { takeLast } from './takeLast'; +import { defaultIfEmpty } from './defaultIfEmpty'; +import { pipe } from '../util/pipe'; +/* tslint:enable:max-line-length */ +/** + * Applies an accumulator function over the source Observable, and returns the + * accumulated result when the source completes, given an optional seed value. + * + * Combines together all values emitted on the source, + * using an accumulator function that knows how to join a new source value into + * the accumulation from the past. + * + * + * + * Like + * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce), + * `reduce` applies an `accumulator` function against an accumulation and each + * value of the source Observable (from the past) to reduce it to a single + * value, emitted on the output Observable. Note that `reduce` will only emit + * one value, only when the source Observable completes. It is equivalent to + * applying operator {@link scan} followed by operator {@link last}. + * + * Returns an Observable that applies a specified `accumulator` function to each + * item emitted by the source Observable. If a `seed` value is specified, then + * that value will be used as the initial value for the accumulator. If no seed + * value is specified, the first item of the source is used as the seed. + * + * @example Count the number of click events that happened in 5 seconds + * var clicksInFiveSeconds = Rx.Observable.fromEvent(document, 'click') + * .takeUntil(Rx.Observable.interval(5000)); + * var ones = clicksInFiveSeconds.mapTo(1); + * var seed = 0; + * var count = ones.reduce((acc, one) => acc + one, seed); + * count.subscribe(x => console.log(x)); + * + * @see {@link count} + * @see {@link expand} + * @see {@link mergeScan} + * @see {@link scan} + * + * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function + * called on each source value. + * @param {R} [seed] The initial accumulation value. + * @return {Observable} An Observable that emits a single value that is the + * result of accumulating the values emitted by the source Observable. + * @method reduce + * @owner Observable + */ +export function reduce(accumulator, seed) { + // providing a seed of `undefined` *should* be valid and trigger + // hasSeed! so don't use `seed !== undefined` checks! + // For this reason, we have to check it here at the original call site + // otherwise inside Operator/Subscriber we won't know if `undefined` + // means they didn't provide anything or if they literally provided `undefined` + if (arguments.length >= 2) { + return function reduceOperatorFunctionWithSeed(source) { + return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source); + }; + } + return function reduceOperatorFunction(source) { + return pipe(scan((acc, value, index) => { + return accumulator(acc, value, index + 1); + }), takeLast(1))(source); + }; +} +//# sourceMappingURL=reduce.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/reduce.js.map b/node_modules/rxjs/_esm2015/operators/reduce.js.map new file mode 100644 index 0000000..5e423dd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/reduce.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../src/operators/reduce.ts"],"names":[],"mappings":"OACO,EAAE,IAAI,EAAE,MAAM,QAAQ;OACtB,EAAE,QAAQ,EAAE,MAAM,YAAY;OAC9B,EAAE,cAAc,EAAE,MAAM,kBAAkB;OAE1C,EAAE,IAAI,EAAE,MAAM,cAAc;AAMnC,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,uBAA6B,WAAoD,EAAE,IAAQ;IACzF,gEAAgE;IAChE,qDAAqD;IACrD,sEAAsE;IACtE,oEAAoE;IACpE,+EAA+E;IAC/E,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,wCAAwC,MAAqB;YAClE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,gCAAgC,MAAqB;QAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK;YAC3C,MAAM,CAAC,WAAW,CAAI,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAkB,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/refCount.js b/node_modules/rxjs/_esm2015/operators/refCount.js new file mode 100644 index 0000000..c6c92ef --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/refCount.js @@ -0,0 +1,75 @@ +import { Subscriber } from '../Subscriber'; +export function refCount() { + return function refCountOperatorFunction(source) { + return source.lift(new RefCountOperator(source)); + }; +} +class RefCountOperator { + constructor(connectable) { + this.connectable = connectable; + } + call(subscriber, source) { + const { connectable } = this; + connectable._refCount++; + const refCounter = new RefCountSubscriber(subscriber, connectable); + const subscription = source.subscribe(refCounter); + if (!refCounter.closed) { + refCounter.connection = connectable.connect(); + } + return subscription; + } +} +class RefCountSubscriber extends Subscriber { + constructor(destination, connectable) { + super(destination); + this.connectable = connectable; + } + /** @deprecated internal use only */ _unsubscribe() { + const { connectable } = this; + if (!connectable) { + this.connection = null; + return; + } + this.connectable = null; + const refCount = connectable._refCount; + if (refCount <= 0) { + this.connection = null; + return; + } + connectable._refCount = refCount - 1; + if (refCount > 1) { + this.connection = null; + return; + } + /// + // Compare the local RefCountSubscriber's connection Subscription to the + // connection Subscription on the shared ConnectableObservable. In cases + // where the ConnectableObservable source synchronously emits values, and + // the RefCountSubscriber's downstream Observers synchronously unsubscribe, + // execution continues to here before the RefCountOperator has a chance to + // supply the RefCountSubscriber with the shared connection Subscription. + // For example: + // ``` + // Observable.range(0, 10) + // .publish() + // .refCount() + // .take(5) + // .subscribe(); + // ``` + // In order to account for this case, RefCountSubscriber should only dispose + // the ConnectableObservable's shared connection Subscription if the + // connection Subscription exists, *and* either: + // a. RefCountSubscriber doesn't have a reference to the shared connection + // Subscription yet, or, + // b. RefCountSubscriber's connection Subscription reference is identical + // to the shared connection Subscription + /// + const { connection } = this; + const sharedConnection = connectable._connection; + this.connection = null; + if (sharedConnection && (!connection || sharedConnection === connection)) { + sharedConnection.unsubscribe(); + } + } +} +//# sourceMappingURL=refCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/refCount.js.map b/node_modules/rxjs/_esm2015/operators/refCount.js.map new file mode 100644 index 0000000..7148a0f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/refCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"refCount.js","sourceRoot":"","sources":["../../src/operators/refCount.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAM1C;IACE,MAAM,CAAC,kCAAkC,MAAgC;QACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,WAAqC;QAArC,gBAAW,GAAX,WAAW,CAA0B;IACzD,CAAC;IACD,IAAI,CAAC,UAAyB,EAAE,MAAW;QAEzC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACtB,WAAY,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAElD,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,UAAW,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC;QAED,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,iCAAoC,UAAU;IAI5C,YAAY,WAA0B,EAClB,WAAqC;QACvD,MAAM,WAAW,CAAC,CAAC;QADD,gBAAW,GAAX,WAAW,CAA0B;IAEzD,CAAC;IAED,oCAAoC,CAAC,YAAY;QAE/C,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,MAAM,QAAQ,GAAU,WAAY,CAAC,SAAS,CAAC;QAC/C,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QAEM,WAAY,CAAC,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC7C,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QAED,GAAG;QACH,wEAAwE;QACxE,wEAAwE;QACxE,yEAAyE;QACzE,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,eAAe;QACf,MAAM;QACN,0BAA0B;QAC1B,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,kBAAkB;QAClB,MAAM;QACN,4EAA4E;QAC5E,oEAAoE;QACpE,gDAAgD;QAChD,4EAA4E;QAC5E,6BAA6B;QAC7B,2EAA2E;QAC3E,6CAA6C;QAC7C,GAAG;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,gBAAgB,GAAU,WAAY,CAAC,WAAW,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,EAAE,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,UAAU,IAAI,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;YACzE,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/repeat.js b/node_modules/rxjs/_esm2015/operators/repeat.js new file mode 100644 index 0000000..3f73a20 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/repeat.js @@ -0,0 +1,61 @@ +import { Subscriber } from '../Subscriber'; +import { EmptyObservable } from '../observable/EmptyObservable'; +/** + * Returns an Observable that repeats the stream of items emitted by the source Observable at most count times. + * + * + * + * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield + * an empty Observable. + * @return {Observable} An Observable that repeats the stream of items emitted by the source Observable at most + * count times. + * @method repeat + * @owner Observable + */ +export function repeat(count = -1) { + return (source) => { + if (count === 0) { + return new EmptyObservable(); + } + else if (count < 0) { + return source.lift(new RepeatOperator(-1, source)); + } + else { + return source.lift(new RepeatOperator(count - 1, source)); + } + }; +} +class RepeatOperator { + constructor(count, source) { + this.count = count; + this.source = source; + } + call(subscriber, source) { + return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class RepeatSubscriber extends Subscriber { + constructor(destination, count, source) { + super(destination); + this.count = count; + this.source = source; + } + complete() { + if (!this.isStopped) { + const { source, count } = this; + if (count === 0) { + return super.complete(); + } + else if (count > -1) { + this.count = count - 1; + } + source.subscribe(this._unsubscribeAndRecycle()); + } + } +} +//# sourceMappingURL=repeat.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/repeat.js.map b/node_modules/rxjs/_esm2015/operators/repeat.js.map new file mode 100644 index 0000000..d2476f6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/repeat.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../src/operators/repeat.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OAEnC,EAAE,eAAe,EAAE,MAAM,+BAA+B;AAI/D;;;;;;;;;;;GAWG;AACH,uBAA0B,KAAK,GAAW,CAAC,CAAC;IAC1C,MAAM,CAAC,CAAC,MAAqB;QAC3B,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,KAAa,EACb,MAAqB;QADrB,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAe;IACzC,CAAC;IACD,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAkC,UAAU;IAC1C,YAAY,WAA4B,EACpB,KAAa,EACb,MAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAe;IAEzC,CAAC;IACD,QAAQ;QACN,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAC/B,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/repeatWhen.js b/node_modules/rxjs/_esm2015/operators/repeatWhen.js new file mode 100644 index 0000000..a8afb7f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/repeatWhen.js @@ -0,0 +1,98 @@ +import { Subject } from '../Subject'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source + * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable + * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise + * this method will resubscribe to the source Observable. + * + * + * + * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with + * which a user can `complete` or `error`, aborting the repetition. + * @return {Observable} The source Observable modified with repeat logic. + * @method repeatWhen + * @owner Observable + */ +export function repeatWhen(notifier) { + return (source) => source.lift(new RepeatWhenOperator(notifier)); +} +class RepeatWhenOperator { + constructor(notifier) { + this.notifier = notifier; + } + call(subscriber, source) { + return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class RepeatWhenSubscriber extends OuterSubscriber { + constructor(destination, notifier, source) { + super(destination); + this.notifier = notifier; + this.source = source; + this.sourceIsBeingSubscribedTo = true; + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.sourceIsBeingSubscribedTo = true; + this.source.subscribe(this); + } + notifyComplete(innerSub) { + if (this.sourceIsBeingSubscribedTo === false) { + return super.complete(); + } + } + complete() { + this.sourceIsBeingSubscribedTo = false; + if (!this.isStopped) { + if (!this.retries) { + this.subscribeToRetries(); + } + if (!this.retriesSubscription || this.retriesSubscription.closed) { + return super.complete(); + } + this._unsubscribeAndRecycle(); + this.notifications.next(); + } + } + /** @deprecated internal use only */ _unsubscribe() { + const { notifications, retriesSubscription } = this; + if (notifications) { + notifications.unsubscribe(); + this.notifications = null; + } + if (retriesSubscription) { + retriesSubscription.unsubscribe(); + this.retriesSubscription = null; + } + this.retries = null; + } + /** @deprecated internal use only */ _unsubscribeAndRecycle() { + const { notifications, retries, retriesSubscription } = this; + this.notifications = null; + this.retries = null; + this.retriesSubscription = null; + super._unsubscribeAndRecycle(); + this.notifications = notifications; + this.retries = retries; + this.retriesSubscription = retriesSubscription; + return this; + } + subscribeToRetries() { + this.notifications = new Subject(); + const retries = tryCatch(this.notifier)(this.notifications); + if (retries === errorObject) { + return super.complete(); + } + this.retries = retries; + this.retriesSubscription = subscribeToResult(this, retries); + } +} +//# sourceMappingURL=repeatWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/repeatWhen.js.map b/node_modules/rxjs/_esm2015/operators/repeatWhen.js.map new file mode 100644 index 0000000..de388d3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/repeatWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"repeatWhen.js","sourceRoot":"","sources":["../../src/operators/repeatWhen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/retry.js b/node_modules/rxjs/_esm2015/operators/retry.js new file mode 100644 index 0000000..ba2f70b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/retry.js @@ -0,0 +1,54 @@ +import { Subscriber } from '../Subscriber'; +/** + * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable + * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given + * as a number parameter) rather than propagating the `error` call. + * + * + * + * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted + * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second + * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications + * would be: [1, 2, 1, 2, 3, 4, 5, `complete`]. + * @param {number} count - Number of retry attempts before failing. + * @return {Observable} The source Observable modified with the retry logic. + * @method retry + * @owner Observable + */ +export function retry(count = -1) { + return (source) => source.lift(new RetryOperator(count, source)); +} +class RetryOperator { + constructor(count, source) { + this.count = count; + this.source = source; + } + call(subscriber, source) { + return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class RetrySubscriber extends Subscriber { + constructor(destination, count, source) { + super(destination); + this.count = count; + this.source = source; + } + error(err) { + if (!this.isStopped) { + const { source, count } = this; + if (count === 0) { + return super.error(err); + } + else if (count > -1) { + this.count = count - 1; + } + source.subscribe(this._unsubscribeAndRecycle()); + } + } +} +//# sourceMappingURL=retry.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/retry.js.map b/node_modules/rxjs/_esm2015/operators/retry.js.map new file mode 100644 index 0000000..a011627 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/retry.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/operators/retry.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAM1C;;;;;;;;;;;;;;;GAeG;AACH,sBAAyB,KAAK,GAAW,CAAC,CAAC;IACzC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;IACE,YAAoB,KAAa,EACb,MAAqB;QADrB,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAe;IACzC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,8BAAiC,UAAU;IACzC,YAAY,WAA4B,EACpB,KAAa,EACb,MAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAe;IAEzC,CAAC;IACD,KAAK,CAAC,GAAQ;QACZ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAC/B,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/retryWhen.js b/node_modules/rxjs/_esm2015/operators/retryWhen.js new file mode 100644 index 0000000..f923bce --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/retryWhen.js @@ -0,0 +1,91 @@ +import { Subject } from '../Subject'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable + * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`. + * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child + * subscription. Otherwise this method will resubscribe to the source Observable. + * + * + * + * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a + * user can `complete` or `error`, aborting the retry. + * @return {Observable} The source Observable modified with retry logic. + * @method retryWhen + * @owner Observable + */ +export function retryWhen(notifier) { + return (source) => source.lift(new RetryWhenOperator(notifier, source)); +} +class RetryWhenOperator { + constructor(notifier, source) { + this.notifier = notifier; + this.source = source; + } + call(subscriber, source) { + return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class RetryWhenSubscriber extends OuterSubscriber { + constructor(destination, notifier, source) { + super(destination); + this.notifier = notifier; + this.source = source; + } + error(err) { + if (!this.isStopped) { + let errors = this.errors; + let retries = this.retries; + let retriesSubscription = this.retriesSubscription; + if (!retries) { + errors = new Subject(); + retries = tryCatch(this.notifier)(errors); + if (retries === errorObject) { + return super.error(errorObject.e); + } + retriesSubscription = subscribeToResult(this, retries); + } + else { + this.errors = null; + this.retriesSubscription = null; + } + this._unsubscribeAndRecycle(); + this.errors = errors; + this.retries = retries; + this.retriesSubscription = retriesSubscription; + errors.next(err); + } + } + /** @deprecated internal use only */ _unsubscribe() { + const { errors, retriesSubscription } = this; + if (errors) { + errors.unsubscribe(); + this.errors = null; + } + if (retriesSubscription) { + retriesSubscription.unsubscribe(); + this.retriesSubscription = null; + } + this.retries = null; + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const { errors, retries, retriesSubscription } = this; + this.errors = null; + this.retries = null; + this.retriesSubscription = null; + this._unsubscribeAndRecycle(); + this.errors = errors; + this.retries = retries; + this.retriesSubscription = retriesSubscription; + this.source.subscribe(this); + } +} +//# sourceMappingURL=retryWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/retryWhen.js.map b/node_modules/rxjs/_esm2015/operators/retryWhen.js.map new file mode 100644 index 0000000..eb64e71 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/retryWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"retryWhen.js","sourceRoot":"","sources":["../../src/operators/retryWhen.ts"],"names":[],"mappings":"OAGO,EAAE,OAAO,EAAE,MAAM,YAAY;OAE7B,EAAE,QAAQ,EAAE,MAAM,kBAAkB;OACpC,EAAE,WAAW,EAAE,MAAM,qBAAqB;OAE1C,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAI7D;;;;;;;;;;;;;GAaG;AACH,0BAA6B,QAAsD;IACjF,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;IACE,YAAsB,QAAsD,EACzD,MAAqB;QADlB,aAAQ,GAAR,QAAQ,CAA8C;QACzD,WAAM,GAAN,MAAM,CAAe;IACxC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAwC,eAAe;IAMrD,YAAY,WAA0B,EAClB,QAAsD,EACtD,MAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAA8C;QACtD,WAAM,GAAN,MAAM,CAAe;IAEzC,CAAC;IAED,KAAK,CAAC,GAAQ;QACZ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAEpB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,IAAI,OAAO,GAAQ,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAEnD,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,EAAE,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC;gBACD,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzD,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAE/C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,oCAAoC,CAAC,YAAY;QAC/C,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;QAC7C,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxB,mBAAmB,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sample.js b/node_modules/rxjs/_esm2015/operators/sample.js new file mode 100644 index 0000000..a04bf4e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sample.js @@ -0,0 +1,78 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Emits the most recently emitted value from the source Observable whenever + * another Observable, the `notifier`, emits. + * + * It's like {@link sampleTime}, but samples whenever + * the `notifier` Observable emits something. + * + * + * + * Whenever the `notifier` Observable emits a value or completes, `sample` + * looks at the source Observable and emits whichever value it has most recently + * emitted since the previous sampling, unless the source has not emitted + * anything since the previous sampling. The `notifier` is subscribed to as soon + * as the output Observable is subscribed. + * + * @example On every click, sample the most recent "seconds" timer + * var seconds = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = seconds.sample(clicks); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounce} + * @see {@link sampleTime} + * @see {@link throttle} + * + * @param {Observable} notifier The Observable to use for sampling the + * source Observable. + * @return {Observable} An Observable that emits the results of sampling the + * values emitted by the source Observable whenever the notifier Observable + * emits value or completes. + * @method sample + * @owner Observable + */ +export function sample(notifier) { + return (source) => source.lift(new SampleOperator(notifier)); +} +class SampleOperator { + constructor(notifier) { + this.notifier = notifier; + } + call(subscriber, source) { + const sampleSubscriber = new SampleSubscriber(subscriber); + const subscription = source.subscribe(sampleSubscriber); + subscription.add(subscribeToResult(sampleSubscriber, this.notifier)); + return subscription; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SampleSubscriber extends OuterSubscriber { + constructor() { + super(...arguments); + this.hasValue = false; + } + _next(value) { + this.value = value; + this.hasValue = true; + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.emitValue(); + } + notifyComplete() { + this.emitValue(); + } + emitValue() { + if (this.hasValue) { + this.hasValue = false; + this.destination.next(this.value); + } + } +} +//# sourceMappingURL=sample.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sample.js.map b/node_modules/rxjs/_esm2015/operators/sample.js.map new file mode 100644 index 0000000..49c1f2f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sample.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/operators/sample.ts"],"names":[],"mappings":"OAIO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,uBAA0B,QAAyB;IACjD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;IACE,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC7C,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAqC,eAAe;IAApD;QAAqC,oBAAqB;QAEhD,aAAQ,GAAY,KAAK,CAAC;IAuBpC,CAAC;IArBW,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,SAAS;QACP,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sampleTime.js b/node_modules/rxjs/_esm2015/operators/sampleTime.js new file mode 100644 index 0000000..29f97e2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sampleTime.js @@ -0,0 +1,80 @@ +import { Subscriber } from '../Subscriber'; +import { async } from '../scheduler/async'; +/** + * Emits the most recently emitted value from the source Observable within + * periodic time intervals. + * + * Samples the source Observable at periodic time + * intervals, emitting what it samples. + * + * + * + * `sampleTime` periodically looks at the source Observable and emits whichever + * value it has most recently emitted since the previous sampling, unless the + * source has not emitted anything since the previous sampling. The sampling + * happens periodically in time every `period` milliseconds (or the time unit + * defined by the optional `scheduler` argument). The sampling starts as soon as + * the output Observable is subscribed. + * + * @example Every second, emit the most recent click at most once + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.sampleTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sample} + * @see {@link throttleTime} + * + * @param {number} period The sampling period expressed in milliseconds or the + * time unit determined internally by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the sampling. + * @return {Observable} An Observable that emits the results of sampling the + * values emitted by the source Observable at the specified time interval. + * @method sampleTime + * @owner Observable + */ +export function sampleTime(period, scheduler = async) { + return (source) => source.lift(new SampleTimeOperator(period, scheduler)); +} +class SampleTimeOperator { + constructor(period, scheduler) { + this.period = period; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SampleTimeSubscriber extends Subscriber { + constructor(destination, period, scheduler) { + super(destination); + this.period = period; + this.scheduler = scheduler; + this.hasValue = false; + this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period })); + } + _next(value) { + this.lastValue = value; + this.hasValue = true; + } + notifyNext() { + if (this.hasValue) { + this.hasValue = false; + this.destination.next(this.lastValue); + } + } +} +function dispatchNotification(state) { + let { subscriber, period } = state; + subscriber.notifyNext(); + this.schedule(state, period); +} +//# sourceMappingURL=sampleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sampleTime.js.map b/node_modules/rxjs/_esm2015/operators/sampleTime.js.map new file mode 100644 index 0000000..f46989f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sampleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sampleTime.js","sourceRoot":"","sources":["../../src/operators/sampleTime.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OAGnC,EAAE,KAAK,EAAE,MAAM,oBAAoB;AAK1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,2BAA8B,MAAc,EAAE,SAAS,GAAe,KAAK;IACzE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED;IACE,YAAoB,MAAc,EACd,SAAqB;QADrB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;IACzC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,mCAAsC,UAAU;IAI9C,YAAY,WAA0B,EAClB,MAAc,EACd,SAAqB;QACvC,MAAM,WAAW,CAAC,CAAC;QAFD,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;QAJzC,aAAQ,GAAY,KAAK,CAAC;QAMxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,UAAU;QACR,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,8BAAoD,KAAU;IAC5D,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACnC,UAAU,CAAC,UAAU,EAAE,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/scan.js b/node_modules/rxjs/_esm2015/operators/scan.js new file mode 100644 index 0000000..68bd3ab --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/scan.js @@ -0,0 +1,106 @@ +import { Subscriber } from '../Subscriber'; +/* tslint:enable:max-line-length */ +/** + * Applies an accumulator function over the source Observable, and returns each + * intermediate result, with an optional seed value. + * + * It's like {@link reduce}, but emits the current + * accumulation whenever the source emits a value. + * + * + * + * Combines together all values emitted on the source, using an accumulator + * function that knows how to join a new source value into the accumulation from + * the past. Is similar to {@link reduce}, but emits the intermediate + * accumulations. + * + * Returns an Observable that applies a specified `accumulator` function to each + * item emitted by the source Observable. If a `seed` value is specified, then + * that value will be used as the initial value for the accumulator. If no seed + * value is specified, the first item of the source is used as the seed. + * + * @example Count the number of click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var ones = clicks.mapTo(1); + * var seed = 0; + * var count = ones.scan((acc, one) => acc + one, seed); + * count.subscribe(x => console.log(x)); + * + * @see {@link expand} + * @see {@link mergeScan} + * @see {@link reduce} + * + * @param {function(acc: R, value: T, index: number): R} accumulator + * The accumulator function called on each source value. + * @param {T|R} [seed] The initial accumulation value. + * @return {Observable} An observable of the accumulated values. + * @method scan + * @owner Observable + */ +export function scan(accumulator, seed) { + let hasSeed = false; + // providing a seed of `undefined` *should* be valid and trigger + // hasSeed! so don't use `seed !== undefined` checks! + // For this reason, we have to check it here at the original call site + // otherwise inside Operator/Subscriber we won't know if `undefined` + // means they didn't provide anything or if they literally provided `undefined` + if (arguments.length >= 2) { + hasSeed = true; + } + return function scanOperatorFunction(source) { + return source.lift(new ScanOperator(accumulator, seed, hasSeed)); + }; +} +class ScanOperator { + constructor(accumulator, seed, hasSeed = false) { + this.accumulator = accumulator; + this.seed = seed; + this.hasSeed = hasSeed; + } + call(subscriber, source) { + return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class ScanSubscriber extends Subscriber { + constructor(destination, accumulator, _seed, hasSeed) { + super(destination); + this.accumulator = accumulator; + this._seed = _seed; + this.hasSeed = hasSeed; + this.index = 0; + } + get seed() { + return this._seed; + } + set seed(value) { + this.hasSeed = true; + this._seed = value; + } + _next(value) { + if (!this.hasSeed) { + this.seed = value; + this.destination.next(value); + } + else { + return this._tryNext(value); + } + } + _tryNext(value) { + const index = this.index++; + let result; + try { + result = this.accumulator(this.seed, value, index); + } + catch (err) { + this.destination.error(err); + } + this.seed = result; + this.destination.next(result); + } +} +//# sourceMappingURL=scan.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/scan.js.map b/node_modules/rxjs/_esm2015/operators/scan.js.map new file mode 100644 index 0000000..a105986 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/scan.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/operators/scan.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAO1C,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAA2B,WAAmD,EAAE,IAAY;IAC1F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,gEAAgE;IAChE,qDAAqD;IACrD,sEAAsE;IACtE,oEAAoE;IACpE,+EAA+E;IAC/E,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,8BAA8B,MAAqB;QACxD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,WAAmD,EAAU,IAAY,EAAU,OAAO,GAAY,KAAK;QAA3G,gBAAW,GAAX,WAAW,CAAwC;QAAU,SAAI,GAAJ,IAAI,CAAQ;QAAU,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEnI,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,6BAAmC,UAAU;IAY3C,YAAY,WAA0B,EAAU,WAAmD,EAAU,KAAY,EACrG,OAAgB;QAClC,MAAM,WAAW,CAAC,CAAC;QAF2B,gBAAW,GAAX,WAAW,CAAwC;QAAU,UAAK,GAAL,KAAK,CAAO;QACrG,YAAO,GAAP,OAAO,CAAS;QAZ5B,UAAK,GAAW,CAAC,CAAC;IAc1B,CAAC;IAZD,IAAI,IAAI;QACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,CAAC,KAAY;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAOS,KAAK,CAAC,KAAQ;QACtB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,KAAQ;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,WAAW,CAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACxD,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sequenceEqual.js b/node_modules/rxjs/_esm2015/operators/sequenceEqual.js new file mode 100644 index 0000000..bcfff05 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sequenceEqual.js @@ -0,0 +1,150 @@ +import { Subscriber } from '../Subscriber'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +/** + * Compares all values of two observables in sequence using an optional comparor function + * and returns an observable of a single boolean value representing whether or not the two sequences + * are equal. + * + * Checks to see of all values emitted by both observables are equal, in order. + * + * + * + * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either + * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom + * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the + * observables completes, the operator will wait for the other observable to complete; If the other + * observable emits before completing, the returned observable will emit `false` and complete. If one observable never + * completes or emits after the other complets, the returned observable will never complete. + * + * @example figure out if the Konami code matches + * var code = Rx.Observable.from([ + * "ArrowUp", + * "ArrowUp", + * "ArrowDown", + * "ArrowDown", + * "ArrowLeft", + * "ArrowRight", + * "ArrowLeft", + * "ArrowRight", + * "KeyB", + * "KeyA", + * "Enter" // no start key, clearly. + * ]); + * + * var keys = Rx.Observable.fromEvent(document, 'keyup') + * .map(e => e.code); + * var matches = keys.bufferCount(11, 1) + * .mergeMap( + * last11 => + * Rx.Observable.from(last11) + * .sequenceEqual(code) + * ); + * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched)); + * + * @see {@link combineLatest} + * @see {@link zip} + * @see {@link withLatestFrom} + * + * @param {Observable} compareTo The observable sequence to compare the source sequence to. + * @param {function} [comparor] An optional function to compare each value pair + * @return {Observable} An Observable of a single boolean value representing whether or not + * the values emitted by both observables were equal in sequence. + * @method sequenceEqual + * @owner Observable + */ +export function sequenceEqual(compareTo, comparor) { + return (source) => source.lift(new SequenceEqualOperator(compareTo, comparor)); +} +export class SequenceEqualOperator { + constructor(compareTo, comparor) { + this.compareTo = compareTo; + this.comparor = comparor; + } + call(subscriber, source) { + return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparor)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class SequenceEqualSubscriber extends Subscriber { + constructor(destination, compareTo, comparor) { + super(destination); + this.compareTo = compareTo; + this.comparor = comparor; + this._a = []; + this._b = []; + this._oneComplete = false; + this.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this))); + } + _next(value) { + if (this._oneComplete && this._b.length === 0) { + this.emit(false); + } + else { + this._a.push(value); + this.checkValues(); + } + } + _complete() { + if (this._oneComplete) { + this.emit(this._a.length === 0 && this._b.length === 0); + } + else { + this._oneComplete = true; + } + } + checkValues() { + const { _a, _b, comparor } = this; + while (_a.length > 0 && _b.length > 0) { + let a = _a.shift(); + let b = _b.shift(); + let areEqual = false; + if (comparor) { + areEqual = tryCatch(comparor)(a, b); + if (areEqual === errorObject) { + this.destination.error(errorObject.e); + } + } + else { + areEqual = a === b; + } + if (!areEqual) { + this.emit(false); + } + } + } + emit(value) { + const { destination } = this; + destination.next(value); + destination.complete(); + } + nextB(value) { + if (this._oneComplete && this._a.length === 0) { + this.emit(false); + } + else { + this._b.push(value); + this.checkValues(); + } + } +} +class SequenceEqualCompareToSubscriber extends Subscriber { + constructor(destination, parent) { + super(destination); + this.parent = parent; + } + _next(value) { + this.parent.nextB(value); + } + _error(err) { + this.parent.error(err); + } + _complete() { + this.parent._complete(); + } +} +//# sourceMappingURL=sequenceEqual.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/sequenceEqual.js.map b/node_modules/rxjs/_esm2015/operators/sequenceEqual.js.map new file mode 100644 index 0000000..89a111c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/sequenceEqual.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sequenceEqual.js","sourceRoot":"","sources":["../../src/operators/sequenceEqual.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/share.js b/node_modules/rxjs/_esm2015/operators/share.js new file mode 100644 index 0000000..88c8c18 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/share.js @@ -0,0 +1,23 @@ +import { multicast } from './multicast'; +import { refCount } from './refCount'; +import { Subject } from '../Subject'; +function shareSubjectFactory() { + return new Subject(); +} +/** + * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one + * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will + * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`. + * This is an alias for .multicast(() => new Subject()).refCount(). + * + * + * + * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers. + * @method share + * @owner Observable + */ +export function share() { + return (source) => refCount()(multicast(shareSubjectFactory)(source)); +} +; +//# sourceMappingURL=share.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/share.js.map b/node_modules/rxjs/_esm2015/operators/share.js.map new file mode 100644 index 0000000..dad030c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/share.js.map @@ -0,0 +1 @@ +{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/operators/share.ts"],"names":[],"mappings":"OACO,EAAE,SAAS,EAAE,MAAM,aAAa;OAChC,EAAE,QAAQ,EAAE,MAAM,YAAY;OAC9B,EAAE,OAAO,EAAE,MAAM,YAAY;AAIpC;IACE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH;IACE,MAAM,CAAC,CAAC,MAAqB,KAAK,QAAQ,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAkB,CAAC;AACxG,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/shareReplay.js b/node_modules/rxjs/_esm2015/operators/shareReplay.js new file mode 100644 index 0000000..d971c83 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/shareReplay.js @@ -0,0 +1,43 @@ +import { ReplaySubject } from '../ReplaySubject'; +/** + * @method shareReplay + * @owner Observable + */ +export function shareReplay(bufferSize, windowTime, scheduler) { + return (source) => source.lift(shareReplayOperator(bufferSize, windowTime, scheduler)); +} +function shareReplayOperator(bufferSize, windowTime, scheduler) { + let subject; + let refCount = 0; + let subscription; + let hasError = false; + let isComplete = false; + return function shareReplayOperation(source) { + refCount++; + if (!subject || hasError) { + hasError = false; + subject = new ReplaySubject(bufferSize, windowTime, scheduler); + subscription = source.subscribe({ + next(value) { subject.next(value); }, + error(err) { + hasError = true; + subject.error(err); + }, + complete() { + isComplete = true; + subject.complete(); + }, + }); + } + const innerSub = subject.subscribe(this); + return () => { + refCount--; + innerSub.unsubscribe(); + if (subscription && refCount === 0 && isComplete) { + subscription.unsubscribe(); + } + }; + }; +} +; +//# sourceMappingURL=shareReplay.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/shareReplay.js.map b/node_modules/rxjs/_esm2015/operators/shareReplay.js.map new file mode 100644 index 0000000..04a3c14 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/shareReplay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"shareReplay.js","sourceRoot":"","sources":["../../src/operators/shareReplay.ts"],"names":[],"mappings":"OACO,EAAE,aAAa,EAAE,MAAM,kBAAkB;AAMhD;;;GAGG;AACH,4BAA+B,UAAmB,EAAE,UAAmB,EAAE,SAAsB;IAC7F,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,6BAAgC,UAAmB,EAAE,UAAmB,EAAE,SAAsB;IAC9F,IAAI,OAAyB,CAAC;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAA0B,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,8BAAmD,MAAqB;QAC7E,QAAQ,EAAE,CAAC;QACX,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;YACzB,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,GAAG,IAAI,aAAa,CAAI,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAClE,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,KAAK,CAAC,GAAG;oBACP,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;gBACD,QAAQ;oBACN,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,CAAC;YACL,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,EAAE,CAAC,CAAC,YAAY,IAAI,QAAQ,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;gBACjD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/single.js b/node_modules/rxjs/_esm2015/operators/single.js new file mode 100644 index 0000000..712d019 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/single.js @@ -0,0 +1,83 @@ +import { Subscriber } from '../Subscriber'; +import { EmptyError } from '../util/EmptyError'; +/** + * Returns an Observable that emits the single item emitted by the source Observable that matches a specified + * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no + * such items, notify of an IllegalArgumentException or NoSuchElementException respectively. + * + * + * + * @throws {EmptyError} Delivers an EmptyError to the Observer's `error` + * callback if the Observable completes before any `next` notification was sent. + * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable. + * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches + * the predicate. + . + * @method single + * @owner Observable + */ +export function single(predicate) { + return (source) => source.lift(new SingleOperator(predicate, source)); +} +class SingleOperator { + constructor(predicate, source) { + this.predicate = predicate; + this.source = source; + } + call(subscriber, source) { + return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SingleSubscriber extends Subscriber { + constructor(destination, predicate, source) { + super(destination); + this.predicate = predicate; + this.source = source; + this.seenValue = false; + this.index = 0; + } + applySingleValue(value) { + if (this.seenValue) { + this.destination.error('Sequence contains more than one element'); + } + else { + this.seenValue = true; + this.singleValue = value; + } + } + _next(value) { + const index = this.index++; + if (this.predicate) { + this.tryNext(value, index); + } + else { + this.applySingleValue(value); + } + } + tryNext(value, index) { + try { + if (this.predicate(value, index, this.source)) { + this.applySingleValue(value); + } + } + catch (err) { + this.destination.error(err); + } + } + _complete() { + const destination = this.destination; + if (this.index > 0) { + destination.next(this.seenValue ? this.singleValue : undefined); + destination.complete(); + } + else { + destination.error(new EmptyError); + } + } +} +//# sourceMappingURL=single.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/single.js.map b/node_modules/rxjs/_esm2015/operators/single.js.map new file mode 100644 index 0000000..01bf23c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/single.js.map @@ -0,0 +1 @@ +{"version":3,"file":"single.js","sourceRoot":"","sources":["../../src/operators/single.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OAEnC,EAAE,UAAU,EAAE,MAAM,oBAAoB;AAK/C;;;;;;;;;;;;;;;GAeG;AACH,uBAA0B,SAAuE;IAC/F,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;IACE,YAAoB,SAAuE,EACvE,MAAsB;QADtB,cAAS,GAAT,SAAS,CAA8D;QACvE,WAAM,GAAN,MAAM,CAAgB;IAC1C,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAkC,UAAU;IAK1C,YAAY,WAAwB,EAChB,SAAuE,EACvE,MAAsB;QACxC,MAAM,WAAW,CAAC,CAAC;QAFD,cAAS,GAAT,SAAS,CAA8D;QACvE,WAAM,GAAN,MAAM,CAAgB;QANlC,cAAS,GAAY,KAAK,CAAC;QAE3B,UAAK,GAAW,CAAC,CAAC;IAM1B,CAAC;IAEO,gBAAgB,CAAC,KAAQ;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACpE,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,KAAQ,EAAE,KAAa;QACrC,IAAI,CAAC;YACH,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAErC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;YAChE,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,WAAW,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skip.js b/node_modules/rxjs/_esm2015/operators/skip.js new file mode 100644 index 0000000..35c2129 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skip.js @@ -0,0 +1,41 @@ +import { Subscriber } from '../Subscriber'; +/** + * Returns an Observable that skips the first `count` items emitted by the source Observable. + * + * + * + * @param {Number} count - The number of times, items emitted by source Observable should be skipped. + * @return {Observable} An Observable that skips values emitted by the source Observable. + * + * @method skip + * @owner Observable + */ +export function skip(count) { + return (source) => source.lift(new SkipOperator(count)); +} +class SkipOperator { + constructor(total) { + this.total = total; + } + call(subscriber, source) { + return source.subscribe(new SkipSubscriber(subscriber, this.total)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SkipSubscriber extends Subscriber { + constructor(destination, total) { + super(destination); + this.total = total; + this.count = 0; + } + _next(x) { + if (++this.count > this.total) { + this.destination.next(x); + } + } +} +//# sourceMappingURL=skip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skip.js.map b/node_modules/rxjs/_esm2015/operators/skip.js.map new file mode 100644 index 0000000..5535cac --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skip.js","sourceRoot":"","sources":["../../src/operators/skip.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAK1C;;;;;;;;;;GAUG;AACH,qBAAwB,KAAa;IACnC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;IACE,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IACjC,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,6BAAgC,UAAU;IAGxC,YAAY,WAA0B,EAAU,KAAa;QAC3D,MAAM,WAAW,CAAC,CAAC;QAD2B,UAAK,GAAL,KAAK,CAAQ;QAF7D,UAAK,GAAW,CAAC,CAAC;IAIlB,CAAC;IAES,KAAK,CAAC,CAAI;QAClB,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipLast.js b/node_modules/rxjs/_esm2015/operators/skipLast.js new file mode 100644 index 0000000..a724fdc --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipLast.js @@ -0,0 +1,83 @@ +import { Subscriber } from '../Subscriber'; +import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError'; +/** + * Skip the last `count` values emitted by the source Observable. + * + * + * + * `skipLast` returns an Observable that accumulates a queue with a length + * enough to store the first `count` values. As more values are received, + * values are taken from the front of the queue and produced on the result + * sequence. This causes values to be delayed. + * + * @example Skip the last 2 values of an Observable with many values + * var many = Rx.Observable.range(1, 5); + * var skipLastTwo = many.skipLast(2); + * skipLastTwo.subscribe(x => console.log(x)); + * + * // Results in: + * // 1 2 3 + * + * @see {@link skip} + * @see {@link skipUntil} + * @see {@link skipWhile} + * @see {@link take} + * + * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws + * ArgumentOutOrRangeError if `i < 0`. + * + * @param {number} count Number of elements to skip from the end of the source Observable. + * @returns {Observable} An Observable that skips the last count values + * emitted by the source Observable. + * @method skipLast + * @owner Observable + */ +export function skipLast(count) { + return (source) => source.lift(new SkipLastOperator(count)); +} +class SkipLastOperator { + constructor(_skipCount) { + this._skipCount = _skipCount; + if (this._skipCount < 0) { + throw new ArgumentOutOfRangeError; + } + } + call(subscriber, source) { + if (this._skipCount === 0) { + // If we don't want to skip any values then just subscribe + // to Subscriber without any further logic. + return source.subscribe(new Subscriber(subscriber)); + } + else { + return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount)); + } + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SkipLastSubscriber extends Subscriber { + constructor(destination, _skipCount) { + super(destination); + this._skipCount = _skipCount; + this._count = 0; + this._ring = new Array(_skipCount); + } + _next(value) { + const skipCount = this._skipCount; + const count = this._count++; + if (count < skipCount) { + this._ring[count] = value; + } + else { + const currentIndex = count % skipCount; + const ring = this._ring; + const oldValue = ring[currentIndex]; + ring[currentIndex] = value; + this.destination.next(oldValue); + } + } +} +//# sourceMappingURL=skipLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipLast.js.map b/node_modules/rxjs/_esm2015/operators/skipLast.js.map new file mode 100644 index 0000000..4ca5c38 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipLast.js","sourceRoot":"","sources":["../../src/operators/skipLast.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,uBAAuB,EAAE,MAAM,iCAAiC;AAKzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,yBAA4B,KAAa;IACvC,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;IACE,YAAoB,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;QACpC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,IAAI,uBAAuB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,0DAA0D;YAC1D,2CAA2C;YAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,iCAAoC,UAAU;IAI5C,YAAY,WAA0B,EAAU,UAAkB;QAChE,MAAM,WAAW,CAAC,CAAC;QAD2B,eAAU,GAAV,UAAU,CAAQ;QAF1D,WAAM,GAAW,CAAC,CAAC;QAIzB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAI,UAAU,CAAC,CAAC;IACxC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,EAAE,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAEpC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipUntil.js b/node_modules/rxjs/_esm2015/operators/skipUntil.js new file mode 100644 index 0000000..267cd39 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipUntil.js @@ -0,0 +1,61 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item. + * + * + * + * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to + * be mirrored by the resulting Observable. + * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits + * an item, then emits the remaining items. + * @method skipUntil + * @owner Observable + */ +export function skipUntil(notifier) { + return (source) => source.lift(new SkipUntilOperator(notifier)); +} +class SkipUntilOperator { + constructor(notifier) { + this.notifier = notifier; + } + call(subscriber, source) { + return source.subscribe(new SkipUntilSubscriber(subscriber, this.notifier)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SkipUntilSubscriber extends OuterSubscriber { + constructor(destination, notifier) { + super(destination); + this.hasValue = false; + this.isInnerStopped = false; + this.add(subscribeToResult(this, notifier)); + } + _next(value) { + if (this.hasValue) { + super._next(value); + } + } + _complete() { + if (this.isInnerStopped) { + super._complete(); + } + else { + this.unsubscribe(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.hasValue = true; + } + notifyComplete() { + this.isInnerStopped = true; + if (this.isStopped) { + super._complete(); + } + } +} +//# sourceMappingURL=skipUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipUntil.js.map b/node_modules/rxjs/_esm2015/operators/skipUntil.js.map new file mode 100644 index 0000000..1437ff8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipUntil.js","sourceRoot":"","sources":["../../src/operators/skipUntil.ts"],"names":[],"mappings":"OAIO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;GAWG;AACH,0BAA6B,QAAyB;IACpD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;IACE,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC7C,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAwC,eAAe;IAKrD,YAAY,WAA4B,EAC5B,QAAyB;QACnC,MAAM,WAAW,CAAC,CAAC;QALb,aAAQ,GAAY,KAAK,CAAC;QAC1B,mBAAc,GAAY,KAAK,CAAC;QAKtC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAES,SAAS;QACjB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipWhile.js b/node_modules/rxjs/_esm2015/operators/skipWhile.js new file mode 100644 index 0000000..e6cfc49 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipWhile.js @@ -0,0 +1,56 @@ +import { Subscriber } from '../Subscriber'; +/** + * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds + * true, but emits all further source items as soon as the condition becomes false. + * + * + * + * @param {Function} predicate - A function to test each item emitted from the source Observable. + * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the + * specified predicate becomes false. + * @method skipWhile + * @owner Observable + */ +export function skipWhile(predicate) { + return (source) => source.lift(new SkipWhileOperator(predicate)); +} +class SkipWhileOperator { + constructor(predicate) { + this.predicate = predicate; + } + call(subscriber, source) { + return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SkipWhileSubscriber extends Subscriber { + constructor(destination, predicate) { + super(destination); + this.predicate = predicate; + this.skipping = true; + this.index = 0; + } + _next(value) { + const destination = this.destination; + if (this.skipping) { + this.tryCallPredicate(value); + } + if (!this.skipping) { + destination.next(value); + } + } + tryCallPredicate(value) { + try { + const result = this.predicate(value, this.index++); + this.skipping = Boolean(result); + } + catch (err) { + this.destination.error(err); + } + } +} +//# sourceMappingURL=skipWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/skipWhile.js.map b/node_modules/rxjs/_esm2015/operators/skipWhile.js.map new file mode 100644 index 0000000..604f14c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/skipWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"skipWhile.js","sourceRoot":"","sources":["../../src/operators/skipWhile.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;;;;;;;;GAWG;AACH,0BAA6B,SAA+C;IAC1E,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;IACE,YAAoB,SAA+C;QAA/C,cAAS,GAAT,SAAS,CAAsC;IACnE,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAqC,UAAU;IAI7C,YAAY,WAA0B,EAClB,SAA+C;QACjE,MAAM,WAAW,CAAC,CAAC;QADD,cAAS,GAAT,SAAS,CAAsC;QAJ3D,aAAQ,GAAY,IAAI,CAAC;QACzB,UAAK,GAAW,CAAC,CAAC;IAK1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,KAAQ;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/startWith.js b/node_modules/rxjs/_esm2015/operators/startWith.js new file mode 100644 index 0000000..189a877 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/startWith.js @@ -0,0 +1,42 @@ +import { ArrayObservable } from '../observable/ArrayObservable'; +import { ScalarObservable } from '../observable/ScalarObservable'; +import { EmptyObservable } from '../observable/EmptyObservable'; +import { concat as concatStatic } from '../observable/concat'; +import { isScheduler } from '../util/isScheduler'; +/* tslint:enable:max-line-length */ +/** + * Returns an Observable that emits the items you specify as arguments before it begins to emit + * items emitted by the source Observable. + * + * + * + * @param {...T} values - Items you want the modified Observable to emit first. + * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling + * the emissions of the `next` notifications. + * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items + * emitted by the source Observable. + * @method startWith + * @owner Observable + */ +export function startWith(...array) { + return (source) => { + let scheduler = array[array.length - 1]; + if (isScheduler(scheduler)) { + array.pop(); + } + else { + scheduler = null; + } + const len = array.length; + if (len === 1) { + return concatStatic(new ScalarObservable(array[0], scheduler), source); + } + else if (len > 1) { + return concatStatic(new ArrayObservable(array, scheduler), source); + } + else { + return concatStatic(new EmptyObservable(scheduler), source); + } + }; +} +//# sourceMappingURL=startWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/startWith.js.map b/node_modules/rxjs/_esm2015/operators/startWith.js.map new file mode 100644 index 0000000..5fb5518 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/startWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"startWith.js","sourceRoot":"","sources":["../../src/operators/startWith.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE,MAAM,+BAA+B;OACxD,EAAE,gBAAgB,EAAE,MAAM,gCAAgC;OAC1D,EAAE,eAAe,EAAE,MAAM,+BAA+B;OACxD,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,sBAAsB;OACtD,EAAE,WAAW,EAAE,MAAM,qBAAqB;AAWjD,mCAAmC;AAEnC;;;;;;;;;;;;;GAaG;AACH,0BAA6B,GAAG,KAA4B;IAC1D,MAAM,CAAC,CAAC,MAAqB;QAC3B,IAAI,SAAS,GAAe,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpD,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACzB,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,YAAY,CAAC,IAAI,gBAAgB,CAAO,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,CAAS,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,CAAI,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/subscribeOn.js b/node_modules/rxjs/_esm2015/operators/subscribeOn.js new file mode 100644 index 0000000..66258b6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/subscribeOn.js @@ -0,0 +1,27 @@ +import { SubscribeOnObservable } from '../observable/SubscribeOnObservable'; +/** + * Asynchronously subscribes Observers to this Observable on the specified IScheduler. + * + * + * + * @param {Scheduler} scheduler - The IScheduler to perform subscription actions on. + * @return {Observable} The source Observable modified so that its subscriptions happen on the specified IScheduler. + . + * @method subscribeOn + * @owner Observable + */ +export function subscribeOn(scheduler, delay = 0) { + return function subscribeOnOperatorFunction(source) { + return source.lift(new SubscribeOnOperator(scheduler, delay)); + }; +} +class SubscribeOnOperator { + constructor(scheduler, delay) { + this.scheduler = scheduler; + this.delay = delay; + } + call(subscriber, source) { + return new SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber); + } +} +//# sourceMappingURL=subscribeOn.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/subscribeOn.js.map b/node_modules/rxjs/_esm2015/operators/subscribeOn.js.map new file mode 100644 index 0000000..81845f1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/subscribeOn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"subscribeOn.js","sourceRoot":"","sources":["../../src/operators/subscribeOn.ts"],"names":[],"mappings":"OAKO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC;AAG3E;;;;;;;;;;GAUG;AACH,4BAA+B,SAAqB,EAAE,KAAK,GAAW,CAAC;IACrE,MAAM,CAAC,qCAAqC,MAAqB;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAI,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,SAAqB,EACrB,KAAa;QADb,cAAS,GAAT,SAAS,CAAY;QACrB,UAAK,GAAL,KAAK,CAAQ;IACjC,CAAC;IACD,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,IAAI,qBAAqB,CAC9B,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CACnC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchAll.js b/node_modules/rxjs/_esm2015/operators/switchAll.js new file mode 100644 index 0000000..f0db599 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchAll.js @@ -0,0 +1,6 @@ +import { switchMap } from './switchMap'; +import { identity } from '../util/identity'; +export function switchAll() { + return switchMap(identity); +} +//# sourceMappingURL=switchAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchAll.js.map b/node_modules/rxjs/_esm2015/operators/switchAll.js.map new file mode 100644 index 0000000..dfde7a2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchAll.js","sourceRoot":"","sources":["../../src/operators/switchAll.ts"],"names":[],"mappings":"OAEO,EAAE,SAAS,EAAE,MAAM,aAAa;OAChC,EAAE,QAAQ,EAAE,MAAM,kBAAkB;AAE3C;IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchMap.js b/node_modules/rxjs/_esm2015/operators/switchMap.js new file mode 100644 index 0000000..6d8d03c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchMap.js @@ -0,0 +1,132 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to an Observable which is merged in the output + * Observable, emitting values only from the most recently projected Observable. + * + * Maps each value to an Observable, then flattens all of + * these inner Observables using {@link switch}. + * + * + * + * Returns an Observable that emits items based on applying a function that you + * supply to each item emitted by the source Observable, where that function + * returns an (so-called "inner") Observable. Each time it observes one of these + * inner Observables, the output Observable begins emitting the items emitted by + * that inner Observable. When a new inner Observable is emitted, `switchMap` + * stops emitting items from the earlier-emitted inner Observable and begins + * emitting items from the new one. It continues to behave like this for + * subsequent inner Observables. + * + * @example Rerun an interval Observable on every click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMap} + * @see {@link exhaustMap} + * @see {@link mergeMap} + * @see {@link switch} + * @see {@link switchMapTo} + * + * @param {function(value: T, ?index: number): ObservableInput} project A function + * that, when applied to an item emitted by the source Observable, returns an + * Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits the result of applying the + * projection function (and the optional `resultSelector`) to each item emitted + * by the source Observable and taking only the values from the most recently + * projected inner Observable. + * @method switchMap + * @owner Observable + */ +export function switchMap(project, resultSelector) { + return function switchMapOperatorFunction(source) { + return source.lift(new SwitchMapOperator(project, resultSelector)); + }; +} +class SwitchMapOperator { + constructor(project, resultSelector) { + this.project = project; + this.resultSelector = resultSelector; + } + call(subscriber, source) { + return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SwitchMapSubscriber extends OuterSubscriber { + constructor(destination, project, resultSelector) { + super(destination); + this.project = project; + this.resultSelector = resultSelector; + this.index = 0; + } + _next(value) { + let result; + const index = this.index++; + try { + result = this.project(value, index); + } + catch (error) { + this.destination.error(error); + return; + } + this._innerSub(result, value, index); + } + _innerSub(result, value, index) { + const innerSubscription = this.innerSubscription; + if (innerSubscription) { + innerSubscription.unsubscribe(); + } + this.add(this.innerSubscription = subscribeToResult(this, result, value, index)); + } + _complete() { + const { innerSubscription } = this; + if (!innerSubscription || innerSubscription.closed) { + super._complete(); + } + } + /** @deprecated internal use only */ _unsubscribe() { + this.innerSubscription = null; + } + notifyComplete(innerSub) { + this.remove(innerSub); + this.innerSubscription = null; + if (this.isStopped) { + super._complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (this.resultSelector) { + this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex); + } + else { + this.destination.next(innerValue); + } + } + _tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex) { + let result; + try { + result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } +} +//# sourceMappingURL=switchMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchMap.js.map b/node_modules/rxjs/_esm2015/operators/switchMap.js.map new file mode 100644 index 0000000..02b36cd --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/operators/switchMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchMapTo.js b/node_modules/rxjs/_esm2015/operators/switchMapTo.js new file mode 100644 index 0000000..85bd341 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchMapTo.js @@ -0,0 +1,115 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Projects each source value to the same Observable which is flattened multiple + * times with {@link switch} in the output Observable. + * + * It's like {@link switchMap}, but maps each value + * always to the same inner Observable. + * + * + * + * Maps each source value to the given Observable `innerObservable` regardless + * of the source value, and then flattens those resulting Observables into one + * single Observable, which is the output Observable. The output Observables + * emits values only from the most recently emitted instance of + * `innerObservable`. + * + * @example Rerun an interval Observable on every click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.switchMapTo(Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link concatMapTo} + * @see {@link switch} + * @see {@link switchMap} + * @see {@link mergeMapTo} + * + * @param {ObservableInput} innerObservable An Observable to replace each value from + * the source Observable. + * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector] + * A function to produce the value on the output Observable based on the values + * and the indices of the source (outer) emission and the inner Observable + * emission. The arguments passed to this function are: + * - `outerValue`: the value that came from the source + * - `innerValue`: the value that came from the projected Observable + * - `outerIndex`: the "index" of the value that came from the source + * - `innerIndex`: the "index" of the value from the projected Observable + * @return {Observable} An Observable that emits items from the given + * `innerObservable` (and optionally transformed through `resultSelector`) every + * time a value is emitted on the source Observable, and taking only the values + * from the most recently projected inner Observable. + * @method switchMapTo + * @owner Observable + */ +export function switchMapTo(innerObservable, resultSelector) { + return (source) => source.lift(new SwitchMapToOperator(innerObservable, resultSelector)); +} +class SwitchMapToOperator { + constructor(observable, resultSelector) { + this.observable = observable; + this.resultSelector = resultSelector; + } + call(subscriber, source) { + return source.subscribe(new SwitchMapToSubscriber(subscriber, this.observable, this.resultSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class SwitchMapToSubscriber extends OuterSubscriber { + constructor(destination, inner, resultSelector) { + super(destination); + this.inner = inner; + this.resultSelector = resultSelector; + this.index = 0; + } + _next(value) { + const innerSubscription = this.innerSubscription; + if (innerSubscription) { + innerSubscription.unsubscribe(); + } + this.add(this.innerSubscription = subscribeToResult(this, this.inner, value, this.index++)); + } + _complete() { + const { innerSubscription } = this; + if (!innerSubscription || innerSubscription.closed) { + super._complete(); + } + } + /** @deprecated internal use only */ _unsubscribe() { + this.innerSubscription = null; + } + notifyComplete(innerSub) { + this.remove(innerSub); + this.innerSubscription = null; + if (this.isStopped) { + super._complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + const { resultSelector, destination } = this; + if (resultSelector) { + this.tryResultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + else { + destination.next(innerValue); + } + } + tryResultSelector(outerValue, innerValue, outerIndex, innerIndex) { + const { resultSelector, destination } = this; + let result; + try { + result = resultSelector(outerValue, innerValue, outerIndex, innerIndex); + } + catch (err) { + destination.error(err); + return; + } + destination.next(result); + } +} +//# sourceMappingURL=switchMapTo.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/switchMapTo.js.map b/node_modules/rxjs/_esm2015/operators/switchMapTo.js.map new file mode 100644 index 0000000..a34e3b3 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/switchMapTo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"switchMapTo.js","sourceRoot":"","sources":["../../src/operators/switchMapTo.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/take.js b/node_modules/rxjs/_esm2015/operators/take.js new file mode 100644 index 0000000..482f77b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/take.js @@ -0,0 +1,81 @@ +import { Subscriber } from '../Subscriber'; +import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError'; +import { EmptyObservable } from '../observable/EmptyObservable'; +/** + * Emits only the first `count` values emitted by the source Observable. + * + * Takes the first `count` values from the source, then + * completes. + * + * + * + * `take` returns an Observable that emits only the first `count` values emitted + * by the source Observable. If the source emits fewer than `count` values then + * all of its values are emitted. After that, it completes, regardless if the + * source completes. + * + * @example Take the first 5 seconds of an infinite 1-second interval Observable + * var interval = Rx.Observable.interval(1000); + * var five = interval.take(5); + * five.subscribe(x => console.log(x)); + * + * @see {@link takeLast} + * @see {@link takeUntil} + * @see {@link takeWhile} + * @see {@link skip} + * + * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`. + * + * @param {number} count The maximum number of `next` values to emit. + * @return {Observable} An Observable that emits only the first `count` + * values emitted by the source Observable, or all of the values from the source + * if the source emits fewer than `count` values. + * @method take + * @owner Observable + */ +export function take(count) { + return (source) => { + if (count === 0) { + return new EmptyObservable(); + } + else { + return source.lift(new TakeOperator(count)); + } + }; +} +class TakeOperator { + constructor(total) { + this.total = total; + if (this.total < 0) { + throw new ArgumentOutOfRangeError; + } + } + call(subscriber, source) { + return source.subscribe(new TakeSubscriber(subscriber, this.total)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TakeSubscriber extends Subscriber { + constructor(destination, total) { + super(destination); + this.total = total; + this.count = 0; + } + _next(value) { + const total = this.total; + const count = ++this.count; + if (count <= total) { + this.destination.next(value); + if (count === total) { + this.destination.complete(); + this.unsubscribe(); + } + } + } +} +//# sourceMappingURL=take.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/take.js.map b/node_modules/rxjs/_esm2015/operators/take.js.map new file mode 100644 index 0000000..7771a92 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/take.js.map @@ -0,0 +1 @@ +{"version":3,"file":"take.js","sourceRoot":"","sources":["../../src/operators/take.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,uBAAuB,EAAE,MAAM,iCAAiC;OAClE,EAAE,eAAe,EAAE,MAAM,+BAA+B;AAK/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAwB,KAAa;IACnC,MAAM,CAAC,CAAC,MAAqB;QAC3B,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,uBAAuB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,6BAAgC,UAAU;IAGxC,YAAY,WAA0B,EAAU,KAAa;QAC3D,MAAM,WAAW,CAAC,CAAC;QAD2B,UAAK,GAAL,KAAK,CAAQ;QAFrD,UAAK,GAAW,CAAC,CAAC;IAI1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;QAC3B,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeLast.js b/node_modules/rxjs/_esm2015/operators/takeLast.js new file mode 100644 index 0000000..f0c69b2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeLast.js @@ -0,0 +1,99 @@ +import { Subscriber } from '../Subscriber'; +import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError'; +import { EmptyObservable } from '../observable/EmptyObservable'; +/** + * Emits only the last `count` values emitted by the source Observable. + * + * Remembers the latest `count` values, then emits those + * only when the source completes. + * + * + * + * `takeLast` returns an Observable that emits at most the last `count` values + * emitted by the source Observable. If the source emits fewer than `count` + * values then all of its values are emitted. This operator must wait until the + * `complete` notification emission from the source in order to emit the `next` + * values on the output Observable, because otherwise it is impossible to know + * whether or not more values will be emitted on the source. For this reason, + * all values are emitted synchronously, followed by the complete notification. + * + * @example Take the last 3 values of an Observable with many values + * var many = Rx.Observable.range(1, 100); + * var lastThree = many.takeLast(3); + * lastThree.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeUntil} + * @see {@link takeWhile} + * @see {@link skip} + * + * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an + * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`. + * + * @param {number} count The maximum number of values to emit from the end of + * the sequence of values emitted by the source Observable. + * @return {Observable} An Observable that emits at most the last count + * values emitted by the source Observable. + * @method takeLast + * @owner Observable + */ +export function takeLast(count) { + return function takeLastOperatorFunction(source) { + if (count === 0) { + return new EmptyObservable(); + } + else { + return source.lift(new TakeLastOperator(count)); + } + }; +} +class TakeLastOperator { + constructor(total) { + this.total = total; + if (this.total < 0) { + throw new ArgumentOutOfRangeError; + } + } + call(subscriber, source) { + return source.subscribe(new TakeLastSubscriber(subscriber, this.total)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TakeLastSubscriber extends Subscriber { + constructor(destination, total) { + super(destination); + this.total = total; + this.ring = new Array(); + this.count = 0; + } + _next(value) { + const ring = this.ring; + const total = this.total; + const count = this.count++; + if (ring.length < total) { + ring.push(value); + } + else { + const index = count % total; + ring[index] = value; + } + } + _complete() { + const destination = this.destination; + let count = this.count; + if (count > 0) { + const total = this.count >= this.total ? this.total : this.count; + const ring = this.ring; + for (let i = 0; i < total; i++) { + const idx = (count++) % total; + destination.next(ring[idx]); + } + } + destination.complete(); + } +} +//# sourceMappingURL=takeLast.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeLast.js.map b/node_modules/rxjs/_esm2015/operators/takeLast.js.map new file mode 100644 index 0000000..917a7f6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeLast.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeLast.js","sourceRoot":"","sources":["../../src/operators/takeLast.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,uBAAuB,EAAE,MAAM,iCAAiC;OAClE,EAAE,eAAe,EAAE,MAAM,+BAA+B;AAK/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,yBAA4B,KAAa;IACvC,MAAM,CAAC,kCAAkC,MAAqB;QAC5D,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,eAAe,EAAK,CAAC;QAClC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,uBAAuB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,iCAAoC,UAAU;IAI5C,YAAY,WAA0B,EAAU,KAAa;QAC3D,MAAM,WAAW,CAAC,CAAC;QAD2B,UAAK,GAAL,KAAK,CAAQ;QAHrD,SAAI,GAAa,IAAI,KAAK,EAAE,CAAC;QAC7B,UAAK,GAAW,CAAC,CAAC;IAI1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAES,SAAS;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvB,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACjE,MAAM,IAAI,GAAI,IAAI,CAAC,IAAI,CAAC;YAExB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeUntil.js b/node_modules/rxjs/_esm2015/operators/takeUntil.js new file mode 100644 index 0000000..ea93a4b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeUntil.js @@ -0,0 +1,65 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Emits the values emitted by the source Observable until a `notifier` + * Observable emits a value. + * + * Lets values pass until a second Observable, + * `notifier`, emits something. Then, it completes. + * + * + * + * `takeUntil` subscribes and begins mirroring the source Observable. It also + * monitors a second Observable, `notifier` that you provide. If the `notifier` + * emits a value or a complete notification, the output Observable stops + * mirroring the source Observable and completes. + * + * @example Tick every second until the first click happens + * var interval = Rx.Observable.interval(1000); + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = interval.takeUntil(clicks); + * result.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeLast} + * @see {@link takeWhile} + * @see {@link skip} + * + * @param {Observable} notifier The Observable whose first emitted value will + * cause the output Observable of `takeUntil` to stop emitting values from the + * source Observable. + * @return {Observable} An Observable that emits the values from the source + * Observable until such time as `notifier` emits its first value. + * @method takeUntil + * @owner Observable + */ +export function takeUntil(notifier) { + return (source) => source.lift(new TakeUntilOperator(notifier)); +} +class TakeUntilOperator { + constructor(notifier) { + this.notifier = notifier; + } + call(subscriber, source) { + return source.subscribe(new TakeUntilSubscriber(subscriber, this.notifier)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TakeUntilSubscriber extends OuterSubscriber { + constructor(destination, notifier) { + super(destination); + this.notifier = notifier; + this.add(subscribeToResult(this, notifier)); + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.complete(); + } + notifyComplete() { + // noop + } +} +//# sourceMappingURL=takeUntil.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeUntil.js.map b/node_modules/rxjs/_esm2015/operators/takeUntil.js.map new file mode 100644 index 0000000..13ae4bb --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeUntil.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeUntil.js","sourceRoot":"","sources":["../../src/operators/takeUntil.ts"],"names":[],"mappings":"OAKO,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,0BAA6B,QAAyB;IACpD,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;IACE,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAC7C,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAwC,eAAe;IAErD,YAAY,WAA4B,EACpB,QAAyB;QAC3C,MAAM,WAAW,CAAC,CAAC;QADD,aAAQ,GAAR,QAAQ,CAAiB;QAE3C,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAa,EAC5B,UAAkB,EAAE,UAAkB,EACtC,QAA+B;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,cAAc;QACZ,OAAO;IACT,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeWhile.js b/node_modules/rxjs/_esm2015/operators/takeWhile.js new file mode 100644 index 0000000..ee89171 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeWhile.js @@ -0,0 +1,82 @@ +import { Subscriber } from '../Subscriber'; +/** + * Emits values emitted by the source Observable so long as each value satisfies + * the given `predicate`, and then completes as soon as this `predicate` is not + * satisfied. + * + * Takes values from the source only while they pass the + * condition given. When the first value does not satisfy, it completes. + * + * + * + * `takeWhile` subscribes and begins mirroring the source Observable. Each value + * emitted on the source is given to the `predicate` function which returns a + * boolean, representing a condition to be satisfied by the source values. The + * output Observable emits the source values until such time as the `predicate` + * returns false, at which point `takeWhile` stops mirroring the source + * Observable and completes the output Observable. + * + * @example Emit click events only while the clientX property is greater than 200 + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.takeWhile(ev => ev.clientX > 200); + * result.subscribe(x => console.log(x)); + * + * @see {@link take} + * @see {@link takeLast} + * @see {@link takeUntil} + * @see {@link skip} + * + * @param {function(value: T, index: number): boolean} predicate A function that + * evaluates a value emitted by the source Observable and returns a boolean. + * Also takes the (zero-based) index as the second argument. + * @return {Observable} An Observable that emits the values from the source + * Observable so long as each value satisfies the condition defined by the + * `predicate`, then completes. + * @method takeWhile + * @owner Observable + */ +export function takeWhile(predicate) { + return (source) => source.lift(new TakeWhileOperator(predicate)); +} +class TakeWhileOperator { + constructor(predicate) { + this.predicate = predicate; + } + call(subscriber, source) { + return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TakeWhileSubscriber extends Subscriber { + constructor(destination, predicate) { + super(destination); + this.predicate = predicate; + this.index = 0; + } + _next(value) { + const destination = this.destination; + let result; + try { + result = this.predicate(value, this.index++); + } + catch (err) { + destination.error(err); + return; + } + this.nextOrComplete(value, result); + } + nextOrComplete(value, predicateResult) { + const destination = this.destination; + if (Boolean(predicateResult)) { + destination.next(value); + } + else { + destination.complete(); + } + } +} +//# sourceMappingURL=takeWhile.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/takeWhile.js.map b/node_modules/rxjs/_esm2015/operators/takeWhile.js.map new file mode 100644 index 0000000..1f6b864 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/takeWhile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"takeWhile.js","sourceRoot":"","sources":["../../src/operators/takeWhile.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,0BAA6B,SAA+C;IAC1E,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;IACE,YAAoB,SAA+C;QAA/C,cAAS,GAAT,SAAS,CAAsC;IACnE,CAAC;IAED,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,kCAAqC,UAAU;IAG7C,YAAY,WAA0B,EAClB,SAA+C;QACjE,MAAM,WAAW,CAAC,CAAC;QADD,cAAS,GAAT,SAAS,CAAsC;QAH3D,UAAK,GAAW,CAAC,CAAC;IAK1B,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAE;QAAA,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEO,cAAc,CAAC,KAAQ,EAAE,eAAwB;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/tap.js b/node_modules/rxjs/_esm2015/operators/tap.js new file mode 100644 index 0000000..d3fad21 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/tap.js @@ -0,0 +1,103 @@ +import { Subscriber } from '../Subscriber'; +/* tslint:enable:max-line-length */ +/** + * Perform a side effect for every emission on the source Observable, but return + * an Observable that is identical to the source. + * + * Intercepts each emission on the source and runs a + * function, but returns an output which is identical to the source as long as errors don't occur. + * + * + * + * Returns a mirrored Observable of the source Observable, but modified so that + * the provided Observer is called to perform a side effect for every value, + * error, and completion emitted by the source. Any errors that are thrown in + * the aforementioned Observer or handlers are safely sent down the error path + * of the output Observable. + * + * This operator is useful for debugging your Observables for the correct values + * or performing other side effects. + * + * Note: this is different to a `subscribe` on the Observable. If the Observable + * returned by `do` is not subscribed, the side effects specified by the + * Observer will never happen. `do` therefore simply spies on existing + * execution, it does not trigger an execution to happen like `subscribe` does. + * + * @example Map every click to the clientX position of that click, while also logging the click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var positions = clicks + * .do(ev => console.log(ev)) + * .map(ev => ev.clientX); + * positions.subscribe(x => console.log(x)); + * + * @see {@link map} + * @see {@link subscribe} + * + * @param {Observer|function} [nextOrObserver] A normal Observer object or a + * callback for `next`. + * @param {function} [error] Callback for errors in the source. + * @param {function} [complete] Callback for the completion of the source. + * @return {Observable} An Observable identical to the source, but runs the + * specified Observer or callback(s) for each item. + * @name tap + */ +export function tap(nextOrObserver, error, complete) { + return function tapOperatorFunction(source) { + return source.lift(new DoOperator(nextOrObserver, error, complete)); + }; +} +class DoOperator { + constructor(nextOrObserver, error, complete) { + this.nextOrObserver = nextOrObserver; + this.error = error; + this.complete = complete; + } + call(subscriber, source) { + return source.subscribe(new DoSubscriber(subscriber, this.nextOrObserver, this.error, this.complete)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class DoSubscriber extends Subscriber { + constructor(destination, nextOrObserver, error, complete) { + super(destination); + const safeSubscriber = new Subscriber(nextOrObserver, error, complete); + safeSubscriber.syncErrorThrowable = true; + this.add(safeSubscriber); + this.safeSubscriber = safeSubscriber; + } + _next(value) { + const { safeSubscriber } = this; + safeSubscriber.next(value); + if (safeSubscriber.syncErrorThrown) { + this.destination.error(safeSubscriber.syncErrorValue); + } + else { + this.destination.next(value); + } + } + _error(err) { + const { safeSubscriber } = this; + safeSubscriber.error(err); + if (safeSubscriber.syncErrorThrown) { + this.destination.error(safeSubscriber.syncErrorValue); + } + else { + this.destination.error(err); + } + } + _complete() { + const { safeSubscriber } = this; + safeSubscriber.complete(); + if (safeSubscriber.syncErrorThrown) { + this.destination.error(safeSubscriber.syncErrorValue); + } + else { + this.destination.complete(); + } + } +} +//# sourceMappingURL=tap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/tap.js.map b/node_modules/rxjs/_esm2015/operators/tap.js.map new file mode 100644 index 0000000..aea8425 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/tap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/operators/tap.ts"],"names":[],"mappings":"OACO,EAAE,UAAU,EAAE,MAAM,eAAe;AAS1C,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,oBAAuB,cAAsD,EACtD,KAAwB,EACxB,QAAqB;IAC1C,MAAM,CAAC,6BAA6B,MAAqB;QACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC;AAED;IACE,YAAoB,cAAsD,EACtD,KAAwB,EACxB,QAAqB;QAFrB,mBAAc,GAAd,cAAc,CAAwC;QACtD,UAAK,GAAL,KAAK,CAAmB;QACxB,aAAQ,GAAR,QAAQ,CAAa;IACzC,CAAC;IACD,IAAI,CAAC,UAAyB,EAAE,MAAW;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,2BAA8B,UAAU;IAItC,YAAY,WAA0B,EAC1B,cAAsD,EACtD,KAAwB,EACxB,QAAqB;QAC/B,MAAM,WAAW,CAAC,CAAC;QAEnB,MAAM,cAAc,GAAG,IAAI,UAAU,CAAI,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1E,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAChC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,EAAE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAES,MAAM,CAAC,GAAQ;QACvB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAChC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,EAAE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAES,SAAS;QACjB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAChC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/throttle.js b/node_modules/rxjs/_esm2015/operators/throttle.js new file mode 100644 index 0000000..6b49b02 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/throttle.js @@ -0,0 +1,131 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +export const defaultThrottleConfig = { + leading: true, + trailing: false +}; +/** + * Emits a value from the source Observable, then ignores subsequent source + * values for a duration determined by another Observable, then repeats this + * process. + * + * It's like {@link throttleTime}, but the silencing + * duration is determined by a second Observable. + * + * + * + * `throttle` emits the source Observable values on the output Observable + * when its internal timer is disabled, and ignores source values when the timer + * is enabled. Initially, the timer is disabled. As soon as the first source + * value arrives, it is forwarded to the output Observable, and then the timer + * is enabled by calling the `durationSelector` function with the source value, + * which returns the "duration" Observable. When the duration Observable emits a + * value or completes, the timer is disabled, and this process repeats for the + * next source value. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.throttle(ev => Rx.Observable.interval(1000)); + * result.subscribe(x => console.log(x)); + * + * @see {@link audit} + * @see {@link debounce} + * @see {@link delayWhen} + * @see {@link sample} + * @see {@link throttleTime} + * + * @param {function(value: T): SubscribableOrPromise} durationSelector A function + * that receives a value from the source Observable, for computing the silencing + * duration for each source value, returned as an Observable or a Promise. + * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults + * to `{ leading: true, trailing: false }`. + * @return {Observable} An Observable that performs the throttle operation to + * limit the rate of emissions from the source. + * @method throttle + * @owner Observable + */ +export function throttle(durationSelector, config = defaultThrottleConfig) { + return (source) => source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); +} +class ThrottleOperator { + constructor(durationSelector, leading, trailing) { + this.durationSelector = durationSelector; + this.leading = leading; + this.trailing = trailing; + } + call(subscriber, source) { + return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc + * @ignore + * @extends {Ignored} + */ +class ThrottleSubscriber extends OuterSubscriber { + constructor(destination, durationSelector, _leading, _trailing) { + super(destination); + this.destination = destination; + this.durationSelector = durationSelector; + this._leading = _leading; + this._trailing = _trailing; + this._hasTrailingValue = false; + } + _next(value) { + if (this.throttled) { + if (this._trailing) { + this._hasTrailingValue = true; + this._trailingValue = value; + } + } + else { + const duration = this.tryDurationSelector(value); + if (duration) { + this.add(this.throttled = subscribeToResult(this, duration)); + } + if (this._leading) { + this.destination.next(value); + if (this._trailing) { + this._hasTrailingValue = true; + this._trailingValue = value; + } + } + } + } + tryDurationSelector(value) { + try { + return this.durationSelector(value); + } + catch (err) { + this.destination.error(err); + return null; + } + } + /** @deprecated internal use only */ _unsubscribe() { + const { throttled, _trailingValue, _hasTrailingValue, _trailing } = this; + this._trailingValue = null; + this._hasTrailingValue = false; + if (throttled) { + this.remove(throttled); + this.throttled = null; + throttled.unsubscribe(); + } + } + _sendTrailing() { + const { destination, throttled, _trailing, _trailingValue, _hasTrailingValue } = this; + if (throttled && _trailing && _hasTrailingValue) { + destination.next(_trailingValue); + this._trailingValue = null; + this._hasTrailingValue = false; + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this._sendTrailing(); + this._unsubscribe(); + } + notifyComplete() { + this._sendTrailing(); + this._unsubscribe(); + } +} +//# sourceMappingURL=throttle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/throttle.js.map b/node_modules/rxjs/_esm2015/operators/throttle.js.map new file mode 100644 index 0000000..dcdc96b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/throttle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/operators/throttle.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/throttleTime.js b/node_modules/rxjs/_esm2015/operators/throttleTime.js new file mode 100644 index 0000000..67f2f1b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/throttleTime.js @@ -0,0 +1,104 @@ +import { Subscriber } from '../Subscriber'; +import { async } from '../scheduler/async'; +import { defaultThrottleConfig } from './throttle'; +/** + * Emits a value from the source Observable, then ignores subsequent source + * values for `duration` milliseconds, then repeats this process. + * + * Lets a value pass, then ignores source values for the + * next `duration` milliseconds. + * + * + * + * `throttleTime` emits the source Observable values on the output Observable + * when its internal timer is disabled, and ignores source values when the timer + * is enabled. Initially, the timer is disabled. As soon as the first source + * value arrives, it is forwarded to the output Observable, and then the timer + * is enabled. After `duration` milliseconds (or the time unit determined + * internally by the optional `scheduler`) has passed, the timer is disabled, + * and this process repeats for the next source value. Optionally takes a + * {@link IScheduler} for managing timers. + * + * @example Emit clicks at a rate of at most one click per second + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.throttleTime(1000); + * result.subscribe(x => console.log(x)); + * + * @see {@link auditTime} + * @see {@link debounceTime} + * @see {@link delay} + * @see {@link sampleTime} + * @see {@link throttle} + * + * @param {number} duration Time to wait before emitting another value after + * emitting the last value, measured in milliseconds or the time unit determined + * internally by the optional `scheduler`. + * @param {Scheduler} [scheduler=async] The {@link IScheduler} to use for + * managing the timers that handle the throttling. + * @return {Observable} An Observable that performs the throttle operation to + * limit the rate of emissions from the source. + * @method throttleTime + * @owner Observable + */ +export function throttleTime(duration, scheduler = async, config = defaultThrottleConfig) { + return (source) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); +} +class ThrottleTimeOperator { + constructor(duration, scheduler, leading, trailing) { + this.duration = duration; + this.scheduler = scheduler; + this.leading = leading; + this.trailing = trailing; + } + call(subscriber, source) { + return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class ThrottleTimeSubscriber extends Subscriber { + constructor(destination, duration, scheduler, leading, trailing) { + super(destination); + this.duration = duration; + this.scheduler = scheduler; + this.leading = leading; + this.trailing = trailing; + this._hasTrailingValue = false; + this._trailingValue = null; + } + _next(value) { + if (this.throttled) { + if (this.trailing) { + this._trailingValue = value; + this._hasTrailingValue = true; + } + } + else { + this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this })); + if (this.leading) { + this.destination.next(value); + } + } + } + clearThrottle() { + const throttled = this.throttled; + if (throttled) { + if (this.trailing && this._hasTrailingValue) { + this.destination.next(this._trailingValue); + this._trailingValue = null; + this._hasTrailingValue = false; + } + throttled.unsubscribe(); + this.remove(throttled); + this.throttled = null; + } + } +} +function dispatchNext(arg) { + const { subscriber } = arg; + subscriber.clearThrottle(); +} +//# sourceMappingURL=throttleTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/throttleTime.js.map b/node_modules/rxjs/_esm2015/operators/throttleTime.js.map new file mode 100644 index 0000000..ae54cc1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/throttleTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"throttleTime.js","sourceRoot":"","sources":["../../src/operators/throttleTime.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeInterval.js b/node_modules/rxjs/_esm2015/operators/timeInterval.js new file mode 100644 index 0000000..c9e5c97 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeInterval.js @@ -0,0 +1,40 @@ +import { Subscriber } from '../Subscriber'; +import { async } from '../scheduler/async'; +export function timeInterval(scheduler = async) { + return (source) => source.lift(new TimeIntervalOperator(scheduler)); +} +export class TimeInterval { + constructor(value, interval) { + this.value = value; + this.interval = interval; + } +} +; +class TimeIntervalOperator { + constructor(scheduler) { + this.scheduler = scheduler; + } + call(observer, source) { + return source.subscribe(new TimeIntervalSubscriber(observer, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TimeIntervalSubscriber extends Subscriber { + constructor(destination, scheduler) { + super(destination); + this.scheduler = scheduler; + this.lastTime = 0; + this.lastTime = scheduler.now(); + } + _next(value) { + let now = this.scheduler.now(); + let span = now - this.lastTime; + this.lastTime = now; + this.destination.next(new TimeInterval(value, span)); + } +} +//# sourceMappingURL=timeInterval.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeInterval.js.map b/node_modules/rxjs/_esm2015/operators/timeInterval.js.map new file mode 100644 index 0000000..bd5bf44 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeInterval.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeInterval.js","sourceRoot":"","sources":["../../src/operators/timeInterval.ts"],"names":[],"mappings":"OAEO,EAAE,UAAU,EAAE,MAAM,eAAe;OAEnC,EAAE,KAAK,EAAE,MAAM,oBAAoB;AAG1C,6BAAgC,SAAS,GAAe,KAAK;IAC3D,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;IACE,YAAmB,KAAQ,EAAS,QAAgB;QAAjC,UAAK,GAAL,KAAK,CAAG;QAAS,aAAQ,GAAR,QAAQ,CAAQ;IAEpD,CAAC;AACH,CAAC;AAAA,CAAC;AAEF;IACE,YAAoB,SAAqB;QAArB,cAAS,GAAT,SAAS,CAAY;IAEzC,CAAC;IAED,IAAI,CAAC,QAAqC,EAAE,MAAW;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,qCAAwC,UAAU;IAGhD,YAAY,WAAwC,EAAU,SAAqB;QACjF,MAAM,WAAW,CAAC,CAAC;QADyC,cAAS,GAAT,SAAS,CAAY;QAF3E,aAAQ,GAAW,CAAC,CAAC;QAK3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeout.js b/node_modules/rxjs/_esm2015/operators/timeout.js new file mode 100644 index 0000000..5f50513 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeout.js @@ -0,0 +1,130 @@ +import { async } from '../scheduler/async'; +import { isDate } from '../util/isDate'; +import { Subscriber } from '../Subscriber'; +import { TimeoutError } from '../util/TimeoutError'; +/** + * + * Errors if Observable does not emit a value in given time span. + * + * Timeouts on Observable that doesn't emit values fast enough. + * + * + * + * `timeout` operator accepts as an argument either a number or a Date. + * + * If number was provided, it returns an Observable that behaves like a source + * Observable, unless there is a period of time where there is no value emitted. + * So if you provide `100` as argument and first value comes after 50ms from + * the moment of subscription, this value will be simply re-emitted by the resulting + * Observable. If however after that 100ms passes without a second value being emitted, + * stream will end with an error and source Observable will be unsubscribed. + * These checks are performed throughout whole lifecycle of Observable - from the moment + * it was subscribed to, until it completes or errors itself. Thus every value must be + * emitted within specified period since previous value. + * + * If provided argument was Date, returned Observable behaves differently. It throws + * if Observable did not complete before provided Date. This means that periods between + * emission of particular values do not matter in this case. If Observable did not complete + * before provided Date, source Observable will be unsubscribed. Other than that, resulting + * stream behaves just as source Observable. + * + * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments) + * when returned Observable will check if source stream emitted value or completed. + * + * @example Check if ticks are emitted within certain timespan + * const seconds = Rx.Observable.interval(1000); + * + * seconds.timeout(1100) // Let's use bigger timespan to be safe, + * // since `interval` might fire a bit later then scheduled. + * .subscribe( + * value => console.log(value), // Will emit numbers just as regular `interval` would. + * err => console.log(err) // Will never be called. + * ); + * + * seconds.timeout(900).subscribe( + * value => console.log(value), // Will never be called. + * err => console.log(err) // Will emit error before even first value is emitted, + * // since it did not arrive within 900ms period. + * ); + * + * @example Use Date to check if Observable completed + * const seconds = Rx.Observable.interval(1000); + * + * seconds.timeout(new Date("December 17, 2020 03:24:00")) + * .subscribe( + * value => console.log(value), // Will emit values as regular `interval` would + * // until December 17, 2020 at 03:24:00. + * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error, + * // since Observable did not complete by then. + * ); + * + * @see {@link timeoutWith} + * + * @param {number|Date} due Number specifying period within which Observable must emit values + * or Date specifying before when Observable should complete + * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur. + * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail. + * @method timeout + * @owner Observable + */ +export function timeout(due, scheduler = async) { + const absoluteTimeout = isDate(due); + const waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due); + return (source) => source.lift(new TimeoutOperator(waitFor, absoluteTimeout, scheduler, new TimeoutError())); +} +class TimeoutOperator { + constructor(waitFor, absoluteTimeout, scheduler, errorInstance) { + this.waitFor = waitFor; + this.absoluteTimeout = absoluteTimeout; + this.scheduler = scheduler; + this.errorInstance = errorInstance; + } + call(subscriber, source) { + return source.subscribe(new TimeoutSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.scheduler, this.errorInstance)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TimeoutSubscriber extends Subscriber { + constructor(destination, absoluteTimeout, waitFor, scheduler, errorInstance) { + super(destination); + this.absoluteTimeout = absoluteTimeout; + this.waitFor = waitFor; + this.scheduler = scheduler; + this.errorInstance = errorInstance; + this.action = null; + this.scheduleTimeout(); + } + static dispatchTimeout(subscriber) { + subscriber.error(subscriber.errorInstance); + } + scheduleTimeout() { + const { action } = this; + if (action) { + // Recycle the action if we've already scheduled one. All the production + // Scheduler Actions mutate their state/delay time and return themeselves. + // VirtualActions are immutable, so they create and return a clone. In this + // case, we need to set the action reference to the most recent VirtualAction, + // to ensure that's the one we clone from next time. + this.action = action.schedule(this, this.waitFor); + } + else { + this.add(this.action = this.scheduler.schedule(TimeoutSubscriber.dispatchTimeout, this.waitFor, this)); + } + } + _next(value) { + if (!this.absoluteTimeout) { + this.scheduleTimeout(); + } + super._next(value); + } + /** @deprecated internal use only */ _unsubscribe() { + this.action = null; + this.scheduler = null; + this.errorInstance = null; + } +} +//# sourceMappingURL=timeout.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeout.js.map b/node_modules/rxjs/_esm2015/operators/timeout.js.map new file mode 100644 index 0000000..2fb2925 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeout.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/operators/timeout.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeoutWith.js b/node_modules/rxjs/_esm2015/operators/timeoutWith.js new file mode 100644 index 0000000..211ef8b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeoutWith.js @@ -0,0 +1,117 @@ +import { async } from '../scheduler/async'; +import { isDate } from '../util/isDate'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * + * Errors if Observable does not emit a value in given time span, in case of which + * subscribes to the second Observable. + * + * It's a version of `timeout` operator that let's you specify fallback Observable. + * + * + * + * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same, + * still accepting as a first argument either a number or a Date, which control - respectively - + * when values of source Observable should be emitted or when it should complete. + * + * The only difference is that it accepts a second, required parameter. This parameter + * should be an Observable which will be subscribed when source Observable fails any timeout check. + * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting + * values from second Observable. Note that this fallback Observable is not checked for timeouts + * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second + * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that + * stream completes, it completes as well. + * + * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided + * here - as a third, optional parameter. It still is used to schedule timeout checks and - + * as a consequence - when second Observable will be subscribed, since subscription happens + * immediately after failing check. + * + * @example Add fallback observable + * const seconds = Rx.Observable.interval(1000); + * const minutes = Rx.Observable.interval(60 * 1000); + * + * seconds.timeoutWith(900, minutes) + * .subscribe( + * value => console.log(value), // After 900ms, will start emitting `minutes`, + * // since first value of `seconds` will not arrive fast enough. + * err => console.log(err) // Would be called after 900ms in case of `timeout`, + * // but here will never be called. + * ); + * + * @param {number|Date} due Number specifying period within which Observable must emit values + * or Date specifying before when Observable should complete + * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check. + * @param {Scheduler} [scheduler] Scheduler controlling when timeout checks occur. + * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable + * passed as a second parameter. + * @method timeoutWith + * @owner Observable + */ +export function timeoutWith(due, withObservable, scheduler = async) { + return (source) => { + let absoluteTimeout = isDate(due); + let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due); + return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler)); + }; +} +class TimeoutWithOperator { + constructor(waitFor, absoluteTimeout, withObservable, scheduler) { + this.waitFor = waitFor; + this.absoluteTimeout = absoluteTimeout; + this.withObservable = withObservable; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class TimeoutWithSubscriber extends OuterSubscriber { + constructor(destination, absoluteTimeout, waitFor, withObservable, scheduler) { + super(destination); + this.absoluteTimeout = absoluteTimeout; + this.waitFor = waitFor; + this.withObservable = withObservable; + this.scheduler = scheduler; + this.action = null; + this.scheduleTimeout(); + } + static dispatchTimeout(subscriber) { + const { withObservable } = subscriber; + subscriber._unsubscribeAndRecycle(); + subscriber.add(subscribeToResult(subscriber, withObservable)); + } + scheduleTimeout() { + const { action } = this; + if (action) { + // Recycle the action if we've already scheduled one. All the production + // Scheduler Actions mutate their state/delay time and return themeselves. + // VirtualActions are immutable, so they create and return a clone. In this + // case, we need to set the action reference to the most recent VirtualAction, + // to ensure that's the one we clone from next time. + this.action = action.schedule(this, this.waitFor); + } + else { + this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this)); + } + } + _next(value) { + if (!this.absoluteTimeout) { + this.scheduleTimeout(); + } + super._next(value); + } + /** @deprecated internal use only */ _unsubscribe() { + this.action = null; + this.scheduler = null; + this.withObservable = null; + } +} +//# sourceMappingURL=timeoutWith.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timeoutWith.js.map b/node_modules/rxjs/_esm2015/operators/timeoutWith.js.map new file mode 100644 index 0000000..9e11823 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timeoutWith.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timeoutWith.js","sourceRoot":"","sources":["../../src/operators/timeoutWith.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timestamp.js b/node_modules/rxjs/_esm2015/operators/timestamp.js new file mode 100644 index 0000000..fe36bba --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timestamp.js @@ -0,0 +1,20 @@ +import { async } from '../scheduler/async'; +import { map } from './map'; +/** + * @param scheduler + * @return {Observable>|WebSocketSubject|Observable} + * @method timestamp + * @owner Observable + */ +export function timestamp(scheduler = async) { + return map((value) => new Timestamp(value, scheduler.now())); + // return (source: Observable) => source.lift(new TimestampOperator(scheduler)); +} +export class Timestamp { + constructor(value, timestamp) { + this.value = value; + this.timestamp = timestamp; + } +} +; +//# sourceMappingURL=timestamp.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/timestamp.js.map b/node_modules/rxjs/_esm2015/operators/timestamp.js.map new file mode 100644 index 0000000..3aa7944 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/timestamp.js.map @@ -0,0 +1 @@ +{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/operators/timestamp.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE,MAAM,oBAAoB;OAEnC,EAAE,GAAG,EAAE,MAAM,OAAO;AAE3B;;;;;GAKG;AACH,0BAA6B,SAAS,GAAe,KAAK;IACxD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAQ,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChE,mFAAmF;AACrF,CAAC;AAED;IACE,YAAmB,KAAQ,EAAS,SAAiB;QAAlC,UAAK,GAAL,KAAK,CAAG;QAAS,cAAS,GAAT,SAAS,CAAQ;IACrD,CAAC;AACH,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/toArray.js b/node_modules/rxjs/_esm2015/operators/toArray.js new file mode 100644 index 0000000..98effe7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/toArray.js @@ -0,0 +1,12 @@ +import { reduce } from './reduce'; +function toArrayReducer(arr, item, index) { + if (index === 0) { + return [item]; + } + arr.push(item); + return arr; +} +export function toArray() { + return reduce(toArrayReducer, []); +} +//# sourceMappingURL=toArray.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/toArray.js.map b/node_modules/rxjs/_esm2015/operators/toArray.js.map new file mode 100644 index 0000000..692afd0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/toArray.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toArray.js","sourceRoot":"","sources":["../../src/operators/toArray.ts"],"names":[],"mappings":"OAAO,EAAE,MAAM,EAAE,MAAM,UAAU;AAGjC,wBAA2B,GAAQ,EAAE,IAAO,EAAE,KAAa;IACzD,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC;AACb,CAAC;AAED;IACE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAA6B,CAAC;AAChE,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/window.js b/node_modules/rxjs/_esm2015/operators/window.js new file mode 100644 index 0000000..22ec6f4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/window.js @@ -0,0 +1,102 @@ +import { Subject } from '../Subject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Branch out the source Observable values as a nested Observable whenever + * `windowBoundaries` emits. + * + * It's like {@link buffer}, but emits a nested Observable + * instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits connected, non-overlapping + * windows. It emits the current window and opens a new one whenever the + * Observable `windowBoundaries` emits an item. Because each window is an + * Observable, the output is a higher-order Observable. + * + * @example In every window of 1 second each, emit at most 2 click events + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var interval = Rx.Observable.interval(1000); + * var result = clicks.window(interval) + * .map(win => win.take(2)) // each window has at most 2 emissions + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link windowWhen} + * @see {@link buffer} + * + * @param {Observable} windowBoundaries An Observable that completes the + * previous window and starts a new window. + * @return {Observable>} An Observable of windows, which are + * Observables emitting values of the source Observable. + * @method window + * @owner Observable + */ +export function window(windowBoundaries) { + return function windowOperatorFunction(source) { + return source.lift(new WindowOperator(windowBoundaries)); + }; +} +class WindowOperator { + constructor(windowBoundaries) { + this.windowBoundaries = windowBoundaries; + } + call(subscriber, source) { + const windowSubscriber = new WindowSubscriber(subscriber); + const sourceSubscription = source.subscribe(windowSubscriber); + if (!sourceSubscription.closed) { + windowSubscriber.add(subscribeToResult(windowSubscriber, this.windowBoundaries)); + } + return sourceSubscription; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WindowSubscriber extends OuterSubscriber { + constructor(destination) { + super(destination); + this.window = new Subject(); + destination.next(this.window); + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openWindow(); + } + notifyError(error, innerSub) { + this._error(error); + } + notifyComplete(innerSub) { + this._complete(); + } + _next(value) { + this.window.next(value); + } + _error(err) { + this.window.error(err); + this.destination.error(err); + } + _complete() { + this.window.complete(); + this.destination.complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + this.window = null; + } + openWindow() { + const prevWindow = this.window; + if (prevWindow) { + prevWindow.complete(); + } + const destination = this.destination; + const newWindow = this.window = new Subject(); + destination.next(newWindow); + } +} +//# sourceMappingURL=window.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/window.js.map b/node_modules/rxjs/_esm2015/operators/window.js.map new file mode 100644 index 0000000..2fc0483 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/window.js.map @@ -0,0 +1 @@ +{"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/operators/window.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,EAAE,MAAM,YAAY;OAE7B,EAAE,eAAe,EAAE,MAAM,oBAAoB;OAE7C,EAAE,iBAAiB,EAAE,MAAM,2BAA2B;AAG7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,uBAA0B,gBAAiC;IACzD,MAAM,CAAC,gCAAgC,MAAqB;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;AACJ,CAAC;AAED;IAEE,YAAoB,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;IACrD,CAAC;IAED,IAAI,CAAC,UAAqC,EAAE,MAAW;QACrD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC9D,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/B,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,CAAC,kBAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,+BAAkC,eAAe;IAI/C,YAAY,WAAsC;QAChD,MAAM,WAAW,CAAC,CAAC;QAHb,WAAM,GAAe,IAAI,OAAO,EAAK,CAAC;QAI5C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,UAAa,EAAE,UAAe,EAC9B,UAAkB,EAAE,UAAkB,EACtC,QAAiC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,QAAiC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,cAAc,CAAC,QAAiC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAES,MAAM,CAAC,GAAQ;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,oCAAoC,CAAC,YAAY;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,UAAU;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,EAAK,CAAC;QACjD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowCount.js b/node_modules/rxjs/_esm2015/operators/windowCount.js new file mode 100644 index 0000000..8f137bc --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowCount.js @@ -0,0 +1,122 @@ +import { Subscriber } from '../Subscriber'; +import { Subject } from '../Subject'; +/** + * Branch out the source Observable values as a nested Observable with each + * nested Observable emitting at most `windowSize` values. + * + * It's like {@link bufferCount}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits windows every `startWindowEvery` + * items, each containing no more than `windowSize` items. When the source + * Observable completes or encounters an error, the output Observable emits + * the current window and propagates the notification from the source + * Observable. If `startWindowEvery` is not provided, then new windows are + * started immediately at the start of the source and when each window completes + * with size `windowSize`. + * + * @example Ignore every 3rd click event, starting from the first one + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.windowCount(3) + * .map(win => win.skip(1)) // skip first of every 3 clicks + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @example Ignore every 3rd click event, starting from the third one + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks.windowCount(2, 3) + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link windowWhen} + * @see {@link bufferCount} + * + * @param {number} windowSize The maximum number of values emitted by each + * window. + * @param {number} [startWindowEvery] Interval at which to start a new window. + * For example if `startWindowEvery` is `2`, then a new window will be started + * on every other value from the source. A new window is started at the + * beginning of the source by default. + * @return {Observable>} An Observable of windows, which in turn + * are Observable of values. + * @method windowCount + * @owner Observable + */ +export function windowCount(windowSize, startWindowEvery = 0) { + return function windowCountOperatorFunction(source) { + return source.lift(new WindowCountOperator(windowSize, startWindowEvery)); + }; +} +class WindowCountOperator { + constructor(windowSize, startWindowEvery) { + this.windowSize = windowSize; + this.startWindowEvery = startWindowEvery; + } + call(subscriber, source) { + return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WindowCountSubscriber extends Subscriber { + constructor(destination, windowSize, startWindowEvery) { + super(destination); + this.destination = destination; + this.windowSize = windowSize; + this.startWindowEvery = startWindowEvery; + this.windows = [new Subject()]; + this.count = 0; + destination.next(this.windows[0]); + } + _next(value) { + const startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize; + const destination = this.destination; + const windowSize = this.windowSize; + const windows = this.windows; + const len = windows.length; + for (let i = 0; i < len && !this.closed; i++) { + windows[i].next(value); + } + const c = this.count - windowSize + 1; + if (c >= 0 && c % startWindowEvery === 0 && !this.closed) { + windows.shift().complete(); + } + if (++this.count % startWindowEvery === 0 && !this.closed) { + const window = new Subject(); + windows.push(window); + destination.next(window); + } + } + _error(err) { + const windows = this.windows; + if (windows) { + while (windows.length > 0 && !this.closed) { + windows.shift().error(err); + } + } + this.destination.error(err); + } + _complete() { + const windows = this.windows; + if (windows) { + while (windows.length > 0 && !this.closed) { + windows.shift().complete(); + } + } + this.destination.complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + this.count = 0; + this.windows = null; + } +} +//# sourceMappingURL=windowCount.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowCount.js.map b/node_modules/rxjs/_esm2015/operators/windowCount.js.map new file mode 100644 index 0000000..5caf405 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowCount.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowCount.js","sourceRoot":"","sources":["../../src/operators/windowCount.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowTime.js b/node_modules/rxjs/_esm2015/operators/windowTime.js new file mode 100644 index 0000000..50eedef --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowTime.js @@ -0,0 +1,147 @@ +import { Subject } from '../Subject'; +import { async } from '../scheduler/async'; +import { Subscriber } from '../Subscriber'; +import { isNumeric } from '../util/isNumeric'; +import { isScheduler } from '../util/isScheduler'; +export function windowTime(windowTimeSpan) { + let scheduler = async; + let windowCreationInterval = null; + let maxWindowSize = Number.POSITIVE_INFINITY; + if (isScheduler(arguments[3])) { + scheduler = arguments[3]; + } + if (isScheduler(arguments[2])) { + scheduler = arguments[2]; + } + else if (isNumeric(arguments[2])) { + maxWindowSize = arguments[2]; + } + if (isScheduler(arguments[1])) { + scheduler = arguments[1]; + } + else if (isNumeric(arguments[1])) { + windowCreationInterval = arguments[1]; + } + return function windowTimeOperatorFunction(source) { + return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler)); + }; +} +class WindowTimeOperator { + constructor(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { + this.windowTimeSpan = windowTimeSpan; + this.windowCreationInterval = windowCreationInterval; + this.maxWindowSize = maxWindowSize; + this.scheduler = scheduler; + } + call(subscriber, source) { + return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler)); + } +} +class CountedSubject extends Subject { + constructor() { + super(...arguments); + this._numberOfNextedValues = 0; + } + next(value) { + this._numberOfNextedValues++; + super.next(value); + } + get numberOfNextedValues() { + return this._numberOfNextedValues; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WindowTimeSubscriber extends Subscriber { + constructor(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { + super(destination); + this.destination = destination; + this.windowTimeSpan = windowTimeSpan; + this.windowCreationInterval = windowCreationInterval; + this.maxWindowSize = maxWindowSize; + this.scheduler = scheduler; + this.windows = []; + const window = this.openWindow(); + if (windowCreationInterval !== null && windowCreationInterval >= 0) { + const closeState = { subscriber: this, window, context: null }; + const creationState = { windowTimeSpan, windowCreationInterval, subscriber: this, scheduler }; + this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState)); + this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState)); + } + else { + const timeSpanOnlyState = { subscriber: this, window, windowTimeSpan }; + this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState)); + } + } + _next(value) { + const windows = this.windows; + const len = windows.length; + for (let i = 0; i < len; i++) { + const window = windows[i]; + if (!window.closed) { + window.next(value); + if (window.numberOfNextedValues >= this.maxWindowSize) { + this.closeWindow(window); + } + } + } + } + _error(err) { + const windows = this.windows; + while (windows.length > 0) { + windows.shift().error(err); + } + this.destination.error(err); + } + _complete() { + const windows = this.windows; + while (windows.length > 0) { + const window = windows.shift(); + if (!window.closed) { + window.complete(); + } + } + this.destination.complete(); + } + openWindow() { + const window = new CountedSubject(); + this.windows.push(window); + const destination = this.destination; + destination.next(window); + return window; + } + closeWindow(window) { + window.complete(); + const windows = this.windows; + windows.splice(windows.indexOf(window), 1); + } +} +function dispatchWindowTimeSpanOnly(state) { + const { subscriber, windowTimeSpan, window } = state; + if (window) { + subscriber.closeWindow(window); + } + state.window = subscriber.openWindow(); + this.schedule(state, windowTimeSpan); +} +function dispatchWindowCreation(state) { + const { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state; + const window = subscriber.openWindow(); + const action = this; + let context = { action, subscription: null }; + const timeSpanState = { subscriber, window, context }; + context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState); + action.add(context.subscription); + action.schedule(state, windowCreationInterval); +} +function dispatchWindowClose(state) { + const { subscriber, window, context } = state; + if (context && context.action && context.subscription) { + context.action.remove(context.subscription); + } + subscriber.closeWindow(window); +} +//# sourceMappingURL=windowTime.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowTime.js.map b/node_modules/rxjs/_esm2015/operators/windowTime.js.map new file mode 100644 index 0000000..ecb7df0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowTime.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowTime.js","sourceRoot":"","sources":["../../src/operators/windowTime.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowToggle.js b/node_modules/rxjs/_esm2015/operators/windowToggle.js new file mode 100644 index 0000000..9446b64 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowToggle.js @@ -0,0 +1,170 @@ +import { Subject } from '../Subject'; +import { Subscription } from '../Subscription'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Branch out the source Observable values as a nested Observable starting from + * an emission from `openings` and ending when the output of `closingSelector` + * emits. + * + * It's like {@link bufferToggle}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits windows that contain those items + * emitted by the source Observable between the time when the `openings` + * Observable emits an item and when the Observable returned by + * `closingSelector` emits an item. + * + * @example Every other second, emit the click events from the next 500ms + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var openings = Rx.Observable.interval(1000); + * var result = clicks.windowToggle(openings, i => + * i % 2 ? Rx.Observable.interval(500) : Rx.Observable.empty() + * ).mergeAll(); + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowWhen} + * @see {@link bufferToggle} + * + * @param {Observable} openings An observable of notifications to start new + * windows. + * @param {function(value: O): Observable} closingSelector A function that takes + * the value emitted by the `openings` observable and returns an Observable, + * which, when it emits (either `next` or `complete`), signals that the + * associated window should complete. + * @return {Observable>} An observable of windows, which in turn + * are Observables. + * @method windowToggle + * @owner Observable + */ +export function windowToggle(openings, closingSelector) { + return (source) => source.lift(new WindowToggleOperator(openings, closingSelector)); +} +class WindowToggleOperator { + constructor(openings, closingSelector) { + this.openings = openings; + this.closingSelector = closingSelector; + } + call(subscriber, source) { + return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WindowToggleSubscriber extends OuterSubscriber { + constructor(destination, openings, closingSelector) { + super(destination); + this.openings = openings; + this.closingSelector = closingSelector; + this.contexts = []; + this.add(this.openSubscription = subscribeToResult(this, openings, openings)); + } + _next(value) { + const { contexts } = this; + if (contexts) { + const len = contexts.length; + for (let i = 0; i < len; i++) { + contexts[i].window.next(value); + } + } + } + _error(err) { + const { contexts } = this; + this.contexts = null; + if (contexts) { + const len = contexts.length; + let index = -1; + while (++index < len) { + const context = contexts[index]; + context.window.error(err); + context.subscription.unsubscribe(); + } + } + super._error(err); + } + _complete() { + const { contexts } = this; + this.contexts = null; + if (contexts) { + const len = contexts.length; + let index = -1; + while (++index < len) { + const context = contexts[index]; + context.window.complete(); + context.subscription.unsubscribe(); + } + } + super._complete(); + } + /** @deprecated internal use only */ _unsubscribe() { + const { contexts } = this; + this.contexts = null; + if (contexts) { + const len = contexts.length; + let index = -1; + while (++index < len) { + const context = contexts[index]; + context.window.unsubscribe(); + context.subscription.unsubscribe(); + } + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (outerValue === this.openings) { + const { closingSelector } = this; + const closingNotifier = tryCatch(closingSelector)(innerValue); + if (closingNotifier === errorObject) { + return this.error(errorObject.e); + } + else { + const window = new Subject(); + const subscription = new Subscription(); + const context = { window, subscription }; + this.contexts.push(context); + const innerSubscription = subscribeToResult(this, closingNotifier, context); + if (innerSubscription.closed) { + this.closeWindow(this.contexts.length - 1); + } + else { + innerSubscription.context = context; + subscription.add(innerSubscription); + } + this.destination.next(window); + } + } + else { + this.closeWindow(this.contexts.indexOf(outerValue)); + } + } + notifyError(err) { + this.error(err); + } + notifyComplete(inner) { + if (inner !== this.openSubscription) { + this.closeWindow(this.contexts.indexOf(inner.context)); + } + } + closeWindow(index) { + if (index === -1) { + return; + } + const { contexts } = this; + const context = contexts[index]; + const { window, subscription } = context; + contexts.splice(index, 1); + window.complete(); + subscription.unsubscribe(); + } +} +//# sourceMappingURL=windowToggle.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowToggle.js.map b/node_modules/rxjs/_esm2015/operators/windowToggle.js.map new file mode 100644 index 0000000..0ea554f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowToggle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowToggle.js","sourceRoot":"","sources":["../../src/operators/windowToggle.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowWhen.js b/node_modules/rxjs/_esm2015/operators/windowWhen.js new file mode 100644 index 0000000..922ff04 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowWhen.js @@ -0,0 +1,118 @@ +import { Subject } from '../Subject'; +import { tryCatch } from '../util/tryCatch'; +import { errorObject } from '../util/errorObject'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/** + * Branch out the source Observable values as a nested Observable using a + * factory function of closing Observables to determine when to start a new + * window. + * + * It's like {@link bufferWhen}, but emits a nested + * Observable instead of an array. + * + * + * + * Returns an Observable that emits windows of items it collects from the source + * Observable. The output Observable emits connected, non-overlapping windows. + * It emits the current window and opens a new one whenever the Observable + * produced by the specified `closingSelector` function emits an item. The first + * window is opened immediately when subscribing to the output Observable. + * + * @example Emit only the first two clicks events in every window of [1-5] random seconds + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var result = clicks + * .windowWhen(() => Rx.Observable.interval(1000 + Math.random() * 4000)) + * .map(win => win.take(2)) // each window has at most 2 emissions + * .mergeAll(); // flatten the Observable-of-Observables + * result.subscribe(x => console.log(x)); + * + * @see {@link window} + * @see {@link windowCount} + * @see {@link windowTime} + * @see {@link windowToggle} + * @see {@link bufferWhen} + * + * @param {function(): Observable} closingSelector A function that takes no + * arguments and returns an Observable that signals (on either `next` or + * `complete`) when to close the previous window and start a new one. + * @return {Observable>} An observable of windows, which in turn + * are Observables. + * @method windowWhen + * @owner Observable + */ +export function windowWhen(closingSelector) { + return function windowWhenOperatorFunction(source) { + return source.lift(new WindowOperator(closingSelector)); + }; +} +class WindowOperator { + constructor(closingSelector) { + this.closingSelector = closingSelector; + } + call(subscriber, source) { + return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WindowSubscriber extends OuterSubscriber { + constructor(destination, closingSelector) { + super(destination); + this.destination = destination; + this.closingSelector = closingSelector; + this.openWindow(); + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openWindow(innerSub); + } + notifyError(error, innerSub) { + this._error(error); + } + notifyComplete(innerSub) { + this.openWindow(innerSub); + } + _next(value) { + this.window.next(value); + } + _error(err) { + this.window.error(err); + this.destination.error(err); + this.unsubscribeClosingNotification(); + } + _complete() { + this.window.complete(); + this.destination.complete(); + this.unsubscribeClosingNotification(); + } + unsubscribeClosingNotification() { + if (this.closingNotification) { + this.closingNotification.unsubscribe(); + } + } + openWindow(innerSub = null) { + if (innerSub) { + this.remove(innerSub); + innerSub.unsubscribe(); + } + const prevWindow = this.window; + if (prevWindow) { + prevWindow.complete(); + } + const window = this.window = new Subject(); + this.destination.next(window); + const closingNotifier = tryCatch(this.closingSelector)(); + if (closingNotifier === errorObject) { + const err = errorObject.e; + this.destination.error(err); + this.window.error(err); + } + else { + this.add(this.closingNotification = subscribeToResult(this, closingNotifier)); + } + } +} +//# sourceMappingURL=windowWhen.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/windowWhen.js.map b/node_modules/rxjs/_esm2015/operators/windowWhen.js.map new file mode 100644 index 0000000..41aa23b --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/windowWhen.js.map @@ -0,0 +1 @@ +{"version":3,"file":"windowWhen.js","sourceRoot":"","sources":["../../src/operators/windowWhen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/withLatestFrom.js b/node_modules/rxjs/_esm2015/operators/withLatestFrom.js new file mode 100644 index 0000000..7916b1e --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/withLatestFrom.js @@ -0,0 +1,118 @@ +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +/* tslint:enable:max-line-length */ +/** + * Combines the source Observable with other Observables to create an Observable + * whose values are calculated from the latest values of each, only when the + * source emits. + * + * Whenever the source Observable emits a value, it + * computes a formula using that value plus the latest values from other input + * Observables, then emits the output of that formula. + * + * + * + * `withLatestFrom` combines each value from the source Observable (the + * instance) with the latest values from the other input Observables only when + * the source emits a value, optionally using a `project` function to determine + * the value to be emitted on the output Observable. All input Observables must + * emit at least one value before the output Observable will emit a value. + * + * @example On every click event, emit an array with the latest timer event plus the click event + * var clicks = Rx.Observable.fromEvent(document, 'click'); + * var timer = Rx.Observable.interval(1000); + * var result = clicks.withLatestFrom(timer); + * result.subscribe(x => console.log(x)); + * + * @see {@link combineLatest} + * + * @param {ObservableInput} other An input Observable to combine with the source + * Observable. More than one input Observables may be given as argument. + * @param {Function} [project] Projection function for combining values + * together. Receives all values in order of the Observables passed, where the + * first parameter is a value from the source Observable. (e.g. + * `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not + * passed, arrays will be emitted on the output Observable. + * @return {Observable} An Observable of projected values from the most recent + * values from each input Observable, or an array of the most recent values from + * each input Observable. + * @method withLatestFrom + * @owner Observable + */ +export function withLatestFrom(...args) { + return (source) => { + let project; + if (typeof args[args.length - 1] === 'function') { + project = args.pop(); + } + const observables = args; + return source.lift(new WithLatestFromOperator(observables, project)); + }; +} +class WithLatestFromOperator { + constructor(observables, project) { + this.observables = observables; + this.project = project; + } + call(subscriber, source) { + return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class WithLatestFromSubscriber extends OuterSubscriber { + constructor(destination, observables, project) { + super(destination); + this.observables = observables; + this.project = project; + this.toRespond = []; + const len = observables.length; + this.values = new Array(len); + for (let i = 0; i < len; i++) { + this.toRespond.push(i); + } + for (let i = 0; i < len; i++) { + let observable = observables[i]; + this.add(subscribeToResult(this, observable, observable, i)); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.values[outerIndex] = innerValue; + const toRespond = this.toRespond; + if (toRespond.length > 0) { + const found = toRespond.indexOf(outerIndex); + if (found !== -1) { + toRespond.splice(found, 1); + } + } + } + notifyComplete() { + // noop + } + _next(value) { + if (this.toRespond.length === 0) { + const args = [value, ...this.values]; + if (this.project) { + this._tryProject(args); + } + else { + this.destination.next(args); + } + } + } + _tryProject(args) { + let result; + try { + result = this.project.apply(this, args); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } +} +//# sourceMappingURL=withLatestFrom.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/withLatestFrom.js.map b/node_modules/rxjs/_esm2015/operators/withLatestFrom.js.map new file mode 100644 index 0000000..b7fa614 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/withLatestFrom.js.map @@ -0,0 +1 @@ +{"version":3,"file":"withLatestFrom.js","sourceRoot":"","sources":["../../src/operators/withLatestFrom.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/zip.js b/node_modules/rxjs/_esm2015/operators/zip.js new file mode 100644 index 0000000..3eaf3a6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/zip.js @@ -0,0 +1,255 @@ +import { ArrayObservable } from '../observable/ArrayObservable'; +import { isArray } from '../util/isArray'; +import { Subscriber } from '../Subscriber'; +import { OuterSubscriber } from '../OuterSubscriber'; +import { subscribeToResult } from '../util/subscribeToResult'; +import { iterator as Symbol_iterator } from '../symbol/iterator'; +/* tslint:enable:max-line-length */ +/** + * @param observables + * @return {Observable} + * @method zip + * @owner Observable + */ +export function zip(...observables) { + return function zipOperatorFunction(source) { + return source.lift.call(zipStatic(source, ...observables)); + }; +} +/* tslint:enable:max-line-length */ +/** + * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each + * of its input Observables. + * + * If the latest parameter is a function, this function is used to compute the created value from the input values. + * Otherwise, an array of the input values is returned. + * + * @example Combine age and name from different sources + * + * let age$ = Observable.of(27, 25, 29); + * let name$ = Observable.of('Foo', 'Bar', 'Beer'); + * let isDev$ = Observable.of(true, true, false); + * + * Observable + * .zip(age$, + * name$, + * isDev$, + * (age: number, name: string, isDev: boolean) => ({ age, name, isDev })) + * .subscribe(x => console.log(x)); + * + * // outputs + * // { age: 27, name: 'Foo', isDev: true } + * // { age: 25, name: 'Bar', isDev: true } + * // { age: 29, name: 'Beer', isDev: false } + * + * @param observables + * @return {Observable} + * @static true + * @name zip + * @owner Observable + */ +export function zipStatic(...observables) { + const project = observables[observables.length - 1]; + if (typeof project === 'function') { + observables.pop(); + } + return new ArrayObservable(observables).lift(new ZipOperator(project)); +} +export class ZipOperator { + constructor(project) { + this.project = project; + } + call(subscriber, source) { + return source.subscribe(new ZipSubscriber(subscriber, this.project)); + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class ZipSubscriber extends Subscriber { + constructor(destination, project, values = Object.create(null)) { + super(destination); + this.iterators = []; + this.active = 0; + this.project = (typeof project === 'function') ? project : null; + this.values = values; + } + _next(value) { + const iterators = this.iterators; + if (isArray(value)) { + iterators.push(new StaticArrayIterator(value)); + } + else if (typeof value[Symbol_iterator] === 'function') { + iterators.push(new StaticIterator(value[Symbol_iterator]())); + } + else { + iterators.push(new ZipBufferIterator(this.destination, this, value)); + } + } + _complete() { + const iterators = this.iterators; + const len = iterators.length; + if (len === 0) { + this.destination.complete(); + return; + } + this.active = len; + for (let i = 0; i < len; i++) { + let iterator = iterators[i]; + if (iterator.stillUnsubscribed) { + this.add(iterator.subscribe(iterator, i)); + } + else { + this.active--; // not an observable + } + } + } + notifyInactive() { + this.active--; + if (this.active === 0) { + this.destination.complete(); + } + } + checkIterators() { + const iterators = this.iterators; + const len = iterators.length; + const destination = this.destination; + // abort if not all of them have values + for (let i = 0; i < len; i++) { + let iterator = iterators[i]; + if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) { + return; + } + } + let shouldComplete = false; + const args = []; + for (let i = 0; i < len; i++) { + let iterator = iterators[i]; + let result = iterator.next(); + // check to see if it's completed now that you've gotten + // the next value. + if (iterator.hasCompleted()) { + shouldComplete = true; + } + if (result.done) { + destination.complete(); + return; + } + args.push(result.value); + } + if (this.project) { + this._tryProject(args); + } + else { + destination.next(args); + } + if (shouldComplete) { + destination.complete(); + } + } + _tryProject(args) { + let result; + try { + result = this.project.apply(this, args); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + } +} +class StaticIterator { + constructor(iterator) { + this.iterator = iterator; + this.nextResult = iterator.next(); + } + hasValue() { + return true; + } + next() { + const result = this.nextResult; + this.nextResult = this.iterator.next(); + return result; + } + hasCompleted() { + const nextResult = this.nextResult; + return nextResult && nextResult.done; + } +} +class StaticArrayIterator { + constructor(array) { + this.array = array; + this.index = 0; + this.length = 0; + this.length = array.length; + } + [Symbol_iterator]() { + return this; + } + next(value) { + const i = this.index++; + const array = this.array; + return i < this.length ? { value: array[i], done: false } : { value: null, done: true }; + } + hasValue() { + return this.array.length > this.index; + } + hasCompleted() { + return this.array.length === this.index; + } +} +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +class ZipBufferIterator extends OuterSubscriber { + constructor(destination, parent, observable) { + super(destination); + this.parent = parent; + this.observable = observable; + this.stillUnsubscribed = true; + this.buffer = []; + this.isComplete = false; + } + [Symbol_iterator]() { + return this; + } + // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next + // this is legit because `next()` will never be called by a subscription in this case. + next() { + const buffer = this.buffer; + if (buffer.length === 0 && this.isComplete) { + return { value: null, done: true }; + } + else { + return { value: buffer.shift(), done: false }; + } + } + hasValue() { + return this.buffer.length > 0; + } + hasCompleted() { + return this.buffer.length === 0 && this.isComplete; + } + notifyComplete() { + if (this.buffer.length > 0) { + this.isComplete = true; + this.parent.notifyInactive(); + } + else { + this.destination.complete(); + } + } + notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.buffer.push(innerValue); + this.parent.checkIterators(); + } + subscribe(value, index) { + return subscribeToResult(this, this.observable, this, index); + } +} +//# sourceMappingURL=zip.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/zip.js.map b/node_modules/rxjs/_esm2015/operators/zip.js.map new file mode 100644 index 0000000..7641d5f --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/zip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/operators/zip.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/zipAll.js b/node_modules/rxjs/_esm2015/operators/zipAll.js new file mode 100644 index 0000000..f6d4074 --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/zipAll.js @@ -0,0 +1,5 @@ +import { ZipOperator } from './zip'; +export function zipAll(project) { + return (source) => source.lift(new ZipOperator(project)); +} +//# sourceMappingURL=zipAll.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/operators/zipAll.js.map b/node_modules/rxjs/_esm2015/operators/zipAll.js.map new file mode 100644 index 0000000..b65b43c --- /dev/null +++ b/node_modules/rxjs/_esm2015/operators/zipAll.js.map @@ -0,0 +1 @@ +{"version":3,"file":"zipAll.js","sourceRoot":"","sources":["../../src/operators/zipAll.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,OAAO;AAInC,uBAA6B,OAAsC;IACjE,MAAM,CAAC,CAAC,MAAqB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/path-mapping.js b/node_modules/rxjs/_esm2015/path-mapping.js new file mode 100644 index 0000000..c261c23 --- /dev/null +++ b/node_modules/rxjs/_esm2015/path-mapping.js @@ -0,0 +1,465 @@ + +"use strict" + +var path = require('path'); +var dir = path.resolve(__dirname); + +module.exports = function() { + return { + "rxjs/util/tryCatch": path.join(dir, "util/tryCatch.js"), + "rxjs/util/toSubscriber": path.join(dir, "util/toSubscriber.js"), + "rxjs/util/subscribeToResult": path.join(dir, "util/subscribeToResult.js"), + "rxjs/util/root": path.join(dir, "util/root.js"), + "rxjs/util/pipe": path.join(dir, "util/pipe.js"), + "rxjs/util/not": path.join(dir, "util/not.js"), + "rxjs/util/noop": path.join(dir, "util/noop.js"), + "rxjs/util/isScheduler": path.join(dir, "util/isScheduler.js"), + "rxjs/util/isPromise": path.join(dir, "util/isPromise.js"), + "rxjs/util/isObject": path.join(dir, "util/isObject.js"), + "rxjs/util/isNumeric": path.join(dir, "util/isNumeric.js"), + "rxjs/util/isFunction": path.join(dir, "util/isFunction.js"), + "rxjs/util/isDate": path.join(dir, "util/isDate.js"), + "rxjs/util/isArrayLike": path.join(dir, "util/isArrayLike.js"), + "rxjs/util/isArray": path.join(dir, "util/isArray.js"), + "rxjs/util/identity": path.join(dir, "util/identity.js"), + "rxjs/util/errorObject": path.join(dir, "util/errorObject.js"), + "rxjs/util/assign": path.join(dir, "util/assign.js"), + "rxjs/util/applyMixins": path.join(dir, "util/applyMixins.js"), + "rxjs/util/UnsubscriptionError": path.join(dir, "util/UnsubscriptionError.js"), + "rxjs/util/TimeoutError": path.join(dir, "util/TimeoutError.js"), + "rxjs/util/Set": path.join(dir, "util/Set.js"), + "rxjs/util/ObjectUnsubscribedError": path.join(dir, "util/ObjectUnsubscribedError.js"), + "rxjs/util/MapPolyfill": path.join(dir, "util/MapPolyfill.js"), + "rxjs/util/Map": path.join(dir, "util/Map.js"), + "rxjs/util/Immediate": path.join(dir, "util/Immediate.js"), + "rxjs/util/FastMap": path.join(dir, "util/FastMap.js"), + "rxjs/util/EmptyError": path.join(dir, "util/EmptyError.js"), + "rxjs/util/ArgumentOutOfRangeError": path.join(dir, "util/ArgumentOutOfRangeError.js"), + "rxjs/util/AnimationFrame": path.join(dir, "util/AnimationFrame.js"), + "rxjs/testing/TestScheduler": path.join(dir, "testing/TestScheduler.js"), + "rxjs/testing/TestMessage": path.join(dir, "testing/TestMessage.js"), + "rxjs/testing/SubscriptionLoggable": path.join(dir, "testing/SubscriptionLoggable.js"), + "rxjs/testing/SubscriptionLog": path.join(dir, "testing/SubscriptionLog.js"), + "rxjs/testing/HotObservable": path.join(dir, "testing/HotObservable.js"), + "rxjs/testing/ColdObservable": path.join(dir, "testing/ColdObservable.js"), + "rxjs/symbol/rxSubscriber": path.join(dir, "symbol/rxSubscriber.js"), + "rxjs/symbol/observable": path.join(dir, "symbol/observable.js"), + "rxjs/symbol/iterator": path.join(dir, "symbol/iterator.js"), + "rxjs/scheduler/queue": path.join(dir, "scheduler/queue.js"), + "rxjs/scheduler/async": path.join(dir, "scheduler/async.js"), + "rxjs/scheduler/asap": path.join(dir, "scheduler/asap.js"), + "rxjs/scheduler/animationFrame": path.join(dir, "scheduler/animationFrame.js"), + "rxjs/scheduler/VirtualTimeScheduler": path.join(dir, "scheduler/VirtualTimeScheduler.js"), + "rxjs/scheduler/QueueScheduler": path.join(dir, "scheduler/QueueScheduler.js"), + "rxjs/scheduler/QueueAction": path.join(dir, "scheduler/QueueAction.js"), + "rxjs/scheduler/AsyncScheduler": path.join(dir, "scheduler/AsyncScheduler.js"), + "rxjs/scheduler/AsyncAction": path.join(dir, "scheduler/AsyncAction.js"), + "rxjs/scheduler/AsapScheduler": path.join(dir, "scheduler/AsapScheduler.js"), + "rxjs/scheduler/AsapAction": path.join(dir, "scheduler/AsapAction.js"), + "rxjs/scheduler/AnimationFrameScheduler": path.join(dir, "scheduler/AnimationFrameScheduler.js"), + "rxjs/scheduler/AnimationFrameAction": path.join(dir, "scheduler/AnimationFrameAction.js"), + "rxjs/scheduler/Action": path.join(dir, "scheduler/Action.js"), + "rxjs/operators/zipAll": path.join(dir, "operators/zipAll.js"), + "rxjs/operators/zip": path.join(dir, "operators/zip.js"), + "rxjs/operators/withLatestFrom": path.join(dir, "operators/withLatestFrom.js"), + "rxjs/operators/windowWhen": path.join(dir, "operators/windowWhen.js"), + "rxjs/operators/windowToggle": path.join(dir, "operators/windowToggle.js"), + "rxjs/operators/windowTime": path.join(dir, "operators/windowTime.js"), + "rxjs/operators/windowCount": path.join(dir, "operators/windowCount.js"), + "rxjs/operators/window": path.join(dir, "operators/window.js"), + "rxjs/operators/toArray": path.join(dir, "operators/toArray.js"), + "rxjs/operators/timestamp": path.join(dir, "operators/timestamp.js"), + "rxjs/operators/timeoutWith": path.join(dir, "operators/timeoutWith.js"), + "rxjs/operators/timeout": path.join(dir, "operators/timeout.js"), + "rxjs/operators/timeInterval": path.join(dir, "operators/timeInterval.js"), + "rxjs/operators/throttleTime": path.join(dir, "operators/throttleTime.js"), + "rxjs/operators/throttle": path.join(dir, "operators/throttle.js"), + "rxjs/operators/tap": path.join(dir, "operators/tap.js"), + "rxjs/operators/takeWhile": path.join(dir, "operators/takeWhile.js"), + "rxjs/operators/takeUntil": path.join(dir, "operators/takeUntil.js"), + "rxjs/operators/takeLast": path.join(dir, "operators/takeLast.js"), + "rxjs/operators/take": path.join(dir, "operators/take.js"), + "rxjs/operators/switchMapTo": path.join(dir, "operators/switchMapTo.js"), + "rxjs/operators/switchMap": path.join(dir, "operators/switchMap.js"), + "rxjs/operators/switchAll": path.join(dir, "operators/switchAll.js"), + "rxjs/operators/subscribeOn": path.join(dir, "operators/subscribeOn.js"), + "rxjs/operators/startWith": path.join(dir, "operators/startWith.js"), + "rxjs/operators/skipWhile": path.join(dir, "operators/skipWhile.js"), + "rxjs/operators/skipUntil": path.join(dir, "operators/skipUntil.js"), + "rxjs/operators/skipLast": path.join(dir, "operators/skipLast.js"), + "rxjs/operators/skip": path.join(dir, "operators/skip.js"), + "rxjs/operators/single": path.join(dir, "operators/single.js"), + "rxjs/operators/shareReplay": path.join(dir, "operators/shareReplay.js"), + "rxjs/operators/share": path.join(dir, "operators/share.js"), + "rxjs/operators/sequenceEqual": path.join(dir, "operators/sequenceEqual.js"), + "rxjs/operators/scan": path.join(dir, "operators/scan.js"), + "rxjs/operators/sampleTime": path.join(dir, "operators/sampleTime.js"), + "rxjs/operators/sample": path.join(dir, "operators/sample.js"), + "rxjs/operators/retryWhen": path.join(dir, "operators/retryWhen.js"), + "rxjs/operators/retry": path.join(dir, "operators/retry.js"), + "rxjs/operators/repeatWhen": path.join(dir, "operators/repeatWhen.js"), + "rxjs/operators/repeat": path.join(dir, "operators/repeat.js"), + "rxjs/operators/refCount": path.join(dir, "operators/refCount.js"), + "rxjs/operators/reduce": path.join(dir, "operators/reduce.js"), + "rxjs/operators/race": path.join(dir, "operators/race.js"), + "rxjs/operators/publishReplay": path.join(dir, "operators/publishReplay.js"), + "rxjs/operators/publishLast": path.join(dir, "operators/publishLast.js"), + "rxjs/operators/publishBehavior": path.join(dir, "operators/publishBehavior.js"), + "rxjs/operators/publish": path.join(dir, "operators/publish.js"), + "rxjs/operators/pluck": path.join(dir, "operators/pluck.js"), + "rxjs/operators/partition": path.join(dir, "operators/partition.js"), + "rxjs/operators/pairwise": path.join(dir, "operators/pairwise.js"), + "rxjs/operators/onErrorResumeNext": path.join(dir, "operators/onErrorResumeNext.js"), + "rxjs/operators/observeOn": path.join(dir, "operators/observeOn.js"), + "rxjs/operators/multicast": path.join(dir, "operators/multicast.js"), + "rxjs/operators/min": path.join(dir, "operators/min.js"), + "rxjs/operators/mergeScan": path.join(dir, "operators/mergeScan.js"), + "rxjs/operators/mergeMapTo": path.join(dir, "operators/mergeMapTo.js"), + "rxjs/operators/mergeMap": path.join(dir, "operators/mergeMap.js"), + "rxjs/operators/mergeAll": path.join(dir, "operators/mergeAll.js"), + "rxjs/operators/merge": path.join(dir, "operators/merge.js"), + "rxjs/operators/max": path.join(dir, "operators/max.js"), + "rxjs/operators/materialize": path.join(dir, "operators/materialize.js"), + "rxjs/operators/mapTo": path.join(dir, "operators/mapTo.js"), + "rxjs/operators/map": path.join(dir, "operators/map.js"), + "rxjs/operators/last": path.join(dir, "operators/last.js"), + "rxjs/operators/isEmpty": path.join(dir, "operators/isEmpty.js"), + "rxjs/operators/ignoreElements": path.join(dir, "operators/ignoreElements.js"), + "rxjs/operators/groupBy": path.join(dir, "operators/groupBy.js"), + "rxjs/operators/first": path.join(dir, "operators/first.js"), + "rxjs/operators/findIndex": path.join(dir, "operators/findIndex.js"), + "rxjs/operators/find": path.join(dir, "operators/find.js"), + "rxjs/operators/finalize": path.join(dir, "operators/finalize.js"), + "rxjs/operators/filter": path.join(dir, "operators/filter.js"), + "rxjs/operators/expand": path.join(dir, "operators/expand.js"), + "rxjs/operators/exhaustMap": path.join(dir, "operators/exhaustMap.js"), + "rxjs/operators/exhaust": path.join(dir, "operators/exhaust.js"), + "rxjs/operators/every": path.join(dir, "operators/every.js"), + "rxjs/operators/elementAt": path.join(dir, "operators/elementAt.js"), + "rxjs/operators/distinctUntilKeyChanged": path.join(dir, "operators/distinctUntilKeyChanged.js"), + "rxjs/operators/distinctUntilChanged": path.join(dir, "operators/distinctUntilChanged.js"), + "rxjs/operators/distinct": path.join(dir, "operators/distinct.js"), + "rxjs/operators/dematerialize": path.join(dir, "operators/dematerialize.js"), + "rxjs/operators/delayWhen": path.join(dir, "operators/delayWhen.js"), + "rxjs/operators/delay": path.join(dir, "operators/delay.js"), + "rxjs/operators/defaultIfEmpty": path.join(dir, "operators/defaultIfEmpty.js"), + "rxjs/operators/debounceTime": path.join(dir, "operators/debounceTime.js"), + "rxjs/operators/debounce": path.join(dir, "operators/debounce.js"), + "rxjs/operators/count": path.join(dir, "operators/count.js"), + "rxjs/operators/concatMapTo": path.join(dir, "operators/concatMapTo.js"), + "rxjs/operators/concatMap": path.join(dir, "operators/concatMap.js"), + "rxjs/operators/concatAll": path.join(dir, "operators/concatAll.js"), + "rxjs/operators/concat": path.join(dir, "operators/concat.js"), + "rxjs/operators/combineLatest": path.join(dir, "operators/combineLatest.js"), + "rxjs/operators/combineAll": path.join(dir, "operators/combineAll.js"), + "rxjs/operators/catchError": path.join(dir, "operators/catchError.js"), + "rxjs/operators/bufferWhen": path.join(dir, "operators/bufferWhen.js"), + "rxjs/operators/bufferToggle": path.join(dir, "operators/bufferToggle.js"), + "rxjs/operators/bufferTime": path.join(dir, "operators/bufferTime.js"), + "rxjs/operators/bufferCount": path.join(dir, "operators/bufferCount.js"), + "rxjs/operators/buffer": path.join(dir, "operators/buffer.js"), + "rxjs/operators/auditTime": path.join(dir, "operators/auditTime.js"), + "rxjs/operators/audit": path.join(dir, "operators/audit.js"), + "rxjs/operators": path.join(dir, "operators.js"), + "rxjs/operator/zipAll": path.join(dir, "operator/zipAll.js"), + "rxjs/operator/zip": path.join(dir, "operator/zip.js"), + "rxjs/operator/withLatestFrom": path.join(dir, "operator/withLatestFrom.js"), + "rxjs/operator/windowWhen": path.join(dir, "operator/windowWhen.js"), + "rxjs/operator/windowToggle": path.join(dir, "operator/windowToggle.js"), + "rxjs/operator/windowTime": path.join(dir, "operator/windowTime.js"), + "rxjs/operator/windowCount": path.join(dir, "operator/windowCount.js"), + "rxjs/operator/window": path.join(dir, "operator/window.js"), + "rxjs/operator/toPromise": path.join(dir, "operator/toPromise.js"), + "rxjs/operator/toArray": path.join(dir, "operator/toArray.js"), + "rxjs/operator/timestamp": path.join(dir, "operator/timestamp.js"), + "rxjs/operator/timeoutWith": path.join(dir, "operator/timeoutWith.js"), + "rxjs/operator/timeout": path.join(dir, "operator/timeout.js"), + "rxjs/operator/timeInterval": path.join(dir, "operator/timeInterval.js"), + "rxjs/operator/throttleTime": path.join(dir, "operator/throttleTime.js"), + "rxjs/operator/throttle": path.join(dir, "operator/throttle.js"), + "rxjs/operator/takeWhile": path.join(dir, "operator/takeWhile.js"), + "rxjs/operator/takeUntil": path.join(dir, "operator/takeUntil.js"), + "rxjs/operator/takeLast": path.join(dir, "operator/takeLast.js"), + "rxjs/operator/take": path.join(dir, "operator/take.js"), + "rxjs/operator/switchMapTo": path.join(dir, "operator/switchMapTo.js"), + "rxjs/operator/switchMap": path.join(dir, "operator/switchMap.js"), + "rxjs/operator/switch": path.join(dir, "operator/switch.js"), + "rxjs/operator/subscribeOn": path.join(dir, "operator/subscribeOn.js"), + "rxjs/operator/startWith": path.join(dir, "operator/startWith.js"), + "rxjs/operator/skipWhile": path.join(dir, "operator/skipWhile.js"), + "rxjs/operator/skipUntil": path.join(dir, "operator/skipUntil.js"), + "rxjs/operator/skipLast": path.join(dir, "operator/skipLast.js"), + "rxjs/operator/skip": path.join(dir, "operator/skip.js"), + "rxjs/operator/single": path.join(dir, "operator/single.js"), + "rxjs/operator/shareReplay": path.join(dir, "operator/shareReplay.js"), + "rxjs/operator/share": path.join(dir, "operator/share.js"), + "rxjs/operator/sequenceEqual": path.join(dir, "operator/sequenceEqual.js"), + "rxjs/operator/scan": path.join(dir, "operator/scan.js"), + "rxjs/operator/sampleTime": path.join(dir, "operator/sampleTime.js"), + "rxjs/operator/sample": path.join(dir, "operator/sample.js"), + "rxjs/operator/retryWhen": path.join(dir, "operator/retryWhen.js"), + "rxjs/operator/retry": path.join(dir, "operator/retry.js"), + "rxjs/operator/repeatWhen": path.join(dir, "operator/repeatWhen.js"), + "rxjs/operator/repeat": path.join(dir, "operator/repeat.js"), + "rxjs/operator/reduce": path.join(dir, "operator/reduce.js"), + "rxjs/operator/race": path.join(dir, "operator/race.js"), + "rxjs/operator/publishReplay": path.join(dir, "operator/publishReplay.js"), + "rxjs/operator/publishLast": path.join(dir, "operator/publishLast.js"), + "rxjs/operator/publishBehavior": path.join(dir, "operator/publishBehavior.js"), + "rxjs/operator/publish": path.join(dir, "operator/publish.js"), + "rxjs/operator/pluck": path.join(dir, "operator/pluck.js"), + "rxjs/operator/partition": path.join(dir, "operator/partition.js"), + "rxjs/operator/pairwise": path.join(dir, "operator/pairwise.js"), + "rxjs/operator/onErrorResumeNext": path.join(dir, "operator/onErrorResumeNext.js"), + "rxjs/operator/observeOn": path.join(dir, "operator/observeOn.js"), + "rxjs/operator/multicast": path.join(dir, "operator/multicast.js"), + "rxjs/operator/min": path.join(dir, "operator/min.js"), + "rxjs/operator/mergeScan": path.join(dir, "operator/mergeScan.js"), + "rxjs/operator/mergeMapTo": path.join(dir, "operator/mergeMapTo.js"), + "rxjs/operator/mergeMap": path.join(dir, "operator/mergeMap.js"), + "rxjs/operator/mergeAll": path.join(dir, "operator/mergeAll.js"), + "rxjs/operator/merge": path.join(dir, "operator/merge.js"), + "rxjs/operator/max": path.join(dir, "operator/max.js"), + "rxjs/operator/materialize": path.join(dir, "operator/materialize.js"), + "rxjs/operator/mapTo": path.join(dir, "operator/mapTo.js"), + "rxjs/operator/map": path.join(dir, "operator/map.js"), + "rxjs/operator/let": path.join(dir, "operator/let.js"), + "rxjs/operator/last": path.join(dir, "operator/last.js"), + "rxjs/operator/isEmpty": path.join(dir, "operator/isEmpty.js"), + "rxjs/operator/ignoreElements": path.join(dir, "operator/ignoreElements.js"), + "rxjs/operator/groupBy": path.join(dir, "operator/groupBy.js"), + "rxjs/operator/first": path.join(dir, "operator/first.js"), + "rxjs/operator/findIndex": path.join(dir, "operator/findIndex.js"), + "rxjs/operator/find": path.join(dir, "operator/find.js"), + "rxjs/operator/finally": path.join(dir, "operator/finally.js"), + "rxjs/operator/filter": path.join(dir, "operator/filter.js"), + "rxjs/operator/expand": path.join(dir, "operator/expand.js"), + "rxjs/operator/exhaustMap": path.join(dir, "operator/exhaustMap.js"), + "rxjs/operator/exhaust": path.join(dir, "operator/exhaust.js"), + "rxjs/operator/every": path.join(dir, "operator/every.js"), + "rxjs/operator/elementAt": path.join(dir, "operator/elementAt.js"), + "rxjs/operator/do": path.join(dir, "operator/do.js"), + "rxjs/operator/distinctUntilKeyChanged": path.join(dir, "operator/distinctUntilKeyChanged.js"), + "rxjs/operator/distinctUntilChanged": path.join(dir, "operator/distinctUntilChanged.js"), + "rxjs/operator/distinct": path.join(dir, "operator/distinct.js"), + "rxjs/operator/dematerialize": path.join(dir, "operator/dematerialize.js"), + "rxjs/operator/delayWhen": path.join(dir, "operator/delayWhen.js"), + "rxjs/operator/delay": path.join(dir, "operator/delay.js"), + "rxjs/operator/defaultIfEmpty": path.join(dir, "operator/defaultIfEmpty.js"), + "rxjs/operator/debounceTime": path.join(dir, "operator/debounceTime.js"), + "rxjs/operator/debounce": path.join(dir, "operator/debounce.js"), + "rxjs/operator/count": path.join(dir, "operator/count.js"), + "rxjs/operator/concatMapTo": path.join(dir, "operator/concatMapTo.js"), + "rxjs/operator/concatMap": path.join(dir, "operator/concatMap.js"), + "rxjs/operator/concatAll": path.join(dir, "operator/concatAll.js"), + "rxjs/operator/concat": path.join(dir, "operator/concat.js"), + "rxjs/operator/combineLatest": path.join(dir, "operator/combineLatest.js"), + "rxjs/operator/combineAll": path.join(dir, "operator/combineAll.js"), + "rxjs/operator/catch": path.join(dir, "operator/catch.js"), + "rxjs/operator/bufferWhen": path.join(dir, "operator/bufferWhen.js"), + "rxjs/operator/bufferToggle": path.join(dir, "operator/bufferToggle.js"), + "rxjs/operator/bufferTime": path.join(dir, "operator/bufferTime.js"), + "rxjs/operator/bufferCount": path.join(dir, "operator/bufferCount.js"), + "rxjs/operator/buffer": path.join(dir, "operator/buffer.js"), + "rxjs/operator/auditTime": path.join(dir, "operator/auditTime.js"), + "rxjs/operator/audit": path.join(dir, "operator/audit.js"), + "rxjs/observable/zip": path.join(dir, "observable/zip.js"), + "rxjs/observable/using": path.join(dir, "observable/using.js"), + "rxjs/observable/timer": path.join(dir, "observable/timer.js"), + "rxjs/observable/throw": path.join(dir, "observable/throw.js"), + "rxjs/observable/range": path.join(dir, "observable/range.js"), + "rxjs/observable/race": path.join(dir, "observable/race.js"), + "rxjs/observable/pairs": path.join(dir, "observable/pairs.js"), + "rxjs/observable/onErrorResumeNext": path.join(dir, "observable/onErrorResumeNext.js"), + "rxjs/observable/of": path.join(dir, "observable/of.js"), + "rxjs/observable/never": path.join(dir, "observable/never.js"), + "rxjs/observable/merge": path.join(dir, "observable/merge.js"), + "rxjs/observable/interval": path.join(dir, "observable/interval.js"), + "rxjs/observable/if": path.join(dir, "observable/if.js"), + "rxjs/observable/generate": path.join(dir, "observable/generate.js"), + "rxjs/observable/fromPromise": path.join(dir, "observable/fromPromise.js"), + "rxjs/observable/fromEventPattern": path.join(dir, "observable/fromEventPattern.js"), + "rxjs/observable/fromEvent": path.join(dir, "observable/fromEvent.js"), + "rxjs/observable/from": path.join(dir, "observable/from.js"), + "rxjs/observable/forkJoin": path.join(dir, "observable/forkJoin.js"), + "rxjs/observable/empty": path.join(dir, "observable/empty.js"), + "rxjs/observable/dom/webSocket": path.join(dir, "observable/dom/webSocket.js"), + "rxjs/observable/dom/ajax": path.join(dir, "observable/dom/ajax.js"), + "rxjs/observable/dom/WebSocketSubject": path.join(dir, "observable/dom/WebSocketSubject.js"), + "rxjs/observable/dom/AjaxObservable": path.join(dir, "observable/dom/AjaxObservable.js"), + "rxjs/observable/defer": path.join(dir, "observable/defer.js"), + "rxjs/observable/concat": path.join(dir, "observable/concat.js"), + "rxjs/observable/combineLatest": path.join(dir, "observable/combineLatest.js"), + "rxjs/observable/bindNodeCallback": path.join(dir, "observable/bindNodeCallback.js"), + "rxjs/observable/bindCallback": path.join(dir, "observable/bindCallback.js"), + "rxjs/observable/UsingObservable": path.join(dir, "observable/UsingObservable.js"), + "rxjs/observable/TimerObservable": path.join(dir, "observable/TimerObservable.js"), + "rxjs/observable/SubscribeOnObservable": path.join(dir, "observable/SubscribeOnObservable.js"), + "rxjs/observable/ScalarObservable": path.join(dir, "observable/ScalarObservable.js"), + "rxjs/observable/RangeObservable": path.join(dir, "observable/RangeObservable.js"), + "rxjs/observable/PromiseObservable": path.join(dir, "observable/PromiseObservable.js"), + "rxjs/observable/PairsObservable": path.join(dir, "observable/PairsObservable.js"), + "rxjs/observable/NeverObservable": path.join(dir, "observable/NeverObservable.js"), + "rxjs/observable/IteratorObservable": path.join(dir, "observable/IteratorObservable.js"), + "rxjs/observable/IntervalObservable": path.join(dir, "observable/IntervalObservable.js"), + "rxjs/observable/IfObservable": path.join(dir, "observable/IfObservable.js"), + "rxjs/observable/GenerateObservable": path.join(dir, "observable/GenerateObservable.js"), + "rxjs/observable/FromObservable": path.join(dir, "observable/FromObservable.js"), + "rxjs/observable/FromEventPatternObservable": path.join(dir, "observable/FromEventPatternObservable.js"), + "rxjs/observable/FromEventObservable": path.join(dir, "observable/FromEventObservable.js"), + "rxjs/observable/ForkJoinObservable": path.join(dir, "observable/ForkJoinObservable.js"), + "rxjs/observable/ErrorObservable": path.join(dir, "observable/ErrorObservable.js"), + "rxjs/observable/EmptyObservable": path.join(dir, "observable/EmptyObservable.js"), + "rxjs/observable/DeferObservable": path.join(dir, "observable/DeferObservable.js"), + "rxjs/observable/ConnectableObservable": path.join(dir, "observable/ConnectableObservable.js"), + "rxjs/observable/BoundNodeCallbackObservable": path.join(dir, "observable/BoundNodeCallbackObservable.js"), + "rxjs/observable/BoundCallbackObservable": path.join(dir, "observable/BoundCallbackObservable.js"), + "rxjs/observable/ArrayObservable": path.join(dir, "observable/ArrayObservable.js"), + "rxjs/observable/ArrayLikeObservable": path.join(dir, "observable/ArrayLikeObservable.js"), + "rxjs/interfaces": path.join(dir, "interfaces.js"), + "rxjs/add/operator/zipAll": path.join(dir, "add/operator/zipAll.js"), + "rxjs/add/operator/zip": path.join(dir, "add/operator/zip.js"), + "rxjs/add/operator/withLatestFrom": path.join(dir, "add/operator/withLatestFrom.js"), + "rxjs/add/operator/windowWhen": path.join(dir, "add/operator/windowWhen.js"), + "rxjs/add/operator/windowToggle": path.join(dir, "add/operator/windowToggle.js"), + "rxjs/add/operator/windowTime": path.join(dir, "add/operator/windowTime.js"), + "rxjs/add/operator/windowCount": path.join(dir, "add/operator/windowCount.js"), + "rxjs/add/operator/window": path.join(dir, "add/operator/window.js"), + "rxjs/add/operator/toPromise": path.join(dir, "add/operator/toPromise.js"), + "rxjs/add/operator/toArray": path.join(dir, "add/operator/toArray.js"), + "rxjs/add/operator/timestamp": path.join(dir, "add/operator/timestamp.js"), + "rxjs/add/operator/timeoutWith": path.join(dir, "add/operator/timeoutWith.js"), + "rxjs/add/operator/timeout": path.join(dir, "add/operator/timeout.js"), + "rxjs/add/operator/timeInterval": path.join(dir, "add/operator/timeInterval.js"), + "rxjs/add/operator/throttleTime": path.join(dir, "add/operator/throttleTime.js"), + "rxjs/add/operator/throttle": path.join(dir, "add/operator/throttle.js"), + "rxjs/add/operator/takeWhile": path.join(dir, "add/operator/takeWhile.js"), + "rxjs/add/operator/takeUntil": path.join(dir, "add/operator/takeUntil.js"), + "rxjs/add/operator/takeLast": path.join(dir, "add/operator/takeLast.js"), + "rxjs/add/operator/take": path.join(dir, "add/operator/take.js"), + "rxjs/add/operator/switchMapTo": path.join(dir, "add/operator/switchMapTo.js"), + "rxjs/add/operator/switchMap": path.join(dir, "add/operator/switchMap.js"), + "rxjs/add/operator/switch": path.join(dir, "add/operator/switch.js"), + "rxjs/add/operator/subscribeOn": path.join(dir, "add/operator/subscribeOn.js"), + "rxjs/add/operator/startWith": path.join(dir, "add/operator/startWith.js"), + "rxjs/add/operator/skipWhile": path.join(dir, "add/operator/skipWhile.js"), + "rxjs/add/operator/skipUntil": path.join(dir, "add/operator/skipUntil.js"), + "rxjs/add/operator/skipLast": path.join(dir, "add/operator/skipLast.js"), + "rxjs/add/operator/skip": path.join(dir, "add/operator/skip.js"), + "rxjs/add/operator/single": path.join(dir, "add/operator/single.js"), + "rxjs/add/operator/shareReplay": path.join(dir, "add/operator/shareReplay.js"), + "rxjs/add/operator/share": path.join(dir, "add/operator/share.js"), + "rxjs/add/operator/sequenceEqual": path.join(dir, "add/operator/sequenceEqual.js"), + "rxjs/add/operator/scan": path.join(dir, "add/operator/scan.js"), + "rxjs/add/operator/sampleTime": path.join(dir, "add/operator/sampleTime.js"), + "rxjs/add/operator/sample": path.join(dir, "add/operator/sample.js"), + "rxjs/add/operator/retryWhen": path.join(dir, "add/operator/retryWhen.js"), + "rxjs/add/operator/retry": path.join(dir, "add/operator/retry.js"), + "rxjs/add/operator/repeatWhen": path.join(dir, "add/operator/repeatWhen.js"), + "rxjs/add/operator/repeat": path.join(dir, "add/operator/repeat.js"), + "rxjs/add/operator/reduce": path.join(dir, "add/operator/reduce.js"), + "rxjs/add/operator/race": path.join(dir, "add/operator/race.js"), + "rxjs/add/operator/publishReplay": path.join(dir, "add/operator/publishReplay.js"), + "rxjs/add/operator/publishLast": path.join(dir, "add/operator/publishLast.js"), + "rxjs/add/operator/publishBehavior": path.join(dir, "add/operator/publishBehavior.js"), + "rxjs/add/operator/publish": path.join(dir, "add/operator/publish.js"), + "rxjs/add/operator/pluck": path.join(dir, "add/operator/pluck.js"), + "rxjs/add/operator/partition": path.join(dir, "add/operator/partition.js"), + "rxjs/add/operator/pairwise": path.join(dir, "add/operator/pairwise.js"), + "rxjs/add/operator/onErrorResumeNext": path.join(dir, "add/operator/onErrorResumeNext.js"), + "rxjs/add/operator/observeOn": path.join(dir, "add/operator/observeOn.js"), + "rxjs/add/operator/multicast": path.join(dir, "add/operator/multicast.js"), + "rxjs/add/operator/min": path.join(dir, "add/operator/min.js"), + "rxjs/add/operator/mergeScan": path.join(dir, "add/operator/mergeScan.js"), + "rxjs/add/operator/mergeMapTo": path.join(dir, "add/operator/mergeMapTo.js"), + "rxjs/add/operator/mergeMap": path.join(dir, "add/operator/mergeMap.js"), + "rxjs/add/operator/mergeAll": path.join(dir, "add/operator/mergeAll.js"), + "rxjs/add/operator/merge": path.join(dir, "add/operator/merge.js"), + "rxjs/add/operator/max": path.join(dir, "add/operator/max.js"), + "rxjs/add/operator/materialize": path.join(dir, "add/operator/materialize.js"), + "rxjs/add/operator/mapTo": path.join(dir, "add/operator/mapTo.js"), + "rxjs/add/operator/map": path.join(dir, "add/operator/map.js"), + "rxjs/add/operator/let": path.join(dir, "add/operator/let.js"), + "rxjs/add/operator/last": path.join(dir, "add/operator/last.js"), + "rxjs/add/operator/isEmpty": path.join(dir, "add/operator/isEmpty.js"), + "rxjs/add/operator/ignoreElements": path.join(dir, "add/operator/ignoreElements.js"), + "rxjs/add/operator/groupBy": path.join(dir, "add/operator/groupBy.js"), + "rxjs/add/operator/first": path.join(dir, "add/operator/first.js"), + "rxjs/add/operator/findIndex": path.join(dir, "add/operator/findIndex.js"), + "rxjs/add/operator/find": path.join(dir, "add/operator/find.js"), + "rxjs/add/operator/finally": path.join(dir, "add/operator/finally.js"), + "rxjs/add/operator/filter": path.join(dir, "add/operator/filter.js"), + "rxjs/add/operator/expand": path.join(dir, "add/operator/expand.js"), + "rxjs/add/operator/exhaustMap": path.join(dir, "add/operator/exhaustMap.js"), + "rxjs/add/operator/exhaust": path.join(dir, "add/operator/exhaust.js"), + "rxjs/add/operator/every": path.join(dir, "add/operator/every.js"), + "rxjs/add/operator/elementAt": path.join(dir, "add/operator/elementAt.js"), + "rxjs/add/operator/do": path.join(dir, "add/operator/do.js"), + "rxjs/add/operator/distinctUntilKeyChanged": path.join(dir, "add/operator/distinctUntilKeyChanged.js"), + "rxjs/add/operator/distinctUntilChanged": path.join(dir, "add/operator/distinctUntilChanged.js"), + "rxjs/add/operator/distinct": path.join(dir, "add/operator/distinct.js"), + "rxjs/add/operator/dematerialize": path.join(dir, "add/operator/dematerialize.js"), + "rxjs/add/operator/delayWhen": path.join(dir, "add/operator/delayWhen.js"), + "rxjs/add/operator/delay": path.join(dir, "add/operator/delay.js"), + "rxjs/add/operator/defaultIfEmpty": path.join(dir, "add/operator/defaultIfEmpty.js"), + "rxjs/add/operator/debounceTime": path.join(dir, "add/operator/debounceTime.js"), + "rxjs/add/operator/debounce": path.join(dir, "add/operator/debounce.js"), + "rxjs/add/operator/count": path.join(dir, "add/operator/count.js"), + "rxjs/add/operator/concatMapTo": path.join(dir, "add/operator/concatMapTo.js"), + "rxjs/add/operator/concatMap": path.join(dir, "add/operator/concatMap.js"), + "rxjs/add/operator/concatAll": path.join(dir, "add/operator/concatAll.js"), + "rxjs/add/operator/concat": path.join(dir, "add/operator/concat.js"), + "rxjs/add/operator/combineLatest": path.join(dir, "add/operator/combineLatest.js"), + "rxjs/add/operator/combineAll": path.join(dir, "add/operator/combineAll.js"), + "rxjs/add/operator/catch": path.join(dir, "add/operator/catch.js"), + "rxjs/add/operator/bufferWhen": path.join(dir, "add/operator/bufferWhen.js"), + "rxjs/add/operator/bufferToggle": path.join(dir, "add/operator/bufferToggle.js"), + "rxjs/add/operator/bufferTime": path.join(dir, "add/operator/bufferTime.js"), + "rxjs/add/operator/bufferCount": path.join(dir, "add/operator/bufferCount.js"), + "rxjs/add/operator/buffer": path.join(dir, "add/operator/buffer.js"), + "rxjs/add/operator/auditTime": path.join(dir, "add/operator/auditTime.js"), + "rxjs/add/operator/audit": path.join(dir, "add/operator/audit.js"), + "rxjs/add/observable/zip": path.join(dir, "add/observable/zip.js"), + "rxjs/add/observable/using": path.join(dir, "add/observable/using.js"), + "rxjs/add/observable/timer": path.join(dir, "add/observable/timer.js"), + "rxjs/add/observable/throw": path.join(dir, "add/observable/throw.js"), + "rxjs/add/observable/range": path.join(dir, "add/observable/range.js"), + "rxjs/add/observable/race": path.join(dir, "add/observable/race.js"), + "rxjs/add/observable/pairs": path.join(dir, "add/observable/pairs.js"), + "rxjs/add/observable/onErrorResumeNext": path.join(dir, "add/observable/onErrorResumeNext.js"), + "rxjs/add/observable/of": path.join(dir, "add/observable/of.js"), + "rxjs/add/observable/never": path.join(dir, "add/observable/never.js"), + "rxjs/add/observable/merge": path.join(dir, "add/observable/merge.js"), + "rxjs/add/observable/interval": path.join(dir, "add/observable/interval.js"), + "rxjs/add/observable/if": path.join(dir, "add/observable/if.js"), + "rxjs/add/observable/generate": path.join(dir, "add/observable/generate.js"), + "rxjs/add/observable/fromPromise": path.join(dir, "add/observable/fromPromise.js"), + "rxjs/add/observable/fromEventPattern": path.join(dir, "add/observable/fromEventPattern.js"), + "rxjs/add/observable/fromEvent": path.join(dir, "add/observable/fromEvent.js"), + "rxjs/add/observable/from": path.join(dir, "add/observable/from.js"), + "rxjs/add/observable/forkJoin": path.join(dir, "add/observable/forkJoin.js"), + "rxjs/add/observable/empty": path.join(dir, "add/observable/empty.js"), + "rxjs/add/observable/dom/webSocket": path.join(dir, "add/observable/dom/webSocket.js"), + "rxjs/add/observable/dom/ajax": path.join(dir, "add/observable/dom/ajax.js"), + "rxjs/add/observable/defer": path.join(dir, "add/observable/defer.js"), + "rxjs/add/observable/concat": path.join(dir, "add/observable/concat.js"), + "rxjs/add/observable/combineLatest": path.join(dir, "add/observable/combineLatest.js"), + "rxjs/add/observable/bindNodeCallback": path.join(dir, "add/observable/bindNodeCallback.js"), + "rxjs/add/observable/bindCallback": path.join(dir, "add/observable/bindCallback.js"), + "rxjs/Subscription": path.join(dir, "Subscription.js"), + "rxjs/Subscriber": path.join(dir, "Subscriber.js"), + "rxjs/SubjectSubscription": path.join(dir, "SubjectSubscription.js"), + "rxjs/Subject": path.join(dir, "Subject.js"), + "rxjs/Scheduler": path.join(dir, "Scheduler.js"), + "rxjs/Rx": path.join(dir, "Rx.js"), + "rxjs/ReplaySubject": path.join(dir, "ReplaySubject.js"), + "rxjs/OuterSubscriber": path.join(dir, "OuterSubscriber.js"), + "rxjs/Operator": path.join(dir, "Operator.js"), + "rxjs/Observer": path.join(dir, "Observer.js"), + "rxjs/Observable": path.join(dir, "Observable.js"), + "rxjs/Notification": path.join(dir, "Notification.js"), + "rxjs/InnerSubscriber": path.join(dir, "InnerSubscriber.js"), + "rxjs/BehaviorSubject": path.join(dir, "BehaviorSubject.js"), + "rxjs/AsyncSubject": path.join(dir, "AsyncSubject.js") +}; +} diff --git a/node_modules/rxjs/_esm2015/scheduler/Action.js b/node_modules/rxjs/_esm2015/scheduler/Action.js new file mode 100644 index 0000000..9041748 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/Action.js @@ -0,0 +1,34 @@ +import { Subscription } from '../Subscription'; +/** + * A unit of work to be executed in a {@link Scheduler}. An action is typically + * created from within a Scheduler and an RxJS user does not need to concern + * themselves about creating and manipulating an Action. + * + * ```ts + * class Action extends Subscription { + * new (scheduler: Scheduler, work: (state?: T) => void); + * schedule(state?: T, delay: number = 0): Subscription; + * } + * ``` + * + * @class Action + */ +export class Action extends Subscription { + constructor(scheduler, work) { + super(); + } + /** + * Schedules this action on its parent Scheduler for execution. May be passed + * some context object, `state`. May happen at some point in the future, + * according to the `delay` parameter, if specified. + * @param {T} [state] Some contextual data that the `work` function uses when + * called by the Scheduler. + * @param {number} [delay] Time to wait before executing the work, where the + * time unit is implicit and defined by the Scheduler. + * @return {void} + */ + schedule(state, delay = 0) { + return this; + } +} +//# sourceMappingURL=Action.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/Action.js.map b/node_modules/rxjs/_esm2015/scheduler/Action.js.map new file mode 100644 index 0000000..a20818a --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/Action.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Action.js","sourceRoot":"","sources":["../../src/scheduler/Action.ts"],"names":[],"mappings":"OACO,EAAE,YAAY,EAAE,MAAM,iBAAiB;AAE9C;;;;;;;;;;;;;GAaG;AACH,4BAA+B,YAAY;IACzC,YAAY,SAAoB,EAAE,IAA0C;QAC1E,OAAO,CAAC;IACV,CAAC;IACD;;;;;;;;;OASG;IACI,QAAQ,CAAC,KAAS,EAAE,KAAK,GAAW,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js new file mode 100644 index 0000000..87a3ea6 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js @@ -0,0 +1,44 @@ +import { AsyncAction } from './AsyncAction'; +import { AnimationFrame } from '../util/AnimationFrame'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class AnimationFrameAction extends AsyncAction { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + } + requestAsyncId(scheduler, id, delay = 0) { + // If delay is greater than 0, request as an async action. + if (delay !== null && delay > 0) { + return super.requestAsyncId(scheduler, id, delay); + } + // Push the action to the end of the scheduler queue. + scheduler.actions.push(this); + // If an animation frame has already been requested, don't request another + // one. If an animation frame hasn't been requested yet, request one. Return + // the current animation frame request id. + return scheduler.scheduled || (scheduler.scheduled = AnimationFrame.requestAnimationFrame(scheduler.flush.bind(scheduler, null))); + } + recycleAsyncId(scheduler, id, delay = 0) { + // If delay exists and is greater than 0, or if the delay is null (the + // action wasn't rescheduled) but was originally scheduled as an async + // action, then recycle as an async action. + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return super.recycleAsyncId(scheduler, id, delay); + } + // If the scheduler queue is empty, cancel the requested animation frame and + // set the scheduled flag to undefined so the next AnimationFrameAction will + // request its own. + if (scheduler.actions.length === 0) { + AnimationFrame.cancelAnimationFrame(id); + scheduler.scheduled = undefined; + } + // Return undefined so the action knows to request a new async id if it's rescheduled. + return undefined; + } +} +//# sourceMappingURL=AnimationFrameAction.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js.map b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js.map new file mode 100644 index 0000000..e188c88 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameAction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnimationFrameAction.js","sourceRoot":"","sources":["../../src/scheduler/AnimationFrameAction.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,eAAe;OACpC,EAAE,cAAc,EAAE,MAAM,wBAAwB;AAGvD;;;;GAIG;AACH,0CAA6C,WAAW;IAEtD,YAAsB,SAAkC,EAClC,IAAwD;QAC5E,MAAM,SAAS,EAAE,IAAI,CAAC,CAAC;QAFH,cAAS,GAAT,SAAS,CAAyB;QAClC,SAAI,GAAJ,IAAI,CAAoD;IAE9E,CAAC;IAES,cAAc,CAAC,SAAkC,EAAE,EAAQ,EAAE,KAAK,GAAW,CAAC;QACtF,0DAA0D;QAC1D,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,qDAAqD;QACrD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,0EAA0E;QAC1E,4EAA4E;QAC5E,0CAA0C;QAC1C,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,qBAAqB,CACvF,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CACtC,CAAC,CAAC;IACL,CAAC;IACS,cAAc,CAAC,SAAkC,EAAE,EAAQ,EAAE,KAAK,GAAW,CAAC;QACtF,sEAAsE;QACtE,sEAAsE;QACtE,2CAA2C;QAC3C,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,4EAA4E;QAC5E,4EAA4E;QAC5E,mBAAmB;QACnB,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,cAAc,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACxC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js new file mode 100644 index 0000000..cb658cb --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js @@ -0,0 +1,25 @@ +import { AsyncScheduler } from './AsyncScheduler'; +export class AnimationFrameScheduler extends AsyncScheduler { + flush(action) { + this.active = true; + this.scheduled = undefined; + const { actions } = this; + let error; + let index = -1; + let count = actions.length; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (++index < count && (action = actions.shift())); + this.active = false; + if (error) { + while (++index < count && (action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + } +} +//# sourceMappingURL=AnimationFrameScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js.map b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js.map new file mode 100644 index 0000000..f5b9dd0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AnimationFrameScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnimationFrameScheduler.js","sourceRoot":"","sources":["../../src/scheduler/AnimationFrameScheduler.ts"],"names":[],"mappings":"OACO,EAAE,cAAc,EAAE,MAAM,kBAAkB;AAEjD,6CAA6C,cAAc;IAClD,KAAK,CAAC,MAAyB;QAEpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC;QACvB,IAAI,KAAU,CAAC;QACf,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,GAAW,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAEnC,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC;YACR,CAAC;QACH,CAAC,QAAQ,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;QAExD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,OAAO,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsapAction.js b/node_modules/rxjs/_esm2015/scheduler/AsapAction.js new file mode 100644 index 0000000..fad75da --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsapAction.js @@ -0,0 +1,44 @@ +import { Immediate } from '../util/Immediate'; +import { AsyncAction } from './AsyncAction'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class AsapAction extends AsyncAction { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + } + requestAsyncId(scheduler, id, delay = 0) { + // If delay is greater than 0, request as an async action. + if (delay !== null && delay > 0) { + return super.requestAsyncId(scheduler, id, delay); + } + // Push the action to the end of the scheduler queue. + scheduler.actions.push(this); + // If a microtask has already been scheduled, don't schedule another + // one. If a microtask hasn't been scheduled yet, schedule one now. Return + // the current scheduled microtask id. + return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null))); + } + recycleAsyncId(scheduler, id, delay = 0) { + // If delay exists and is greater than 0, or if the delay is null (the + // action wasn't rescheduled) but was originally scheduled as an async + // action, then recycle as an async action. + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return super.recycleAsyncId(scheduler, id, delay); + } + // If the scheduler queue is empty, cancel the requested microtask and + // set the scheduled flag to undefined so the next AsapAction will schedule + // its own. + if (scheduler.actions.length === 0) { + Immediate.clearImmediate(id); + scheduler.scheduled = undefined; + } + // Return undefined so the action knows to request a new async id if it's rescheduled. + return undefined; + } +} +//# sourceMappingURL=AsapAction.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsapAction.js.map b/node_modules/rxjs/_esm2015/scheduler/AsapAction.js.map new file mode 100644 index 0000000..13de9b0 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsapAction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsapAction.js","sourceRoot":"","sources":["../../src/scheduler/AsapAction.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB;OACtC,EAAE,WAAW,EAAE,MAAM,eAAe;AAG3C;;;;GAIG;AACH,gCAAmC,WAAW;IAE5C,YAAsB,SAAwB,EACxB,IAA8C;QAClE,MAAM,SAAS,EAAE,IAAI,CAAC,CAAC;QAFH,cAAS,GAAT,SAAS,CAAe;QACxB,SAAI,GAAJ,IAAI,CAA0C;IAEpE,CAAC;IAES,cAAc,CAAC,SAAwB,EAAE,EAAQ,EAAE,KAAK,GAAW,CAAC;QAC5E,0DAA0D;QAC1D,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,qDAAqD;QACrD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,oEAAoE;QACpE,0EAA0E;QAC1E,sCAAsC;QACtC,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CACzE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CACtC,CAAC,CAAC;IACL,CAAC;IACS,cAAc,CAAC,SAAwB,EAAE,EAAQ,EAAE,KAAK,GAAW,CAAC;QAC5E,sEAAsE;QACtE,sEAAsE;QACtE,2CAA2C;QAC3C,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,sEAAsE;QACtE,2EAA2E;QAC3E,WAAW;QACX,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC7B,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js b/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js new file mode 100644 index 0000000..d4f637d --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js @@ -0,0 +1,25 @@ +import { AsyncScheduler } from './AsyncScheduler'; +export class AsapScheduler extends AsyncScheduler { + flush(action) { + this.active = true; + this.scheduled = undefined; + const { actions } = this; + let error; + let index = -1; + let count = actions.length; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (++index < count && (action = actions.shift())); + this.active = false; + if (error) { + while (++index < count && (action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + } +} +//# sourceMappingURL=AsapScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js.map b/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js.map new file mode 100644 index 0000000..c94e4ce --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsapScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsapScheduler.js","sourceRoot":"","sources":["../../src/scheduler/AsapScheduler.ts"],"names":[],"mappings":"OACO,EAAE,cAAc,EAAE,MAAM,kBAAkB;AAEjD,mCAAmC,cAAc;IACxC,KAAK,CAAC,MAAyB;QAEpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC;QACvB,IAAI,KAAU,CAAC;QACf,IAAI,KAAK,GAAW,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,GAAW,OAAO,CAAC,MAAM,CAAC;QACnC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAEnC,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC;YACR,CAAC;QACH,CAAC,QAAQ,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE;QAExD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,OAAO,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js b/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js new file mode 100644 index 0000000..6f5dd47 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js @@ -0,0 +1,130 @@ +import { root } from '../util/root'; +import { Action } from './Action'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class AsyncAction extends Action { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.pending = false; + this.work = work; + } + schedule(state, delay = 0) { + if (this.closed) { + return this; + } + // Always replace the current state with the new state. + this.state = state; + // Set the pending flag indicating that this action has been scheduled, or + // has recursively rescheduled itself. + this.pending = true; + const id = this.id; + const scheduler = this.scheduler; + // + // Important implementation note: + // + // Actions only execute once by default, unless rescheduled from within the + // scheduled callback. This allows us to implement single and repeat + // actions via the same code path, without adding API surface area, as well + // as mimic traditional recursion but across asynchronous boundaries. + // + // However, JS runtimes and timers distinguish between intervals achieved by + // serial `setTimeout` calls vs. a single `setInterval` call. An interval of + // serial `setTimeout` calls can be individually delayed, which delays + // scheduling the next `setTimeout`, and so on. `setInterval` attempts to + // guarantee the interval callback will be invoked more precisely to the + // interval period, regardless of load. + // + // Therefore, we use `setInterval` to schedule single and repeat actions. + // If the action reschedules itself with the same delay, the interval is not + // canceled. If the action doesn't reschedule, or reschedules with a + // different delay, the interval will be canceled after scheduled callback + // execution. + // + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.delay = delay; + // If this action has already an async Id, don't request a new one. + this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); + return this; + } + requestAsyncId(scheduler, id, delay = 0) { + return root.setInterval(scheduler.flush.bind(scheduler, this), delay); + } + recycleAsyncId(scheduler, id, delay = 0) { + // If this action is rescheduled with the same delay time, don't clear the interval id. + if (delay !== null && this.delay === delay && this.pending === false) { + return id; + } + // Otherwise, if the action's delay time is different from the current delay, + // or the action has been rescheduled before it's executed, clear the interval id + return root.clearInterval(id) && undefined || undefined; + } + /** + * Immediately executes this action and the `work` it contains. + * @return {any} + */ + execute(state, delay) { + if (this.closed) { + return new Error('executing a cancelled action'); + } + this.pending = false; + const error = this._execute(state, delay); + if (error) { + return error; + } + else if (this.pending === false && this.id != null) { + // Dequeue if the action didn't reschedule itself. Don't call + // unsubscribe(), because the action could reschedule later. + // For example: + // ``` + // scheduler.schedule(function doWork(counter) { + // /* ... I'm a busy worker bee ... */ + // var originalAction = this; + // /* wait 100ms before rescheduling the action */ + // setTimeout(function () { + // originalAction.schedule(counter + 1); + // }, 100); + // }, 1000); + // ``` + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + } + _execute(state, delay) { + let errored = false; + let errorValue = undefined; + try { + this.work(state); + } + catch (e) { + errored = true; + errorValue = !!e && e || new Error(e); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + } + /** @deprecated internal use only */ _unsubscribe() { + const id = this.id; + const scheduler = this.scheduler; + const actions = scheduler.actions; + const index = actions.indexOf(this); + this.work = null; + this.state = null; + this.pending = false; + this.scheduler = null; + if (index !== -1) { + actions.splice(index, 1); + } + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + } +} +//# sourceMappingURL=AsyncAction.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js.map b/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js.map new file mode 100644 index 0000000..0f8a983 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsyncAction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncAction.js","sourceRoot":"","sources":["../../src/scheduler/AsyncAction.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js b/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js new file mode 100644 index 0000000..059afe1 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js @@ -0,0 +1,42 @@ +import { Scheduler } from '../Scheduler'; +export class AsyncScheduler extends Scheduler { + constructor() { + super(...arguments); + this.actions = []; + /** + * A flag to indicate whether the Scheduler is currently executing a batch of + * queued actions. + * @type {boolean} + */ + this.active = false; + /** + * An internal ID used to track the latest asynchronous task such as those + * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and + * others. + * @type {any} + */ + this.scheduled = undefined; + } + flush(action) { + const { actions } = this; + if (this.active) { + actions.push(action); + return; + } + let error; + this.active = true; + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (action = actions.shift()); // exhaust the scheduler queue + this.active = false; + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + } +} +//# sourceMappingURL=AsyncScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js.map b/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js.map new file mode 100644 index 0000000..0ee8904 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/AsyncScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AsyncScheduler.js","sourceRoot":"","sources":["../../src/scheduler/AsyncScheduler.ts"],"names":[],"mappings":"OAAO,EAAE,SAAS,EAAE,MAAM,cAAc;AAGxC,oCAAoC,SAAS;IAA7C;QAAoC,oBAAS;QACpC,YAAO,GAA4B,EAAE,CAAC;QAC7C;;;;WAIG;QACI,WAAM,GAAY,KAAK,CAAC;QAC/B;;;;;WAKG;QACI,cAAS,GAAQ,SAAS,CAAC;IA6BpC,CAAC;IA3BQ,KAAK,CAAC,MAAwB;QAEnC,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC;QAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,CAAC;QACT,CAAC;QAED,IAAI,KAAU,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,GAAG,CAAC;YACF,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC;YACR,CAAC;QACH,CAAC,QAAQ,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B;QAElE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,OAAO,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/QueueAction.js b/node_modules/rxjs/_esm2015/scheduler/QueueAction.js new file mode 100644 index 0000000..d364216 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/QueueAction.js @@ -0,0 +1,38 @@ +import { AsyncAction } from './AsyncAction'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class QueueAction extends AsyncAction { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + } + schedule(state, delay = 0) { + if (delay > 0) { + return super.schedule(state, delay); + } + this.delay = delay; + this.state = state; + this.scheduler.flush(this); + return this; + } + execute(state, delay) { + return (delay > 0 || this.closed) ? + super.execute(state, delay) : + this._execute(state, delay); + } + requestAsyncId(scheduler, id, delay = 0) { + // If delay exists and is greater than 0, or if the delay is null (the + // action wasn't rescheduled) but was originally scheduled as an async + // action, then recycle as an async action. + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return super.requestAsyncId(scheduler, id, delay); + } + // Otherwise flush the scheduler starting with this action. + return scheduler.flush(this); + } +} +//# sourceMappingURL=QueueAction.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/QueueAction.js.map b/node_modules/rxjs/_esm2015/scheduler/QueueAction.js.map new file mode 100644 index 0000000..04050e5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/QueueAction.js.map @@ -0,0 +1 @@ +{"version":3,"file":"QueueAction.js","sourceRoot":"","sources":["../../src/scheduler/QueueAction.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,eAAe;AAI3C;;;;GAIG;AACH,iCAAoC,WAAW;IAE7C,YAAsB,SAAyB,EACzB,IAA+C;QACnE,MAAM,SAAS,EAAE,IAAI,CAAC,CAAC;QAFH,cAAS,GAAT,SAAS,CAAgB;QACzB,SAAI,GAAJ,IAAI,CAA2C;IAErE,CAAC;IAEM,QAAQ,CAAC,KAAS,EAAE,KAAK,GAAW,CAAC;QAC1C,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,KAAQ,EAAE,KAAa;QACpC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;YAC/B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAE;IACjC,CAAC;IAES,cAAc,CAAC,SAAyB,EAAE,EAAQ,EAAE,KAAK,GAAW,CAAC;QAC7E,sEAAsE;QACtE,sEAAsE;QACtE,2CAA2C;QAC3C,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,2DAA2D;QAC3D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js b/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js new file mode 100644 index 0000000..cc1fb4d --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js @@ -0,0 +1,4 @@ +import { AsyncScheduler } from './AsyncScheduler'; +export class QueueScheduler extends AsyncScheduler { +} +//# sourceMappingURL=QueueScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js.map b/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js.map new file mode 100644 index 0000000..cf4147f --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/QueueScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"QueueScheduler.js","sourceRoot":"","sources":["../../src/scheduler/QueueScheduler.ts"],"names":[],"mappings":"OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB;AAEjD,oCAAoC,cAAc;AAClD,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js b/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js new file mode 100644 index 0000000..0e6af1d --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js @@ -0,0 +1,94 @@ +import { AsyncAction } from './AsyncAction'; +import { AsyncScheduler } from './AsyncScheduler'; +export class VirtualTimeScheduler extends AsyncScheduler { + constructor(SchedulerAction = VirtualAction, maxFrames = Number.POSITIVE_INFINITY) { + super(SchedulerAction, () => this.frame); + this.maxFrames = maxFrames; + this.frame = 0; + this.index = -1; + } + /** + * Prompt the Scheduler to execute all of its queued actions, therefore + * clearing its queue. + * @return {void} + */ + flush() { + const { actions, maxFrames } = this; + let error, action; + while ((action = actions.shift()) && (this.frame = action.delay) <= maxFrames) { + if (error = action.execute(action.state, action.delay)) { + break; + } + } + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + } +} +VirtualTimeScheduler.frameTimeFactor = 10; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class VirtualAction extends AsyncAction { + constructor(scheduler, work, index = scheduler.index += 1) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + this.index = index; + this.active = true; + this.index = scheduler.index = index; + } + schedule(state, delay = 0) { + if (!this.id) { + return super.schedule(state, delay); + } + this.active = false; + // If an action is rescheduled, we save allocations by mutating its state, + // pushing it to the end of the scheduler queue, and recycling the action. + // But since the VirtualTimeScheduler is used for testing, VirtualActions + // must be immutable so they can be inspected later. + const action = new VirtualAction(this.scheduler, this.work); + this.add(action); + return action.schedule(state, delay); + } + requestAsyncId(scheduler, id, delay = 0) { + this.delay = scheduler.frame + delay; + const { actions } = scheduler; + actions.push(this); + actions.sort(VirtualAction.sortActions); + return true; + } + recycleAsyncId(scheduler, id, delay = 0) { + return undefined; + } + _execute(state, delay) { + if (this.active === true) { + return super._execute(state, delay); + } + } + static sortActions(a, b) { + if (a.delay === b.delay) { + if (a.index === b.index) { + return 0; + } + else if (a.index > b.index) { + return 1; + } + else { + return -1; + } + } + else if (a.delay > b.delay) { + return 1; + } + else { + return -1; + } + } +} +//# sourceMappingURL=VirtualTimeScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js.map b/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js.map new file mode 100644 index 0000000..174a91e --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/VirtualTimeScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"VirtualTimeScheduler.js","sourceRoot":"","sources":["../../src/scheduler/VirtualTimeScheduler.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/animationFrame.js b/node_modules/rxjs/_esm2015/scheduler/animationFrame.js new file mode 100644 index 0000000..a438fb5 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/animationFrame.js @@ -0,0 +1,34 @@ +import { AnimationFrameAction } from './AnimationFrameAction'; +import { AnimationFrameScheduler } from './AnimationFrameScheduler'; +/** + * + * Animation Frame Scheduler + * + * Perform task when `window.requestAnimationFrame` would fire + * + * When `animationFrame` scheduler is used with delay, it will fall back to {@link async} scheduler + * behaviour. + * + * Without delay, `animationFrame` scheduler can be used to create smooth browser animations. + * It makes sure scheduled task will happen just before next browser content repaint, + * thus performing animations as efficiently as possible. + * + * @example Schedule div height animation + * const div = document.querySelector('.some-div'); + * + * Rx.Scheduler.schedule(function(height) { + * div.style.height = height + "px"; + * + * this.schedule(height + 1); // `this` references currently executing Action, + * // which we reschedule with new state + * }, 0, 0); + * + * // You will see .some-div element growing in height + * + * + * @static true + * @name animationFrame + * @owner Scheduler + */ +export const animationFrame = new AnimationFrameScheduler(AnimationFrameAction); +//# sourceMappingURL=animationFrame.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/animationFrame.js.map b/node_modules/rxjs/_esm2015/scheduler/animationFrame.js.map new file mode 100644 index 0000000..1860229 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/animationFrame.js.map @@ -0,0 +1 @@ +{"version":3,"file":"animationFrame.js","sourceRoot":"","sources":["../../src/scheduler/animationFrame.ts"],"names":[],"mappings":"OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB;OACtD,EAAE,uBAAuB,EAAE,MAAM,2BAA2B;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,MAAM,cAAc,GAAG,IAAI,uBAAuB,CAAC,oBAAoB,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/asap.js b/node_modules/rxjs/_esm2015/scheduler/asap.js new file mode 100644 index 0000000..0352430 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/asap.js @@ -0,0 +1,38 @@ +import { AsapAction } from './AsapAction'; +import { AsapScheduler } from './AsapScheduler'; +/** + * + * Asap Scheduler + * + * Perform task as fast as it can be performed asynchronously + * + * `asap` scheduler behaves the same as {@link async} scheduler when you use it to delay task + * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing + * code to end and then it will try to execute given task as fast as possible. + * + * `asap` scheduler will do its best to minimize time between end of currently executing code + * and start of scheduled task. This makes it best candidate for performing so called "deferring". + * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves + * some (although minimal) unwanted delay. + * + * Note that using `asap` scheduler does not necessarily mean that your task will be first to process + * after currently executing code. In particular, if some task was also scheduled with `asap` before, + * that task will execute first. That being said, if you need to schedule task asynchronously, but + * as soon as possible, `asap` scheduler is your best bet. + * + * @example Compare async and asap scheduler + * + * Rx.Scheduler.async.schedule(() => console.log('async')); // scheduling 'async' first... + * Rx.Scheduler.asap.schedule(() => console.log('asap')); + * + * // Logs: + * // "asap" + * // "async" + * // ... but 'asap' goes first! + * + * @static true + * @name asap + * @owner Scheduler + */ +export const asap = new AsapScheduler(AsapAction); +//# sourceMappingURL=asap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/asap.js.map b/node_modules/rxjs/_esm2015/scheduler/asap.js.map new file mode 100644 index 0000000..0dcdbd9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/asap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"asap.js","sourceRoot":"","sources":["../../src/scheduler/asap.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,cAAc;OAClC,EAAE,aAAa,EAAE,MAAM,iBAAiB;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/async.js b/node_modules/rxjs/_esm2015/scheduler/async.js new file mode 100644 index 0000000..ead77af --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/async.js @@ -0,0 +1,46 @@ +import { AsyncAction } from './AsyncAction'; +import { AsyncScheduler } from './AsyncScheduler'; +/** + * + * Async Scheduler + * + * Schedule task as if you used setTimeout(task, duration) + * + * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript + * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating + * in intervals. + * + * If you just want to "defer" task, that is to perform it right after currently + * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`), + * better choice will be the {@link asap} scheduler. + * + * @example Use async scheduler to delay task + * const task = () => console.log('it works!'); + * + * Rx.Scheduler.async.schedule(task, 2000); + * + * // After 2 seconds logs: + * // "it works!" + * + * + * @example Use async scheduler to repeat task in intervals + * function task(state) { + * console.log(state); + * this.schedule(state + 1, 1000); // `this` references currently executing Action, + * // which we reschedule with new state and delay + * } + * + * Rx.Scheduler.async.schedule(task, 3000, 0); + * + * // Logs: + * // 0 after 3s + * // 1 after 4s + * // 2 after 5s + * // 3 after 6s + * + * @static true + * @name async + * @owner Scheduler + */ +export const async = new AsyncScheduler(AsyncAction); +//# sourceMappingURL=async.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/async.js.map b/node_modules/rxjs/_esm2015/scheduler/async.js.map new file mode 100644 index 0000000..17d999f --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/async.js.map @@ -0,0 +1 @@ +{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/scheduler/async.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,eAAe;OACpC,EAAE,cAAc,EAAE,MAAM,kBAAkB;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/queue.js b/node_modules/rxjs/_esm2015/scheduler/queue.js new file mode 100644 index 0000000..379be46 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/queue.js @@ -0,0 +1,65 @@ +import { QueueAction } from './QueueAction'; +import { QueueScheduler } from './QueueScheduler'; +/** + * + * Queue Scheduler + * + * Put every next task on a queue, instead of executing it immediately + * + * `queue` scheduler, when used with delay, behaves the same as {@link async} scheduler. + * + * When used without delay, it schedules given task synchronously - executes it right when + * it is scheduled. However when called recursively, that is when inside the scheduled task, + * another task is scheduled with queue scheduler, instead of executing immediately as well, + * that task will be put on a queue and wait for current one to finish. + * + * This means that when you execute task with `queue` scheduler, you are sure it will end + * before any other task scheduled with that scheduler will start. + * + * @examples Schedule recursively first, then do something + * + * Rx.Scheduler.queue.schedule(() => { + * Rx.Scheduler.queue.schedule(() => console.log('second')); // will not happen now, but will be put on a queue + * + * console.log('first'); + * }); + * + * // Logs: + * // "first" + * // "second" + * + * + * @example Reschedule itself recursively + * + * Rx.Scheduler.queue.schedule(function(state) { + * if (state !== 0) { + * console.log('before', state); + * this.schedule(state - 1); // `this` references currently executing Action, + * // which we reschedule with new state + * console.log('after', state); + * } + * }, 0, 3); + * + * // In scheduler that runs recursively, you would expect: + * // "before", 3 + * // "before", 2 + * // "before", 1 + * // "after", 1 + * // "after", 2 + * // "after", 3 + * + * // But with queue it logs: + * // "before", 3 + * // "after", 3 + * // "before", 2 + * // "after", 2 + * // "before", 1 + * // "after", 1 + * + * + * @static true + * @name queue + * @owner Scheduler + */ +export const queue = new QueueScheduler(QueueAction); +//# sourceMappingURL=queue.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/scheduler/queue.js.map b/node_modules/rxjs/_esm2015/scheduler/queue.js.map new file mode 100644 index 0000000..62ac951 --- /dev/null +++ b/node_modules/rxjs/_esm2015/scheduler/queue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/scheduler/queue.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,eAAe;OACpC,EAAE,cAAc,EAAE,MAAM,kBAAkB;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/iterator.js b/node_modules/rxjs/_esm2015/symbol/iterator.js new file mode 100644 index 0000000..01a5b67 --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/iterator.js @@ -0,0 +1,36 @@ +import { root } from '../util/root'; +export function symbolIteratorPonyfill(root) { + const Symbol = root.Symbol; + if (typeof Symbol === 'function') { + if (!Symbol.iterator) { + Symbol.iterator = Symbol('iterator polyfill'); + } + return Symbol.iterator; + } + else { + // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC) + const { Set } = root; + if (Set && typeof new Set()['@@iterator'] === 'function') { + return '@@iterator'; + } + const { Map } = root; + // required for compatability with es6-shim + if (Map) { + let keys = Object.getOwnPropertyNames(Map.prototype); + for (let i = 0; i < keys.length; ++i) { + let key = keys[i]; + // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal. + if (key !== 'entries' && key !== 'size' && Map.prototype[key] === Map.prototype['entries']) { + return key; + } + } + } + return '@@iterator'; + } +} +export const iterator = symbolIteratorPonyfill(root); +/** + * @deprecated use iterator instead + */ +export const $$iterator = iterator; +//# sourceMappingURL=iterator.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/iterator.js.map b/node_modules/rxjs/_esm2015/symbol/iterator.js.map new file mode 100644 index 0000000..f03cb83 --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/iterator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"iterator.js","sourceRoot":"","sources":["../../src/symbol/iterator.ts"],"names":[],"mappings":"OAAO,EAAE,IAAI,EAAE,MAAM,cAAc;AAEnC,uCAAuC,IAAS;IAC9C,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAC;IAEhC,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;QACjC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,qDAAqD;QACrD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,EAAE,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,2CAA2C;QAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACR,IAAI,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,wFAAwF;gBACxF,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC3F,MAAM,CAAC,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,OAAO,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAErD;;GAEG;AACH,OAAO,MAAM,UAAU,GAAG,QAAQ,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/observable.js b/node_modules/rxjs/_esm2015/symbol/observable.js new file mode 100644 index 0000000..9ae6dd9 --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/observable.js @@ -0,0 +1,24 @@ +import { root } from '../util/root'; +export function getSymbolObservable(context) { + let $$observable; + let Symbol = context.Symbol; + if (typeof Symbol === 'function') { + if (Symbol.observable) { + $$observable = Symbol.observable; + } + else { + $$observable = Symbol('observable'); + Symbol.observable = $$observable; + } + } + else { + $$observable = '@@observable'; + } + return $$observable; +} +export const observable = getSymbolObservable(root); +/** + * @deprecated use observable instead + */ +export const $$observable = observable; +//# sourceMappingURL=observable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/observable.js.map b/node_modules/rxjs/_esm2015/symbol/observable.js.map new file mode 100644 index 0000000..f94361b --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/observable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"observable.js","sourceRoot":"","sources":["../../src/symbol/observable.ts"],"names":[],"mappings":"OAAO,EAAE,IAAI,EAAE,MAAM,cAAc;AAEnC,oCAAoC,OAAY;IAC9C,IAAI,YAAiB,CAAC;IACtB,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE5B,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC;QACjC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACtB,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM,CAAC,UAAU,GAAG,YAAY,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC;AACtB,CAAC;AAED,OAAO,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAEpD;;GAEG;AACH,OAAO,MAAM,YAAY,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js b/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js new file mode 100644 index 0000000..c1cf014 --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js @@ -0,0 +1,9 @@ +import { root } from '../util/root'; +const Symbol = root.Symbol; +export const rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ? + Symbol.for('rxSubscriber') : '@@rxSubscriber'; +/** + * @deprecated use rxSubscriber instead + */ +export const $$rxSubscriber = rxSubscriber; +//# sourceMappingURL=rxSubscriber.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js.map b/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js.map new file mode 100644 index 0000000..99a1185 --- /dev/null +++ b/node_modules/rxjs/_esm2015/symbol/rxSubscriber.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rxSubscriber.js","sourceRoot":"","sources":["../../src/symbol/rxSubscriber.ts"],"names":[],"mappings":"OAAO,EAAE,IAAI,EAAE,MAAM,cAAc;AAEnC,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAC;AAEhC,OAAO,MAAM,YAAY,GAAG,CAAC,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,CAAC;IAC5F,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;AAEhD;;GAEG;AACH,OAAO,MAAM,cAAc,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/ColdObservable.js b/node_modules/rxjs/_esm2015/testing/ColdObservable.js new file mode 100644 index 0000000..7976f93 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/ColdObservable.js @@ -0,0 +1,34 @@ +import { Observable } from '../Observable'; +import { Subscription } from '../Subscription'; +import { SubscriptionLoggable } from './SubscriptionLoggable'; +import { applyMixins } from '../util/applyMixins'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class ColdObservable extends Observable { + constructor(messages, scheduler) { + super(function (subscriber) { + const observable = this; + const index = observable.logSubscribedFrame(); + subscriber.add(new Subscription(() => { + observable.logUnsubscribedFrame(index); + })); + observable.scheduleMessages(subscriber); + return subscriber; + }); + this.messages = messages; + this.subscriptions = []; + this.scheduler = scheduler; + } + scheduleMessages(subscriber) { + const messagesLength = this.messages.length; + for (let i = 0; i < messagesLength; i++) { + const message = this.messages[i]; + subscriber.add(this.scheduler.schedule(({ message, subscriber }) => { message.notification.observe(subscriber); }, message.frame, { message, subscriber })); + } + } +} +applyMixins(ColdObservable, [SubscriptionLoggable]); +//# sourceMappingURL=ColdObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/ColdObservable.js.map b/node_modules/rxjs/_esm2015/testing/ColdObservable.js.map new file mode 100644 index 0000000..bd0f226 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/ColdObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ColdObservable.js","sourceRoot":"","sources":["../../src/testing/ColdObservable.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAE,MAAM,iBAAiB;OAIvC,EAAE,oBAAoB,EAAE,MAAM,wBAAwB;OACtD,EAAE,WAAW,EAAE,MAAM,qBAAqB;AAGjD;;;;GAIG;AACH,oCAAuC,UAAU;IAM/C,YAAmB,QAAuB,EAC9B,SAAoB;QAC9B,MAAM,UAAmC,UAA2B;YAClE,MAAM,UAAU,GAAsB,IAAI,CAAC;YAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAC9C,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;gBAC9B,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC,CAAC;YACJ,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;QAVc,aAAQ,GAAR,QAAQ,CAAe;QALnC,kBAAa,GAAsB,EAAE,CAAC;QAgB3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,UAA2B;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,UAAU,CAAC,GAAG,CACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC9F,OAAO,CAAC,KAAK,EACb,EAAC,OAAO,EAAE,UAAU,EAAC,CAAC,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AACD,WAAW,CAAC,cAAc,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/HotObservable.js b/node_modules/rxjs/_esm2015/testing/HotObservable.js new file mode 100644 index 0000000..85e9cef --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/HotObservable.js @@ -0,0 +1,39 @@ +import { Subject } from '../Subject'; +import { Subscription } from '../Subscription'; +import { SubscriptionLoggable } from './SubscriptionLoggable'; +import { applyMixins } from '../util/applyMixins'; +/** + * We need this JSDoc comment for affecting ESDoc. + * @ignore + * @extends {Ignored} + */ +export class HotObservable extends Subject { + constructor(messages, scheduler) { + super(); + this.messages = messages; + this.subscriptions = []; + this.scheduler = scheduler; + } + /** @deprecated internal use only */ _subscribe(subscriber) { + const subject = this; + const index = subject.logSubscribedFrame(); + subscriber.add(new Subscription(() => { + subject.logUnsubscribedFrame(index); + })); + return super._subscribe(subscriber); + } + setup() { + const subject = this; + const messagesLength = subject.messages.length; + /* tslint:disable:no-var-keyword */ + for (var i = 0; i < messagesLength; i++) { + (() => { + var message = subject.messages[i]; + /* tslint:enable */ + subject.scheduler.schedule(() => { message.notification.observe(subject); }, message.frame); + })(); + } + } +} +applyMixins(HotObservable, [SubscriptionLoggable]); +//# sourceMappingURL=HotObservable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/HotObservable.js.map b/node_modules/rxjs/_esm2015/testing/HotObservable.js.map new file mode 100644 index 0000000..a1afdd8 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/HotObservable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"HotObservable.js","sourceRoot":"","sources":["../../src/testing/HotObservable.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAE,MAAM,YAAY;OAE7B,EAAE,YAAY,EAAE,MAAM,iBAAiB;OAIvC,EAAE,oBAAoB,EAAE,MAAM,wBAAwB;OACtD,EAAE,WAAW,EAAE,MAAM,qBAAqB;AAEjD;;;;GAIG;AACH,mCAAsC,OAAO;IAM3C,YAAmB,QAAuB,EAC9B,SAAoB;QAC9B,OAAO,CAAC;QAFS,aAAQ,GAAR,QAAQ,CAAe;QALnC,kBAAa,GAAsB,EAAE,CAAC;QAQ3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,oCAAoC,CAAC,UAAU,CAAC,UAA2B;QACzE,MAAM,OAAO,GAAqB,IAAI,CAAC;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC3C,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;YAC9B,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/C,mCAAmC;QACnC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,CAAC;gBACC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvC,mBAAmB;gBACd,OAAO,CAAC,SAAS,CAAC,QAAQ,CACxB,QAAQ,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,OAAO,CAAC,KAAK,CACd,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;IACH,CAAC;AACH,CAAC;AACD,WAAW,CAAC,aAAa,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js b/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js new file mode 100644 index 0000000..c421751 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js @@ -0,0 +1,7 @@ +export class SubscriptionLog { + constructor(subscribedFrame, unsubscribedFrame = Number.POSITIVE_INFINITY) { + this.subscribedFrame = subscribedFrame; + this.unsubscribedFrame = unsubscribedFrame; + } +} +//# sourceMappingURL=SubscriptionLog.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js.map b/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js.map new file mode 100644 index 0000000..289ca5b --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/SubscriptionLog.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SubscriptionLog.js","sourceRoot":"","sources":["../../src/testing/SubscriptionLog.ts"],"names":[],"mappings":"AAAA;IACE,YAAmB,eAAuB,EACvB,iBAAiB,GAAW,MAAM,CAAC,iBAAiB;QADpD,oBAAe,GAAf,eAAe,CAAQ;QACvB,sBAAiB,GAAjB,iBAAiB,CAAmC;IACvE,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js b/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js new file mode 100644 index 0000000..08a00d7 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js @@ -0,0 +1,16 @@ +import { SubscriptionLog } from './SubscriptionLog'; +export class SubscriptionLoggable { + constructor() { + this.subscriptions = []; + } + logSubscribedFrame() { + this.subscriptions.push(new SubscriptionLog(this.scheduler.now())); + return this.subscriptions.length - 1; + } + logUnsubscribedFrame(index) { + const subscriptionLogs = this.subscriptions; + const oldSubscriptionLog = subscriptionLogs[index]; + subscriptionLogs[index] = new SubscriptionLog(oldSubscriptionLog.subscribedFrame, this.scheduler.now()); + } +} +//# sourceMappingURL=SubscriptionLoggable.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js.map b/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js.map new file mode 100644 index 0000000..8f77dbf --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/SubscriptionLoggable.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SubscriptionLoggable.js","sourceRoot":"","sources":["../../src/testing/SubscriptionLoggable.ts"],"names":[],"mappings":"OACO,EAAE,eAAe,EAAE,MAAM,mBAAmB;AAEnD;IAAA;QACS,kBAAa,GAAsB,EAAE,CAAC;IAgB/C,CAAC;IAbC,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,oBAAoB,CAAC,KAAa;QAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnD,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,eAAe,CAC3C,kBAAkB,CAAC,eAAe,EAClC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/TestMessage.js b/node_modules/rxjs/_esm2015/testing/TestMessage.js new file mode 100644 index 0000000..908175c --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/TestMessage.js @@ -0,0 +1 @@ +//# sourceMappingURL=TestMessage.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/TestMessage.js.map b/node_modules/rxjs/_esm2015/testing/TestMessage.js.map new file mode 100644 index 0000000..33ebfba --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/TestMessage.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TestMessage.js","sourceRoot":"","sources":["../../src/testing/TestMessage.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/TestScheduler.js b/node_modules/rxjs/_esm2015/testing/TestScheduler.js new file mode 100644 index 0000000..5f0fa8a --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/TestScheduler.js @@ -0,0 +1,208 @@ +import { Observable } from '../Observable'; +import { Notification } from '../Notification'; +import { ColdObservable } from './ColdObservable'; +import { HotObservable } from './HotObservable'; +import { SubscriptionLog } from './SubscriptionLog'; +import { VirtualTimeScheduler, VirtualAction } from '../scheduler/VirtualTimeScheduler'; +const defaultMaxFrame = 750; +export class TestScheduler extends VirtualTimeScheduler { + constructor(assertDeepEqual) { + super(VirtualAction, defaultMaxFrame); + this.assertDeepEqual = assertDeepEqual; + this.hotObservables = []; + this.coldObservables = []; + this.flushTests = []; + } + createTime(marbles) { + const indexOf = marbles.indexOf('|'); + if (indexOf === -1) { + throw new Error('marble diagram for time should have a completion marker "|"'); + } + return indexOf * TestScheduler.frameTimeFactor; + } + createColdObservable(marbles, values, error) { + if (marbles.indexOf('^') !== -1) { + throw new Error('cold observable cannot have subscription offset "^"'); + } + if (marbles.indexOf('!') !== -1) { + throw new Error('cold observable cannot have unsubscription marker "!"'); + } + const messages = TestScheduler.parseMarbles(marbles, values, error); + const cold = new ColdObservable(messages, this); + this.coldObservables.push(cold); + return cold; + } + createHotObservable(marbles, values, error) { + if (marbles.indexOf('!') !== -1) { + throw new Error('hot observable cannot have unsubscription marker "!"'); + } + const messages = TestScheduler.parseMarbles(marbles, values, error); + const subject = new HotObservable(messages, this); + this.hotObservables.push(subject); + return subject; + } + materializeInnerObservable(observable, outerFrame) { + const messages = []; + observable.subscribe((value) => { + messages.push({ frame: this.frame - outerFrame, notification: Notification.createNext(value) }); + }, (err) => { + messages.push({ frame: this.frame - outerFrame, notification: Notification.createError(err) }); + }, () => { + messages.push({ frame: this.frame - outerFrame, notification: Notification.createComplete() }); + }); + return messages; + } + expectObservable(observable, unsubscriptionMarbles = null) { + const actual = []; + const flushTest = { actual, ready: false }; + const unsubscriptionFrame = TestScheduler + .parseMarblesAsSubscriptions(unsubscriptionMarbles).unsubscribedFrame; + let subscription; + this.schedule(() => { + subscription = observable.subscribe(x => { + let value = x; + // Support Observable-of-Observables + if (x instanceof Observable) { + value = this.materializeInnerObservable(value, this.frame); + } + actual.push({ frame: this.frame, notification: Notification.createNext(value) }); + }, (err) => { + actual.push({ frame: this.frame, notification: Notification.createError(err) }); + }, () => { + actual.push({ frame: this.frame, notification: Notification.createComplete() }); + }); + }, 0); + if (unsubscriptionFrame !== Number.POSITIVE_INFINITY) { + this.schedule(() => subscription.unsubscribe(), unsubscriptionFrame); + } + this.flushTests.push(flushTest); + return { + toBe(marbles, values, errorValue) { + flushTest.ready = true; + flushTest.expected = TestScheduler.parseMarbles(marbles, values, errorValue, true); + } + }; + } + expectSubscriptions(actualSubscriptionLogs) { + const flushTest = { actual: actualSubscriptionLogs, ready: false }; + this.flushTests.push(flushTest); + return { + toBe(marbles) { + const marblesArray = (typeof marbles === 'string') ? [marbles] : marbles; + flushTest.ready = true; + flushTest.expected = marblesArray.map(marbles => TestScheduler.parseMarblesAsSubscriptions(marbles)); + } + }; + } + flush() { + const hotObservables = this.hotObservables; + while (hotObservables.length > 0) { + hotObservables.shift().setup(); + } + super.flush(); + const readyFlushTests = this.flushTests.filter(test => test.ready); + while (readyFlushTests.length > 0) { + const test = readyFlushTests.shift(); + this.assertDeepEqual(test.actual, test.expected); + } + } + static parseMarblesAsSubscriptions(marbles) { + if (typeof marbles !== 'string') { + return new SubscriptionLog(Number.POSITIVE_INFINITY); + } + const len = marbles.length; + let groupStart = -1; + let subscriptionFrame = Number.POSITIVE_INFINITY; + let unsubscriptionFrame = Number.POSITIVE_INFINITY; + for (let i = 0; i < len; i++) { + const frame = i * this.frameTimeFactor; + const c = marbles[i]; + switch (c) { + case '-': + case ' ': + break; + case '(': + groupStart = frame; + break; + case ')': + groupStart = -1; + break; + case '^': + if (subscriptionFrame !== Number.POSITIVE_INFINITY) { + throw new Error('found a second subscription point \'^\' in a ' + + 'subscription marble diagram. There can only be one.'); + } + subscriptionFrame = groupStart > -1 ? groupStart : frame; + break; + case '!': + if (unsubscriptionFrame !== Number.POSITIVE_INFINITY) { + throw new Error('found a second subscription point \'^\' in a ' + + 'subscription marble diagram. There can only be one.'); + } + unsubscriptionFrame = groupStart > -1 ? groupStart : frame; + break; + default: + throw new Error('there can only be \'^\' and \'!\' markers in a ' + + 'subscription marble diagram. Found instead \'' + c + '\'.'); + } + } + if (unsubscriptionFrame < 0) { + return new SubscriptionLog(subscriptionFrame); + } + else { + return new SubscriptionLog(subscriptionFrame, unsubscriptionFrame); + } + } + static parseMarbles(marbles, values, errorValue, materializeInnerObservables = false) { + if (marbles.indexOf('!') !== -1) { + throw new Error('conventional marble diagrams cannot have the ' + + 'unsubscription marker "!"'); + } + const len = marbles.length; + const testMessages = []; + const subIndex = marbles.indexOf('^'); + const frameOffset = subIndex === -1 ? 0 : (subIndex * -this.frameTimeFactor); + const getValue = typeof values !== 'object' ? + (x) => x : + (x) => { + // Support Observable-of-Observables + if (materializeInnerObservables && values[x] instanceof ColdObservable) { + return values[x].messages; + } + return values[x]; + }; + let groupStart = -1; + for (let i = 0; i < len; i++) { + const frame = i * this.frameTimeFactor + frameOffset; + let notification; + const c = marbles[i]; + switch (c) { + case '-': + case ' ': + break; + case '(': + groupStart = frame; + break; + case ')': + groupStart = -1; + break; + case '|': + notification = Notification.createComplete(); + break; + case '^': + break; + case '#': + notification = Notification.createError(errorValue || 'error'); + break; + default: + notification = Notification.createNext(getValue(c)); + break; + } + if (notification) { + testMessages.push({ frame: groupStart > -1 ? groupStart : frame, notification }); + } + } + return testMessages; + } +} +//# sourceMappingURL=TestScheduler.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/testing/TestScheduler.js.map b/node_modules/rxjs/_esm2015/testing/TestScheduler.js.map new file mode 100644 index 0000000..8deed43 --- /dev/null +++ b/node_modules/rxjs/_esm2015/testing/TestScheduler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"TestScheduler.js","sourceRoot":"","sources":["../../src/testing/TestScheduler.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,eAAe;OACnC,EAAE,YAAY,EAAE,MAAM,iBAAiB;OACvC,EAAE,cAAc,EAAE,MAAM,kBAAkB;OAC1C,EAAE,aAAa,EAAE,MAAM,iBAAiB;OAExC,EAAE,eAAe,EAAE,MAAM,mBAAmB;OAE5C,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mCAAmC;AAEvF,MAAM,eAAe,GAAW,GAAG,CAAC;AAWpC,mCAAmC,oBAAoB;IAKrD,YAAmB,eAA+D;QAChF,MAAM,aAAa,EAAE,eAAe,CAAC,CAAC;QADrB,oBAAe,GAAf,eAAe,CAAgD;QAJ1E,mBAAc,GAAyB,EAAE,CAAC;QAC1C,oBAAe,GAA0B,EAAE,CAAC;QAC5C,eAAU,GAAoB,EAAE,CAAC;IAIzC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,MAAM,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAI,OAAe,EAAE,MAAY,EAAE,KAAW;QAChE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,cAAc,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAI,OAAe,EAAE,MAAY,EAAE,KAAW;QAC/D,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC;IACjB,CAAC;IAEO,0BAA0B,CAAC,UAA2B,EAC3B,UAAkB;QACnD,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK;YACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC,EAAE,CAAC,GAAG;YACL,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC,EAAE;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,UAA2B,EAC3B,qBAAqB,GAAW,IAAI;QACnD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1D,MAAM,mBAAmB,GAAG,aAAa;aACtC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC,iBAAiB,CAAC;QACxE,IAAI,YAA0B,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC;YACZ,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,oCAAoC;gBACpC,EAAE,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC;oBAC5B,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC,EAAE,CAAC,GAAG;gBACL,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClF,CAAC,EAAE;gBACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,EAAE,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC;YACL,IAAI,CAAC,OAAe,EAAE,MAAY,EAAE,UAAgB;gBAClD,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvB,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACrF,CAAC;SACF,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,sBAAyC;QAC3D,MAAM,SAAS,GAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAClF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC;YACL,IAAI,CAAC,OAA0B;gBAC7B,MAAM,YAAY,GAAa,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;gBACnF,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvB,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,IAC3C,aAAa,CAAC,2BAA2B,CAAC,OAAO,CAAC,CACnD,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,KAAK;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,2BAA2B,CAAC,OAAe;QAChD,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACjD,IAAI,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEnD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;YACvC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACV,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,UAAU,GAAG,KAAK,CAAC;oBACnB,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,UAAU,GAAG,CAAC,CAAC,CAAC;oBAChB,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,EAAE,CAAC,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACnD,MAAM,IAAI,KAAK,CAAC,+CAA+C;4BAC7D,qDAAqD,CAAC,CAAC;oBAC3D,CAAC;oBACD,iBAAiB,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;oBACzD,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,EAAE,CAAC,CAAC,mBAAmB,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACrD,MAAM,IAAI,KAAK,CAAC,+CAA+C;4BAC7D,qDAAqD,CAAC,CAAC;oBAC3D,CAAC;oBACD,mBAAmB,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;oBAC3D,KAAK,CAAC;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,iDAAiD;wBAC/D,+CAA+C,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,EAAE,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,eAAe,CAAC,iBAAiB,CAAC,CAAC;QAChD,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,OAAe,EACf,MAAY,EACZ,UAAgB,EAChB,2BAA2B,GAAY,KAAK;QAC9D,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+CAA+C;gBAC7D,2BAA2B,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ;YACzC,KAAC,CAAM,KAAK,CAAC;YACb,KAAC,CAAM;gBACL,oCAAoC;gBACpC,EAAE,CAAC,CAAC,2BAA2B,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,cAAc,CAAC,CAAC,CAAC;oBACvE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5B,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,CAAC;QACJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QAEpB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;YACrD,IAAI,YAA+B,CAAC;YACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACV,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,UAAU,GAAG,KAAK,CAAC;oBACnB,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,UAAU,GAAG,CAAC,CAAC,CAAC;oBAChB,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,YAAY,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;oBAC7C,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,KAAK,CAAC;gBACR,KAAK,GAAG;oBACN,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;oBAC/D,KAAK,CAAC;gBACR;oBACE,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,KAAK,CAAC;YACV,CAAC;YAED,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjB,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QACD,MAAM,CAAC,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/AnimationFrame.js b/node_modules/rxjs/_esm2015/util/AnimationFrame.js new file mode 100644 index 0000000..5bdac9f --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/AnimationFrame.js @@ -0,0 +1,31 @@ +import { root } from './root'; +export class RequestAnimationFrameDefinition { + constructor(root) { + if (root.requestAnimationFrame) { + this.cancelAnimationFrame = root.cancelAnimationFrame.bind(root); + this.requestAnimationFrame = root.requestAnimationFrame.bind(root); + } + else if (root.mozRequestAnimationFrame) { + this.cancelAnimationFrame = root.mozCancelAnimationFrame.bind(root); + this.requestAnimationFrame = root.mozRequestAnimationFrame.bind(root); + } + else if (root.webkitRequestAnimationFrame) { + this.cancelAnimationFrame = root.webkitCancelAnimationFrame.bind(root); + this.requestAnimationFrame = root.webkitRequestAnimationFrame.bind(root); + } + else if (root.msRequestAnimationFrame) { + this.cancelAnimationFrame = root.msCancelAnimationFrame.bind(root); + this.requestAnimationFrame = root.msRequestAnimationFrame.bind(root); + } + else if (root.oRequestAnimationFrame) { + this.cancelAnimationFrame = root.oCancelAnimationFrame.bind(root); + this.requestAnimationFrame = root.oRequestAnimationFrame.bind(root); + } + else { + this.cancelAnimationFrame = root.clearTimeout.bind(root); + this.requestAnimationFrame = function (cb) { return root.setTimeout(cb, 1000 / 60); }; + } + } +} +export const AnimationFrame = new RequestAnimationFrameDefinition(root); +//# sourceMappingURL=AnimationFrame.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/AnimationFrame.js.map b/node_modules/rxjs/_esm2015/util/AnimationFrame.js.map new file mode 100644 index 0000000..359bbf4 --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/AnimationFrame.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AnimationFrame.js","sourceRoot":"","sources":["../../src/util/AnimationFrame.ts"],"names":[],"mappings":"OAAO,EAAG,IAAI,EAAG,MAAM,QAAQ;AAE/B;IAGE,YAAY,IAAS;QACnB,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,qBAAqB,GAAG,UAAS,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;AACH,CAAC;AAED,OAAO,MAAM,cAAc,GAAG,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js b/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js new file mode 100644 index 0000000..6757804 --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js @@ -0,0 +1,19 @@ +/** + * An error thrown when an element was queried at a certain index of an + * Observable, but no such index or position exists in that sequence. + * + * @see {@link elementAt} + * @see {@link take} + * @see {@link takeLast} + * + * @class ArgumentOutOfRangeError + */ +export class ArgumentOutOfRangeError extends Error { + constructor() { + const err = super('argument out of range'); + this.name = err.name = 'ArgumentOutOfRangeError'; + this.stack = err.stack; + this.message = err.message; + } +} +//# sourceMappingURL=ArgumentOutOfRangeError.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js.map b/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js.map new file mode 100644 index 0000000..3764615 --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/ArgumentOutOfRangeError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ArgumentOutOfRangeError.js","sourceRoot":"","sources":["../../src/util/ArgumentOutOfRangeError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,6CAA6C,KAAK;IAChD;QACE,MAAM,GAAG,GAAQ,MAAM,uBAAuB,CAAC,CAAC;QACzC,IAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC;QAClD,IAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,IAAK,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/EmptyError.js b/node_modules/rxjs/_esm2015/util/EmptyError.js new file mode 100644 index 0000000..26c4023 --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/EmptyError.js @@ -0,0 +1,19 @@ +/** + * An error thrown when an Observable or a sequence was queried but has no + * elements. + * + * @see {@link first} + * @see {@link last} + * @see {@link single} + * + * @class EmptyError + */ +export class EmptyError extends Error { + constructor() { + const err = super('no elements in sequence'); + this.name = err.name = 'EmptyError'; + this.stack = err.stack; + this.message = err.message; + } +} +//# sourceMappingURL=EmptyError.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/EmptyError.js.map b/node_modules/rxjs/_esm2015/util/EmptyError.js.map new file mode 100644 index 0000000..0776cd2 --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/EmptyError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"EmptyError.js","sourceRoot":"","sources":["../../src/util/EmptyError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,gCAAgC,KAAK;IACnC;QACE,MAAM,GAAG,GAAQ,MAAM,yBAAyB,CAAC,CAAC;QAC3C,IAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;QACrC,IAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,IAAK,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/FastMap.js b/node_modules/rxjs/_esm2015/util/FastMap.js new file mode 100644 index 0000000..615849e --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/FastMap.js @@ -0,0 +1,28 @@ +export class FastMap { + constructor() { + this.values = {}; + } + delete(key) { + this.values[key] = null; + return true; + } + set(key, value) { + this.values[key] = value; + return this; + } + get(key) { + return this.values[key]; + } + forEach(cb, thisArg) { + const values = this.values; + for (let key in values) { + if (values.hasOwnProperty(key) && values[key] !== null) { + cb.call(thisArg, values[key], key); + } + } + } + clear() { + this.values = {}; + } +} +//# sourceMappingURL=FastMap.js.map \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/FastMap.js.map b/node_modules/rxjs/_esm2015/util/FastMap.js.map new file mode 100644 index 0000000..fac9c8f --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/FastMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"FastMap.js","sourceRoot":"","sources":["../../src/util/FastMap.ts"],"names":[],"mappings":"AAAA;IAAA;QACU,WAAM,GAAW,EAAE,CAAC;IA4B9B,CAAC;IA1BC,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAU;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,EAAkC,EAAE,OAAa;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;YACvB,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACvD,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAAA"} \ No newline at end of file diff --git a/node_modules/rxjs/_esm2015/util/Immediate.js b/node_modules/rxjs/_esm2015/util/Immediate.js new file mode 100644 index 0000000..6e3876b --- /dev/null +++ b/node_modules/rxjs/_esm2015/util/Immediate.js @@ -0,0 +1,201 @@ +/** +Some credit for this helper goes to http://github.com/YuzuJS/setImmediate +*/ +import { root } from './root'; +export class ImmediateDefinition { + constructor(root) { + this.root = root; + if (root.setImmediate && typeof root.setImmediate === 'function') { + this.setImmediate = root.setImmediate.bind(root); + this.clearImmediate = root.clearImmediate.bind(root); + } + else { + this.nextHandle = 1; + this.tasksByHandle = {}; + this.currentlyRunningATask = false; + // Don't get fooled by e.g. browserify environments. + if (this.canUseProcessNextTick()) { + // For Node.js before 0.9 + this.setImmediate = this.createProcessNextTickSetImmediate(); + } + else if (this.canUsePostMessage()) { + // For non-IE10 modern browsers + this.setImmediate = this.createPostMessageSetImmediate(); + } + else if (this.canUseMessageChannel()) { + // For web workers, where supported + this.setImmediate = this.createMessageChannelSetImmediate(); + } + else if (this.canUseReadyStateChange()) { + // For IE 6–8 + this.setImmediate = this.createReadyStateChangeSetImmediate(); + } + else { + // For older browsers + this.setImmediate = this.createSetTimeoutSetImmediate(); + } + let ci = function clearImmediate(handle) { + delete clearImmediate.instance.tasksByHandle[handle]; + }; + ci.instance = this; + this.clearImmediate = ci; + } + } + identify(o) { + return this.root.Object.prototype.toString.call(o); + } + canUseProcessNextTick() { + return this.identify(this.root.process) === '[object process]'; + } + canUseMessageChannel() { + return Boolean(this.root.MessageChannel); + } + canUseReadyStateChange() { + const document = this.root.document; + return Boolean(document && 'onreadystatechange' in document.createElement('script')); + } + canUsePostMessage() { + const root = this.root; + // The test against `importScripts` prevents this implementation from being installed inside a web worker, + // where `root.postMessage` means something completely different and can't be used for this purpose. + if (root.postMessage && !root.importScripts) { + let postMessageIsAsynchronous = true; + let oldOnMessage = root.onmessage; + root.onmessage = function () { + postMessageIsAsynchronous = false; + }; + root.postMessage('', '*'); + root.onmessage = oldOnMessage; + return postMessageIsAsynchronous; + } + return false; + } + // This function accepts the same arguments as setImmediate, but + // returns a function that requires no arguments. + partiallyApplied(handler, ...args) { + let fn = function result() { + const { handler, args } = result; + if (typeof handler === 'function') { + handler.apply(undefined, args); + } + else { + (new Function('' + handler))(); + } + }; + fn.handler = handler; + fn.args = args; + return fn; + } + addFromSetImmediateArguments(args) { + this.tasksByHandle[this.nextHandle] = this.partiallyApplied.apply(undefined, args); + return this.nextHandle++; + } + createProcessNextTickSetImmediate() { + let fn = function setImmediate() { + const { instance } = setImmediate; + let handle = instance.addFromSetImmediateArguments(arguments); + instance.root.process.nextTick(instance.partiallyApplied(instance.runIfPresent, handle)); + return handle; + }; + fn.instance = this; + return fn; + } + createPostMessageSetImmediate() { + // Installs an event handler on `global` for the `message` event: see + // * https://developer.mozilla.org/en/DOM/window.postMessage + // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages + const root = this.root; + let messagePrefix = 'setImmediate$' + root.Math.random() + '$'; + let onGlobalMessage = function globalMessageHandler(event) { + const instance = globalMessageHandler.instance; + if (event.source === root && + typeof event.data === 'string' && + event.data.indexOf(messagePrefix) === 0) { + instance.runIfPresent(+event.data.slice(messagePrefix.length)); + } + }; + onGlobalMessage.instance = this; + root.addEventListener('message', onGlobalMessage, false); + let fn = function setImmediate() { + const { messagePrefix, instance } = setImmediate; + let handle = instance.addFromSetImmediateArguments(arguments); + instance.root.postMessage(messagePrefix + handle, '*'); + return handle; + }; + fn.instance = this; + fn.messagePrefix = messagePrefix; + return fn; + } + runIfPresent(handle) { + // From the spec: 'Wait until any invocations of this algorithm started before this one have completed.' + // So if we're currently running a task, we'll need to delay this invocation. + if (this.currentlyRunningATask) { + // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a + // 'too much recursion' error. + this.root.setTimeout(this.partiallyApplied(this.runIfPresent, handle), 0); + } + else { + let task = this.tasksByHandle[handle]; + if (task) { + this.currentlyRunningATask = true; + try { + task(); + } + finally { + this.clearImmediate(handle); + this.currentlyRunningATask = false; + } + } + } + } + createMessageChannelSetImmediate() { + let channel = new this.root.MessageChannel(); + channel.port1.onmessage = (event) => { + let handle = event.data; + this.runIfPresent(handle); + }; + let fn = function setImmediate() { + const { channel, instance } = setImmediate; + let handle = instance.addFromSetImmediateArguments(arguments); + channel.port2.postMessage(handle); + return handle; + }; + fn.channel = channel; + fn.instance = this; + return fn; + } + createReadyStateChangeSetImmediate() { + let fn = function setImmediate() { + const instance = setImmediate.instance; + const root = instance.root; + const doc = root.document; + const html = doc.documentElement; + let handle = instance.addFromSetImmediateArguments(arguments); + // Create a +``` + +In [Node.js](https://nodejs.org/), [io.js](https://iojs.org/), [Narwhal](http://narwhaljs.org/), and [RingoJS](http://ringojs.org/): + +```js +var punycode = require('punycode'); +``` + +In [Rhino](http://www.mozilla.org/rhino/): + +```js +load('punycode.js'); +``` + +Using an AMD loader like [RequireJS](http://requirejs.org/): + +```js +require( + { + 'paths': { + 'punycode': 'path/to/punycode' + } + }, + ['punycode'], + function(punycode) { + console.log(punycode); + } +); +``` + +## API + +### `punycode.decode(string)` + +Converts a Punycode string of ASCII symbols to a string of Unicode symbols. + +```js +// decode domain name parts +punycode.decode('maana-pta'); // 'mañana' +punycode.decode('--dqo34k'); // '☃-⌘' +``` + +### `punycode.encode(string)` + +Converts a string of Unicode symbols to a Punycode string of ASCII symbols. + +```js +// encode domain name parts +punycode.encode('mañana'); // 'maana-pta' +punycode.encode('☃-⌘'); // '--dqo34k' +``` + +### `punycode.toUnicode(input)` + +Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. + +```js +// decode domain names +punycode.toUnicode('xn--maana-pta.com'); +// → 'mañana.com' +punycode.toUnicode('xn----dqo34k.com'); +// → '☃-⌘.com' + +// decode email addresses +punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); +// → 'джумла@джpумлатест.bрфa' +``` + +### `punycode.toASCII(input)` + +Converts a lowercased Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that’s already in ASCII. + +```js +// encode domain names +punycode.toASCII('mañana.com'); +// → 'xn--maana-pta.com' +punycode.toASCII('☃-⌘.com'); +// → 'xn----dqo34k.com' + +// encode email addresses +punycode.toASCII('джумла@джpумлатест.bрфa'); +// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' +``` + +### `punycode.ucs2` + +#### `punycode.ucs2.decode(string)` + +Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. + +```js +punycode.ucs2.decode('abc'); +// → [0x61, 0x62, 0x63] +// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: +punycode.ucs2.decode('\uD834\uDF06'); +// → [0x1D306] +``` + +#### `punycode.ucs2.encode(codePoints)` + +Creates a string based on an array of numeric code point values. + +```js +punycode.ucs2.encode([0x61, 0x62, 0x63]); +// → 'abc' +punycode.ucs2.encode([0x1D306]); +// → '\uD834\uDF06' +``` + +### `punycode.version` + +A string representing the current Punycode.js version number. + +## Unit tests & code coverage + +After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. + +Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. + +To generate the code coverage report, use `grunt cover`. + +Feel free to fork if you see possible improvements! + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## Contributors + +| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | +|---| +| [John-David Dalton](http://allyoucanleet.com/) | + +## License + +Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/tough-cookie/node_modules/punycode/package.json new file mode 100644 index 0000000..1834c92 --- /dev/null +++ b/node_modules/tough-cookie/node_modules/punycode/package.json @@ -0,0 +1,87 @@ +{ + "_from": "punycode@^1.4.1", + "_id": "punycode@1.4.1", + "_inBundle": false, + "_integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "_location": "/tough-cookie/punycode", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "punycode@^1.4.1", + "name": "punycode", + "escapedName": "punycode", + "rawSpec": "^1.4.1", + "saveSpec": null, + "fetchSpec": "^1.4.1" + }, + "_requiredBy": [ + "/tough-cookie" + ], + "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "_shasum": "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e", + "_spec": "punycode@^1.4.1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/tough-cookie", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "bugs": { + "url": "https://github.com/bestiejs/punycode.js/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + { + "name": "John-David Dalton", + "url": "http://allyoucanleet.com/" + } + ], + "deprecated": false, + "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", + "devDependencies": { + "coveralls": "^2.11.4", + "grunt": "^0.4.5", + "grunt-contrib-uglify": "^0.11.0", + "grunt-shell": "^1.1.2", + "istanbul": "^0.4.1", + "qunit-extras": "^1.4.4", + "qunitjs": "~1.11.0", + "requirejs": "^2.1.22" + }, + "files": [ + "LICENSE-MIT.txt", + "punycode.js" + ], + "homepage": "https://mths.be/punycode", + "jspm": { + "map": { + "./punycode.js": { + "node": "@node/punycode" + } + } + }, + "keywords": [ + "punycode", + "unicode", + "idn", + "idna", + "dns", + "url", + "domain" + ], + "license": "MIT", + "main": "punycode.js", + "name": "punycode", + "repository": { + "type": "git", + "url": "git+https://github.com/bestiejs/punycode.js.git" + }, + "scripts": { + "test": "node tests/tests.js" + }, + "version": "1.4.1" +} diff --git a/node_modules/tough-cookie/node_modules/punycode/punycode.js b/node_modules/tough-cookie/node_modules/punycode/punycode.js new file mode 100644 index 0000000..2c87f6c --- /dev/null +++ b/node_modules/tough-cookie/node_modules/punycode/punycode.js @@ -0,0 +1,533 @@ +/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); diff --git a/node_modules/tough-cookie/package.json b/node_modules/tough-cookie/package.json new file mode 100644 index 0000000..d673f1e --- /dev/null +++ b/node_modules/tough-cookie/package.json @@ -0,0 +1,94 @@ +{ + "_from": "tough-cookie@~2.4.3", + "_id": "tough-cookie@2.4.3", + "_inBundle": false, + "_integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "_location": "/tough-cookie", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "tough-cookie@~2.4.3", + "name": "tough-cookie", + "escapedName": "tough-cookie", + "rawSpec": "~2.4.3", + "saveSpec": null, + "fetchSpec": "~2.4.3" + }, + "_requiredBy": [ + "/request" + ], + "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "_shasum": "53f36da3f47783b0925afa06ff9f3b165280f781", + "_spec": "tough-cookie@~2.4.3", + "_where": "/home/peter/www/prive/cypress-test/node_modules/request", + "author": { + "name": "Jeremy Stashewsky", + "email": "jstash@gmail.com" + }, + "bugs": { + "url": "https://github.com/salesforce/tough-cookie/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Alexander Savin" + }, + { + "name": "Ian Livingstone" + }, + { + "name": "Ivan Nikulin" + }, + { + "name": "Lalit Kapoor" + }, + { + "name": "Sam Thompson" + }, + { + "name": "Sebastian Mayr" + } + ], + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "deprecated": false, + "description": "RFC6265 Cookies and Cookie Jar for node.js", + "devDependencies": { + "async": "^1.4.2", + "nyc": "^11.6.0", + "string.prototype.repeat": "^0.2.0", + "vows": "^0.8.1" + }, + "engines": { + "node": ">=0.8" + }, + "files": [ + "lib" + ], + "homepage": "https://github.com/salesforce/tough-cookie", + "keywords": [ + "HTTP", + "cookie", + "cookies", + "set-cookie", + "cookiejar", + "jar", + "RFC6265", + "RFC2965" + ], + "license": "BSD-3-Clause", + "main": "./lib/cookie", + "name": "tough-cookie", + "repository": { + "type": "git", + "url": "git://github.com/salesforce/tough-cookie.git" + }, + "scripts": { + "cover": "nyc --reporter=lcov --reporter=html vows test/*_test.js", + "test": "vows test/*_test.js" + }, + "version": "2.4.3" +} diff --git a/node_modules/tunnel-agent/LICENSE b/node_modules/tunnel-agent/LICENSE new file mode 100644 index 0000000..a4a9aee --- /dev/null +++ b/node_modules/tunnel-agent/LICENSE @@ -0,0 +1,55 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/tunnel-agent/README.md b/node_modules/tunnel-agent/README.md new file mode 100644 index 0000000..bb533d5 --- /dev/null +++ b/node_modules/tunnel-agent/README.md @@ -0,0 +1,4 @@ +tunnel-agent +============ + +HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/tunnel-agent/index.js b/node_modules/tunnel-agent/index.js new file mode 100644 index 0000000..3ee9abc --- /dev/null +++ b/node_modules/tunnel-agent/index.js @@ -0,0 +1,244 @@ +'use strict' + +var net = require('net') + , tls = require('tls') + , http = require('http') + , https = require('https') + , events = require('events') + , assert = require('assert') + , util = require('util') + , Buffer = require('safe-buffer').Buffer + ; + +exports.httpOverHttp = httpOverHttp +exports.httpsOverHttp = httpsOverHttp +exports.httpOverHttps = httpOverHttps +exports.httpsOverHttps = httpsOverHttps + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options) + agent.request = http.request + return agent +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options) + agent.request = http.request + agent.createSocket = createSecureSocket + agent.defaultPort = 443 + return agent +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options) + agent.request = https.request + return agent +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options) + agent.request = https.request + agent.createSocket = createSecureSocket + agent.defaultPort = 443 + return agent +} + + +function TunnelingAgent(options) { + var self = this + self.options = options || {} + self.proxyOptions = self.options.proxy || {} + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets + self.requests = [] + self.sockets = [] + + self.on('free', function onFree(socket, host, port) { + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i] + if (pending.host === host && pending.port === port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1) + pending.request.onSocket(socket) + return + } + } + socket.destroy() + self.removeSocket(socket) + }) +} +util.inherits(TunnelingAgent, events.EventEmitter) + +TunnelingAgent.prototype.addRequest = function addRequest(req, options) { + var self = this + + // Legacy API: addRequest(req, host, port, path) + if (typeof options === 'string') { + options = { + host: options, + port: arguments[2], + path: arguments[3] + }; + } + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push({host: options.host, port: options.port, request: req}) + return + } + + // If we are under maxSockets create a new one. + self.createConnection({host: options.host, port: options.port, request: req}) +} + +TunnelingAgent.prototype.createConnection = function createConnection(pending) { + var self = this + + self.createSocket(pending, function(socket) { + socket.on('free', onFree) + socket.on('close', onCloseOrRemove) + socket.on('agentRemove', onCloseOrRemove) + pending.request.onSocket(socket) + + function onFree() { + self.emit('free', socket, pending.host, pending.port) + } + + function onCloseOrRemove(err) { + self.removeSocket(socket) + socket.removeListener('free', onFree) + socket.removeListener('close', onCloseOrRemove) + socket.removeListener('agentRemove', onCloseOrRemove) + } + }) +} + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this + var placeholder = {} + self.sockets.push(placeholder) + + var connectOptions = mergeOptions({}, self.proxyOptions, + { method: 'CONNECT' + , path: options.host + ':' + options.port + , agent: false + } + ) + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {} + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + Buffer.from(connectOptions.proxyAuth).toString('base64') + } + + debug('making CONNECT request') + var connectReq = self.request(connectOptions) + connectReq.useChunkedEncodingByDefault = false // for v0.6 + connectReq.once('response', onResponse) // for v0.6 + connectReq.once('upgrade', onUpgrade) // for v0.6 + connectReq.once('connect', onConnect) // for v0.7 or later + connectReq.once('error', onError) + connectReq.end() + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head) + }) + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners() + socket.removeAllListeners() + + if (res.statusCode === 200) { + assert.equal(head.length, 0) + debug('tunneling connection has established') + self.sockets[self.sockets.indexOf(placeholder)] = socket + cb(socket) + } else { + debug('tunneling socket could not be established, statusCode=%d', res.statusCode) + var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) + error.code = 'ECONNRESET' + options.request.emit('error', error) + self.removeSocket(placeholder) + } + } + + function onError(cause) { + connectReq.removeAllListeners() + + debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) + var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) + error.code = 'ECONNRESET' + options.request.emit('error', error) + self.removeSocket(placeholder) + } +} + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) return + + this.sockets.splice(pos, 1) + + var pending = this.requests.shift() + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createConnection(pending) + } +} + +function createSecureSocket(options, cb) { + var self = this + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, mergeOptions({}, self.options, + { servername: options.host + , socket: socket + } + )) + self.sockets[self.sockets.indexOf(socket)] = secureSocket + cb(secureSocket) + }) +} + + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i] + if (typeof overrides === 'object') { + var keys = Object.keys(overrides) + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j] + if (overrides[k] !== undefined) { + target[k] = overrides[k] + } + } + } + } + return target +} + + +var debug +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments) + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0] + } else { + args.unshift('TUNNEL:') + } + console.error.apply(console, args) + } +} else { + debug = function() {} +} +exports.debug = debug // for test diff --git a/node_modules/tunnel-agent/package.json b/node_modules/tunnel-agent/package.json new file mode 100644 index 0000000..f3d1904 --- /dev/null +++ b/node_modules/tunnel-agent/package.json @@ -0,0 +1,55 @@ +{ + "_from": "tunnel-agent@^0.6.0", + "_id": "tunnel-agent@0.6.0", + "_inBundle": false, + "_integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "_location": "/tunnel-agent", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "tunnel-agent@^0.6.0", + "name": "tunnel-agent", + "escapedName": "tunnel-agent", + "rawSpec": "^0.6.0", + "saveSpec": null, + "fetchSpec": "^0.6.0" + }, + "_requiredBy": [ + "/request" + ], + "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "_shasum": "27a5dea06b36b04a0a9966774b290868f0fc40fd", + "_spec": "tunnel-agent@^0.6.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/request", + "author": { + "name": "Mikeal Rogers", + "email": "mikeal.rogers@gmail.com", + "url": "http://www.futurealoof.com" + }, + "bugs": { + "url": "https://github.com/mikeal/tunnel-agent/issues" + }, + "bundleDependencies": false, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "deprecated": false, + "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/mikeal/tunnel-agent#readme", + "license": "Apache-2.0", + "main": "index.js", + "name": "tunnel-agent", + "optionalDependencies": {}, + "repository": { + "url": "git+https://github.com/mikeal/tunnel-agent.git" + }, + "version": "0.6.0" +} diff --git a/node_modules/tweetnacl/.npmignore b/node_modules/tweetnacl/.npmignore new file mode 100644 index 0000000..7d98dcb --- /dev/null +++ b/node_modules/tweetnacl/.npmignore @@ -0,0 +1,4 @@ +.eslintrc +.travis.yml +bower.json +test diff --git a/node_modules/tweetnacl/AUTHORS.md b/node_modules/tweetnacl/AUTHORS.md new file mode 100644 index 0000000..6d74d40 --- /dev/null +++ b/node_modules/tweetnacl/AUTHORS.md @@ -0,0 +1,28 @@ +List of TweetNaCl.js authors +============================ + + Alphabetical order by first name. + Format: Name (GitHub username or URL) + +* AndSDev (@AndSDev) +* Devi Mandiri (@devi) +* Dmitry Chestnykh (@dchest) + +List of authors of third-party public domain code from which TweetNaCl.js code was derived +========================================================================================== + +[TweetNaCl](http://tweetnacl.cr.yp.to/) +-------------------------------------- + +* Bernard van Gastel +* Daniel J. Bernstein +* Peter Schwabe +* Sjaak Smetsers +* Tanja Lange +* Wesley Janssen + + +[Poly1305-donna](https://github.com/floodyberry/poly1305-donna) +-------------------------------------------------------------- + +* Andrew Moon (@floodyberry) diff --git a/node_modules/tweetnacl/CHANGELOG.md b/node_modules/tweetnacl/CHANGELOG.md new file mode 100644 index 0000000..92a4fdc --- /dev/null +++ b/node_modules/tweetnacl/CHANGELOG.md @@ -0,0 +1,221 @@ +TweetNaCl.js Changelog +====================== + + +v0.14.5 +------- + +* Fixed incomplete return types in TypeScript typings. +* Replaced COPYING.txt with LICENSE file, which now has public domain dedication + text from The Unlicense. License fields in package.json and bower.json have + been set to "Unlicense". The project was and will be in the public domain -- + this change just makes it easier for automated tools to know about this fact by + using the widely recognized and SPDX-compatible template for public domain + dedication. + + +v0.14.4 +------- + +* Added TypeScript type definitions (contributed by @AndSDev). +* Improved benchmarking code. + + +v0.14.3 +------- + +Fixed a bug in the fast version of Poly1305 and brought it back. + +Thanks to @floodyberry for promptly responding and fixing the original C code: + +> "The issue was not properly detecting if st->h was >= 2^130 - 5, coupled with +> [testing mistake] not catching the failure. The chance of the bug affecting +> anything in the real world is essentially zero luckily, but it's good to have +> it fixed." + +https://github.com/floodyberry/poly1305-donna/issues/2#issuecomment-202698577 + + +v0.14.2 +------- + +Switched Poly1305 fast version back to original (slow) version due to a bug. + + +v0.14.1 +------- + +No code changes, just tweaked packaging and added COPYING.txt. + + +v0.14.0 +------- + +* **Breaking change!** All functions from `nacl.util` have been removed. These + functions are no longer available: + + nacl.util.decodeUTF8 + nacl.util.encodeUTF8 + nacl.util.decodeBase64 + nacl.util.encodeBase64 + + If want to continue using them, you can include + package: + + + + + or + + var nacl = require('tweetnacl'); + nacl.util = require('tweetnacl-util'); + + However it is recommended to use better packages that have wider + compatibility and better performance. Functions from `nacl.util` were never + intended to be robust solution for string conversion and were included for + convenience: cryptography library is not the right place for them. + + Currently calling these functions will throw error pointing to + `tweetnacl-util-js` (in the next version this error message will be removed). + +* Improved detection of available random number generators, making it possible + to use `nacl.randomBytes` and related functions in Web Workers without + changes. + +* Changes to testing (see README). + + +v0.13.3 +------- + +No code changes. + +* Reverted license field in package.json to "Public domain". + +* Fixed typo in README. + + +v0.13.2 +------- + +* Fixed undefined variable bug in fast version of Poly1305. No worries, this + bug was *never* triggered. + +* Specified CC0 public domain dedication. + +* Updated development dependencies. + + +v0.13.1 +------- + +* Exclude `crypto` and `buffer` modules from browserify builds. + + +v0.13.0 +------- + +* Made `nacl-fast` the default version in NPM package. Now + `require("tweetnacl")` will use fast version; to get the original version, + use `require("tweetnacl/nacl.js")`. + +* Cleanup temporary array after generating random bytes. + + +v0.12.2 +------- + +* Improved performance of curve operations, making `nacl.scalarMult`, `nacl.box`, + `nacl.sign` and related functions up to 3x faster in `nacl-fast` version. + + +v0.12.1 +------- + +* Significantly improved performance of Salsa20 (~1.5x faster) and + Poly1305 (~3.5x faster) in `nacl-fast` version. + + +v0.12.0 +------- + +* Instead of using the given secret key directly, TweetNaCl.js now copies it to + a new array in `nacl.box.keyPair.fromSecretKey` and + `nacl.sign.keyPair.fromSecretKey`. + + +v0.11.2 +------- + +* Added new constant: `nacl.sign.seedLength`. + + +v0.11.1 +------- + +* Even faster hash for both short and long inputs (in `nacl-fast`). + + +v0.11.0 +------- + +* Implement `nacl.sign.keyPair.fromSeed` to enable creation of sign key pairs + deterministically from a 32-byte seed. (It behaves like + [libsodium's](http://doc.libsodium.org/public-key_cryptography/public-key_signatures.html) + `crypto_sign_seed_keypair`: the seed becomes a secret part of the secret key.) + +* Fast version now has an improved hash implementation that is 2x-5x faster. + +* Fixed benchmarks, which may have produced incorrect measurements. + + +v0.10.1 +------- + +* Exported undocumented `nacl.lowlevel.crypto_core_hsalsa20`. + + +v0.10.0 +------- + +* **Signature API breaking change!** `nacl.sign` and `nacl.sign.open` now deal + with signed messages, and new `nacl.sign.detached` and + `nacl.sign.detached.verify` are available. + + Previously, `nacl.sign` returned a signature, and `nacl.sign.open` accepted a + message and "detached" signature. This was unlike NaCl's API, which dealt with + signed messages (concatenation of signature and message). + + The new API is: + + nacl.sign(message, secretKey) -> signedMessage + nacl.sign.open(signedMessage, publicKey) -> message | null + + Since detached signatures are common, two new API functions were introduced: + + nacl.sign.detached(message, secretKey) -> signature + nacl.sign.detached.verify(message, signature, publicKey) -> true | false + + (Note that it's `verify`, not `open`, and it returns a boolean value, unlike + `open`, which returns an "unsigned" message.) + +* NPM package now comes without `test` directory to keep it small. + + +v0.9.2 +------ + +* Improved documentation. +* Fast version: increased theoretical message size limit from 2^32-1 to 2^52 + bytes in Poly1305 (and thus, secretbox and box). However this has no impact + in practice since JavaScript arrays or ArrayBuffers are limited to 32-bit + indexes, and most implementations won't allocate more than a gigabyte or so. + (Obviously, there are no tests for the correctness of implementation.) Also, + it's not recommended to use messages that large without splitting them into + smaller packets anyway. + + +v0.9.1 +------ + +* Initial release diff --git a/node_modules/tweetnacl/LICENSE b/node_modules/tweetnacl/LICENSE new file mode 100644 index 0000000..cf1ab25 --- /dev/null +++ b/node_modules/tweetnacl/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md b/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..a8eb4a9 --- /dev/null +++ b/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +# Important! + +If your contribution is not trivial (not a typo fix, etc.), we can only accept +it if you dedicate your copyright for the contribution to the public domain. +Make sure you understand what it means (see http://unlicense.org/)! If you +agree, please add yourself to AUTHORS.md file, and include the following text +to your pull request description or a comment in it: + +------------------------------------------------------------------------------ + + I dedicate any and all copyright interest in this software to the + public domain. I make this dedication for the benefit of the public at + large and to the detriment of my heirs and successors. I intend this + dedication to be an overt act of relinquishment in perpetuity of all + present and future rights to this software under copyright law. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. diff --git a/node_modules/tweetnacl/README.md b/node_modules/tweetnacl/README.md new file mode 100644 index 0000000..ffb6871 --- /dev/null +++ b/node_modules/tweetnacl/README.md @@ -0,0 +1,459 @@ +TweetNaCl.js +============ + +Port of [TweetNaCl](http://tweetnacl.cr.yp.to) / [NaCl](http://nacl.cr.yp.to/) +to JavaScript for modern browsers and Node.js. Public domain. + +[![Build Status](https://travis-ci.org/dchest/tweetnacl-js.svg?branch=master) +](https://travis-ci.org/dchest/tweetnacl-js) + +Demo: + +**:warning: The library is stable and API is frozen, however it has not been +independently reviewed. If you can help reviewing it, please [contact +me](mailto:dmitry@codingrobots.com).** + +Documentation +============= + +* [Overview](#overview) +* [Installation](#installation) +* [Usage](#usage) + * [Public-key authenticated encryption (box)](#public-key-authenticated-encryption-box) + * [Secret-key authenticated encryption (secretbox)](#secret-key-authenticated-encryption-secretbox) + * [Scalar multiplication](#scalar-multiplication) + * [Signatures](#signatures) + * [Hashing](#hashing) + * [Random bytes generation](#random-bytes-generation) + * [Constant-time comparison](#constant-time-comparison) +* [System requirements](#system-requirements) +* [Development and testing](#development-and-testing) +* [Benchmarks](#benchmarks) +* [Contributors](#contributors) +* [Who uses it](#who-uses-it) + + +Overview +-------- + +The primary goal of this project is to produce a translation of TweetNaCl to +JavaScript which is as close as possible to the original C implementation, plus +a thin layer of idiomatic high-level API on top of it. + +There are two versions, you can use either of them: + +* `nacl.js` is the port of TweetNaCl with minimum differences from the + original + high-level API. + +* `nacl-fast.js` is like `nacl.js`, but with some functions replaced with + faster versions. + + +Installation +------------ + +You can install TweetNaCl.js via a package manager: + +[Bower](http://bower.io): + + $ bower install tweetnacl + +[NPM](https://www.npmjs.org/): + + $ npm install tweetnacl + +or [download source code](https://github.com/dchest/tweetnacl-js/releases). + + +Usage +----- + +All API functions accept and return bytes as `Uint8Array`s. If you need to +encode or decode strings, use functions from + or one of the more robust codec +packages. + +In Node.js v4 and later `Buffer` objects are backed by `Uint8Array`s, so you +can freely pass them to TweetNaCl.js functions as arguments. The returned +objects are still `Uint8Array`s, so if you need `Buffer`s, you'll have to +convert them manually; make sure to convert using copying: `new Buffer(array)`, +instead of sharing: `new Buffer(array.buffer)`, because some functions return +subarrays of their buffers. + + +### Public-key authenticated encryption (box) + +Implements *curve25519-xsalsa20-poly1305*. + +#### nacl.box.keyPair() + +Generates a new random key pair for box and returns it as an object with +`publicKey` and `secretKey` members: + + { + publicKey: ..., // Uint8Array with 32-byte public key + secretKey: ... // Uint8Array with 32-byte secret key + } + + +#### nacl.box.keyPair.fromSecretKey(secretKey) + +Returns a key pair for box with public key corresponding to the given secret +key. + +#### nacl.box(message, nonce, theirPublicKey, mySecretKey) + +Encrypt and authenticates message using peer's public key, our secret key, and +the given nonce, which must be unique for each distinct message for a key pair. + +Returns an encrypted and authenticated message, which is +`nacl.box.overheadLength` longer than the original message. + +#### nacl.box.open(box, nonce, theirPublicKey, mySecretKey) + +Authenticates and decrypts the given box with peer's public key, our secret +key, and the given nonce. + +Returns the original message, or `false` if authentication fails. + +#### nacl.box.before(theirPublicKey, mySecretKey) + +Returns a precomputed shared key which can be used in `nacl.box.after` and +`nacl.box.open.after`. + +#### nacl.box.after(message, nonce, sharedKey) + +Same as `nacl.box`, but uses a shared key precomputed with `nacl.box.before`. + +#### nacl.box.open.after(box, nonce, sharedKey) + +Same as `nacl.box.open`, but uses a shared key precomputed with `nacl.box.before`. + +#### nacl.box.publicKeyLength = 32 + +Length of public key in bytes. + +#### nacl.box.secretKeyLength = 32 + +Length of secret key in bytes. + +#### nacl.box.sharedKeyLength = 32 + +Length of precomputed shared key in bytes. + +#### nacl.box.nonceLength = 24 + +Length of nonce in bytes. + +#### nacl.box.overheadLength = 16 + +Length of overhead added to box compared to original message. + + +### Secret-key authenticated encryption (secretbox) + +Implements *xsalsa20-poly1305*. + +#### nacl.secretbox(message, nonce, key) + +Encrypt and authenticates message using the key and the nonce. The nonce must +be unique for each distinct message for this key. + +Returns an encrypted and authenticated message, which is +`nacl.secretbox.overheadLength` longer than the original message. + +#### nacl.secretbox.open(box, nonce, key) + +Authenticates and decrypts the given secret box using the key and the nonce. + +Returns the original message, or `false` if authentication fails. + +#### nacl.secretbox.keyLength = 32 + +Length of key in bytes. + +#### nacl.secretbox.nonceLength = 24 + +Length of nonce in bytes. + +#### nacl.secretbox.overheadLength = 16 + +Length of overhead added to secret box compared to original message. + + +### Scalar multiplication + +Implements *curve25519*. + +#### nacl.scalarMult(n, p) + +Multiplies an integer `n` by a group element `p` and returns the resulting +group element. + +#### nacl.scalarMult.base(n) + +Multiplies an integer `n` by a standard group element and returns the resulting +group element. + +#### nacl.scalarMult.scalarLength = 32 + +Length of scalar in bytes. + +#### nacl.scalarMult.groupElementLength = 32 + +Length of group element in bytes. + + +### Signatures + +Implements [ed25519](http://ed25519.cr.yp.to). + +#### nacl.sign.keyPair() + +Generates new random key pair for signing and returns it as an object with +`publicKey` and `secretKey` members: + + { + publicKey: ..., // Uint8Array with 32-byte public key + secretKey: ... // Uint8Array with 64-byte secret key + } + +#### nacl.sign.keyPair.fromSecretKey(secretKey) + +Returns a signing key pair with public key corresponding to the given +64-byte secret key. The secret key must have been generated by +`nacl.sign.keyPair` or `nacl.sign.keyPair.fromSeed`. + +#### nacl.sign.keyPair.fromSeed(seed) + +Returns a new signing key pair generated deterministically from a 32-byte seed. +The seed must contain enough entropy to be secure. This method is not +recommended for general use: instead, use `nacl.sign.keyPair` to generate a new +key pair from a random seed. + +#### nacl.sign(message, secretKey) + +Signs the message using the secret key and returns a signed message. + +#### nacl.sign.open(signedMessage, publicKey) + +Verifies the signed message and returns the message without signature. + +Returns `null` if verification failed. + +#### nacl.sign.detached(message, secretKey) + +Signs the message using the secret key and returns a signature. + +#### nacl.sign.detached.verify(message, signature, publicKey) + +Verifies the signature for the message and returns `true` if verification +succeeded or `false` if it failed. + +#### nacl.sign.publicKeyLength = 32 + +Length of signing public key in bytes. + +#### nacl.sign.secretKeyLength = 64 + +Length of signing secret key in bytes. + +#### nacl.sign.seedLength = 32 + +Length of seed for `nacl.sign.keyPair.fromSeed` in bytes. + +#### nacl.sign.signatureLength = 64 + +Length of signature in bytes. + + +### Hashing + +Implements *SHA-512*. + +#### nacl.hash(message) + +Returns SHA-512 hash of the message. + +#### nacl.hash.hashLength = 64 + +Length of hash in bytes. + + +### Random bytes generation + +#### nacl.randomBytes(length) + +Returns a `Uint8Array` of the given length containing random bytes of +cryptographic quality. + +**Implementation note** + +TweetNaCl.js uses the following methods to generate random bytes, +depending on the platform it runs on: + +* `window.crypto.getRandomValues` (WebCrypto standard) +* `window.msCrypto.getRandomValues` (Internet Explorer 11) +* `crypto.randomBytes` (Node.js) + +If the platform doesn't provide a suitable PRNG, the following functions, +which require random numbers, will throw exception: + +* `nacl.randomBytes` +* `nacl.box.keyPair` +* `nacl.sign.keyPair` + +Other functions are deterministic and will continue working. + +If a platform you are targeting doesn't implement secure random number +generator, but you somehow have a cryptographically-strong source of entropy +(not `Math.random`!), and you know what you are doing, you can plug it into +TweetNaCl.js like this: + + nacl.setPRNG(function(x, n) { + // ... copy n random bytes into x ... + }); + +Note that `nacl.setPRNG` *completely replaces* internal random byte generator +with the one provided. + + +### Constant-time comparison + +#### nacl.verify(x, y) + +Compares `x` and `y` in constant time and returns `true` if their lengths are +non-zero and equal, and their contents are equal. + +Returns `false` if either of the arguments has zero length, or arguments have +different lengths, or their contents differ. + + +System requirements +------------------- + +TweetNaCl.js supports modern browsers that have a cryptographically secure +pseudorandom number generator and typed arrays, including the latest versions +of: + +* Chrome +* Firefox +* Safari (Mac, iOS) +* Internet Explorer 11 + +Other systems: + +* Node.js + + +Development and testing +------------------------ + +Install NPM modules needed for development: + + $ npm install + +To build minified versions: + + $ npm run build + +Tests use minified version, so make sure to rebuild it every time you change +`nacl.js` or `nacl-fast.js`. + +### Testing + +To run tests in Node.js: + + $ npm run test-node + +By default all tests described here work on `nacl.min.js`. To test other +versions, set environment variable `NACL_SRC` to the file name you want to test. +For example, the following command will test fast minified version: + + $ NACL_SRC=nacl-fast.min.js npm run test-node + +To run full suite of tests in Node.js, including comparing outputs of +JavaScript port to outputs of the original C version: + + $ npm run test-node-all + +To prepare tests for browsers: + + $ npm run build-test-browser + +and then open `test/browser/test.html` (or `test/browser/test-fast.html`) to +run them. + +To run headless browser tests with `tape-run` (powered by Electron): + + $ npm run test-browser + +(If you get `Error: spawn ENOENT`, install *xvfb*: `sudo apt-get install xvfb`.) + +To run tests in both Node and Electron: + + $ npm test + +### Benchmarking + +To run benchmarks in Node.js: + + $ npm run bench + $ NACL_SRC=nacl-fast.min.js npm run bench + +To run benchmarks in a browser, open `test/benchmark/bench.html` (or +`test/benchmark/bench-fast.html`). + + +Benchmarks +---------- + +For reference, here are benchmarks from MacBook Pro (Retina, 13-inch, Mid 2014) +laptop with 2.6 GHz Intel Core i5 CPU (Intel) in Chrome 53/OS X and Xiaomi Redmi +Note 3 smartphone with 1.8 GHz Qualcomm Snapdragon 650 64-bit CPU (ARM) in +Chrome 52/Android: + +| | nacl.js Intel | nacl-fast.js Intel | nacl.js ARM | nacl-fast.js ARM | +| ------------- |:-------------:|:-------------------:|:-------------:|:-----------------:| +| salsa20 | 1.3 MB/s | 128 MB/s | 0.4 MB/s | 43 MB/s | +| poly1305 | 13 MB/s | 171 MB/s | 4 MB/s | 52 MB/s | +| hash | 4 MB/s | 34 MB/s | 0.9 MB/s | 12 MB/s | +| secretbox 1K | 1113 op/s | 57583 op/s | 334 op/s | 14227 op/s | +| box 1K | 145 op/s | 718 op/s | 37 op/s | 368 op/s | +| scalarMult | 171 op/s | 733 op/s | 56 op/s | 380 op/s | +| sign | 77 op/s | 200 op/s | 20 op/s | 61 op/s | +| sign.open | 39 op/s | 102 op/s | 11 op/s | 31 op/s | + +(You can run benchmarks on your devices by clicking on the links at the bottom +of the [home page](https://tweetnacl.js.org)). + +In short, with *nacl-fast.js* and 1024-byte messages you can expect to encrypt and +authenticate more than 57000 messages per second on a typical laptop or more than +14000 messages per second on a $170 smartphone, sign about 200 and verify 100 +messages per second on a laptop or 60 and 30 messages per second on a smartphone, +per CPU core (with Web Workers you can do these operations in parallel), +which is good enough for most applications. + + +Contributors +------------ + +See AUTHORS.md file. + + +Third-party libraries based on TweetNaCl.js +------------------------------------------- + +* [forward-secrecy](https://github.com/alax/forward-secrecy) — Axolotl ratchet implementation +* [nacl-stream](https://github.com/dchest/nacl-stream-js) - streaming encryption +* [tweetnacl-auth-js](https://github.com/dchest/tweetnacl-auth-js) — implementation of [`crypto_auth`](http://nacl.cr.yp.to/auth.html) +* [chloride](https://github.com/dominictarr/chloride) - unified API for various NaCl modules + + +Who uses it +----------- + +Some notable users of TweetNaCl.js: + +* [miniLock](http://minilock.io/) +* [Stellar](https://www.stellar.org/) diff --git a/node_modules/tweetnacl/nacl-fast.js b/node_modules/tweetnacl/nacl-fast.js new file mode 100644 index 0000000..5e4562f --- /dev/null +++ b/node_modules/tweetnacl/nacl-fast.js @@ -0,0 +1,2388 @@ +(function(nacl) { +'use strict'; + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; +} + +function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; +} + +function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); +} + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +*/ + +var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +}; + +poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; +}; + +poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; +}; + +poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } +}; + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; +} + +function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; +} + +function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = (x[j] + 128) >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + mlen = -1; + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + mlen = n; + return mlen; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + var t, i; + for (i = 0; i < arguments.length; i++) { + if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') + throw new TypeError('unexpected type ' + t + ', use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +// TODO: Completely remove this in v0.15. +if (!nacl.util) { + nacl.util = {}; + nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { + throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); + }; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return false; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + if (arguments.length !== 2) + throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof require !== 'undefined') { + // Node.js. + crypto = require('crypto'); + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {})); diff --git a/node_modules/tweetnacl/nacl-fast.min.js b/node_modules/tweetnacl/nacl-fast.min.js new file mode 100644 index 0000000..8bc47da --- /dev/null +++ b/node_modules/tweetnacl/nacl-fast.min.js @@ -0,0 +1,2 @@ +!function(r){"use strict";function t(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function n(r,t,n,e,o){var i,h=0;for(i=0;i>>8)-1}function e(r,t,e,o){return n(r,t,e,o,16)}function o(r,t,e,o){return n(r,t,e,o,32)}function i(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,c=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,u=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,v=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,b=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,g=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,_=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,d=i,U=h,E=a,x=f,M=s,m=c,B=u,S=y,K=l,T=w,Y=p,k=v,L=b,z=g,R=_,P=A,O=0;O<20;O+=2)o=d+L|0,M^=o<<7|o>>>25,o=M+d|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,d^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,z^=o<<9|o>>>23,o=z+T|0,U^=o<<13|o>>>19,o=U+z|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=P+k|0,x^=o<<7|o>>>25,o=x+P|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,P^=o<<18|o>>>14,o=d+x|0,U^=o<<7|o>>>25,o=U+d|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,d^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=P+R|0,L^=o<<7|o>>>25,o=L+P|0,z^=o<<9|o>>>23,o=z+L|0,R^=o<<13|o>>>19,o=R+z|0,P^=o<<18|o>>>14;d=d+i|0,U=U+h|0,E=E+a|0,x=x+f|0,M=M+s|0,m=m+c|0,B=B+u|0,S=S+y|0,K=K+l|0,T=T+w|0,Y=Y+p|0,k=k+v|0,L=L+b|0,z=z+g|0,R=R+_|0,P=P+A|0,r[0]=d>>>0&255,r[1]=d>>>8&255,r[2]=d>>>16&255,r[3]=d>>>24&255,r[4]=U>>>0&255,r[5]=U>>>8&255,r[6]=U>>>16&255,r[7]=U>>>24&255,r[8]=E>>>0&255,r[9]=E>>>8&255,r[10]=E>>>16&255,r[11]=E>>>24&255,r[12]=x>>>0&255,r[13]=x>>>8&255,r[14]=x>>>16&255,r[15]=x>>>24&255,r[16]=M>>>0&255,r[17]=M>>>8&255,r[18]=M>>>16&255,r[19]=M>>>24&255,r[20]=m>>>0&255,r[21]=m>>>8&255,r[22]=m>>>16&255,r[23]=m>>>24&255,r[24]=B>>>0&255,r[25]=B>>>8&255,r[26]=B>>>16&255,r[27]=B>>>24&255,r[28]=S>>>0&255,r[29]=S>>>8&255,r[30]=S>>>16&255,r[31]=S>>>24&255,r[32]=K>>>0&255,r[33]=K>>>8&255,r[34]=K>>>16&255,r[35]=K>>>24&255,r[36]=T>>>0&255,r[37]=T>>>8&255,r[38]=T>>>16&255,r[39]=T>>>24&255,r[40]=Y>>>0&255,r[41]=Y>>>8&255,r[42]=Y>>>16&255,r[43]=Y>>>24&255,r[44]=k>>>0&255,r[45]=k>>>8&255,r[46]=k>>>16&255,r[47]=k>>>24&255,r[48]=L>>>0&255,r[49]=L>>>8&255,r[50]=L>>>16&255,r[51]=L>>>24&255,r[52]=z>>>0&255,r[53]=z>>>8&255,r[54]=z>>>16&255,r[55]=z>>>24&255,r[56]=R>>>0&255,r[57]=R>>>8&255,r[58]=R>>>16&255,r[59]=R>>>24&255,r[60]=P>>>0&255,r[61]=P>>>8&255,r[62]=P>>>16&255,r[63]=P>>>24&255}function h(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,c=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,u=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,v=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,b=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,g=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,_=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,d=i,U=h,E=a,x=f,M=s,m=c,B=u,S=y,K=l,T=w,Y=p,k=v,L=b,z=g,R=_,P=A,O=0;O<20;O+=2)o=d+L|0,M^=o<<7|o>>>25,o=M+d|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,d^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,z^=o<<9|o>>>23,o=z+T|0,U^=o<<13|o>>>19,o=U+z|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=P+k|0,x^=o<<7|o>>>25,o=x+P|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,P^=o<<18|o>>>14,o=d+x|0,U^=o<<7|o>>>25,o=U+d|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,d^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=P+R|0,L^=o<<7|o>>>25,o=L+P|0,z^=o<<9|o>>>23,o=z+L|0,R^=o<<13|o>>>19,o=R+z|0,P^=o<<18|o>>>14;r[0]=d>>>0&255,r[1]=d>>>8&255,r[2]=d>>>16&255,r[3]=d>>>24&255,r[4]=m>>>0&255,r[5]=m>>>8&255,r[6]=m>>>16&255,r[7]=m>>>24&255,r[8]=Y>>>0&255,r[9]=Y>>>8&255,r[10]=Y>>>16&255,r[11]=Y>>>24&255,r[12]=P>>>0&255,r[13]=P>>>8&255,r[14]=P>>>16&255,r[15]=P>>>24&255,r[16]=B>>>0&255,r[17]=B>>>8&255,r[18]=B>>>16&255,r[19]=B>>>24&255,r[20]=S>>>0&255,r[21]=S>>>8&255,r[22]=S>>>16&255,r[23]=S>>>24&255,r[24]=K>>>0&255,r[25]=K>>>8&255,r[26]=K>>>16&255,r[27]=K>>>24&255,r[28]=T>>>0&255,r[29]=T>>>8&255,r[30]=T>>>16&255,r[31]=T>>>24&255}function a(r,t,n,e){i(r,t,n,e)}function f(r,t,n,e){h(r,t,n,e)}function s(r,t,n,e,o,i,h){var f,s,c=new Uint8Array(16),u=new Uint8Array(64);for(s=0;s<16;s++)c[s]=0;for(s=0;s<8;s++)c[s]=i[s];for(;o>=64;){for(a(u,c,h,ur),s=0;s<64;s++)r[t+s]=n[e+s]^u[s];for(f=1,s=8;s<16;s++)f=f+(255&c[s])|0,c[s]=255&f,f>>>=8;o-=64,t+=64,e+=64}if(o>0)for(a(u,c,h,ur),s=0;s=64;){for(a(s,f,o,ur),h=0;h<64;h++)r[t+h]=s[h];for(i=1,h=8;h<16;h++)i=i+(255&f[h])|0,f[h]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(a(s,f,o,ur),h=0;h>16&1),i[n-1]&=65535;i[15]=h[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,_(h,i,1-o)}for(n=0;n<16;n++)r[2*n]=255&h[n],r[2*n+1]=h[n]>>8}function d(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return A(n,r),A(e,t),o(n,0,e,0)}function U(r){var t=new Uint8Array(32);return A(t,r),1&t[0]}function E(r,t){var n;for(n=0;n<16;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function x(r,t,n){for(var e=0;e<16;e++)r[e]=t[e]+n[e]}function M(r,t,n){for(var e=0;e<16;e++)r[e]=t[e]-n[e]}function m(r,t,n){var e,o,i=0,h=0,a=0,f=0,s=0,c=0,u=0,y=0,l=0,w=0,p=0,v=0,b=0,g=0,_=0,A=0,d=0,U=0,E=0,x=0,M=0,m=0,B=0,S=0,K=0,T=0,Y=0,k=0,L=0,z=0,R=0,P=n[0],O=n[1],N=n[2],C=n[3],F=n[4],I=n[5],G=n[6],Z=n[7],j=n[8],q=n[9],V=n[10],X=n[11],D=n[12],H=n[13],J=n[14],Q=n[15];e=t[0],i+=e*P,h+=e*O,a+=e*N,f+=e*C,s+=e*F,c+=e*I,u+=e*G,y+=e*Z,l+=e*j,w+=e*q,p+=e*V,v+=e*X,b+=e*D,g+=e*H,_+=e*J,A+=e*Q,e=t[1],h+=e*P,a+=e*O,f+=e*N,s+=e*C,c+=e*F,u+=e*I,y+=e*G,l+=e*Z,w+=e*j,p+=e*q,v+=e*V,b+=e*X,g+=e*D,_+=e*H,A+=e*J,d+=e*Q,e=t[2],a+=e*P,f+=e*O,s+=e*N,c+=e*C,u+=e*F,y+=e*I,l+=e*G,w+=e*Z,p+=e*j,v+=e*q,b+=e*V,g+=e*X,_+=e*D,A+=e*H,d+=e*J,U+=e*Q,e=t[3],f+=e*P,s+=e*O,c+=e*N,u+=e*C,y+=e*F,l+=e*I,w+=e*G,p+=e*Z,v+=e*j,b+=e*q,g+=e*V,_+=e*X,A+=e*D,d+=e*H,U+=e*J,E+=e*Q,e=t[4],s+=e*P,c+=e*O,u+=e*N,y+=e*C,l+=e*F,w+=e*I,p+=e*G,v+=e*Z,b+=e*j,g+=e*q,_+=e*V,A+=e*X,d+=e*D,U+=e*H,E+=e*J,x+=e*Q,e=t[5],c+=e*P,u+=e*O,y+=e*N,l+=e*C,w+=e*F,p+=e*I,v+=e*G,b+=e*Z,g+=e*j,_+=e*q,A+=e*V,d+=e*X,U+=e*D,E+=e*H,x+=e*J,M+=e*Q,e=t[6],u+=e*P,y+=e*O,l+=e*N,w+=e*C,p+=e*F,v+=e*I,b+=e*G,g+=e*Z,_+=e*j,A+=e*q,d+=e*V,U+=e*X,E+=e*D,x+=e*H,M+=e*J,m+=e*Q,e=t[7],y+=e*P,l+=e*O,w+=e*N,p+=e*C,v+=e*F,b+=e*I,g+=e*G,_+=e*Z,A+=e*j,d+=e*q,U+=e*V,E+=e*X,x+=e*D,M+=e*H,m+=e*J,B+=e*Q,e=t[8],l+=e*P,w+=e*O,p+=e*N,v+=e*C,b+=e*F,g+=e*I,_+=e*G,A+=e*Z,d+=e*j,U+=e*q,E+=e*V,x+=e*X,M+=e*D,m+=e*H,B+=e*J,S+=e*Q,e=t[9],w+=e*P,p+=e*O,v+=e*N,b+=e*C,g+=e*F,_+=e*I,A+=e*G,d+=e*Z,U+=e*j,E+=e*q,x+=e*V,M+=e*X,m+=e*D,B+=e*H,S+=e*J,K+=e*Q,e=t[10],p+=e*P,v+=e*O,b+=e*N,g+=e*C,_+=e*F,A+=e*I,d+=e*G,U+=e*Z,E+=e*j,x+=e*q,M+=e*V,m+=e*X,B+=e*D,S+=e*H,K+=e*J,T+=e*Q,e=t[11],v+=e*P,b+=e*O,g+=e*N,_+=e*C,A+=e*F,d+=e*I,U+=e*G,E+=e*Z,x+=e*j,M+=e*q,m+=e*V,B+=e*X;S+=e*D;K+=e*H,T+=e*J,Y+=e*Q,e=t[12],b+=e*P,g+=e*O,_+=e*N,A+=e*C,d+=e*F,U+=e*I,E+=e*G,x+=e*Z,M+=e*j,m+=e*q,B+=e*V,S+=e*X,K+=e*D,T+=e*H,Y+=e*J,k+=e*Q,e=t[13],g+=e*P,_+=e*O,A+=e*N,d+=e*C,U+=e*F,E+=e*I,x+=e*G,M+=e*Z,m+=e*j,B+=e*q,S+=e*V,K+=e*X,T+=e*D,Y+=e*H,k+=e*J,L+=e*Q,e=t[14],_+=e*P,A+=e*O,d+=e*N,U+=e*C,E+=e*F,x+=e*I,M+=e*G,m+=e*Z,B+=e*j,S+=e*q,K+=e*V,T+=e*X,Y+=e*D,k+=e*H,L+=e*J,z+=e*Q,e=t[15],A+=e*P,d+=e*O,U+=e*N,E+=e*C,x+=e*F,M+=e*I,m+=e*G,B+=e*Z,S+=e*j,K+=e*q,T+=e*V,Y+=e*X,k+=e*D,L+=e*H,z+=e*J,R+=e*Q,i+=38*d,h+=38*U,a+=38*E,f+=38*x,s+=38*M,c+=38*m,u+=38*B,y+=38*S,l+=38*K,w+=38*T,p+=38*Y,v+=38*k,b+=38*L,g+=38*z,_+=38*R,o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=_+o+65535,o=Math.floor(e/65536),_=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=_+o+65535,o=Math.floor(e/65536),_=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),r[0]=i,r[1]=h,r[2]=a,r[3]=f,r[4]=s,r[5]=c,r[6]=u,r[7]=y,r[8]=l,r[9]=w,r[10]=p,r[11]=v,r[12]=b,r[13]=g;r[14]=_;r[15]=A}function B(r,t){m(r,t,t)}function S(r,t){var n,e=$();for(n=0;n<16;n++)e[n]=t[n];for(n=253;n>=0;n--)B(e,e),2!==n&&4!==n&&m(e,e,t);for(n=0;n<16;n++)r[n]=e[n]}function K(r,t){var n,e=$();for(n=0;n<16;n++)e[n]=t[n];for(n=250;n>=0;n--)B(e,e),1!==n&&m(e,e,t);for(n=0;n<16;n++)r[n]=e[n]}function T(r,t,n){var e,o,i=new Uint8Array(32),h=new Float64Array(80),a=$(),f=$(),s=$(),c=$(),u=$(),y=$();for(o=0;o<31;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,E(h,n),o=0;o<16;o++)f[o]=h[o],c[o]=a[o]=s[o]=0;for(a[0]=c[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,_(a,f,e),_(s,c,e),x(u,a,s),M(a,a,s),x(s,f,c),M(f,f,c),B(c,u),B(y,a),m(a,s,a),m(s,f,u),x(u,a,s),M(a,a,s),B(f,a),M(s,c,y),m(a,s,ir),x(a,a,c),m(s,s,a),m(a,c,y),m(c,f,h),B(f,u),_(a,f,e),_(s,c,e);for(o=0;o<16;o++)h[o+16]=a[o],h[o+32]=s[o],h[o+48]=f[o],h[o+64]=c[o];var l=h.subarray(32),w=h.subarray(16);return S(l,l),m(w,w,l),A(r,w),0}function Y(r,t){return T(r,t,nr)}function k(r,t){return rr(t,32),Y(r,t)}function L(r,t,n){var e=new Uint8Array(32);return T(e,n,t),f(r,tr,e,ur)}function z(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),lr(r,t,n,e,h)}function R(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),wr(r,t,n,e,h)}function P(r,t,n,e){for(var o,i,h,a,f,s,c,u,y,l,w,p,v,b,g,_,A,d,U,E,x,M,m,B,S,K,T=new Int32Array(16),Y=new Int32Array(16),k=r[0],L=r[1],z=r[2],R=r[3],P=r[4],O=r[5],N=r[6],C=r[7],F=t[0],I=t[1],G=t[2],Z=t[3],j=t[4],q=t[5],V=t[6],X=t[7],D=0;e>=128;){for(U=0;U<16;U++)E=8*U+D,T[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],Y[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;U<80;U++)if(o=k,i=L,h=z,a=R,f=P,s=O,c=N,u=C,y=F,l=I,w=G,p=Z,v=j,b=q,g=V,_=X,x=C,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(P>>>14|j<<18)^(P>>>18|j<<14)^(j>>>9|P<<23),M=(j>>>14|P<<18)^(j>>>18|P<<14)^(P>>>9|j<<23),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=P&O^~P&N,M=j&q^~j&V,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=pr[2*U],M=pr[2*U+1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=T[U%16],M=Y[U%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,A=65535&S|K<<16,d=65535&m|B<<16,x=A,M=d,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(k>>>28|F<<4)^(F>>>2|k<<30)^(F>>>7|k<<25),M=(F>>>28|k<<4)^(k>>>2|F<<30)^(k>>>7|F<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=k&L^k&z^L&z,M=F&I^F&G^I&G,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,u=65535&S|K<<16,_=65535&m|B<<16,x=a,M=p,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=A,M=d,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,a=65535&S|K<<16,p=65535&m|B<<16,L=o,z=i,R=h,P=a,O=f,N=s,C=c,k=u,I=y,G=l,Z=w,j=p,q=v,V=b,X=g,F=_,U%16===15)for(E=0;E<16;E++)x=T[E],M=Y[E],m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=T[(E+9)%16],M=Y[(E+9)%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+1)%16],d=Y[(E+1)%16],x=(A>>>1|d<<31)^(A>>>8|d<<24)^A>>>7,M=(d>>>1|A<<31)^(d>>>8|A<<24)^(d>>>7|A<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+14)%16],d=Y[(E+14)%16],x=(A>>>19|d<<13)^(d>>>29|A<<3)^A>>>6,M=(d>>>19|A<<13)^(A>>>29|d<<3)^(d>>>6|A<<26),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,T[E]=65535&S|K<<16,Y[E]=65535&m|B<<16;x=k,M=F,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[0],M=t[0],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[0]=k=65535&S|K<<16,t[0]=F=65535&m|B<<16,x=L,M=I,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[1],M=t[1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[1]=L=65535&S|K<<16,t[1]=I=65535&m|B<<16,x=z,M=G,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[2],M=t[2],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[2]=z=65535&S|K<<16,t[2]=G=65535&m|B<<16,x=R,M=Z,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[3],M=t[3],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[3]=R=65535&S|K<<16,t[3]=Z=65535&m|B<<16,x=P,M=j,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[4],M=t[4],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[4]=P=65535&S|K<<16,t[4]=j=65535&m|B<<16,x=O,M=q,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[5],M=t[5],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[5]=O=65535&S|K<<16,t[5]=q=65535&m|B<<16,x=N,M=V,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[6],M=t[6],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[6]=N=65535&S|K<<16,t[6]=V=65535&m|B<<16,x=C,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[7],M=t[7],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[7]=C=65535&S|K<<16,t[7]=X=65535&m|B<<16,D+=128,e-=128}return e}function O(r,n,e){var o,i=new Int32Array(8),h=new Int32Array(8),a=new Uint8Array(256),f=e;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,P(i,h,n,e),e%=128,o=0;o=0;--o)e=n[o/8|0]>>(7&o)&1,C(r,t,e),N(t,r),N(r,r),C(r,t,e)}function G(r,t){var n=[$(),$(),$(),$()];b(n[0],fr),b(n[1],sr),b(n[2],or),m(n[3],fr,sr),I(r,n,t)}function Z(r,t,n){var e,o=new Uint8Array(64),i=[$(),$(),$(),$()];for(n||rr(t,32),O(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,G(i,o),F(r,i),e=0;e<32;e++)t[e+32]=r[e];return 0}function j(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;o>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;o<32;o++)t[o]+=n-(t[31]>>4)*vr[o],n=t[o]>>8,t[o]&=255;for(o=0;o<32;o++)t[o]-=n*vr[o];for(e=0;e<32;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function q(r){var t,n=new Float64Array(64);for(t=0;t<64;t++)n[t]=r[t];for(t=0;t<64;t++)r[t]=0;j(r,n)}function V(r,t,n,e){var o,i,h=new Uint8Array(64),a=new Uint8Array(64),f=new Uint8Array(64),s=new Float64Array(64),c=[$(),$(),$(),$()];O(h,e,32),h[0]&=248,h[31]&=127,h[31]|=64;var u=n+64;for(o=0;o>7&&M(r[0],er,r[0]),m(r[3],r[0],r[1]),0)}function D(r,t,n,e){var i,h,a=new Uint8Array(32),f=new Uint8Array(64),s=[$(),$(),$(),$()],c=[$(),$(),$(),$()];if(h=-1,n<64)return-1;if(X(c,e))return-1;for(i=0;i>>13|n<<3),e=255&r[4]|(255&r[5])<<8,this.r[2]=7939&(n>>>10|e<<6),o=255&r[6]|(255&r[7])<<8,this.r[3]=8191&(e>>>7|o<<9),i=255&r[8]|(255&r[9])<<8,this.r[4]=255&(o>>>4|i<<12),this.r[5]=i>>>1&8190,h=255&r[10]|(255&r[11])<<8,this.r[6]=8191&(i>>>14|h<<2),a=255&r[12]|(255&r[13])<<8,this.r[7]=8065&(h>>>11|a<<5),f=255&r[14]|(255&r[15])<<8,this.r[8]=8191&(a>>>8|f<<8),this.r[9]=f>>>5&127,this.pad[0]=255&r[16]|(255&r[17])<<8,this.pad[1]=255&r[18]|(255&r[19])<<8,this.pad[2]=255&r[20]|(255&r[21])<<8,this.pad[3]=255&r[22]|(255&r[23])<<8,this.pad[4]=255&r[24]|(255&r[25])<<8,this.pad[5]=255&r[26]|(255&r[27])<<8,this.pad[6]=255&r[28]|(255&r[29])<<8,this.pad[7]=255&r[30]|(255&r[31])<<8};yr.prototype.blocks=function(r,t,n){for(var e,o,i,h,a,f,s,c,u,y,l,w,p,v,b,g,_,A,d,U=this.fin?0:2048,E=this.h[0],x=this.h[1],M=this.h[2],m=this.h[3],B=this.h[4],S=this.h[5],K=this.h[6],T=this.h[7],Y=this.h[8],k=this.h[9],L=this.r[0],z=this.r[1],R=this.r[2],P=this.r[3],O=this.r[4],N=this.r[5],C=this.r[6],F=this.r[7],I=this.r[8],G=this.r[9];n>=16;)e=255&r[t+0]|(255&r[t+1])<<8,E+=8191&e,o=255&r[t+2]|(255&r[t+3])<<8,x+=8191&(e>>>13|o<<3),i=255&r[t+4]|(255&r[t+5])<<8,M+=8191&(o>>>10|i<<6),h=255&r[t+6]|(255&r[t+7])<<8,m+=8191&(i>>>7|h<<9),a=255&r[t+8]|(255&r[t+9])<<8,B+=8191&(h>>>4|a<<12),S+=a>>>1&8191,f=255&r[t+10]|(255&r[t+11])<<8,K+=8191&(a>>>14|f<<2),s=255&r[t+12]|(255&r[t+13])<<8,T+=8191&(f>>>11|s<<5),c=255&r[t+14]|(255&r[t+15])<<8,Y+=8191&(s>>>8|c<<8),k+=c>>>5|U,u=0,y=u,y+=E*L,y+=x*(5*G),y+=M*(5*I),y+=m*(5*F),y+=B*(5*C),u=y>>>13,y&=8191,y+=S*(5*N),y+=K*(5*O),y+=T*(5*P),y+=Y*(5*R),y+=k*(5*z),u+=y>>>13,y&=8191,l=u,l+=E*z,l+=x*L,l+=M*(5*G),l+=m*(5*I),l+=B*(5*F),u=l>>>13,l&=8191,l+=S*(5*C),l+=K*(5*N),l+=T*(5*O),l+=Y*(5*P),l+=k*(5*R),u+=l>>>13,l&=8191,w=u,w+=E*R,w+=x*z,w+=M*L,w+=m*(5*G),w+=B*(5*I),u=w>>>13,w&=8191,w+=S*(5*F),w+=K*(5*C),w+=T*(5*N),w+=Y*(5*O),w+=k*(5*P),u+=w>>>13,w&=8191,p=u,p+=E*P,p+=x*R,p+=M*z,p+=m*L,p+=B*(5*G),u=p>>>13,p&=8191,p+=S*(5*I),p+=K*(5*F),p+=T*(5*C),p+=Y*(5*N),p+=k*(5*O),u+=p>>>13,p&=8191,v=u,v+=E*O,v+=x*P,v+=M*R,v+=m*z,v+=B*L,u=v>>>13,v&=8191,v+=S*(5*G),v+=K*(5*I),v+=T*(5*F),v+=Y*(5*C),v+=k*(5*N),u+=v>>>13,v&=8191,b=u,b+=E*N,b+=x*O,b+=M*P,b+=m*R,b+=B*z,u=b>>>13,b&=8191,b+=S*L,b+=K*(5*G),b+=T*(5*I),b+=Y*(5*F),b+=k*(5*C),u+=b>>>13,b&=8191,g=u,g+=E*C,g+=x*N,g+=M*O,g+=m*P,g+=B*R,u=g>>>13,g&=8191,g+=S*z,g+=K*L,g+=T*(5*G),g+=Y*(5*I),g+=k*(5*F),u+=g>>>13,g&=8191,_=u,_+=E*F,_+=x*C,_+=M*N,_+=m*O,_+=B*P,u=_>>>13,_&=8191,_+=S*R,_+=K*z,_+=T*L,_+=Y*(5*G),_+=k*(5*I),u+=_>>>13,_&=8191,A=u,A+=E*I,A+=x*F,A+=M*C,A+=m*N,A+=B*O,u=A>>>13,A&=8191,A+=S*P,A+=K*R,A+=T*z,A+=Y*L,A+=k*(5*G),u+=A>>>13,A&=8191,d=u,d+=E*G,d+=x*I,d+=M*F,d+=m*C,d+=B*N,u=d>>>13,d&=8191,d+=S*O,d+=K*P,d+=T*R,d+=Y*z,d+=k*L,u+=d>>>13,d&=8191,u=(u<<2)+u|0,u=u+y|0,y=8191&u,u>>>=13,l+=u,E=y,x=l,M=w,m=p,B=v,S=b,K=g,T=_,Y=A,k=d,t+=16,n-=16;this.h[0]=E,this.h[1]=x,this.h[2]=M,this.h[3]=m,this.h[4]=B,this.h[5]=S,this.h[6]=K,this.h[7]=T,this.h[8]=Y,this.h[9]=k},yr.prototype.finish=function(r,t){var n,e,o,i,h=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;i<16;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;i<10;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,h[0]=this.h[0]+5,n=h[0]>>>13,h[0]&=8191,i=1;i<10;i++)h[i]=this.h[i]+n,n=h[i]>>>13,h[i]&=8191;for(h[9]-=8192,e=(1^n)-1,i=0;i<10;i++)h[i]&=e;for(e=~e,i=0;i<10;i++)this.h[i]=this.h[i]&e|h[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;i<8;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;r[t+0]=this.h[0]>>>0&255,r[t+1]=this.h[0]>>>8&255,r[t+2]=this.h[1]>>>0&255,r[t+3]=this.h[1]>>>8&255,r[t+4]=this.h[2]>>>0&255,r[t+5]=this.h[2]>>>8&255,r[t+6]=this.h[3]>>>0&255,r[t+7]=this.h[3]>>>8&255,r[t+8]=this.h[4]>>>0&255,r[t+9]=this.h[4]>>>8&255,r[t+10]=this.h[5]>>>0&255,r[t+11]=this.h[5]>>>8&255,r[t+12]=this.h[6]>>>0&255,r[t+13]=this.h[6]>>>8&255,r[t+14]=this.h[7]>>>0&255,r[t+15]=this.h[7]>>>8&255},yr.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;e=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Tr),t=new Uint8Array(Yr);return Z(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(Q(r),r.length!==Yr)throw new Error("bad secret key size");for(var t=new Uint8Array(Tr),n=0;n void): void; +} diff --git a/node_modules/tweetnacl/nacl.js b/node_modules/tweetnacl/nacl.js new file mode 100644 index 0000000..f72dd78 --- /dev/null +++ b/node_modules/tweetnacl/nacl.js @@ -0,0 +1,1175 @@ +(function(nacl) { +'use strict'; + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; }; +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function L32(x, c) { return (x << c) | (x >>> (32 - c)); } + +function ld32(x, i) { + var u = x[i+3] & 0xff; + u = (u<<8)|(x[i+2] & 0xff); + u = (u<<8)|(x[i+1] & 0xff); + return (u<<8)|(x[i+0] & 0xff); +} + +function dl64(x, i) { + var h = (x[i] << 24) | (x[i+1] << 16) | (x[i+2] << 8) | x[i+3]; + var l = (x[i+4] << 24) | (x[i+5] << 16) | (x[i+6] << 8) | x[i+7]; + return new u64(h, l); +} + +function st32(x, j, u) { + var i; + for (i = 0; i < 4; i++) { x[j+i] = u & 255; u >>>= 8; } +} + +function ts64(x, i, u) { + x[i] = (u.hi >> 24) & 0xff; + x[i+1] = (u.hi >> 16) & 0xff; + x[i+2] = (u.hi >> 8) & 0xff; + x[i+3] = u.hi & 0xff; + x[i+4] = (u.lo >> 24) & 0xff; + x[i+5] = (u.lo >> 16) & 0xff; + x[i+6] = (u.lo >> 8) & 0xff; + x[i+7] = u.lo & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core(out,inp,k,c,h) { + var w = new Uint32Array(16), x = new Uint32Array(16), + y = new Uint32Array(16), t = new Uint32Array(4); + var i, j, m; + + for (i = 0; i < 4; i++) { + x[5*i] = ld32(c, 4*i); + x[1+i] = ld32(k, 4*i); + x[6+i] = ld32(inp, 4*i); + x[11+i] = ld32(k, 16+4*i); + } + + for (i = 0; i < 16; i++) y[i] = x[i]; + + for (i = 0; i < 20; i++) { + for (j = 0; j < 4; j++) { + for (m = 0; m < 4; m++) t[m] = x[(5*j+4*m)%16]; + t[1] ^= L32((t[0]+t[3])|0, 7); + t[2] ^= L32((t[1]+t[0])|0, 9); + t[3] ^= L32((t[2]+t[1])|0,13); + t[0] ^= L32((t[3]+t[2])|0,18); + for (m = 0; m < 4; m++) w[4*j+(j+m)%4] = t[m]; + } + for (m = 0; m < 16; m++) x[m] = w[m]; + } + + if (h) { + for (i = 0; i < 16; i++) x[i] = (x[i] + y[i]) | 0; + for (i = 0; i < 4; i++) { + x[5*i] = (x[5*i] - ld32(c, 4*i)) | 0; + x[6+i] = (x[6+i] - ld32(inp, 4*i)) | 0; + } + for (i = 0; i < 4; i++) { + st32(out,4*i,x[5*i]); + st32(out,16+4*i,x[6+i]); + } + } else { + for (i = 0; i < 16; i++) st32(out, 4 * i, (x[i] + y[i]) | 0); + } +} + +function crypto_core_salsa20(out,inp,k,c) { + core(out,inp,k,c,false); + return 0; +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core(out,inp,k,c,true); + return 0; +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + if (!b) return 0; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + if (m) mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,d,n,k) { + return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k); +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s); +} + +function add1305(h, c) { + var j, u = 0; + for (j = 0; j < 17; j++) { + u = (u + ((h[j] + c[j]) | 0)) | 0; + h[j] = u & 255; + u >>>= 8; + } +} + +var minusp = new Uint32Array([ + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 +]); + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s, i, j, u; + var x = new Uint32Array(17), r = new Uint32Array(17), + h = new Uint32Array(17), c = new Uint32Array(17), + g = new Uint32Array(17); + for (j = 0; j < 17; j++) r[j]=h[j]=0; + for (j = 0; j < 16; j++) r[j]=k[j]; + r[3]&=15; + r[4]&=252; + r[7]&=15; + r[8]&=252; + r[11]&=15; + r[12]&=252; + r[15]&=15; + + while (n > 0) { + for (j = 0; j < 17; j++) c[j] = 0; + for (j = 0; (j < 16) && (j < n); ++j) c[j] = m[mpos+j]; + c[j] = 1; + mpos += j; n -= j; + add1305(h,c); + for (i = 0; i < 17; i++) { + x[i] = 0; + for (j = 0; j < 17; j++) x[i] = (x[i] + (h[j] * ((j <= i) ? r[i - j] : ((320 * r[i + 17 - j])|0))) | 0) | 0; + } + for (i = 0; i < 17; i++) h[i] = x[i]; + u = 0; + for (j = 0; j < 16; j++) { + u = (u + h[j]) | 0; + h[j] = u & 255; + u >>>= 8; + } + u = (u + h[16]) | 0; h[16] = u & 3; + u = (5 * (u >>> 2)) | 0; + for (j = 0; j < 16; j++) { + u = (u + h[j]) | 0; + h[j] = u & 255; + u >>>= 8; + } + u = (u + h[16]) | 0; h[16] = u; + } + + for (j = 0; j < 17; j++) g[j] = h[j]; + add1305(h,minusp); + s = (-(h[16] >>> 7) | 0); + for (j = 0; j < 17; j++) h[j] ^= s & (g[j] ^ h[j]); + + for (j = 0; j < 16; j++) c[j] = k[j + 16]; + c[16] = 0; + add1305(h,c); + for (j = 0; j < 16; j++) out[outpos+j] = h[j]; + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var c; + var i; + for (i = 0; i < 16; i++) { + o[i] += 65536; + c = Math.floor(o[i] / 65536); + o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0); + o[i] -= (c * 65536); + } +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + var i; + for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0; +} + +function Z(o, a, b) { + var i; + for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0; +} + +function M(o, a, b) { + var i, j, t = new Float64Array(31); + for (i = 0; i < 31; i++) t[i] = 0; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + t[i+j] += a[i] * b[j]; + } + } + for (i = 0; i < 15; i++) { + t[i] += 38 * t[i+16]; + } + for (i = 0; i < 16; i++) o[i] = t[i]; + car25519(o); + car25519(o); +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +function add64() { + var a = 0, b = 0, c = 0, d = 0, m16 = 65535, l, h, i; + for (i = 0; i < arguments.length; i++) { + l = arguments[i].lo; + h = arguments[i].hi; + a += (l & m16); b += (l >>> 16); + c += (h & m16); d += (h >>> 16); + } + + b += (a >>> 16); + c += (b >>> 16); + d += (c >>> 16); + + return new u64((c & m16) | (d << 16), (a & m16) | (b << 16)); +} + +function shr64(x, c) { + return new u64((x.hi >>> c), (x.lo >>> c) | (x.hi << (32 - c))); +} + +function xor64() { + var l = 0, h = 0, i; + for (i = 0; i < arguments.length; i++) { + l ^= arguments[i].lo; + h ^= arguments[i].hi; + } + return new u64(h, l); +} + +function R(x, c) { + var h, l, c1 = 32 - c; + if (c < 32) { + h = (x.hi >>> c) | (x.lo << c1); + l = (x.lo >>> c) | (x.hi << c1); + } else if (c < 64) { + h = (x.lo >>> c) | (x.hi << c1); + l = (x.hi >>> c) | (x.lo << c1); + } + return new u64(h, l); +} + +function Ch(x, y, z) { + var h = (x.hi & y.hi) ^ (~x.hi & z.hi), + l = (x.lo & y.lo) ^ (~x.lo & z.lo); + return new u64(h, l); +} + +function Maj(x, y, z) { + var h = (x.hi & y.hi) ^ (x.hi & z.hi) ^ (y.hi & z.hi), + l = (x.lo & y.lo) ^ (x.lo & z.lo) ^ (y.lo & z.lo); + return new u64(h, l); +} + +function Sigma0(x) { return xor64(R(x,28), R(x,34), R(x,39)); } +function Sigma1(x) { return xor64(R(x,14), R(x,18), R(x,41)); } +function sigma0(x) { return xor64(R(x, 1), R(x, 8), shr64(x,7)); } +function sigma1(x) { return xor64(R(x,19), R(x,61), shr64(x,6)); } + +var K = [ + new u64(0x428a2f98, 0xd728ae22), new u64(0x71374491, 0x23ef65cd), + new u64(0xb5c0fbcf, 0xec4d3b2f), new u64(0xe9b5dba5, 0x8189dbbc), + new u64(0x3956c25b, 0xf348b538), new u64(0x59f111f1, 0xb605d019), + new u64(0x923f82a4, 0xaf194f9b), new u64(0xab1c5ed5, 0xda6d8118), + new u64(0xd807aa98, 0xa3030242), new u64(0x12835b01, 0x45706fbe), + new u64(0x243185be, 0x4ee4b28c), new u64(0x550c7dc3, 0xd5ffb4e2), + new u64(0x72be5d74, 0xf27b896f), new u64(0x80deb1fe, 0x3b1696b1), + new u64(0x9bdc06a7, 0x25c71235), new u64(0xc19bf174, 0xcf692694), + new u64(0xe49b69c1, 0x9ef14ad2), new u64(0xefbe4786, 0x384f25e3), + new u64(0x0fc19dc6, 0x8b8cd5b5), new u64(0x240ca1cc, 0x77ac9c65), + new u64(0x2de92c6f, 0x592b0275), new u64(0x4a7484aa, 0x6ea6e483), + new u64(0x5cb0a9dc, 0xbd41fbd4), new u64(0x76f988da, 0x831153b5), + new u64(0x983e5152, 0xee66dfab), new u64(0xa831c66d, 0x2db43210), + new u64(0xb00327c8, 0x98fb213f), new u64(0xbf597fc7, 0xbeef0ee4), + new u64(0xc6e00bf3, 0x3da88fc2), new u64(0xd5a79147, 0x930aa725), + new u64(0x06ca6351, 0xe003826f), new u64(0x14292967, 0x0a0e6e70), + new u64(0x27b70a85, 0x46d22ffc), new u64(0x2e1b2138, 0x5c26c926), + new u64(0x4d2c6dfc, 0x5ac42aed), new u64(0x53380d13, 0x9d95b3df), + new u64(0x650a7354, 0x8baf63de), new u64(0x766a0abb, 0x3c77b2a8), + new u64(0x81c2c92e, 0x47edaee6), new u64(0x92722c85, 0x1482353b), + new u64(0xa2bfe8a1, 0x4cf10364), new u64(0xa81a664b, 0xbc423001), + new u64(0xc24b8b70, 0xd0f89791), new u64(0xc76c51a3, 0x0654be30), + new u64(0xd192e819, 0xd6ef5218), new u64(0xd6990624, 0x5565a910), + new u64(0xf40e3585, 0x5771202a), new u64(0x106aa070, 0x32bbd1b8), + new u64(0x19a4c116, 0xb8d2d0c8), new u64(0x1e376c08, 0x5141ab53), + new u64(0x2748774c, 0xdf8eeb99), new u64(0x34b0bcb5, 0xe19b48a8), + new u64(0x391c0cb3, 0xc5c95a63), new u64(0x4ed8aa4a, 0xe3418acb), + new u64(0x5b9cca4f, 0x7763e373), new u64(0x682e6ff3, 0xd6b2b8a3), + new u64(0x748f82ee, 0x5defb2fc), new u64(0x78a5636f, 0x43172f60), + new u64(0x84c87814, 0xa1f0ab72), new u64(0x8cc70208, 0x1a6439ec), + new u64(0x90befffa, 0x23631e28), new u64(0xa4506ceb, 0xde82bde9), + new u64(0xbef9a3f7, 0xb2c67915), new u64(0xc67178f2, 0xe372532b), + new u64(0xca273ece, 0xea26619c), new u64(0xd186b8c7, 0x21c0c207), + new u64(0xeada7dd6, 0xcde0eb1e), new u64(0xf57d4f7f, 0xee6ed178), + new u64(0x06f067aa, 0x72176fba), new u64(0x0a637dc5, 0xa2c898a6), + new u64(0x113f9804, 0xbef90dae), new u64(0x1b710b35, 0x131c471b), + new u64(0x28db77f5, 0x23047d84), new u64(0x32caab7b, 0x40c72493), + new u64(0x3c9ebe0a, 0x15c9bebc), new u64(0x431d67c4, 0x9c100d4c), + new u64(0x4cc5d4be, 0xcb3e42b6), new u64(0x597f299c, 0xfc657e2a), + new u64(0x5fcb6fab, 0x3ad6faec), new u64(0x6c44198c, 0x4a475817) +]; + +function crypto_hashblocks(x, m, n) { + var z = [], b = [], a = [], w = [], t, i, j; + + for (i = 0; i < 8; i++) z[i] = a[i] = dl64(x, 8*i); + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) w[i] = dl64(m, 8*i+pos); + for (i = 0; i < 80; i++) { + for (j = 0; j < 8; j++) b[j] = a[j]; + t = add64(a[7], Sigma1(a[4]), Ch(a[4], a[5], a[6]), K[i], w[i%16]); + b[7] = add64(t, Sigma0(a[0]), Maj(a[0], a[1], a[2])); + b[3] = add64(b[3], t); + for (j = 0; j < 8; j++) a[(j+1)%8] = b[j]; + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + w[j] = add64(w[j], w[(j+9)%16], sigma0(w[(j+1)%16]), sigma1(w[(j+14)%16])); + } + } + } + + for (i = 0; i < 8; i++) { + a[i] = add64(a[i], z[i]); + z[i] = a[i]; + } + + pos += 128; + n -= 128; + } + + for (i = 0; i < 8; i++) ts64(x, 8*i, z[i]); + return n; +} + +var iv = new Uint8Array([ + 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, + 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, + 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, + 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, + 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, + 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, + 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, + 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 +]); + +function crypto_hash(out, m, n) { + var h = new Uint8Array(64), x = new Uint8Array(256); + var i, b = n; + + for (i = 0; i < 64; i++) h[i] = iv[i]; + + crypto_hashblocks(h, m, n); + n %= 128; + + for (i = 0; i < 256; i++) x[i] = 0; + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, new u64((b / 0x20000000) | 0, b << 3)); + crypto_hashblocks(h, x, n); + + for (i = 0; i < 64; i++) out[i] = h[i]; + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = (x[j] + 128) >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + mlen = -1; + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + mlen = n; + return mlen; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + var t, i; + for (i = 0; i < arguments.length; i++) { + if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') + throw new TypeError('unexpected type ' + t + ', use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +// TODO: Completely remove this in v0.15. +if (!nacl.util) { + nacl.util = {}; + nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { + throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); + }; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return false; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + if (arguments.length !== 2) + throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (typeof require !== 'undefined') { + // Node.js. + crypto = require('crypto'); + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {})); diff --git a/node_modules/tweetnacl/nacl.min.js b/node_modules/tweetnacl/nacl.min.js new file mode 100644 index 0000000..4484974 --- /dev/null +++ b/node_modules/tweetnacl/nacl.min.js @@ -0,0 +1 @@ +!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new sr(e,t)}function o(r,n,e){var t;for(t=0;t<4;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;i>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),l=new Uint32Array(16),s=new Uint32Array(16),h=new Uint32Array(4);for(u=0;u<4;u++)l[5*u]=e(a,4*u),l[1+u]=e(i,4*u),l[6+u]=e(t,4*u),l[11+u]=e(i,16+4*u);for(u=0;u<16;u++)s[u]=l[u];for(u=0;u<20;u++){for(c=0;c<4;c++){for(w=0;w<4;w++)h[w]=l[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;w<4;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;w<16;w++)l[w]=y[w]}if(f){for(u=0;u<16;u++)l[u]=l[u]+s[u]|0;for(u=0;u<4;u++)l[5*u]=l[5*u]-e(a,4*u)|0,l[6+u]=l[6+u]-e(t,4*u)|0;for(u=0;u<4;u++)o(r,4*u,l[5*u]),o(r,16+4*u,l[6+u])}else for(u=0;u<16;u++)o(r,4*u,l[u]+s[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function l(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;u<16;u++)c[u]=0;for(u=0;u<8;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Br),u=0;u<64;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;u<16;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Br),u=0;u>>=8}function b(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),l=new Uint32Array(17),s=new Uint32Array(17),h=new Uint32Array(17);for(u=0;u<17;u++)y[u]=l[u]=0;for(u=0;u<16;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;u<17;u++)s[u]=0;for(u=0;u<16&&u>>=8;for(c=c+l[16]|0,l[16]=3&c,c=5*(c>>>2)|0,u=0;u<16;u++)c=c+l[u]|0,l[u]=255&c,c>>>=8;c=c+l[16]|0,l[16]=c}for(u=0;u<17;u++)h[u]=l[u];for(v(l,Sr),a=0|-(l[16]>>>7),u=0;u<17;u++)l[u]^=a&(h[u]^l[u]);for(u=0;u<16;u++)s[u]=i[u+16];for(s[16]=0,v(l,s),u=0;u<16;u++)r[n+u]=l[u];return 0}function p(r,n,e,t,o,i){var a=new Uint8Array(16);return b(a,0,e,t,o,i),f(r,n,a,0)}function _(r,n,e,t,o){var i;if(e<32)return-1;for(g(r,0,n,0,e,t,o),b(r,16,r,32,e-32,r),i=0;i<16;i++)r[i]=0;return 0}function A(r,n,e,t,o){var i,a=new Uint8Array(32);if(e<32)return-1;if(h(a,0,32,t,o),0!==p(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;i<32;i++)r[i]=0;return 0}function U(r,n){var e;for(e=0;e<16;e++)r[e]=0|n[e]}function E(r){var n,e;for(e=0;e<16;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(e<15?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function d(r,n,e){for(var t,o=~(e-1),i=0;i<16;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hr(),a=hr();for(e=0;e<16;e++)a[e]=n[e];for(E(a),E(a),E(a),t=0;t<2;t++){for(i[0]=a[0]-65517,e=1;e<15;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,d(a,i,1-o)}for(e=0;e<16;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;e<16;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;t<16;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;t<31;t++)i[t]=0;for(t=0;t<16;t++)for(o=0;o<16;o++)i[t+o]+=n[t]*e[o];for(t=0;t<15;t++)i[t]+=38*i[t+16];for(t=0;t<16;t++)r[t]=i[t];E(r),E(r)}function L(r,n){Y(r,n,n)}function k(r,n){var e,t=hr();for(e=0;e<16;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function z(r,n){var e,t=hr();for(e=0;e<16;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;e<16;e++)r[e]=t[e]}function R(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hr(),u=hr(),c=hr(),w=hr(),y=hr(),l=hr();for(o=0;o<31;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;o<16;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,d(f,u,t),d(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(l,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,l),Y(f,c,Ar),K(f,f,w),Y(c,c,f),Y(f,w,l),Y(w,u,a),L(u,y),d(f,u,t),d(c,w,t);for(o=0;o<16;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var s=a.subarray(32),h=a.subarray(16);return k(s,s),Y(h,h,s),x(r,h),0}function P(r,n){return R(r,n,br)}function O(r,n){return gr(n,32),P(r,n)}function F(r,n,e){var t=new Uint8Array(32);return R(t,e,n),y(r,vr,t,Br)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Kr(r,n,e,t,a)}function C(r,n,e,t,o,i){var a=new Uint8Array(32);return F(a,o,i),Tr(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new sr(i&f|a<<16,t&f|o<<16)}function G(r,n){return new sr(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function Z(){var r,n=0,e=0;for(r=0;r>>n|r.lo<>>n|r.hi<>>n|r.hi<>>n|r.lo<=128;){for(a=0;a<16;a++)y[a]=t(n,8*a+l);for(a=0;a<80;a++){for(f=0;f<8;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),q(w[4],w[5],w[6]),Yr[a],y[a%16]),c[7]=M(o,V(w[0]),I(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;f<8;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;f<16;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;a<8;a++)w[a]=M(w[a],u[a]),u[a]=w[a];l+=128,e-=128}for(a=0;a<8;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;t<64;t++)o[t]=Lr[t];for(J(o,n,e),e%=128,t=0;t<256;t++)a[t]=0;for(t=0;t=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function er(r,n){var e=[hr(),hr(),hr(),hr()];U(e[0],dr),U(e[1],xr),U(e[2],_r),Y(e[3],dr,xr),nr(r,e,n)}function tr(r,n,e){var t,o=new Uint8Array(64),i=[hr(),hr(),hr(),hr()];for(e||gr(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,er(i,o),rr(r,i),t=0;t<32;t++)n[t+32]=r[t];return 0}function or(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;o>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;o<32;o++)n[o]+=e-(n[31]>>4)*kr[o],e=n[o]>>8,n[o]&=255;for(o=0;o<32;o++)n[o]-=e*kr[o];for(t=0;t<32;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function ir(r){var n,e=new Float64Array(64);for(n=0;n<64;n++)e[n]=r[n];for(n=0;n<64;n++)r[n]=0;or(r,e)}function ar(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hr(),hr(),hr(),hr()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;o>7&&T(r[0],pr,r[0]),Y(r[3],r[0],r[1]),0)}function ur(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hr(),hr(),hr(),hr()],w=[hr(),hr(),hr(),hr()];if(i=-1,e<64)return-1;if(fr(w,t))return-1;for(o=0;o=0},r.sign.keyPair=function(){var r=new Uint8Array(Vr),n=new Uint8Array(Xr);return tr(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(yr(r),r.length!==Xr)throw new Error("bad secret key size");for(var n=new Uint8Array(Vr),e=0;e/dev/null && browserify test/browser/init.js test/*.quick.js | uglifyjs -c -m -o test/browser/_bundle-quick.js 2>/dev/null", + "lint": "eslint nacl.js nacl-fast.js test/*.js test/benchmark/*.js", + "test": "npm run test-node-all && npm run test-browser", + "test-browser": "NACL_SRC=${NACL_SRC:='nacl.min.js'} && npm run build-test-browser && cat $NACL_SRC test/browser/_bundle.js | tape-run | faucet", + "test-node": "tape test/*.js | faucet", + "test-node-all": "make -C test/c && tape test/*.js test/c/*.js | faucet" + }, + "types": "nacl.d.ts", + "version": "0.14.5" +} diff --git a/node_modules/typedarray/.travis.yml b/node_modules/typedarray/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/node_modules/typedarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/typedarray/LICENSE b/node_modules/typedarray/LICENSE new file mode 100644 index 0000000..11adfae --- /dev/null +++ b/node_modules/typedarray/LICENSE @@ -0,0 +1,35 @@ +/* + Copyright (c) 2010, Linden Research, Inc. + Copyright (c) 2012, Joshua Bell + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + $/LicenseInfo$ + */ + +// Original can be found at: +// https://bitbucket.org/lindenlab/llsd +// Modifications by Joshua Bell inexorabletash@gmail.com +// https://github.com/inexorabletash/polyfill + +// ES3/ES5 implementation of the Krhonos Typed Array Specification +// Ref: http://www.khronos.org/registry/typedarray/specs/latest/ +// Date: 2011-02-01 +// +// Variations: +// * Allows typed_array.get/set() as alias for subscripts (typed_array[]) diff --git a/node_modules/typedarray/example/tarray.js b/node_modules/typedarray/example/tarray.js new file mode 100644 index 0000000..8423d7c --- /dev/null +++ b/node_modules/typedarray/example/tarray.js @@ -0,0 +1,4 @@ +var Uint8Array = require('../').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); diff --git a/node_modules/typedarray/index.js b/node_modules/typedarray/index.js new file mode 100644 index 0000000..5e54084 --- /dev/null +++ b/node_modules/typedarray/index.js @@ -0,0 +1,630 @@ +var undefined = (void 0); // Paranoia + +// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to +// create, and consume so much memory, that the browser appears frozen. +var MAX_ARRAY_LENGTH = 1e5; + +// Approximations of internal ECMAScript conversion functions +var ECMAScript = (function() { + // Stash a copy in case other scripts modify these + var opts = Object.prototype.toString, + ophop = Object.prototype.hasOwnProperty; + + return { + // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: + Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, + HasProperty: function(o, p) { return p in o; }, + HasOwnProperty: function(o, p) { return ophop.call(o, p); }, + IsCallable: function(o) { return typeof o === 'function'; }, + ToInt32: function(v) { return v >> 0; }, + ToUint32: function(v) { return v >>> 0; } + }; +}()); + +// Snapshot intrinsics +var LN2 = Math.LN2, + abs = Math.abs, + floor = Math.floor, + log = Math.log, + min = Math.min, + pow = Math.pow, + round = Math.round; + +// ES5: lock down object properties +function configureProperties(obj) { + if (getOwnPropNames && defineProp) { + var props = getOwnPropNames(obj), i; + for (i = 0; i < props.length; i += 1) { + defineProp(obj, props[i], { + value: obj[props[i]], + writable: false, + enumerable: false, + configurable: false + }); + } + } +} + +// emulate ES5 getter/setter API using legacy APIs +// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx +// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but +// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) +var defineProp +if (Object.defineProperty && (function() { + try { + Object.defineProperty({}, 'x', {}); + return true; + } catch (e) { + return false; + } + })()) { + defineProp = Object.defineProperty; +} else { + defineProp = function(o, p, desc) { + if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); + if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } + if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } + if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } + return o; + }; +} + +var getOwnPropNames = Object.getOwnPropertyNames || function (o) { + if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); + var props = [], p; + for (p in o) { + if (ECMAScript.HasOwnProperty(o, p)) { + props.push(p); + } + } + return props; +}; + +// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) +// for index in 0 ... obj.length +function makeArrayAccessors(obj) { + if (!defineProp) { return; } + + if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); + + function makeArrayAccessor(index) { + defineProp(obj, index, { + 'get': function() { return obj._getter(index); }, + 'set': function(v) { obj._setter(index, v); }, + enumerable: true, + configurable: false + }); + } + + var i; + for (i = 0; i < obj.length; i += 1) { + makeArrayAccessor(i); + } +} + +// Internal conversion functions: +// pack() - take a number (interpreted as Type), output a byte array +// unpack() - take a byte array, output a Type-like number + +function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } +function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } + +function packI8(n) { return [n & 0xff]; } +function unpackI8(bytes) { return as_signed(bytes[0], 8); } + +function packU8(n) { return [n & 0xff]; } +function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } + +function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } + +function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } + +function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } + +function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packIEEE754(v, ebits, fbits) { + + var bias = (1 << (ebits - 1)) - 1, + s, e, f, ln, + i, bits, str, bytes; + + function roundToEven(n) { + var w = floor(n), f = n - w; + if (f < 0.5) + return w; + if (f > 0.5) + return w + 1; + return w % 2 ? w + 1 : w; + } + + // Compute sign, exponent, fraction + if (v !== v) { + // NaN + // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping + e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; + } else if (v === Infinity || v === -Infinity) { + e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; + } else if (v === 0) { + e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; + } else { + s = v < 0; + v = abs(v); + + if (v >= pow(2, 1 - bias)) { + e = min(floor(log(v) / LN2), 1023); + f = roundToEven(v / pow(2, e) * pow(2, fbits)); + if (f / pow(2, fbits) >= 2) { + e = e + 1; + f = 1; + } + if (e > bias) { + // Overflow + e = (1 << ebits) - 1; + f = 0; + } else { + // Normalized + e = e + bias; + f = f - pow(2, fbits); + } + } else { + // Denormalized + e = 0; + f = roundToEven(v / pow(2, 1 - bias - fbits)); + } + } + + // Pack sign, exponent, fraction + bits = []; + for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } + for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } + bits.push(s ? 1 : 0); + bits.reverse(); + str = bits.join(''); + + // Bits to bytes + bytes = []; + while (str.length) { + bytes.push(parseInt(str.substring(0, 8), 2)); + str = str.substring(8); + } + return bytes; +} + +function unpackIEEE754(bytes, ebits, fbits) { + + // Bytes to bits + var bits = [], i, j, b, str, + bias, s, e, f; + + for (i = bytes.length; i; i -= 1) { + b = bytes[i - 1]; + for (j = 8; j; j -= 1) { + bits.push(b % 2 ? 1 : 0); b = b >> 1; + } + } + bits.reverse(); + str = bits.join(''); + + // Unpack sign, exponent, fraction + bias = (1 << (ebits - 1)) - 1; + s = parseInt(str.substring(0, 1), 2) ? -1 : 1; + e = parseInt(str.substring(1, 1 + ebits), 2); + f = parseInt(str.substring(1 + ebits), 2); + + // Produce number + if (e === (1 << ebits) - 1) { + return f !== 0 ? NaN : s * Infinity; + } else if (e > 0) { + // Normalized + return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); + } else if (f !== 0) { + // Denormalized + return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); + } else { + return s < 0 ? -0 : 0; + } +} + +function unpackF64(b) { return unpackIEEE754(b, 11, 52); } +function packF64(v) { return packIEEE754(v, 11, 52); } +function unpackF32(b) { return unpackIEEE754(b, 8, 23); } +function packF32(v) { return packIEEE754(v, 8, 23); } + + +// +// 3 The ArrayBuffer Type +// + +(function() { + + /** @constructor */ + var ArrayBuffer = function ArrayBuffer(length) { + length = ECMAScript.ToInt32(length); + if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); + + this.byteLength = length; + this._bytes = []; + this._bytes.length = length; + + var i; + for (i = 0; i < this.byteLength; i += 1) { + this._bytes[i] = 0; + } + + configureProperties(this); + }; + + exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; + + // + // 4 The ArrayBufferView Type + // + + // NOTE: this constructor is not exported + /** @constructor */ + var ArrayBufferView = function ArrayBufferView() { + //this.buffer = null; + //this.byteOffset = 0; + //this.byteLength = 0; + }; + + // + // 5 The Typed Array View Types + // + + function makeConstructor(bytesPerElement, pack, unpack) { + // Each TypedArray type requires a distinct constructor instance with + // identical logic, which this produces. + + var ctor; + ctor = function(buffer, byteOffset, length) { + var array, sequence, i, s; + + if (!arguments.length || typeof arguments[0] === 'number') { + // Constructor(unsigned long length) + this.length = ECMAScript.ToInt32(arguments[0]); + if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); + + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { + // Constructor(TypedArray array) + array = arguments[0]; + + this.length = array.length; + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + this._setter(i, array._getter(i)); + } + } else if (typeof arguments[0] === 'object' && + !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(sequence array) + sequence = arguments[0]; + + this.length = ECMAScript.ToUint32(sequence.length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + s = sequence[i]; + this._setter(i, Number(s)); + } + } else if (typeof arguments[0] === 'object' && + (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, optional unsigned long length) + this.buffer = buffer; + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (this.byteOffset % this.BYTES_PER_ELEMENT) { + // The given byteOffset must be a multiple of the element + // size of the specific type, otherwise an exception is raised. + throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + + if (this.byteLength % this.BYTES_PER_ELEMENT) { + throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); + } + this.length = this.byteLength / this.BYTES_PER_ELEMENT; + } else { + this.length = ECMAScript.ToUint32(length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + + this.constructor = ctor; + + configureProperties(this); + makeArrayAccessors(this); + }; + + ctor.prototype = new ArrayBufferView(); + ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; + ctor.prototype._pack = pack; + ctor.prototype._unpack = unpack; + ctor.BYTES_PER_ELEMENT = bytesPerElement; + + // getter type (unsigned long index); + ctor.prototype._getter = function(index) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = [], i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + bytes.push(this.buffer._bytes[o]); + } + return this._unpack(bytes); + }; + + // NONSTANDARD: convenience alias for getter: type get(unsigned long index); + ctor.prototype.get = ctor.prototype._getter; + + // setter void (unsigned long index, type value); + ctor.prototype._setter = function(index, value) { + if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = this._pack(value), i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + this.buffer._bytes[o] = bytes[i]; + } + }; + + // void set(TypedArray array, optional unsigned long offset); + // void set(sequence array, optional unsigned long offset); + ctor.prototype.set = function(index, value) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + var array, sequence, offset, len, + i, s, d, + byteOffset, byteLength, tmp; + + if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { + // void set(TypedArray array, optional unsigned long offset); + array = arguments[0]; + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + array.length > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; + byteLength = array.length * this.BYTES_PER_ELEMENT; + + if (array.buffer === this.buffer) { + tmp = []; + for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { + tmp[i] = array.buffer._bytes[s]; + } + for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { + this.buffer._bytes[d] = tmp[i]; + } + } else { + for (i = 0, s = array.byteOffset, d = byteOffset; + i < byteLength; i += 1, s += 1, d += 1) { + this.buffer._bytes[d] = array.buffer._bytes[s]; + } + } + } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { + // void set(sequence array, optional unsigned long offset); + sequence = arguments[0]; + len = ECMAScript.ToUint32(sequence.length); + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + len > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + for (i = 0; i < len; i += 1) { + s = sequence[i]; + this._setter(offset + i, Number(s)); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + }; + + // TypedArray subarray(long begin, optional long end); + ctor.prototype.subarray = function(start, end) { + function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } + + start = ECMAScript.ToInt32(start); + end = ECMAScript.ToInt32(end); + + if (arguments.length < 1) { start = 0; } + if (arguments.length < 2) { end = this.length; } + + if (start < 0) { start = this.length + start; } + if (end < 0) { end = this.length + end; } + + start = clamp(start, 0, this.length); + end = clamp(end, 0, this.length); + + var len = end - start; + if (len < 0) { + len = 0; + } + + return new this.constructor( + this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); + }; + + return ctor; + } + + var Int8Array = makeConstructor(1, packI8, unpackI8); + var Uint8Array = makeConstructor(1, packU8, unpackU8); + var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); + var Int16Array = makeConstructor(2, packI16, unpackI16); + var Uint16Array = makeConstructor(2, packU16, unpackU16); + var Int32Array = makeConstructor(4, packI32, unpackI32); + var Uint32Array = makeConstructor(4, packU32, unpackU32); + var Float32Array = makeConstructor(4, packF32, unpackF32); + var Float64Array = makeConstructor(8, packF64, unpackF64); + + exports.Int8Array = exports.Int8Array || Int8Array; + exports.Uint8Array = exports.Uint8Array || Uint8Array; + exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; + exports.Int16Array = exports.Int16Array || Int16Array; + exports.Uint16Array = exports.Uint16Array || Uint16Array; + exports.Int32Array = exports.Int32Array || Int32Array; + exports.Uint32Array = exports.Uint32Array || Uint32Array; + exports.Float32Array = exports.Float32Array || Float32Array; + exports.Float64Array = exports.Float64Array || Float64Array; +}()); + +// +// 6 The DataView View Type +// + +(function() { + function r(array, index) { + return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; + } + + var IS_BIG_ENDIAN = (function() { + var u16array = new(exports.Uint16Array)([0x1234]), + u8array = new(exports.Uint8Array)(u16array.buffer); + return r(u8array, 0) === 0x12; + }()); + + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, + // optional unsigned long byteLength) + /** @constructor */ + var DataView = function DataView(buffer, byteOffset, byteLength) { + if (arguments.length === 0) { + buffer = new exports.ArrayBuffer(0); + } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { + throw new TypeError("TypeError"); + } + + this.buffer = buffer || new exports.ArrayBuffer(0); + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + } else { + this.byteLength = ECMAScript.ToUint32(byteLength); + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + + configureProperties(this); + }; + + function makeGetter(arrayType) { + return function(byteOffset, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + byteOffset += this.byteOffset; + + var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), + bytes = [], i; + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(uint8Array, i)); + } + + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); + }; + } + + DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); + DataView.prototype.getInt8 = makeGetter(exports.Int8Array); + DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); + DataView.prototype.getInt16 = makeGetter(exports.Int16Array); + DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); + DataView.prototype.getInt32 = makeGetter(exports.Int32Array); + DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); + DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); + + function makeSetter(arrayType) { + return function(byteOffset, value, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + + // Get bytes + var typeArray = new arrayType([value]), + byteArray = new exports.Uint8Array(typeArray.buffer), + bytes = [], i, byteView; + + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(byteArray, i)); + } + + // Flip if necessary + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + // Write them + byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); + byteView.set(bytes); + }; + } + + DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); + DataView.prototype.setInt8 = makeSetter(exports.Int8Array); + DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); + DataView.prototype.setInt16 = makeSetter(exports.Int16Array); + DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); + DataView.prototype.setInt32 = makeSetter(exports.Int32Array); + DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); + DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); + + exports.DataView = exports.DataView || DataView; + +}()); diff --git a/node_modules/typedarray/package.json b/node_modules/typedarray/package.json new file mode 100644 index 0000000..d08c817 --- /dev/null +++ b/node_modules/typedarray/package.json @@ -0,0 +1,83 @@ +{ + "_from": "typedarray@^0.0.6", + "_id": "typedarray@0.0.6", + "_inBundle": false, + "_integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "_location": "/typedarray", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "typedarray@^0.0.6", + "name": "typedarray", + "escapedName": "typedarray", + "rawSpec": "^0.0.6", + "saveSpec": null, + "fetchSpec": "^0.0.6" + }, + "_requiredBy": [ + "/concat-stream" + ], + "_resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "_shasum": "867ac74e3864187b1d3d47d996a78ec5c8830777", + "_spec": "typedarray@^0.0.6", + "_where": "/home/peter/www/prive/cypress-test/node_modules/concat-stream", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/typedarray/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "TypedArray polyfill for old browsers", + "devDependencies": { + "tape": "~2.3.2" + }, + "homepage": "https://github.com/substack/typedarray", + "keywords": [ + "ArrayBuffer", + "DataView", + "Float32Array", + "Float64Array", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "typed", + "array", + "polyfill" + ], + "license": "MIT", + "main": "index.js", + "name": "typedarray", + "repository": { + "type": "git", + "url": "git://github.com/substack/typedarray.git" + }, + "scripts": { + "test": "tape test/*.js test/server/*.js" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "version": "0.0.6" +} diff --git a/node_modules/typedarray/readme.markdown b/node_modules/typedarray/readme.markdown new file mode 100644 index 0000000..d18f6f7 --- /dev/null +++ b/node_modules/typedarray/readme.markdown @@ -0,0 +1,61 @@ +# typedarray + +TypedArray polyfill ripped from [this +module](https://raw.github.com/inexorabletash/polyfill). + +[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray) + +[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray) + +# example + +``` js +var Uint8Array = require('typedarray').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); +``` + +output: + +``` +55 +``` + +# methods + +``` js +var TA = require('typedarray') +``` + +The `TA` object has the following constructors: + +* TA.ArrayBuffer +* TA.DataView +* TA.Float32Array +* TA.Float64Array +* TA.Int8Array +* TA.Int16Array +* TA.Int32Array +* TA.Uint8Array +* TA.Uint8ClampedArray +* TA.Uint16Array +* TA.Uint32Array + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install typedarray +``` + +To use this module in the browser, compile with +[browserify](http://browserify.org) +or download a UMD build from browserify CDN: + +http://wzrd.in/standalone/typedarray@latest + +# license + +MIT diff --git a/node_modules/typedarray/test/server/undef_globals.js b/node_modules/typedarray/test/server/undef_globals.js new file mode 100644 index 0000000..425950f --- /dev/null +++ b/node_modules/typedarray/test/server/undef_globals.js @@ -0,0 +1,19 @@ +var test = require('tape'); +var vm = require('vm'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8'); + +test('u8a without globals', function (t) { + var c = { + module: { exports: {} }, + }; + c.exports = c.module.exports; + vm.runInNewContext(src, c); + var TA = c.module.exports; + var ua = new(TA.Uint8Array)(5); + + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/node_modules/typedarray/test/tarray.js b/node_modules/typedarray/test/tarray.js new file mode 100644 index 0000000..df596a3 --- /dev/null +++ b/node_modules/typedarray/test/tarray.js @@ -0,0 +1,10 @@ +var TA = require('../'); +var test = require('tape'); + +test('tiny u8a test', function (t) { + var ua = new(TA.Uint8Array)(5); + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/node_modules/universalify/LICENSE b/node_modules/universalify/LICENSE new file mode 100644 index 0000000..514e84e --- /dev/null +++ b/node_modules/universalify/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2017, Ryan Zimmerman + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the 'Software'), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/universalify/README.md b/node_modules/universalify/README.md new file mode 100644 index 0000000..487067b --- /dev/null +++ b/node_modules/universalify/README.md @@ -0,0 +1,76 @@ +# universalify + +[![Travis branch](https://img.shields.io/travis/RyanZim/universalify/master.svg)](https://travis-ci.org/RyanZim/universalify) +![Coveralls github branch](https://img.shields.io/coveralls/github/RyanZim/universalify/master.svg) +![npm](https://img.shields.io/npm/dm/universalify.svg) +![npm](https://img.shields.io/npm/l/universalify.svg) + +Make a callback- or promise-based function support both promises and callbacks. + +Uses the native promise implementation. + +## Installation + +```bash +npm install universalify +``` + +## API + +### `universalify.fromCallback(fn)` + +Takes a callback-based function to universalify, and returns the universalified function. + +Function must take a callback as the last parameter that will be called with the signature `(error, result)`. `universalify` does not support calling the callback with more than three arguments, and does not ensure that the callback is only called once. + +```js +function callbackFn (n, cb) { + setTimeout(() => cb(null, n), 15) +} + +const fn = universalify.fromCallback(callbackFn) + +// Works with Promises: +fn('Hello World!') +.then(result => console.log(result)) // -> Hello World! +.catch(error => console.error(error)) + +// Works with Callbacks: +fn('Hi!', (error, result) => { + if (error) return console.error(error) + console.log(result) + // -> Hi! +}) +``` + +### `universalify.fromPromise(fn)` + +Takes a promise-based function to universalify, and returns the universalified function. + +Function must return a valid JS promise. `universalify` does not ensure that a valid promise is returned. + +```js +function promiseFn (n) { + return new Promise(resolve => { + setTimeout(() => resolve(n), 15) + }) +} + +const fn = universalify.fromPromise(promiseFn) + +// Works with Promises: +fn('Hello World!') +.then(result => console.log(result)) // -> Hello World! +.catch(error => console.error(error)) + +// Works with Callbacks: +fn('Hi!', (error, result) => { + if (error) return console.error(error) + console.log(result) + // -> Hi! +}) +``` + +## License + +MIT diff --git a/node_modules/universalify/index.js b/node_modules/universalify/index.js new file mode 100644 index 0000000..0c9ba39 --- /dev/null +++ b/node_modules/universalify/index.js @@ -0,0 +1,25 @@ +'use strict' + +exports.fromCallback = function (fn) { + return Object.defineProperty(function () { + if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments) + else { + return new Promise((resolve, reject) => { + arguments[arguments.length] = (err, res) => { + if (err) return reject(err) + resolve(res) + } + arguments.length++ + fn.apply(this, arguments) + }) + } + }, 'name', { value: fn.name }) +} + +exports.fromPromise = function (fn) { + return Object.defineProperty(function () { + const cb = arguments[arguments.length - 1] + if (typeof cb !== 'function') return fn.apply(this, arguments) + else fn.apply(this, arguments).then(r => cb(null, r), cb) + }, 'name', { value: fn.name }) +} diff --git a/node_modules/universalify/package.json b/node_modules/universalify/package.json new file mode 100644 index 0000000..2625d15 --- /dev/null +++ b/node_modules/universalify/package.json @@ -0,0 +1,64 @@ +{ + "_from": "universalify@^0.1.0", + "_id": "universalify@0.1.2", + "_inBundle": false, + "_integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "_location": "/universalify", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "universalify@^0.1.0", + "name": "universalify", + "escapedName": "universalify", + "rawSpec": "^0.1.0", + "saveSpec": null, + "fetchSpec": "^0.1.0" + }, + "_requiredBy": [ + "/fs-extra" + ], + "_resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "_shasum": "b646f69be3942dabcecc9d6639c80dc105efaa66", + "_spec": "universalify@^0.1.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/fs-extra", + "author": { + "name": "Ryan Zimmerman", + "email": "opensrc@ryanzim.com" + }, + "bugs": { + "url": "https://github.com/RyanZim/universalify/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Make a callback- or promise-based function support both promises and callbacks.", + "devDependencies": { + "colortape": "^0.1.2", + "coveralls": "^3.0.1", + "nyc": "^10.2.0", + "standard": "^10.0.1", + "tape": "^4.6.3" + }, + "engines": { + "node": ">= 4.0.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/RyanZim/universalify#readme", + "keywords": [ + "callback", + "native", + "promise" + ], + "license": "MIT", + "name": "universalify", + "repository": { + "type": "git", + "url": "git+https://github.com/RyanZim/universalify.git" + }, + "scripts": { + "test": "standard && nyc tape test/*.js | colortape" + }, + "version": "0.1.2" +} diff --git a/node_modules/uri-js/README.md b/node_modules/uri-js/README.md new file mode 100644 index 0000000..3f225e7 --- /dev/null +++ b/node_modules/uri-js/README.md @@ -0,0 +1,199 @@ +# URI.js + +URI.js is an [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt) compliant, scheme extendable URI parsing/validating/resolving library for all JavaScript environments (browsers, Node.js, etc). +It is also compliant with the IRI ([RFC 3987](http://www.ietf.org/rfc/rfc3987.txt)), IDNA ([RFC 5890](http://www.ietf.org/rfc/rfc5890.txt)), IPv6 Address ([RFC 5952](http://www.ietf.org/rfc/rfc5952.txt)), IPv6 Zone Identifier ([RFC 6874](http://www.ietf.org/rfc/rfc6874.txt)) specifications. + +URI.js has an extensive test suite, and works in all (Node.js, web) environments. It weighs in at 6.2kb (gzipped, 16kb deflated). + +## API + +### Parsing + + URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body"); + //returns: + //{ + // scheme : "uri", + // userinfo : "user:pass", + // host : "example.com", + // port : 123, + // path : "/one/two.three", + // query : "q1=a1&q2=a2", + // fragment : "body" + //} + +### Serializing + + URI.serialize({scheme : "http", host : "example.com", fragment : "footer"}) === "http://example.com/#footer" + +### Resolving + + URI.resolve("uri://a/b/c/d?q", "../../g") === "uri://a/g" + +### Normalizing + + URI.normalize("HTTP://ABC.com:80/%7Esmith/home.html") === "http://abc.com/~smith/home.html" + +### Comparison + + URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d") === true + +### IP Support + + //IPv4 normalization + URI.normalize("//192.068.001.000") === "//192.68.1.0" + + //IPv6 normalization + URI.normalize("//[2001:0:0DB8::0:0001]") === "//[2001:0:db8::1]" + + //IPv6 zone identifier support + URI.parse("//[2001:db8::7%25en1]"); + //returns: + //{ + // host : "2001:db8::7%en1" + //} + +### IRI Support + + //convert IRI to URI + URI.serialize(URI.parse("http://examplé.org/rosé")) === "http://xn--exampl-gva.org/ros%C3%A9" + //convert URI to IRI + URI.serialize(URI.parse("http://xn--exampl-gva.org/ros%C3%A9"), {iri:true}) === "http://examplé.org/rosé" + +### Options + +All of the above functions can accept an additional options argument that is an object that can contain one or more of the following properties: + +* `scheme` (string) + + Indicates the scheme that the URI should be treated as, overriding the URI's normal scheme parsing behavior. + +* `reference` (string) + + If set to `"suffix"`, it indicates that the URI is in the suffix format, and the validator will use the option's `scheme` property to determine the URI's scheme. + +* `tolerant` (boolean, false) + + If set to `true`, the parser will relax URI resolving rules. + +* `absolutePath` (boolean, false) + + If set to `true`, the serializer will not resolve a relative `path` component. + +* `iri` (boolean, false) + + If set to `true`, the serializer will unescape non-ASCII characters as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt). + +* `unicodeSupport` (boolean, false) + + If set to `true`, the parser will unescape non-ASCII characters in the parsed output as per [RFC 3987](http://www.ietf.org/rfc/rfc3987.txt). + +* `domainHost` (boolean, false) + + If set to `true`, the library will treat the `host` component as a domain name, and convert IDNs (International Domain Names) as per [RFC 5891](http://www.ietf.org/rfc/rfc5891.txt). + +## Scheme Extendable + +URI.js supports inserting custom [scheme](http://en.wikipedia.org/wiki/URI_scheme) dependent processing rules. Currently, URI.js has built in support for the following schemes: + +* http \[[RFC 2616](http://www.ietf.org/rfc/rfc2616.txt)\] +* https \[[RFC 2818](http://www.ietf.org/rfc/rfc2818.txt)\] +* mailto \[[RFC 6068](http://www.ietf.org/rfc/rfc6068.txt)\] +* urn \[[RFC 2141](http://www.ietf.org/rfc/rfc2141.txt)\] +* urn:uuid \[[RFC 4122](http://www.ietf.org/rfc/rfc4122.txt)\] + +### HTTP Support + + URI.equal("HTTP://ABC.COM:80", "http://abc.com/") === true + +### Mailto Support + + URI.parse("mailto:alpha@example.com,bravo@example.com?subject=SUBSCRIBE&body=Sign%20me%20up!"); + //returns: + //{ + // scheme : "mailto", + // to : ["alpha@example.com", "bravo@example.com"], + // subject : "SUBSCRIBE", + // body : "Sign me up!" + //} + + URI.serialize({ + scheme : "mailto", + to : ["alpha@example.com"], + subject : "REMOVE", + body : "Please remove me", + headers : { + cc : "charlie@example.com" + } + }) === "mailto:alpha@example.com?cc=charlie@example.com&subject=REMOVE&body=Please%20remove%20me" + +### URN Support + + URI.parse("urn:example:foo"); + //returns: + //{ + // scheme : "urn", + // nid : "example", + // nss : "foo", + //} + +#### URN UUID Support + + URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); + //returns: + //{ + // scheme : "urn", + // nid : "example", + // uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", + //} + +## Usage + +To load in a browser, use the following tag: + + + +To load in a CommonJS (Node.js) environment, first install with npm by running on the command line: + + npm install uri-js + +Then, in your code, load it using: + + const URI = require("uri-js"); + +If you are writing your code in ES6+ (ESNEXT) or TypeScript, you would load it using: + + import * as URI from "uri-js"; + +Or you can load just what you need using named exports: + + import { parse, serialize, resolve, resolveComponents, normalize, equal, removeDotSegments, pctEncChar, pctDecChars, escapeComponent, unescapeComponent } from "uri-js"; + +## Breaking changes + +### Breaking changes from 3.x + +URN parsing has been completely changed to better align with the specification. Scheme is now always `urn`, but has two new properties: `nid` which contains the Namspace Identifier, and `nss` which contains the Namespace Specific String. The `nss` property will be removed by higher order scheme handlers, such as the UUID URN scheme handler. + +The UUID of a URN can now be found in the `uuid` property. + +### Breaking changes from 2.x + +URI validation has been removed as it was slow, exposed a vulnerabilty, and was generally not useful. + +### Breaking changes from 1.x + +The `errors` array on parsed components is now an `error` string. + +## License ([Simplified BSD](http://en.wikipedia.org/wiki/BSD_licenses#2-clause)) + +Copyright 2011 Gary Court. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court. diff --git a/node_modules/uri-js/bower.json b/node_modules/uri-js/bower.json new file mode 100644 index 0000000..7a40440 --- /dev/null +++ b/node_modules/uri-js/bower.json @@ -0,0 +1,47 @@ +{ + "name": "uri-js", + "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.", + "main": "dist/es5/uri.all.js", + "moduleType": [ + "globals", + "amd", + "node", + "es6" + ], + "authors": [ + "Gary Court " + ], + "license": "BSD-2-Clause", + "keywords": [ + "URI", + "IRI", + "IDN", + "URN", + "HTTP", + "HTTPS", + "MAILTO", + "RFC3986", + "RFC3987", + "RFC5891", + "RFC2616", + "RFC2818", + "RFC2141", + "RFC4122", + "RFC6068" + ], + "homepage": "https://github.com/garycourt/uri-js", + "repository": { + "type": "git", + "url": "http://github.com/garycourt/uri-js" + }, + "dependencies": { + "punycode": "^2.1.0" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/node_modules/uri-js/dist/es5/uri.all.d.ts b/node_modules/uri-js/dist/es5/uri.all.d.ts new file mode 100644 index 0000000..320f534 --- /dev/null +++ b/node_modules/uri-js/dist/es5/uri.all.d.ts @@ -0,0 +1,59 @@ +export interface URIComponents { + scheme?: string; + userinfo?: string; + host?: string; + port?: number | string; + path?: string; + query?: string; + fragment?: string; + reference?: string; + error?: string; +} +export interface URIOptions { + scheme?: string; + reference?: string; + tolerant?: boolean; + absolutePath?: boolean; + iri?: boolean; + unicodeSupport?: boolean; + domainHost?: boolean; +} +export interface URISchemeHandler { + scheme: string; + parse(components: ParentComponents, options: Options): Components; + serialize(components: Components, options: Options): ParentComponents; + unicodeSupport?: boolean; + domainHost?: boolean; + absolutePath?: boolean; +} +export interface URIRegExps { + NOT_SCHEME: RegExp; + NOT_USERINFO: RegExp; + NOT_HOST: RegExp; + NOT_PATH: RegExp; + NOT_PATH_NOSCHEME: RegExp; + NOT_QUERY: RegExp; + NOT_FRAGMENT: RegExp; + ESCAPE: RegExp; + UNRESERVED: RegExp; + OTHER_CHARS: RegExp; + PCT_ENCODED: RegExp; + IPV4ADDRESS: RegExp; + IPV6ADDRESS: RegExp; +} +export declare const SCHEMES: { + [scheme: string]: URISchemeHandler; +}; +export declare function pctEncChar(chr: string): string; +export declare function pctDecChars(str: string): string; +export declare function parse(uriString: string, options?: URIOptions): URIComponents; +export declare function removeDotSegments(input: string): string; +export declare function serialize(components: URIComponents, options?: URIOptions): string; +export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; +export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; +export declare function normalize(uri: string, options?: URIOptions): string; +export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; +export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; +export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; +export declare function escapeComponent(str: string, options?: URIOptions): string; +export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/es5/uri.all.js b/node_modules/uri-js/dist/es5/uri.all.js new file mode 100644 index 0000000..2df0609 --- /dev/null +++ b/node_modules/uri-js/dist/es5/uri.all.js @@ -0,0 +1,1389 @@ +/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.URI = global.URI || {}))); +}(this, (function (exports) { 'use strict'; + +function merge() { + for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { + sets[_key] = arguments[_key]; + } + + if (sets.length > 1) { + sets[0] = sets[0].slice(0, -1); + var xl = sets.length - 1; + for (var x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } else { + return sets[0]; + } +} +function subexp(str) { + return "(?:" + str + ")"; +} +function typeOf(o) { + return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); +} +function toUpperCase(str) { + return str.toUpperCase(); +} +function toArray(obj) { + return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; +} +function assign(target, source) { + var obj = target; + if (source) { + for (var key in source) { + obj[key] = source[key]; + } + } + return obj; +} + +function buildExps(isIRI) { + var ALPHA$$ = "[A-Za-z]", + CR$ = "[\\x0D]", + DIGIT$$ = "[0-9]", + DQUOTE$$ = "[\\x22]", + HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), + //case-insensitive + LF$$ = "[\\x0A]", + SP$$ = "[\\x20]", + PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), + //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", + SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", + RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), + UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", + //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", + //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), + SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), + USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), + DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), + DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), + //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), + H16$ = subexp(HEXDIG$$ + "{1,4}"), + LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), + IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), + // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), + // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), + //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), + //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), + //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), + //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), + //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), + //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), + //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), + ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), + //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), + //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), + //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), + IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), + //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), + HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), + PORT$ = subexp(DIGIT$$ + "*"), + AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), + PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), + SEGMENT$ = subexp(PCHAR$ + "*"), + SEGMENT_NZ$ = subexp(PCHAR$ + "+"), + SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), + PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), + PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), + //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), + //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), + //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", + PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), + FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), + HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), + RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), + ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), + GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", + SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; + return { + NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED: new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; +} +var URI_PROTOCOL = buildExps(false); + +var IRI_PROTOCOL = buildExps(true); + +var slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); + + + + + + + + + + + + + +var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } else { + return Array.from(arr); + } +}; + +/** Highest positive signed 32-bit float value */ + +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' + +/** Regular expressions */ +var regexPunycode = /^xn--/; +var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +var errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; + +/** Convenience shortcuts */ +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; + +/*--------------------------------------------------------------------------*/ + +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error$1(type) { + throw new RangeError(errors[type]); +} + +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map(array, fn) { + var result = []; + var length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} + +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; +} + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +} + +/** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ +var ucs2encode = function ucs2encode(array) { + return String.fromCodePoint.apply(String, toConsumableArray(array)); +}; + +/** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ +var basicToDigit = function basicToDigit(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; +}; + +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +var digitToBasic = function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +var adapt = function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ +var decode = function decode(input) { + // Don't use UCS-2. + var output = []; + var inputLength = input.length; + var i = 0; + var n = initialN; + var bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + var basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (var j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error$1('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + var oldi = i; + for (var w = 1, k = base;; /* no condition */k += base) { + + if (index >= inputLength) { + error$1('invalid-input'); + } + + var digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error$1('overflow'); + } + + i += digit * w; + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + + if (digit < t) { + break; + } + + var baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error$1('overflow'); + } + + w *= baseMinusT; + } + + var out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error$1('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + } + + return String.fromCodePoint.apply(String, output); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +var encode = function encode(input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + + // Handle the basic code points. + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _currentValue2 = _step.value; + + if (_currentValue2 < 0x80) { + output.push(stringFromCharCode(_currentValue2)); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var basicLength = output.length; + var handledCPCount = basicLength; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + var m = maxInt; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var currentValue = _step2.value; + + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error$1('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _currentValue = _step3.value; + + if (_currentValue < n && ++delta > maxInt) { + error$1('overflow'); + } + if (_currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base;; /* no condition */k += base) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) { + break; + } + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + ++delta; + ++n; + } + return output.join(''); +}; + +/** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ +var toUnicode = function toUnicode(input) { + return mapDomain(input, function (string) { + return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; + }); +}; + +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +var toASCII = function toASCII(input) { + return mapDomain(input, function (string) { + return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; + }); +}; + +/*--------------------------------------------------------------------------*/ + +/** Define the public API */ +var punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode +}; + +/** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ +/** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ +var SCHEMES = {}; +function pctEncChar(chr) { + var c = chr.charCodeAt(0); + var e = void 0; + if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); + return e; +} +function pctDecChars(str) { + var newStr = ""; + var i = 0; + var il = str.length; + while (i < il) { + var c = parseInt(str.substr(i + 1, 2), 16); + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } else if (c >= 194 && c < 224) { + if (il - i >= 6) { + var c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); + } else { + newStr += str.substr(i, 6); + } + i += 6; + } else if (c >= 224) { + if (il - i >= 9) { + var _c = parseInt(str.substr(i + 4, 2), 16); + var c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); + } else { + newStr += str.substr(i, 9); + } + i += 9; + } else { + newStr += str.substr(i, 3); + i += 3; + } + } + return newStr; +} +function _normalizeComponentEncoding(components, protocol) { + function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(protocol.UNRESERVED) ? str : decStr; + } + if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + return components; +} + +function _stripLeadingZeros(str) { + return str.replace(/^0*(.*)/, "$1") || "0"; +} +function _normalizeIPv4(host, protocol) { + var matches = host.match(protocol.IPV4ADDRESS) || []; + + var _matches = slicedToArray(matches, 2), + address = _matches[1]; + + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } else { + return host; + } +} +function _normalizeIPv6(host, protocol) { + var matches = host.match(protocol.IPV6ADDRESS) || []; + + var _matches2 = slicedToArray(matches, 3), + address = _matches2[1], + zone = _matches2[2]; + + if (address) { + var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), + _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), + last = _address$toLowerCase$2[0], + first = _address$toLowerCase$2[1]; + + var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + var lastFields = last.split(":").map(_stripLeadingZeros); + var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + var fieldCount = isLastFieldIPv4Address ? 7 : 8; + var lastFieldsStart = lastFields.length - fieldCount; + var fields = Array(fieldCount); + for (var x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + var allZeroFields = fields.reduce(function (acc, field, index) { + if (!field || field === "0") { + var lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } else { + acc.push({ index: index, length: 1 }); + } + } + return acc; + }, []); + var longestZeroFields = allZeroFields.sort(function (a, b) { + return b.length - a.length; + })[0]; + var newHost = void 0; + if (longestZeroFields && longestZeroFields.length > 1) { + var newFirst = fields.slice(0, longestZeroFields.index); + var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } else { + newHost = fields.join(":"); + } + if (zone) { + newHost += "%" + zone; + } + return newHost; + } else { + return host; + } +} +var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; +var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; +function parse(uriString) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var components = {}; + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + var matches = uriString.match(URI_PARSE); + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } else { + //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; + components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; + components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; + //fix port number + if (isNaN(components.port)) { + components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; + } + } + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } else if (components.scheme === undefined) { + components.reference = "relative"; + } else if (components.fragment === undefined) { + components.reference = "absolute"; + } else { + components.reference = "uri"; + } + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } else { + components.error = components.error || "URI can not be parsed."; + } + return components; +} + +function _recomposeAuthority(components, options) { + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { + return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; + })); + } + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + return uriTokens.length ? uriTokens.join("") : undefined; +} + +var RDS1 = /^\.\.?\//; +var RDS2 = /^\/\.(\/|$)/; +var RDS3 = /^\/\.\.(\/|$)/; +var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; +function removeDotSegments(input) { + var output = []; + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } else if (input === "." || input === "..") { + input = ""; + } else { + var im = input.match(RDS5); + if (im) { + var s = im[0]; + input = input.slice(s.length); + output.push(s); + } else { + throw new Error("Unexpected dot segment condition"); + } + } + } + return output.join(""); +} + +function serialize(components) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) {} + //TODO: normalize IPv6 address as per RFC 5952 + + //if host component is a domain name + else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { + //convert IDN via punycode + try { + components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + //normalize encoding + _normalizeComponentEncoding(components, protocol); + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + var authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + if (components.path !== undefined) { + var s = components.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + uriTokens.push(s); + } + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + return uriTokens.join(""); //merge tokens into a string +} + +function resolveComponents(base, relative) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var skipNormalization = arguments[3]; + + var target = {}; + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; +} + +function resolve(baseURI, relativeURI, options) { + var schemelessOptions = assign({ scheme: 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); +} + +function normalize(uri, options) { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + return uri; +} + +function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + return uriA === uriB; +} + +function escapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); +} + +function unescapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); +} + +var handler = { + scheme: "http", + domainHost: true, + parse: function parse(components, options) { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + return components; + }, + serialize: function serialize(components, options) { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + return components; + } +}; + +var handler$1 = { + scheme: "https", + domainHost: handler.domainHost, + parse: handler.parse, + serialize: handler.serialize +}; + +var O = {}; +var isIRI = true; +//RFC 3986 +var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; +var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive +var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded +//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = +//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) +//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext +//const VCHAR$$ = "[\\x21-\\x7E]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext +//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); +//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); +//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); +var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; +var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; +var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); +var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; +var UNRESERVED = new RegExp(UNRESERVED$$, "g"); +var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); +var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); +var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); +var NOT_HFVALUE = NOT_HFNAME; +function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(UNRESERVED) ? str : decStr; +} +var handler$2 = { + scheme: "mailto", + parse: function parse$$1(components, options) { + var mailtoComponents = components; + var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; + mailtoComponents.path = undefined; + if (mailtoComponents.query) { + var unknownHeaders = false; + var headers = {}; + var hfields = mailtoComponents.query.split("&"); + for (var x = 0, xl = hfields.length; x < xl; ++x) { + var hfield = hfields[x].split("="); + switch (hfield[0]) { + case "to": + var toAddrs = hfield[1].split(","); + for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { + to.push(toAddrs[_x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + if (unknownHeaders) mailtoComponents.headers = headers; + } + mailtoComponents.query = undefined; + for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { + var addr = to[_x2].split("@"); + addr[0] = unescapeComponent(addr[0]); + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + to[_x2] = addr.join("@"); + } + return mailtoComponents; + }, + serialize: function serialize$$1(mailtoComponents, options) { + var components = mailtoComponents; + var to = toArray(mailtoComponents.to); + if (to) { + for (var x = 0, xl = to.length; x < xl; ++x) { + var toAddr = String(to[x]); + var atIdx = toAddr.lastIndexOf("@"); + var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + var domain = toAddr.slice(atIdx + 1); + //convert IDN via punycode + try { + domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); + } catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + to[x] = localPart + "@" + domain; + } + components.path = to.join(","); + } + var headers = mailtoComponents.headers = mailtoComponents.headers || {}; + if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) headers["body"] = mailtoComponents.body; + var fields = []; + for (var name in headers) { + if (headers[name] !== O[name]) { + fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + return components; + } +}; + +var URN_PARSE = /^([^\:]+)\:(.*)/; +//RFC 2141 +var handler$3 = { + scheme: "urn", + parse: function parse$$1(components, options) { + var matches = components.path && components.path.match(URN_PARSE); + var urnComponents = components; + if (matches) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = matches[1].toLowerCase(); + var nss = matches[2]; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options); + } + } else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + return urnComponents; + }, + serialize: function serialize$$1(urnComponents, options) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = urnComponents.nid; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options); + } + var uriComponents = urnComponents; + var nss = urnComponents.nss; + uriComponents.path = (nid || options.nid) + ":" + nss; + return uriComponents; + } +}; + +var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; +//RFC 4122 +var handler$4 = { + scheme: "urn:uuid", + parse: function parse(urnComponents, options) { + var uuidComponents = urnComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + return uuidComponents; + }, + serialize: function serialize(uuidComponents, options) { + var urnComponents = uuidComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + } +}; + +SCHEMES[handler.scheme] = handler; +SCHEMES[handler$1.scheme] = handler$1; +SCHEMES[handler$2.scheme] = handler$2; +SCHEMES[handler$3.scheme] = handler$3; +SCHEMES[handler$4.scheme] = handler$4; + +exports.SCHEMES = SCHEMES; +exports.pctEncChar = pctEncChar; +exports.pctDecChars = pctDecChars; +exports.parse = parse; +exports.removeDotSegments = removeDotSegments; +exports.serialize = serialize; +exports.resolveComponents = resolveComponents; +exports.resolve = resolve; +exports.normalize = normalize; +exports.equal = equal; +exports.escapeComponent = escapeComponent; +exports.unescapeComponent = unescapeComponent; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=uri.all.js.map diff --git a/node_modules/uri-js/dist/es5/uri.all.js.map b/node_modules/uri-js/dist/es5/uri.all.js.map new file mode 100644 index 0000000..536ffa8 --- /dev/null +++ b/node_modules/uri-js/dist/es5/uri.all.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uri.all.js","sources":["../../src/index.ts","../../src/schemes/urn-uuid.ts","../../src/schemes/urn.ts","../../src/schemes/mailto.ts","../../src/schemes/https.ts","../../src/schemes/http.ts","../../src/uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/regexps-iri.ts","../../src/regexps-uri.ts","../../src/util.ts"],"sourcesContent":["import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}"],"names":["SCHEMES","uuid","scheme","urn","mailto","https","http","urnComponents","nss","uuidComponents","toLowerCase","options","error","tolerant","match","UUID","undefined","handler","uriComponents","path","nid","schemeHandler","serialize","urnScheme","parse","matches","components","URN_PARSE","query","fields","join","length","push","name","replace","PCT_ENCODED","decodeUnreserved","toUpperCase","NOT_HFNAME","pctEncChar","headers","NOT_HFVALUE","O","mailtoComponents","body","subject","to","x","localPart","domain","iri","e","punycode","toASCII","unescapeComponent","toUnicode","toAddr","slice","atIdx","NOT_LOCAL_PART","lastIndexOf","String","xl","toArray","addr","unicodeSupport","split","unknownHeaders","hfield","toAddrs","hfields","decStr","UNRESERVED","str","pctDecChars","RegExp","merge","UNRESERVED$$","SOME_DELIMS$$","ATEXT$$","VCHAR$$","PCT_ENCODED$","QTEXT$$","subexp","HEXDIG$$","isIRI","domainHost","port","host","toString","URI_PROTOCOL","IRI_PROTOCOL","ESCAPE","escapeComponent","uriA","uriB","typeOf","equal","uri","normalize","resolveComponents","baseURI","schemelessOptions","relativeURI","assign","resolve","target","fragment","relative","base","userinfo","removeDotSegments","charAt","skipNormalization","uriTokens","s","authority","absolutePath","reference","_recomposeAuthority","protocol","IPV6ADDRESS","test","output","Error","input","im","RDS5","pop","RDS3","RDS2","RDS1","$1","$2","_normalizeIPv6","_normalizeIPv4","_","uriString","isNaN","indexOf","parseInt","NO_MATCH_IS_UNDEFINED","URI_PARSE","newHost","zone","newFirst","newLast","longestZeroFields","index","b","a","allZeroFields","sort","acc","lastLongest","field","reduce","fieldCount","isLastFieldIPv4Address","firstFields","lastFields","lastFieldsStart","Array","IPV4ADDRESS","last","map","_stripLeadingZeros","first","address","reverse","NOT_FRAGMENT","NOT_QUERY","NOT_PATH","NOT_PATH_NOSCHEME","NOT_HOST","NOT_USERINFO","NOT_SCHEME","_normalizeComponentEncoding","newStr","substr","i","fromCharCode","c","c2","c3","il","chr","charCodeAt","encode","decode","ucs2encode","ucs2decode","regexNonASCII","string","mapDomain","regexPunycode","n","delta","handledCPCount","adapt","handledCPCountPlusOne","basicLength","stringFromCharCode","digitToBasic","q","floor","qMinusT","baseMinusT","t","k","bias","tMin","tMax","currentValue","maxInt","m","inputLength","delimiter","initialBias","initialN","fromCodePoint","splice","out","oldi","w","digit","basicToDigit","basic","j","baseMinusTMin","skew","numPoints","firstTime","damp","flag","codePoint","array","value","extra","counter","result","encoded","labels","fn","regexSeparators","parts","RangeError","errors","type","Math","buildExps","IPV6ADDRESS$","ZONEID$","IPV4ADDRESS$","RESERVED$$","SUB_DELIMS$$","IPRIVATE$$","ALPHA$$","DIGIT$$","AUTHORITY_REF$","USERINFO$","HOST$","PORT$","SAMEDOC_REF$","FRAGMENT$","ABSOLUTE_REF$","SCHEME$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","RELATIVE_REF$","PATH_NOSCHEME$","GENERIC_REF$","ABSOLUTE_URI$","HIER_PART$","URI_REFERENCE$","URI$","RELATIVE$","RELATIVE_PART$","AUTHORITY$","PCHAR$","PATH$","SEGMENT_NZ$","SEGMENT_NZ_NC$","SEGMENT$","IP_LITERAL$","REG_NAME$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","H16$","LS32$","DEC_OCTET_RELAXED$","DEC_OCTET$","UCSCHAR$$","GEN_DELIMS$$","SP$$","DQUOTE$$","CR$","obj","key","source","setInterval","call","prototype","o","Object","shift","sets"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/es5/uri.all.min.d.ts b/node_modules/uri-js/dist/es5/uri.all.min.d.ts new file mode 100644 index 0000000..320f534 --- /dev/null +++ b/node_modules/uri-js/dist/es5/uri.all.min.d.ts @@ -0,0 +1,59 @@ +export interface URIComponents { + scheme?: string; + userinfo?: string; + host?: string; + port?: number | string; + path?: string; + query?: string; + fragment?: string; + reference?: string; + error?: string; +} +export interface URIOptions { + scheme?: string; + reference?: string; + tolerant?: boolean; + absolutePath?: boolean; + iri?: boolean; + unicodeSupport?: boolean; + domainHost?: boolean; +} +export interface URISchemeHandler { + scheme: string; + parse(components: ParentComponents, options: Options): Components; + serialize(components: Components, options: Options): ParentComponents; + unicodeSupport?: boolean; + domainHost?: boolean; + absolutePath?: boolean; +} +export interface URIRegExps { + NOT_SCHEME: RegExp; + NOT_USERINFO: RegExp; + NOT_HOST: RegExp; + NOT_PATH: RegExp; + NOT_PATH_NOSCHEME: RegExp; + NOT_QUERY: RegExp; + NOT_FRAGMENT: RegExp; + ESCAPE: RegExp; + UNRESERVED: RegExp; + OTHER_CHARS: RegExp; + PCT_ENCODED: RegExp; + IPV4ADDRESS: RegExp; + IPV6ADDRESS: RegExp; +} +export declare const SCHEMES: { + [scheme: string]: URISchemeHandler; +}; +export declare function pctEncChar(chr: string): string; +export declare function pctDecChars(str: string): string; +export declare function parse(uriString: string, options?: URIOptions): URIComponents; +export declare function removeDotSegments(input: string): string; +export declare function serialize(components: URIComponents, options?: URIOptions): string; +export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; +export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; +export declare function normalize(uri: string, options?: URIOptions): string; +export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; +export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; +export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; +export declare function escapeComponent(str: string, options?: URIOptions): string; +export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/es5/uri.all.min.js b/node_modules/uri-js/dist/es5/uri.all.min.js new file mode 100644 index 0000000..1b791ef --- /dev/null +++ b/node_modules/uri-js/dist/es5/uri.all.min.js @@ -0,0 +1,3 @@ +/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.URI=e.URI||{})}(this,function(e){"use strict";function r(){for(var e=arguments.length,r=Array(e),n=0;n1){r[0]=r[0].slice(0,-1);for(var t=r.length-1,o=1;o1&&(t=n[0]+"@",e=n[1]),e=e.replace(j,"."),t+f(e.split("."),r).join(".")}function p(e){for(var r=[],n=0,t=e.length;n=55296&&o<=56319&&n>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function d(e){for(var r="",n=0,t=e.length;n=194&&o<224){if(t-n>=6){var a=parseInt(e.substr(n+4,2),16);r+=String.fromCharCode((31&o)<<6|63&a)}else r+=e.substr(n,6);n+=6}else if(o>=224){if(t-n>=9){var i=parseInt(e.substr(n+4,2),16),u=parseInt(e.substr(n+7,2),16);r+=String.fromCharCode((15&o)<<12|(63&i)<<6|63&u)}else r+=e.substr(n,9);n+=9}else r+=e.substr(n,3),n+=3}return r}function l(e,r){function n(e){var n=d(e);return n.match(r.UNRESERVED)?n:e}return e.scheme&&(e.scheme=String(e.scheme).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_SCHEME,"")),e.userinfo!==undefined&&(e.userinfo=String(e.userinfo).replace(r.PCT_ENCODED,n).replace(r.NOT_USERINFO,h).replace(r.PCT_ENCODED,o)),e.host!==undefined&&(e.host=String(e.host).replace(r.PCT_ENCODED,n).toLowerCase().replace(r.NOT_HOST,h).replace(r.PCT_ENCODED,o)),e.path!==undefined&&(e.path=String(e.path).replace(r.PCT_ENCODED,n).replace(e.scheme?r.NOT_PATH:r.NOT_PATH_NOSCHEME,h).replace(r.PCT_ENCODED,o)),e.query!==undefined&&(e.query=String(e.query).replace(r.PCT_ENCODED,n).replace(r.NOT_QUERY,h).replace(r.PCT_ENCODED,o)),e.fragment!==undefined&&(e.fragment=String(e.fragment).replace(r.PCT_ENCODED,n).replace(r.NOT_FRAGMENT,h).replace(r.PCT_ENCODED,o)),e}function g(e){return e.replace(/^0*(.*)/,"$1")||"0"}function v(e,r){var n=e.match(r.IPV4ADDRESS)||[],t=R(n,2),o=t[1];return o?o.split(".").map(g).join("."):e}function m(e,r){var n=e.match(r.IPV6ADDRESS)||[],t=R(n,3),o=t[1],a=t[2];if(o){for(var i=o.toLowerCase().split("::").reverse(),u=R(i,2),s=u[0],f=u[1],c=f?f.split(":").map(g):[],p=s.split(":").map(g),h=r.IPV4ADDRESS.test(p[p.length-1]),d=h?7:8,l=p.length-d,m=Array(d),E=0;E1){var A=m.slice(0,y.index),D=m.slice(y.index+y.length);S=A.join(":")+"::"+D.join(":")}else S=m.join(":");return a&&(S+="%"+a),S}return e}function E(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n={},t=!1!==r.iri?N:F;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var o=e.match(J);if(o){K?(n.scheme=o[1],n.userinfo=o[3],n.host=o[4],n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=o[7],n.fragment=o[8],isNaN(n.port)&&(n.port=o[5])):(n.scheme=o[1]||undefined,n.userinfo=-1!==e.indexOf("@")?o[3]:undefined,n.host=-1!==e.indexOf("//")?o[4]:undefined,n.port=parseInt(o[5],10),n.path=o[6]||"",n.query=-1!==e.indexOf("?")?o[7]:undefined,n.fragment=-1!==e.indexOf("#")?o[8]:undefined,isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?o[4]:undefined)),n.host&&(n.host=m(v(n.host,t),t)),n.scheme!==undefined||n.userinfo!==undefined||n.host!==undefined||n.port!==undefined||n.path||n.query!==undefined?n.scheme===undefined?n.reference="relative":n.fragment===undefined?n.reference="absolute":n.reference="uri":n.reference="same-document",r.reference&&"suffix"!==r.reference&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");var a=B[(r.scheme||n.scheme||"").toLowerCase()];if(r.unicodeSupport||a&&a.unicodeSupport)l(n,t);else{if(n.host&&(r.domainHost||a&&a.domainHost))try{n.host=Y.toASCII(n.host.replace(t.PCT_ENCODED,d).toLowerCase())}catch(i){n.error=n.error||"Host's domain name can not be converted to ASCII via punycode: "+i}l(n,F)}a&&a.parse&&a.parse(n,r)}else n.error=n.error||"URI can not be parsed.";return n}function C(e,r){var n=!1!==r.iri?N:F,t=[];return e.userinfo!==undefined&&(t.push(e.userinfo),t.push("@")),e.host!==undefined&&t.push(m(v(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,r,n){return"["+r+(n?"%25"+n:"")+"]"})),"number"==typeof e.port&&(t.push(":"),t.push(e.port.toString(10))),t.length?t.join(""):undefined}function y(e){for(var r=[];e.length;)if(e.match(W))e=e.replace(W,"");else if(e.match(X))e=e.replace(X,"/");else if(e.match(ee))e=e.replace(ee,"/"),r.pop();else if("."===e||".."===e)e="";else{var n=e.match(re);if(!n)throw new Error("Unexpected dot segment condition");var t=n[0];e=e.slice(t.length),r.push(t)}return r.join("")}function S(e){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.iri?N:F,t=[],o=B[(r.scheme||e.scheme||"").toLowerCase()];if(o&&o.serialize&&o.serialize(e,r),e.host)if(n.IPV6ADDRESS.test(e.host));else if(r.domainHost||o&&o.domainHost)try{e.host=r.iri?Y.toUnicode(e.host):Y.toASCII(e.host.replace(n.PCT_ENCODED,d).toLowerCase())}catch(u){e.error=e.error||"Host's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+u}l(e,n),"suffix"!==r.reference&&e.scheme&&(t.push(e.scheme),t.push(":"));var a=C(e,r);if(a!==undefined&&("suffix"!==r.reference&&t.push("//"),t.push(a),e.path&&"/"!==e.path.charAt(0)&&t.push("/")),e.path!==undefined){var i=e.path;r.absolutePath||o&&o.absolutePath||(i=y(i)),a===undefined&&(i=i.replace(/^\/\//,"/%2F")),t.push(i)}return e.query!==undefined&&(t.push("?"),t.push(e.query)),e.fragment!==undefined&&(t.push("#"),t.push(e.fragment)),t.join("")}function A(e,r){var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},t=arguments[3],o={};return t||(e=E(S(e,n),n),r=E(S(r,n),n)),n=n||{},!n.tolerant&&r.scheme?(o.scheme=r.scheme,o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.userinfo!==undefined||r.host!==undefined||r.port!==undefined?(o.userinfo=r.userinfo,o.host=r.host,o.port=r.port,o.path=y(r.path||""),o.query=r.query):(r.path?("/"===r.path.charAt(0)?o.path=y(r.path):(e.userinfo===undefined&&e.host===undefined&&e.port===undefined||e.path?e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:o.path=r.path:o.path="/"+r.path,o.path=y(o.path)),o.query=r.query):(o.path=e.path,r.query!==undefined?o.query=r.query:o.query=e.query),o.userinfo=e.userinfo,o.host=e.host,o.port=e.port),o.scheme=e.scheme),o.fragment=r.fragment,o}function D(e,r,n){var t=i({scheme:"null"},n);return S(A(E(e,t),E(r,t),t,!0),t)}function w(e,r){return"string"==typeof e?e=S(E(e,r),r):"object"===t(e)&&(e=E(S(e,r),r)),e}function b(e,r,n){return"string"==typeof e?e=S(E(e,n),n):"object"===t(e)&&(e=S(e,n)),"string"==typeof r?r=S(E(r,n),n):"object"===t(r)&&(r=S(r,n)),e===r}function x(e,r){return e&&e.toString().replace(r&&r.iri?N.ESCAPE:F.ESCAPE,h)}function O(e,r){return e&&e.toString().replace(r&&r.iri?N.PCT_ENCODED:F.PCT_ENCODED,d)}function I(e){var r=d(e);return r.match(fe)?r:e}var F=u(!1),N=u(!0),R=function(){function e(e,r){var n=[],t=!0,o=!1,a=undefined;try{for(var i,u=e[Symbol.iterator]();!(t=(i=u.next()).done)&&(n.push(i.value),!r||n.length!==r);t=!0);}catch(s){o=!0,a=s}finally{try{!t&&u["return"]&&u["return"]()}finally{if(o)throw a}}return n}return function(r,n){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),T=function(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},H=Math.floor,z=String.fromCharCode,L=function(e){return String.fromCodePoint.apply(String,T(e))},$=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36},M=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},V=function(e,r,n){var t=0;for(e=n?H(e/700):e>>1,e+=H(e/r);e>455;t+=36)e=H(e/35);return H(t+36*e/(e+38))},k=function(e){var r=[],n=e.length,t=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(var u=0;u=128&&s("not-basic"),r.push(e.charCodeAt(u));for(var f=i>0?i+1:0;f=n&&s("invalid-input");var d=$(e.charCodeAt(f++));(d>=36||d>H((_-t)/p))&&s("overflow"),t+=d*p;var l=h<=a?1:h>=a+26?26:h-a;if(dH(_/g)&&s("overflow"),p*=g}var v=r.length+1;a=V(t-c,v,0==c),H(t/v)>_-o&&s("overflow"),o+=H(t/v),t%=v,r.splice(t++,0,o)}return String.fromCodePoint.apply(String,r)},Z=function(e){var r=[];e=p(e);var n=e.length,t=128,o=0,a=72,i=!0,u=!1,f=undefined;try{for(var c,h=e[Symbol.iterator]();!(i=(c=h.next()).done);i=!0){var d=c.value;d<128&&r.push(z(d))}}catch(j){u=!0,f=j}finally{try{!i&&h["return"]&&h["return"]()}finally{if(u)throw f}}var l=r.length,g=l;for(l&&r.push("-");g=t&&AH((_-o)/D)&&s("overflow"),o+=(v-t)*D,t=v;var w=!0,b=!1,x=undefined;try{for(var O,I=e[Symbol.iterator]();!(w=(O=I.next()).done);w=!0){var F=O.value;if(F_&&s("overflow"),F==t){for(var N=o,R=36;;R+=36){var T=R<=a?1:R>=a+26?26:R-a;if(NA-Z\\x5E-\\x7E]",'[\\"\\\\]'),fe=new RegExp(ae,"g"),ce=new RegExp(ue,"g"),pe=new RegExp(r("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',se),"g"),he=new RegExp(r("[^]",ae,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),de=he,le={scheme:"mailto",parse:function(e,r){var n=e,t=n.to=n.path?n.path.split(","):[];if(n.path=undefined,n.query){for(var o=!1,a={},i=n.query.split("&"),u=0,s=i.length;u):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n"]} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/index.d.ts b/node_modules/uri-js/dist/esnext/index.d.ts new file mode 100644 index 0000000..be95efb --- /dev/null +++ b/node_modules/uri-js/dist/esnext/index.d.ts @@ -0,0 +1 @@ +export * from "./uri"; diff --git a/node_modules/uri-js/dist/esnext/index.js b/node_modules/uri-js/dist/esnext/index.js new file mode 100644 index 0000000..de8868f --- /dev/null +++ b/node_modules/uri-js/dist/esnext/index.js @@ -0,0 +1,13 @@ +import { SCHEMES } from "./uri"; +import http from "./schemes/http"; +SCHEMES[http.scheme] = http; +import https from "./schemes/https"; +SCHEMES[https.scheme] = https; +import mailto from "./schemes/mailto"; +SCHEMES[mailto.scheme] = mailto; +import urn from "./schemes/urn"; +SCHEMES[urn.scheme] = urn; +import uuid from "./schemes/urn-uuid"; +SCHEMES[uuid.scheme] = uuid; +export * from "./uri"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/index.js.map b/node_modules/uri-js/dist/esnext/index.js.map new file mode 100644 index 0000000..e9e4008 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAE9B,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEhC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAE1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAE5B,cAAc,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.d.ts b/node_modules/uri-js/dist/esnext/regexps-iri.d.ts new file mode 100644 index 0000000..6fc0f5d --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-iri.d.ts @@ -0,0 +1,3 @@ +import { URIRegExps } from "./uri"; +declare const _default: URIRegExps; +export default _default; diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.js b/node_modules/uri-js/dist/esnext/regexps-iri.js new file mode 100644 index 0000000..86239cf --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-iri.js @@ -0,0 +1,3 @@ +import { buildExps } from "./regexps-uri"; +export default buildExps(true); +//# sourceMappingURL=regexps-iri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-iri.js.map b/node_modules/uri-js/dist/esnext/regexps-iri.js.map new file mode 100644 index 0000000..2269c58 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-iri.js.map @@ -0,0 +1 @@ +{"version":3,"file":"regexps-iri.js","sourceRoot":"","sources":["../../src/regexps-iri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,eAAe,SAAS,CAAC,IAAI,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.d.ts b/node_modules/uri-js/dist/esnext/regexps-uri.d.ts new file mode 100644 index 0000000..10ec87b --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-uri.d.ts @@ -0,0 +1,4 @@ +import { URIRegExps } from "./uri"; +export declare function buildExps(isIRI: boolean): URIRegExps; +declare const _default: URIRegExps; +export default _default; diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.js b/node_modules/uri-js/dist/esnext/regexps-uri.js new file mode 100644 index 0000000..6e7e9a0 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-uri.js @@ -0,0 +1,42 @@ +import { merge, subexp } from "./util"; +export function buildExps(isIRI) { + const ALPHA$$ = "[A-Za-z]", CR$ = "[\\x0D]", DIGIT$$ = "[0-9]", DQUOTE$$ = "[\\x22]", HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive + LF$$ = "[\\x0A]", SP$$ = "[\\x20]", PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), H16$ = subexp(HEXDIG$$ + "{1,4}"), LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), PORT$ = subexp(DIGIT$$ + "*"), AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), SEGMENT$ = subexp(PCHAR$ + "*"), SEGMENT_NZ$ = subexp(PCHAR$ + "+"), SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; + return { + NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED: new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; +} +export default buildExps(false); +//# sourceMappingURL=regexps-uri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/regexps-uri.js.map b/node_modules/uri-js/dist/esnext/regexps-uri.js.map new file mode 100644 index 0000000..cb028b8 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/regexps-uri.js.map @@ -0,0 +1 @@ +{"version":3,"file":"regexps-uri.js","sourceRoot":"","sources":["../../src/regexps-uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,oBAAoB,KAAa;IACtC,MACC,OAAO,GAAG,UAAU,EACpB,GAAG,GAAG,SAAS,EACf,OAAO,GAAG,OAAO,EACjB,QAAQ,GAAG,SAAS,EACpB,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,EAAG,kBAAkB;IAC1D,IAAI,GAAG,SAAS,EAChB,IAAI,GAAG,SAAS,EAChB,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,aAAa,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAG,UAAU;IACvO,YAAY,GAAG,yBAAyB,EACxC,YAAY,GAAG,qCAAqC,EACpD,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,EAC9C,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,IAAI,EAAG,0CAA0C;IACrJ,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAG,QAAQ;IAC1D,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,EACnE,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,EACxE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,EACjG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,EACnK,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,EAAG,uBAAuB;IAC3M,YAAY,GAAG,MAAM,CAAC,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,GAAG,KAAK,GAAG,kBAAkB,CAAC,EAChI,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,EACjC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,EAChE,aAAa,GAAG,MAAM,CAA6D,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAkD,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAkC,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAU,IAAI,GAAG,KAAK,GAAY,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAkC,KAAK,CAAC,EAAE,8CAA8C;IACxK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,GAAkC,IAAI,CAAE,EAAE,6CAA6C;IACvK,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,CAAwC,EAAE,4BAA4B;IACtJ,YAAY,GAAG,MAAM,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACxK,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,EAAG,UAAU;IAC9E,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,EAAG,UAAU;IAClE,kBAAkB,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,EAAG,sCAAsC;IACzI,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,EAClG,WAAW,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,kBAAkB,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC,EAAG,UAAU;IACrH,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,EACxF,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC,EAC5F,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,EAC7B,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EACxF,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,EACnF,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAC/B,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAClC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,EACtG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,EACtD,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,EAAG,YAAY;IACzF,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC,EAAG,YAAY;IACtE,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,EAAG,YAAY;IACnE,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,EAClC,KAAK,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACtH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,EAC3E,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,EACtD,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACpI,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,EAC5G,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,CAAC,EACxI,SAAS,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,EACnG,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,EAC/C,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,EAEnF,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC7U,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC/T,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACrS,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,EAC5D,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,CAChH;IAED,OAAO;QACN,UAAU,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC;QAC3E,YAAY,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAC9E,QAAQ,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAChF,QAAQ,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAChF,iBAAiB,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QACtF,SAAS,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QACtG,YAAY,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC;QAC7F,MAAM,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC;QAClE,UAAU,EAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAC1C,WAAW,EAAG,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QACxE,WAAW,EAAG,IAAI,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAC3C,WAAW,EAAG,IAAI,MAAM,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC;QACpD,WAAW,EAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAE,sCAAsC;KACrL,CAAC;AACH,CAAC;AAED,eAAe,SAAS,CAAC,KAAK,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/http.d.ts b/node_modules/uri-js/dist/esnext/schemes/http.d.ts new file mode 100644 index 0000000..3899956 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/http.d.ts @@ -0,0 +1,3 @@ +import { URISchemeHandler } from "../uri"; +declare const handler: URISchemeHandler; +export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/http.js b/node_modules/uri-js/dist/esnext/schemes/http.js new file mode 100644 index 0000000..a280369 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/http.js @@ -0,0 +1,27 @@ +const handler = { + scheme: "http", + domainHost: true, + parse: function (components, options) { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + return components; + }, + serialize: function (components, options) { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + return components; + } +}; +export default handler; +//# sourceMappingURL=http.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/http.js.map b/node_modules/uri-js/dist/esnext/schemes/http.js.map new file mode 100644 index 0000000..83e2ad5 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/http.js.map @@ -0,0 +1 @@ +{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/schemes/http.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,MAAM;IAEf,UAAU,EAAG,IAAI;IAEjB,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,qBAAqB;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,6BAA6B,CAAC;SACrE;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,SAAS,EAAG,UAAU,UAAwB,EAAE,OAAkB;QACjE,4BAA4B;QAC5B,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,EAAE;YACnH,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;SAC5B;QAED,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACrB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;SACtB;QAED,mDAAmD;QACnD,oEAAoE;QACpE,wBAAwB;QAExB,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/https.d.ts b/node_modules/uri-js/dist/esnext/schemes/https.d.ts new file mode 100644 index 0000000..3899956 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/https.d.ts @@ -0,0 +1,3 @@ +import { URISchemeHandler } from "../uri"; +declare const handler: URISchemeHandler; +export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/https.js b/node_modules/uri-js/dist/esnext/schemes/https.js new file mode 100644 index 0000000..fc3c71a --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/https.js @@ -0,0 +1,9 @@ +import http from "./http"; +const handler = { + scheme: "https", + domainHost: http.domainHost, + parse: http.parse, + serialize: http.serialize +}; +export default handler; +//# sourceMappingURL=https.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/https.js.map b/node_modules/uri-js/dist/esnext/schemes/https.js.map new file mode 100644 index 0000000..385b8ef --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/https.js.map @@ -0,0 +1 @@ +{"version":3,"file":"https.js","sourceRoot":"","sources":["../../../src/schemes/https.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,OAAO,GAAoB;IAChC,MAAM,EAAG,OAAO;IAChB,UAAU,EAAG,IAAI,CAAC,UAAU;IAC5B,KAAK,EAAG,IAAI,CAAC,KAAK;IAClB,SAAS,EAAG,IAAI,CAAC,SAAS;CAC1B,CAAA;AAED,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts b/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts new file mode 100644 index 0000000..b0db4bf --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts @@ -0,0 +1,12 @@ +import { URISchemeHandler, URIComponents } from "../uri"; +export interface MailtoHeaders { + [hfname: string]: string; +} +export interface MailtoComponents extends URIComponents { + to: Array; + headers?: MailtoHeaders; + subject?: string; + body?: string; +} +declare const handler: URISchemeHandler; +export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.js b/node_modules/uri-js/dist/esnext/schemes/mailto.js new file mode 100644 index 0000000..2553713 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/mailto.js @@ -0,0 +1,148 @@ +import { pctEncChar, pctDecChars, unescapeComponent } from "../uri"; +import punycode from "punycode"; +import { merge, subexp, toUpperCase, toArray } from "../util"; +const O = {}; +const isIRI = true; +//RFC 3986 +const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; +const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive +const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded +//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = +//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) +//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext +//const VCHAR$$ = "[\\x21-\\x7E]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext +//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); +//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); +//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); +const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; +const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; +const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); +const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*"); +const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$); +const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$); +const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"'); +//RFC 6068 +const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126 +const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; +const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$); +const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]"); +const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$); +const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$); +const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*"); +const HFNAME$ = subexp(QCHAR$ + "*"); +const HFVALUE$ = HFNAME$; +const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$); +const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*"); +const HFIELDS$ = subexp("\\?" + HFIELDS2$); +const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$"); +const UNRESERVED = new RegExp(UNRESERVED$$, "g"); +const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); +const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); +const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g"); +const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); +const NOT_HFVALUE = NOT_HFNAME; +const TO = new RegExp("^" + TO$ + "$"); +const HFIELDS = new RegExp("^" + HFIELDS2$ + "$"); +function decodeUnreserved(str) { + const decStr = pctDecChars(str); + return (!decStr.match(UNRESERVED) ? str : decStr); +} +const handler = { + scheme: "mailto", + parse: function (components, options) { + const mailtoComponents = components; + const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []); + mailtoComponents.path = undefined; + if (mailtoComponents.query) { + let unknownHeaders = false; + const headers = {}; + const hfields = mailtoComponents.query.split("&"); + for (let x = 0, xl = hfields.length; x < xl; ++x) { + const hfield = hfields[x].split("="); + switch (hfield[0]) { + case "to": + const toAddrs = hfield[1].split(","); + for (let x = 0, xl = toAddrs.length; x < xl; ++x) { + to.push(toAddrs[x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + if (unknownHeaders) + mailtoComponents.headers = headers; + } + mailtoComponents.query = undefined; + for (let x = 0, xl = to.length; x < xl; ++x) { + const addr = to[x].split("@"); + addr[0] = unescapeComponent(addr[0]); + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } + catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } + else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + to[x] = addr.join("@"); + } + return mailtoComponents; + }, + serialize: function (mailtoComponents, options) { + const components = mailtoComponents; + const to = toArray(mailtoComponents.to); + if (to) { + for (let x = 0, xl = to.length; x < xl; ++x) { + const toAddr = String(to[x]); + const atIdx = toAddr.lastIndexOf("@"); + const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + let domain = toAddr.slice(atIdx + 1); + //convert IDN via punycode + try { + domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain)); + } + catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + to[x] = localPart + "@" + domain; + } + components.path = to.join(","); + } + const headers = mailtoComponents.headers = mailtoComponents.headers || {}; + if (mailtoComponents.subject) + headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) + headers["body"] = mailtoComponents.body; + const fields = []; + for (const name in headers) { + if (headers[name] !== O[name]) { + fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + + "=" + + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + return components; + } +}; +export default handler; +//# sourceMappingURL=mailto.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/mailto.js.map b/node_modules/uri-js/dist/esnext/schemes/mailto.js.map new file mode 100644 index 0000000..82dba9a --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/mailto.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mailto.js","sourceRoot":"","sources":["../../../src/schemes/mailto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts new file mode 100644 index 0000000..261ddce --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts @@ -0,0 +1,7 @@ +import { URISchemeHandler, URIOptions } from "../uri"; +import { URNComponents } from "./urn"; +export interface UUIDComponents extends URNComponents { + uuid?: string; +} +declare const handler: URISchemeHandler; +export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js new file mode 100644 index 0000000..044c8a8 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js @@ -0,0 +1,23 @@ +const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; +const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/; +//RFC 4122 +const handler = { + scheme: "urn:uuid", + parse: function (urnComponents, options) { + const uuidComponents = urnComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + return uuidComponents; + }, + serialize: function (uuidComponents, options) { + const urnComponents = uuidComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + }, +}; +export default handler; +//# sourceMappingURL=urn-uuid.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map new file mode 100644 index 0000000..3b7a8b3 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map @@ -0,0 +1 @@ +{"version":3,"file":"urn-uuid.js","sourceRoot":"","sources":["../../../src/schemes/urn-uuid.ts"],"names":[],"mappings":"AAQA,MAAM,IAAI,GAAG,0DAA0D,CAAC;AACxE,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,UAAU;AACV,MAAM,OAAO,GAA+D;IAC3E,MAAM,EAAG,UAAU;IAEnB,KAAK,EAAG,UAAU,aAA2B,EAAE,OAAkB;QAChE,MAAM,cAAc,GAAG,aAA+B,CAAC;QACvD,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QACzC,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC;QAE/B,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;YACpF,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,IAAI,oBAAoB,CAAC;SACpE;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,SAAS,EAAG,UAAU,cAA6B,EAAE,OAAkB;QACtE,MAAM,aAAa,GAAG,cAA+B,CAAC;QACtD,gBAAgB;QAChB,aAAa,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.d.ts b/node_modules/uri-js/dist/esnext/schemes/urn.d.ts new file mode 100644 index 0000000..4948105 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn.d.ts @@ -0,0 +1,10 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; +export interface URNComponents extends URIComponents { + nid?: string; + nss?: string; +} +export interface URNOptions extends URIOptions { + nid?: string; +} +declare const handler: URISchemeHandler; +export default handler; diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.js b/node_modules/uri-js/dist/esnext/schemes/urn.js new file mode 100644 index 0000000..b53161c --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn.js @@ -0,0 +1,49 @@ +import { SCHEMES } from "../uri"; +const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})"; +const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})"; +const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]"; +const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)"; +const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$"); +const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$"); +const URN_PARSE = /^([^\:]+)\:(.*)/; +const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g; +//RFC 2141 +const handler = { + scheme: "urn", + parse: function (components, options) { + const matches = components.path && components.path.match(URN_PARSE); + let urnComponents = components; + if (matches) { + const scheme = options.scheme || urnComponents.scheme || "urn"; + const nid = matches[1].toLowerCase(); + const nss = matches[2]; + const urnScheme = `${scheme}:${options.nid || nid}`; + const schemeHandler = SCHEMES[urnScheme]; + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options); + } + } + else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + return urnComponents; + }, + serialize: function (urnComponents, options) { + const scheme = options.scheme || urnComponents.scheme || "urn"; + const nid = urnComponents.nid; + const urnScheme = `${scheme}:${options.nid || nid}`; + const schemeHandler = SCHEMES[urnScheme]; + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options); + } + const uriComponents = urnComponents; + const nss = urnComponents.nss; + uriComponents.path = `${nid || options.nid}:${nss}`; + return uriComponents; + }, +}; +export default handler; +//# sourceMappingURL=urn.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/schemes/urn.js.map b/node_modules/uri-js/dist/esnext/schemes/urn.js.map new file mode 100644 index 0000000..ea43b0b --- /dev/null +++ b/node_modules/uri-js/dist/esnext/schemes/urn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/schemes/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,QAAQ,CAAC;AAW7C,MAAM,IAAI,GAAG,qCAAqC,CAAC;AACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,OAAO,GAAG,mEAAmE,CAAC;AACpF,MAAM,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;AAC7D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,YAAY,GAAG,iDAAiD,CAAC;AAEvE,UAAU;AACV,MAAM,OAAO,GAA8C;IAC1D,MAAM,EAAG,KAAK;IAEd,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,aAAa,GAAG,UAA2B,CAAC;QAEhD,IAAI,OAAO,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YAE/B,IAAI,aAAa,EAAE;gBAClB,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;aAC7E;SACD;aAAM;YACN,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,wBAAwB,CAAC;SACtE;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,SAAS,EAAG,UAAU,aAA2B,EAAE,OAAkB;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YAClB,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;SACjF;QAED,MAAM,aAAa,GAAG,aAA8B,CAAC;QACrD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAEpD,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/uri.d.ts b/node_modules/uri-js/dist/esnext/uri.d.ts new file mode 100644 index 0000000..320f534 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/uri.d.ts @@ -0,0 +1,59 @@ +export interface URIComponents { + scheme?: string; + userinfo?: string; + host?: string; + port?: number | string; + path?: string; + query?: string; + fragment?: string; + reference?: string; + error?: string; +} +export interface URIOptions { + scheme?: string; + reference?: string; + tolerant?: boolean; + absolutePath?: boolean; + iri?: boolean; + unicodeSupport?: boolean; + domainHost?: boolean; +} +export interface URISchemeHandler { + scheme: string; + parse(components: ParentComponents, options: Options): Components; + serialize(components: Components, options: Options): ParentComponents; + unicodeSupport?: boolean; + domainHost?: boolean; + absolutePath?: boolean; +} +export interface URIRegExps { + NOT_SCHEME: RegExp; + NOT_USERINFO: RegExp; + NOT_HOST: RegExp; + NOT_PATH: RegExp; + NOT_PATH_NOSCHEME: RegExp; + NOT_QUERY: RegExp; + NOT_FRAGMENT: RegExp; + ESCAPE: RegExp; + UNRESERVED: RegExp; + OTHER_CHARS: RegExp; + PCT_ENCODED: RegExp; + IPV4ADDRESS: RegExp; + IPV6ADDRESS: RegExp; +} +export declare const SCHEMES: { + [scheme: string]: URISchemeHandler; +}; +export declare function pctEncChar(chr: string): string; +export declare function pctDecChars(str: string): string; +export declare function parse(uriString: string, options?: URIOptions): URIComponents; +export declare function removeDotSegments(input: string): string; +export declare function serialize(components: URIComponents, options?: URIOptions): string; +export declare function resolveComponents(base: URIComponents, relative: URIComponents, options?: URIOptions, skipNormalization?: boolean): URIComponents; +export declare function resolve(baseURI: string, relativeURI: string, options?: URIOptions): string; +export declare function normalize(uri: string, options?: URIOptions): string; +export declare function normalize(uri: URIComponents, options?: URIOptions): URIComponents; +export declare function equal(uriA: string, uriB: string, options?: URIOptions): boolean; +export declare function equal(uriA: URIComponents, uriB: URIComponents, options?: URIOptions): boolean; +export declare function escapeComponent(str: string, options?: URIOptions): string; +export declare function unescapeComponent(str: string, options?: URIOptions): string; diff --git a/node_modules/uri-js/dist/esnext/uri.js b/node_modules/uri-js/dist/esnext/uri.js new file mode 100644 index 0000000..2fb6d71 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/uri.js @@ -0,0 +1,480 @@ +/** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ +/** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ +import URI_PROTOCOL from "./regexps-uri"; +import IRI_PROTOCOL from "./regexps-iri"; +import punycode from "punycode"; +import { toUpperCase, typeOf, assign } from "./util"; +export const SCHEMES = {}; +export function pctEncChar(chr) { + const c = chr.charCodeAt(0); + let e; + if (c < 16) + e = "%0" + c.toString(16).toUpperCase(); + else if (c < 128) + e = "%" + c.toString(16).toUpperCase(); + else if (c < 2048) + e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); + else + e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); + return e; +} +export function pctDecChars(str) { + let newStr = ""; + let i = 0; + const il = str.length; + while (i < il) { + const c = parseInt(str.substr(i + 1, 2), 16); + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } + else if (c >= 194 && c < 224) { + if ((il - i) >= 6) { + const c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + } + else { + newStr += str.substr(i, 6); + } + i += 6; + } + else if (c >= 224) { + if ((il - i) >= 9) { + const c2 = parseInt(str.substr(i + 4, 2), 16); + const c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + } + else { + newStr += str.substr(i, 9); + } + i += 9; + } + else { + newStr += str.substr(i, 3); + i += 3; + } + } + return newStr; +} +function _normalizeComponentEncoding(components, protocol) { + function decodeUnreserved(str) { + const decStr = pctDecChars(str); + return (!decStr.match(protocol.UNRESERVED) ? str : decStr); + } + if (components.scheme) + components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) + components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) + components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) + components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) + components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) + components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + return components; +} +; +function _stripLeadingZeros(str) { + return str.replace(/^0*(.*)/, "$1") || "0"; +} +function _normalizeIPv4(host, protocol) { + const matches = host.match(protocol.IPV4ADDRESS) || []; + const [, address] = matches; + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } + else { + return host; + } +} +function _normalizeIPv6(host, protocol) { + const matches = host.match(protocol.IPV6ADDRESS) || []; + const [, address, zone] = matches; + if (address) { + const [last, first] = address.toLowerCase().split('::').reverse(); + const firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + const lastFields = last.split(":").map(_stripLeadingZeros); + const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + const fieldCount = isLastFieldIPv4Address ? 7 : 8; + const lastFieldsStart = lastFields.length - fieldCount; + const fields = Array(fieldCount); + for (let x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + const allZeroFields = fields.reduce((acc, field, index) => { + if (!field || field === "0") { + const lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } + else { + acc.push({ index, length: 1 }); + } + } + return acc; + }, []); + const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0]; + let newHost; + if (longestZeroFields && longestZeroFields.length > 1) { + const newFirst = fields.slice(0, longestZeroFields.index); + const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } + else { + newHost = fields.join(":"); + } + if (zone) { + newHost += "%" + zone; + } + return newHost; + } + else { + return host; + } +} +const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; +const NO_MATCH_IS_UNDEFINED = ("").match(/(){0}/)[1] === undefined; +export function parse(uriString, options = {}) { + const components = {}; + const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); + if (options.reference === "suffix") + uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + const matches = uriString.match(URI_PARSE); + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } + else { //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined); + components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined); + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined); + components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined); + //fix port number + if (isNaN(components.port)) { + components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined); + } + } + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } + else if (components.scheme === undefined) { + components.reference = "relative"; + } + else if (components.fragment === undefined) { + components.reference = "absolute"; + } + else { + components.reference = "uri"; + } + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + //find scheme handler + const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } + catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } + else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } + else { + components.error = components.error || "URI can not be parsed."; + } + return components; +} +; +function _recomposeAuthority(components, options) { + const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); + const uriTokens = []; + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]")); + } + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + return uriTokens.length ? uriTokens.join("") : undefined; +} +; +const RDS1 = /^\.\.?\//; +const RDS2 = /^\/\.(\/|$)/; +const RDS3 = /^\/\.\.(\/|$)/; +const RDS4 = /^\.\.?$/; +const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; +export function removeDotSegments(input) { + const output = []; + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } + else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } + else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } + else if (input === "." || input === "..") { + input = ""; + } + else { + const im = input.match(RDS5); + if (im) { + const s = im[0]; + input = input.slice(s.length); + output.push(s); + } + else { + throw new Error("Unexpected dot segment condition"); + } + } + } + return output.join(""); +} +; +export function serialize(components, options = {}) { + const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL); + const uriTokens = []; + //find scheme handler + const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) + schemeHandler.serialize(components, options); + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) { + //TODO: normalize IPv6 address as per RFC 5952 + } + //if host component is a domain name + else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) { + //convert IDN via punycode + try { + components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host)); + } + catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + //normalize encoding + _normalizeComponentEncoding(components, protocol); + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + const authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + if (components.path !== undefined) { + let s = components.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + uriTokens.push(s); + } + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + return uriTokens.join(""); //merge tokens into a string +} +; +export function resolveComponents(base, relative, options = {}, skipNormalization) { + const target = {}; + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } + else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } + else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } + else { + target.query = base.query; + } + } + else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } + else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } + else if (!base.path) { + target.path = relative.path; + } + else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; +} +; +export function resolve(baseURI, relativeURI, options) { + const schemelessOptions = assign({ scheme: 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); +} +; +export function normalize(uri, options) { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } + else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + return uri; +} +; +export function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } + else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } + else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + return uriA === uriB; +} +; +export function escapeComponent(str, options) { + return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar); +} +; +export function unescapeComponent(str, options) { + return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars); +} +; +//# sourceMappingURL=uri.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/uri.js.map b/node_modules/uri-js/dist/esnext/uri.js.map new file mode 100644 index 0000000..e1d831c --- /dev/null +++ b/node_modules/uri-js/dist/esnext/uri.js.map @@ -0,0 +1 @@ +{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/util.d.ts b/node_modules/uri-js/dist/esnext/util.d.ts new file mode 100644 index 0000000..8b484cd --- /dev/null +++ b/node_modules/uri-js/dist/esnext/util.d.ts @@ -0,0 +1,6 @@ +export declare function merge(...sets: Array): string; +export declare function subexp(str: string): string; +export declare function typeOf(o: any): string; +export declare function toUpperCase(str: string): string; +export declare function toArray(obj: any): Array; +export declare function assign(target: object, source: any): any; diff --git a/node_modules/uri-js/dist/esnext/util.js b/node_modules/uri-js/dist/esnext/util.js new file mode 100644 index 0000000..45af46f --- /dev/null +++ b/node_modules/uri-js/dist/esnext/util.js @@ -0,0 +1,36 @@ +export function merge(...sets) { + if (sets.length > 1) { + sets[0] = sets[0].slice(0, -1); + const xl = sets.length - 1; + for (let x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } + else { + return sets[0]; + } +} +export function subexp(str) { + return "(?:" + str + ")"; +} +export function typeOf(o) { + return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()); +} +export function toUpperCase(str) { + return str.toUpperCase(); +} +export function toArray(obj) { + return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : []; +} +export function assign(target, source) { + const obj = target; + if (source) { + for (const key in source) { + obj[key] = source[key]; + } + } + return obj; +} +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/uri-js/dist/esnext/util.js.map b/node_modules/uri-js/dist/esnext/util.js.map new file mode 100644 index 0000000..05d9df0 --- /dev/null +++ b/node_modules/uri-js/dist/esnext/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAkB;IAC1C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrB;SAAM;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;KACf;AACF,CAAC;AAED,MAAM,iBAAiB,GAAU;IAChC,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,iBAAiB,CAAK;IAC3B,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpJ,CAAC;AAED,MAAM,sBAAsB,GAAU;IACrC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,kBAAkB,GAAO;IAC9B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvM,CAAC;AAGD,MAAM,iBAAiB,MAAc,EAAE,MAAW;IACjD,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,IAAI,MAAM,EAAE;QACX,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACvB;KACD;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/node_modules/uri-js/package.json b/node_modules/uri-js/package.json new file mode 100644 index 0000000..b8271f8 --- /dev/null +++ b/node_modules/uri-js/package.json @@ -0,0 +1,93 @@ +{ + "_from": "uri-js@^4.2.2", + "_id": "uri-js@4.2.2", + "_inBundle": false, + "_integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "_location": "/uri-js", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "uri-js@^4.2.2", + "name": "uri-js", + "escapedName": "uri-js", + "rawSpec": "^4.2.2", + "saveSpec": null, + "fetchSpec": "^4.2.2" + }, + "_requiredBy": [ + "/ajv" + ], + "_resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "_shasum": "94c540e1ff772956e2299507c010aea6c8838eb0", + "_spec": "uri-js@^4.2.2", + "_where": "/home/peter/www/prive/cypress-test/node_modules/ajv", + "author": { + "name": "Gary Court", + "email": "gary.court@gmail.com" + }, + "bugs": { + "url": "https://github.com/garycourt/uri-js/issues" + }, + "bundleDependencies": false, + "dependencies": { + "punycode": "^2.1.0" + }, + "deprecated": false, + "description": "An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-plugin-external-helpers": "^6.22.0", + "babel-preset-latest": "^6.24.1", + "mocha": "^3.2.0", + "mocha-qunit-ui": "^0.1.3", + "rollup": "^0.41.6", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-node-resolve": "^2.0.0", + "sorcery": "^0.10.0", + "typescript": "^2.8.1", + "uglify-js": "^2.8.14" + }, + "directories": { + "test": "tests" + }, + "homepage": "https://github.com/garycourt/uri-js", + "keywords": [ + "URI", + "IRI", + "IDN", + "URN", + "UUID", + "HTTP", + "HTTPS", + "MAILTO", + "RFC3986", + "RFC3987", + "RFC5891", + "RFC2616", + "RFC2818", + "RFC2141", + "RFC4122", + "RFC4291", + "RFC5952", + "RFC6068", + "RFC6874" + ], + "license": "BSD-2-Clause", + "main": "dist/es5/uri.all.js", + "name": "uri-js", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/garycourt/uri-js.git" + }, + "scripts": { + "build": "npm run build:esnext && npm run build:es5 && npm run build:es5:min", + "build:es5": "rollup -c && cp dist/esnext/uri.d.ts dist/es5/uri.all.d.ts && npm run build:es5:fix-sourcemap", + "build:es5:fix-sourcemap": "sorcery -i dist/es5/uri.all.js", + "build:es5:min": "uglifyjs dist/es5/uri.all.js --support-ie8 --output dist/es5/uri.all.min.js --in-source-map dist/es5/uri.all.js.map --source-map uri.all.min.js.map --comments --compress --mangle --pure-funcs merge subexp && mv uri.all.min.js.map dist/es5/ && cp dist/es5/uri.all.d.ts dist/es5/uri.all.min.d.ts", + "build:esnext": "tsc", + "test": "mocha -u mocha-qunit-ui dist/es5/uri.all.js tests/tests.js" + }, + "types": "dist/es5/uri.all.d.ts", + "version": "4.2.2" +} diff --git a/node_modules/uri-js/rollup.config.js b/node_modules/uri-js/rollup.config.js new file mode 100644 index 0000000..5bb8b05 --- /dev/null +++ b/node_modules/uri-js/rollup.config.js @@ -0,0 +1,32 @@ +import resolve from 'rollup-plugin-node-resolve'; +import babel from 'rollup-plugin-babel'; +const packageJson = require('./package.json'); + +export default { + entry : "dist/esnext/index.js", + format : "umd", + moduleName : "URI", + plugins: [ + resolve({ + module: true, + jsnext: true, + preferBuiltins: false + }), + + babel({ + "presets": [ + ["latest", { + "es2015": { + "modules": false + } + }] + ], + "plugins": ["external-helpers"], + "externalHelpers": false + } +) + ], + dest : "dist/es5/uri.all.js", + sourceMap: true, + banner: "/** @license URI.js v" + packageJson.version + " (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */" +} diff --git a/node_modules/uri-js/src/index.ts b/node_modules/uri-js/src/index.ts new file mode 100644 index 0000000..6532a1b --- /dev/null +++ b/node_modules/uri-js/src/index.ts @@ -0,0 +1,18 @@ +import { SCHEMES } from "./uri"; + +import http from "./schemes/http"; +SCHEMES[http.scheme] = http; + +import https from "./schemes/https"; +SCHEMES[https.scheme] = https; + +import mailto from "./schemes/mailto"; +SCHEMES[mailto.scheme] = mailto; + +import urn from "./schemes/urn"; +SCHEMES[urn.scheme] = urn; + +import uuid from "./schemes/urn-uuid"; +SCHEMES[uuid.scheme] = uuid; + +export * from "./uri"; diff --git a/node_modules/uri-js/src/punycode.d.ts b/node_modules/uri-js/src/punycode.d.ts new file mode 100644 index 0000000..4ecbd34 --- /dev/null +++ b/node_modules/uri-js/src/punycode.d.ts @@ -0,0 +1,24 @@ +declare module 'punycode' { + function ucs2decode(string:string):Array; + function ucs2encode(array:Array):string; + function decode(string:string):string; + function encode(string:string):string; + function toASCII(string:string):string; + function toUnicode(string:string):string; + + interface Punycode { + 'version': '2.2.0'; + 'ucs2': { + 'decode': typeof ucs2decode; + 'encode': typeof ucs2encode; + }, + 'decode': typeof decode; + 'encode': typeof encode; + 'toASCII': typeof toASCII; + 'toUnicode': typeof toUnicode; + } + + const punycode:Punycode; + + export default punycode; +} diff --git a/node_modules/uri-js/src/regexps-iri.ts b/node_modules/uri-js/src/regexps-iri.ts new file mode 100644 index 0000000..8bd605b --- /dev/null +++ b/node_modules/uri-js/src/regexps-iri.ts @@ -0,0 +1,4 @@ +import { URIRegExps } from "./uri"; +import { buildExps } from "./regexps-uri"; + +export default buildExps(true); diff --git a/node_modules/uri-js/src/regexps-uri.ts b/node_modules/uri-js/src/regexps-uri.ts new file mode 100644 index 0000000..8d6b547 --- /dev/null +++ b/node_modules/uri-js/src/regexps-uri.ts @@ -0,0 +1,89 @@ +import { URIRegExps } from "./uri"; +import { merge, subexp } from "./util"; + +export function buildExps(isIRI:boolean):URIRegExps { + const + ALPHA$$ = "[A-Za-z]", + CR$ = "[\\x0D]", + DIGIT$$ = "[0-9]", + DQUOTE$$ = "[\\x22]", + HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), //case-insensitive + LF$$ = "[\\x0A]", + SP$$ = "[\\x20]", + PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", + SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", + RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), + UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), + SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), + USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), + DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), + DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), + H16$ = subexp(HEXDIG$$ + "{1,4}"), + LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), + IPV6ADDRESS1$ = subexp( subexp(H16$ + "\\:") + "{6}" + LS32$), // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp( "\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp( H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$ ), //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:" ), //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), + ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), + IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), + HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), + PORT$ = subexp(DIGIT$$ + "*"), + AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), + PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), + SEGMENT$ = subexp(PCHAR$ + "*"), + SEGMENT_NZ$ = subexp(PCHAR$ + "+"), + SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), + PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), + PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", + PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), + FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), + HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), + RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), + ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), + + GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", + SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$" + ; + + return { + NOT_SCHEME : new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO : new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST : new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH : new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME : new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT : new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE : new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED : new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS : new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED : new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS : new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS : new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; +} + +export default buildExps(false); diff --git a/node_modules/uri-js/src/schemes/http.ts b/node_modules/uri-js/src/schemes/http.ts new file mode 100644 index 0000000..3e53145 --- /dev/null +++ b/node_modules/uri-js/src/schemes/http.ts @@ -0,0 +1,36 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; + +const handler:URISchemeHandler = { + scheme : "http", + + domainHost : true, + + parse : function (components:URIComponents, options:URIOptions):URIComponents { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + + return components; + }, + + serialize : function (components:URIComponents, options:URIOptions):URIComponents { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + + return components; + } +}; + +export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/https.ts b/node_modules/uri-js/src/schemes/https.ts new file mode 100644 index 0000000..a19a494 --- /dev/null +++ b/node_modules/uri-js/src/schemes/https.ts @@ -0,0 +1,11 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; +import http from "./http"; + +const handler:URISchemeHandler = { + scheme : "https", + domainHost : http.domainHost, + parse : http.parse, + serialize : http.serialize +} + +export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/mailto.ts b/node_modules/uri-js/src/schemes/mailto.ts new file mode 100644 index 0000000..3faf320 --- /dev/null +++ b/node_modules/uri-js/src/schemes/mailto.ts @@ -0,0 +1,182 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; +import { pctEncChar, pctDecChars, unescapeComponent } from "../uri"; +import punycode from "punycode"; +import { merge, subexp, toUpperCase, toArray } from "../util"; + +export interface MailtoHeaders { + [hfname:string]:string +} + +export interface MailtoComponents extends URIComponents { + to:Array, + headers?:MailtoHeaders, + subject?:string, + body?:string +} + +const O:MailtoHeaders = {}; +const isIRI = true; + +//RFC 3986 +const UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; +const HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive +const PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded + +//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = +//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) +//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext +//const VCHAR$$ = "[\\x21-\\x7E]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext +//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); +//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); +//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); +const ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; +const QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; +const VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); +const DOT_ATOM_TEXT$ = subexp(ATEXT$$ + "+" + subexp("\\." + ATEXT$$ + "+") + "*"); +const QUOTED_PAIR$ = subexp("\\\\" + VCHAR$$); +const QCONTENT$ = subexp(QTEXT$$ + "|" + QUOTED_PAIR$); +const QUOTED_STRING$ = subexp('\\"' + QCONTENT$ + "*" + '\\"'); + +//RFC 6068 +const DTEXT_NO_OBS$$ = "[\\x21-\\x5A\\x5E-\\x7E]"; //%d33-90 / %d94-126 +const SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; +const QCHAR$ = subexp(UNRESERVED$$ + "|" + PCT_ENCODED$ + "|" + SOME_DELIMS$$); +const DOMAIN$ = subexp(DOT_ATOM_TEXT$ + "|" + "\\[" + DTEXT_NO_OBS$$ + "*" + "\\]"); +const LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + "|" + QUOTED_STRING$); +const ADDR_SPEC$ = subexp(LOCAL_PART$ + "\\@" + DOMAIN$); +const TO$ = subexp(ADDR_SPEC$ + subexp("\\," + ADDR_SPEC$) + "*"); +const HFNAME$ = subexp(QCHAR$ + "*"); +const HFVALUE$ = HFNAME$; +const HFIELD$ = subexp(HFNAME$ + "\\=" + HFVALUE$); +const HFIELDS2$ = subexp(HFIELD$ + subexp("\\&" + HFIELD$) + "*"); +const HFIELDS$ = subexp("\\?" + HFIELDS2$); +const MAILTO_URI = new RegExp("^mailto\\:" + TO$ + "?" + HFIELDS$ + "?$"); + +const UNRESERVED = new RegExp(UNRESERVED$$, "g"); +const PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); +const NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); +const NOT_DOMAIN = new RegExp(merge("[^]", ATEXT$$, "[\\.]", "[\\[]", DTEXT_NO_OBS$$, "[\\]]"), "g"); +const NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); +const NOT_HFVALUE = NOT_HFNAME; +const TO = new RegExp("^" + TO$ + "$"); +const HFIELDS = new RegExp("^" + HFIELDS2$ + "$"); + +function decodeUnreserved(str:string):string { + const decStr = pctDecChars(str); + return (!decStr.match(UNRESERVED) ? str : decStr); +} + +const handler:URISchemeHandler = { + scheme : "mailto", + + parse : function (components:URIComponents, options:URIOptions):MailtoComponents { + const mailtoComponents = components as MailtoComponents; + const to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(",") : []); + mailtoComponents.path = undefined; + + if (mailtoComponents.query) { + let unknownHeaders = false + const headers:MailtoHeaders = {}; + const hfields = mailtoComponents.query.split("&"); + + for (let x = 0, xl = hfields.length; x < xl; ++x) { + const hfield = hfields[x].split("="); + + switch (hfield[0]) { + case "to": + const toAddrs = hfield[1].split(","); + for (let x = 0, xl = toAddrs.length; x < xl; ++x) { + to.push(toAddrs[x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + + if (unknownHeaders) mailtoComponents.headers = headers; + } + + mailtoComponents.query = undefined; + + for (let x = 0, xl = to.length; x < xl; ++x) { + const addr = to[x].split("@"); + + addr[0] = unescapeComponent(addr[0]); + + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + + to[x] = addr.join("@"); + } + + return mailtoComponents; + }, + + serialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents { + const components = mailtoComponents as URIComponents; + const to = toArray(mailtoComponents.to); + if (to) { + for (let x = 0, xl = to.length; x < xl; ++x) { + const toAddr = String(to[x]); + const atIdx = toAddr.lastIndexOf("@"); + const localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + let domain = toAddr.slice(atIdx + 1); + + //convert IDN via punycode + try { + domain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain)); + } catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + + to[x] = localPart + "@" + domain; + } + + components.path = to.join(","); + } + + const headers = mailtoComponents.headers = mailtoComponents.headers || {}; + + if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) headers["body"] = mailtoComponents.body; + + const fields = []; + for (const name in headers) { + if (headers[name] !== O[name]) { + fields.push( + name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + + "=" + + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar) + ); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + + return components; + } +} + +export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/urn-uuid.ts b/node_modules/uri-js/src/schemes/urn-uuid.ts new file mode 100644 index 0000000..5665329 --- /dev/null +++ b/node_modules/uri-js/src/schemes/urn-uuid.ts @@ -0,0 +1,36 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; +import { URNComponents } from "./urn"; +import { SCHEMES } from "../uri"; + +export interface UUIDComponents extends URNComponents { + uuid?: string; +} + +const UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; +const UUID_PARSE = /^[0-9A-Fa-f\-]{36}/; + +//RFC 4122 +const handler:URISchemeHandler = { + scheme : "urn:uuid", + + parse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents { + const uuidComponents = urnComponents as UUIDComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + + return uuidComponents; + }, + + serialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents { + const urnComponents = uuidComponents as URNComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + }, +}; + +export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/schemes/urn.ts b/node_modules/uri-js/src/schemes/urn.ts new file mode 100644 index 0000000..590f9cc --- /dev/null +++ b/node_modules/uri-js/src/schemes/urn.ts @@ -0,0 +1,69 @@ +import { URISchemeHandler, URIComponents, URIOptions } from "../uri"; +import { pctEncChar, SCHEMES } from "../uri"; + +export interface URNComponents extends URIComponents { + nid?:string; + nss?:string; +} + +export interface URNOptions extends URIOptions { + nid?:string; +} + +const NID$ = "(?:[0-9A-Za-z][0-9A-Za-z\\-]{1,31})"; +const PCT_ENCODED$ = "(?:\\%[0-9A-Fa-f]{2})"; +const TRANS$$ = "[0-9A-Za-z\\(\\)\\+\\,\\-\\.\\:\\=\\@\\;\\$\\_\\!\\*\\'\\/\\?\\#]"; +const NSS$ = "(?:(?:" + PCT_ENCODED$ + "|" + TRANS$$ + ")+)"; +const URN_SCHEME = new RegExp("^urn\\:(" + NID$ + ")$"); +const URN_PATH = new RegExp("^(" + NID$ + ")\\:(" + NSS$ + ")$"); +const URN_PARSE = /^([^\:]+)\:(.*)/; +const URN_EXCLUDED = /[\x00-\x20\\\"\&\<\>\[\]\^\`\{\|\}\~\x7F-\xFF]/g; + +//RFC 2141 +const handler:URISchemeHandler = { + scheme : "urn", + + parse : function (components:URIComponents, options:URNOptions):URNComponents { + const matches = components.path && components.path.match(URN_PARSE); + let urnComponents = components as URNComponents; + + if (matches) { + const scheme = options.scheme || urnComponents.scheme || "urn"; + const nid = matches[1].toLowerCase(); + const nss = matches[2]; + const urnScheme = `${scheme}:${options.nid || nid}`; + const schemeHandler = SCHEMES[urnScheme]; + + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options) as URNComponents; + } + } else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + + return urnComponents; + }, + + serialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents { + const scheme = options.scheme || urnComponents.scheme || "urn"; + const nid = urnComponents.nid; + const urnScheme = `${scheme}:${options.nid || nid}`; + const schemeHandler = SCHEMES[urnScheme]; + + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents; + } + + const uriComponents = urnComponents as URIComponents; + const nss = urnComponents.nss; + uriComponents.path = `${nid || options.nid}:${nss}`; + + return uriComponents; + }, +}; + +export default handler; \ No newline at end of file diff --git a/node_modules/uri-js/src/uri.ts b/node_modules/uri-js/src/uri.ts new file mode 100644 index 0000000..c282c37 --- /dev/null +++ b/node_modules/uri-js/src/uri.ts @@ -0,0 +1,556 @@ +/** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ + +/** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ + +import URI_PROTOCOL from "./regexps-uri"; +import IRI_PROTOCOL from "./regexps-iri"; +import punycode from "punycode"; +import { toUpperCase, typeOf, assign } from "./util"; + +export interface URIComponents { + scheme?:string; + userinfo?:string; + host?:string; + port?:number|string; + path?:string; + query?:string; + fragment?:string; + reference?:string; + error?:string; +} + +export interface URIOptions { + scheme?:string; + reference?:string; + tolerant?:boolean; + absolutePath?:boolean; + iri?:boolean; + unicodeSupport?:boolean; + domainHost?:boolean; +} + +export interface URISchemeHandler { + scheme:string; + parse(components:ParentComponents, options:Options):Components; + serialize(components:Components, options:Options):ParentComponents; + unicodeSupport?:boolean; + domainHost?:boolean; + absolutePath?:boolean; +} + +export interface URIRegExps { + NOT_SCHEME : RegExp, + NOT_USERINFO : RegExp, + NOT_HOST : RegExp, + NOT_PATH : RegExp, + NOT_PATH_NOSCHEME : RegExp, + NOT_QUERY : RegExp, + NOT_FRAGMENT : RegExp, + ESCAPE : RegExp, + UNRESERVED : RegExp, + OTHER_CHARS : RegExp, + PCT_ENCODED : RegExp, + IPV4ADDRESS : RegExp, + IPV6ADDRESS : RegExp, +} + +export const SCHEMES:{[scheme:string]:URISchemeHandler} = {}; + +export function pctEncChar(chr:string):string { + const c = chr.charCodeAt(0); + let e:string; + + if (c < 16) e = "%0" + c.toString(16).toUpperCase(); + else if (c < 128) e = "%" + c.toString(16).toUpperCase(); + else if (c < 2048) e = "%" + ((c >> 6) | 192).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); + else e = "%" + ((c >> 12) | 224).toString(16).toUpperCase() + "%" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + "%" + ((c & 63) | 128).toString(16).toUpperCase(); + + return e; +} + +export function pctDecChars(str:string):string { + let newStr = ""; + let i = 0; + const il = str.length; + + while (i < il) { + const c = parseInt(str.substr(i + 1, 2), 16); + + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } + else if (c >= 194 && c < 224) { + if ((il - i) >= 6) { + const c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + } else { + newStr += str.substr(i, 6); + } + i += 6; + } + else if (c >= 224) { + if ((il - i) >= 9) { + const c2 = parseInt(str.substr(i + 4, 2), 16); + const c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + } else { + newStr += str.substr(i, 9); + } + i += 9; + } + else { + newStr += str.substr(i, 3); + i += 3; + } + } + + return newStr; +} + +function _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) { + function decodeUnreserved(str:string):string { + const decStr = pctDecChars(str); + return (!decStr.match(protocol.UNRESERVED) ? str : decStr); + } + + if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + + return components; +}; + +function _stripLeadingZeros(str:string):string { + return str.replace(/^0*(.*)/, "$1") || "0"; +} + +function _normalizeIPv4(host:string, protocol:URIRegExps):string { + const matches = host.match(protocol.IPV4ADDRESS) || []; + const [, address] = matches; + + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } else { + return host; + } +} + +function _normalizeIPv6(host:string, protocol:URIRegExps):string { + const matches = host.match(protocol.IPV6ADDRESS) || []; + const [, address, zone] = matches; + + if (address) { + const [last, first] = address.toLowerCase().split('::').reverse(); + const firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + const lastFields = last.split(":").map(_stripLeadingZeros); + const isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + const fieldCount = isLastFieldIPv4Address ? 7 : 8; + const lastFieldsStart = lastFields.length - fieldCount; + const fields = Array(fieldCount); + + for (let x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + + const allZeroFields = fields.reduce>((acc, field, index) => { + if (!field || field === "0") { + const lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } else { + acc.push({ index, length : 1 }); + } + } + return acc; + }, []); + + const longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0]; + + let newHost:string; + if (longestZeroFields && longestZeroFields.length > 1) { + const newFirst = fields.slice(0, longestZeroFields.index) ; + const newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } else { + newHost = fields.join(":"); + } + + if (zone) { + newHost += "%" + zone; + } + + return newHost; + } else { + return host; + } +} + +const URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; +const NO_MATCH_IS_UNDEFINED = (("").match(/(){0}/))[1] === undefined; + +export function parse(uriString:string, options:URIOptions = {}):URIComponents { + const components:URIComponents = {}; + const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); + + if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + + const matches = uriString.match(URI_PARSE); + + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } else { //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = (uriString.indexOf("@") !== -1 ? matches[3] : undefined); + components.host = (uriString.indexOf("//") !== -1 ? matches[4] : undefined); + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = (uriString.indexOf("?") !== -1 ? matches[7] : undefined); + components.fragment = (uriString.indexOf("#") !== -1 ? matches[8] : undefined); + + //fix port number + if (isNaN(components.port)) { + components.port = (uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined); + } + } + + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } else if (components.scheme === undefined) { + components.reference = "relative"; + } else if (components.fragment === undefined) { + components.reference = "absolute"; + } else { + components.reference = "uri"; + } + + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + + //find scheme handler + const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } else { + components.error = components.error || "URI can not be parsed."; + } + + return components; +}; + +function _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined { + const protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL); + const uriTokens:Array = []; + + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => "[" + $1 + ($2 ? "%25" + $2 : "") + "]")); + } + + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + + return uriTokens.length ? uriTokens.join("") : undefined; +}; + +const RDS1 = /^\.\.?\//; +const RDS2 = /^\/\.(\/|$)/; +const RDS3 = /^\/\.\.(\/|$)/; +const RDS4 = /^\.\.?$/; +const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; + +export function removeDotSegments(input:string):string { + const output:Array = []; + + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } else if (input === "." || input === "..") { + input = ""; + } else { + const im = input.match(RDS5); + if (im) { + const s = im[0]; + input = input.slice(s.length); + output.push(s); + } else { + throw new Error("Unexpected dot segment condition"); + } + } + } + + return output.join(""); +}; + +export function serialize(components:URIComponents, options:URIOptions = {}):string { + const protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL); + const uriTokens:Array = []; + + //find scheme handler + const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); + + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) { + //TODO: normalize IPv6 address as per RFC 5952 + } + + //if host component is a domain name + else if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) { + //convert IDN via punycode + try { + components.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host)); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + + //normalize encoding + _normalizeComponentEncoding(components, protocol); + + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + + const authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + + uriTokens.push(authority); + + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + + if (components.path !== undefined) { + let s = components.path; + + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + + uriTokens.push(s); + } + + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + + return uriTokens.join(""); //merge tokens into a string +}; + +export function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents { + const target:URIComponents = {}; + + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + + target.fragment = relative.fragment; + + return target; +}; + +export function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string { + const schemelessOptions = assign({ scheme : 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); +}; + +export function normalize(uri:string, options?:URIOptions):string; +export function normalize(uri:URIComponents, options?:URIOptions):URIComponents; +export function normalize(uri:any, options?:URIOptions):any { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + + return uri; +}; + +export function equal(uriA:string, uriB:string, options?: URIOptions):boolean; +export function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean; +export function equal(uriA:any, uriB:any, options?:URIOptions):boolean { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + + return uriA === uriB; +}; + +export function escapeComponent(str:string, options?:URIOptions):string { + return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar); +}; + +export function unescapeComponent(str:string, options?:URIOptions):string { + return str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars); +}; diff --git a/node_modules/uri-js/src/util.ts b/node_modules/uri-js/src/util.ts new file mode 100644 index 0000000..29c6d5d --- /dev/null +++ b/node_modules/uri-js/src/util.ts @@ -0,0 +1,40 @@ +export function merge(...sets:Array):string { + if (sets.length > 1) { + sets[0] = sets[0].slice(0, -1); + const xl = sets.length - 1; + for (let x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } else { + return sets[0]; + } +} + +export function subexp(str:string):string { + return "(?:" + str + ")"; +} + +export function typeOf(o:any):string { + return o === undefined ? "undefined" : (o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase()); +} + +export function toUpperCase(str:string):string { + return str.toUpperCase(); +} + +export function toArray(obj:any):Array { + return obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : []; +} + + +export function assign(target: object, source: any): any { + const obj = target as any; + if (source) { + for (const key in source) { + obj[key] = source[key]; + } + } + return obj; +} \ No newline at end of file diff --git a/node_modules/uri-js/tests/qunit.css b/node_modules/uri-js/tests/qunit.css new file mode 100644 index 0000000..a2e183d --- /dev/null +++ b/node_modules/uri-js/tests/qunit.css @@ -0,0 +1,118 @@ +ol#qunit-tests { + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + margin:0; + padding:0; + list-style-position:inside; + + font-size: smaller; +} +ol#qunit-tests li{ + padding:0.4em 0.5em 0.4em 2.5em; + border-bottom:1px solid #fff; + font-size:small; + list-style-position:inside; +} +ol#qunit-tests li ol{ + box-shadow: inset 0px 2px 13px #999; + -moz-box-shadow: inset 0px 2px 13px #999; + -webkit-box-shadow: inset 0px 2px 13px #999; + margin-top:0.5em; + margin-left:0; + padding:0.5em; + background-color:#fff; + border-radius:15px; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; +} +ol#qunit-tests li li{ + border-bottom:none; + margin:0.5em; + background-color:#fff; + list-style-position: inside; + padding:0.4em 0.5em 0.4em 0.5em; +} + +ol#qunit-tests li li.pass{ + border-left:26px solid #C6E746; + background-color:#fff; + color:#5E740B; + } +ol#qunit-tests li li.fail{ + border-left:26px solid #EE5757; + background-color:#fff; + color:#710909; +} +ol#qunit-tests li.pass{ + background-color:#D2E0E6; + color:#528CE0; +} +ol#qunit-tests li.fail{ + background-color:#EE5757; + color:#000; +} +ol#qunit-tests li strong { + cursor:pointer; +} +h1#qunit-header{ + background-color:#0d3349; + margin:0; + padding:0.5em 0 0.5em 1em; + color:#fff; + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + border-top-right-radius:15px; + border-top-left-radius:15px; + -moz-border-radius-topright:15px; + -moz-border-radius-topleft:15px; + -webkit-border-top-right-radius:15px; + -webkit-border-top-left-radius:15px; + text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px; +} +h2#qunit-banner{ + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + height:5px; + margin:0; + padding:0; +} +h2#qunit-banner.qunit-pass{ + background-color:#C6E746; +} +h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar { + background-color:#EE5757; +} +#qunit-testrunner-toolbar { + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + padding:0; + /*width:80%;*/ + padding:0em 0 0.5em 2em; + font-size: small; +} +h2#qunit-userAgent { + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + background-color:#2b81af; + margin:0; + padding:0; + color:#fff; + font-size: small; + padding:0.5em 0 0.5em 2.5em; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} +p#qunit-testresult{ + font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; + margin:0; + font-size: small; + color:#2b81af; + border-bottom-right-radius:15px; + border-bottom-left-radius:15px; + -moz-border-radius-bottomright:15px; + -moz-border-radius-bottomleft:15px; + -webkit-border-bottom-right-radius:15px; + -webkit-border-bottom-left-radius:15px; + background-color:#D2E0E6; + padding:0.5em 0.5em 0.5em 2.5em; +} +strong b.fail{ + color:#710909; + } +strong b.pass{ + color:#5E740B; + } \ No newline at end of file diff --git a/node_modules/uri-js/tests/qunit.js b/node_modules/uri-js/tests/qunit.js new file mode 100644 index 0000000..e449fdf --- /dev/null +++ b/node_modules/uri-js/tests/qunit.js @@ -0,0 +1,1042 @@ +/* + * QUnit - A JavaScript Unit Testing Framework + * + * http://docs.jquery.com/QUnit + * + * Copyright (c) 2009 John Resig, Jörn Zaefferer + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + */ + +(function(window) { + +var QUnit = { + + // Initialize the configuration options + init: function() { + config = { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: +new Date, + blocking: false, + autorun: false, + assertions: [], + filters: [], + queue: [] + }; + + var tests = id("qunit-tests"), + banner = id("qunit-banner"), + result = id("qunit-testresult"); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + }, + + // call on start of module test to prepend name to all tests + module: function(name, testEnvironment) { + config.currentModule = name; + + synchronize(function() { + if ( config.currentModule ) { + QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all ); + } + + config.currentModule = name; + config.moduleTestEnvironment = testEnvironment; + config.moduleStats = { all: 0, bad: 0 }; + + QUnit.moduleStart( name, testEnvironment ); + }); + }, + + asyncTest: function(testName, expected, callback) { + if ( arguments.length === 2 ) { + callback = expected; + expected = 0; + } + + QUnit.test(testName, expected, callback, true); + }, + + test: function(testName, expected, callback, async) { + var name = testName, testEnvironment, testEnvironmentArg; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + // is 2nd argument a testEnvironment? + if ( expected && typeof expected === 'object') { + testEnvironmentArg = expected; + expected = null; + } + + if ( config.currentModule ) { + name = config.currentModule + " module: " + name; + } + + if ( !validTest(name) ) { + return; + } + + synchronize(function() { + QUnit.testStart( testName ); + + testEnvironment = extend({ + setup: function() {}, + teardown: function() {} + }, config.moduleTestEnvironment); + if (testEnvironmentArg) { + extend(testEnvironment,testEnvironmentArg); + } + + // allow utility functions to access the current test environment + QUnit.current_testEnvironment = testEnvironment; + + config.assertions = []; + config.expected = expected; + + try { + if ( !config.pollution ) { + saveGlobal(); + } + + testEnvironment.setup.call(testEnvironment); + } catch(e) { + QUnit.ok( false, "Setup failed on " + name + ": " + e.message ); + } + + if ( async ) { + QUnit.stop(); + } + + try { + callback.call(testEnvironment); + } catch(e) { + fail("Test " + name + " died, exception and test follows", e, callback); + QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message ); + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + start(); + } + } + }); + + synchronize(function() { + try { + checkPollution(); + testEnvironment.teardown.call(testEnvironment); + } catch(e) { + QUnit.ok( false, "Teardown failed on " + name + ": " + e.message ); + } + + try { + QUnit.reset(); + } catch(e) { + fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset); + } + + if ( config.expected && config.expected != config.assertions.length ) { + QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" ); + } + + var good = 0, bad = 0, + tests = id("qunit-tests"); + + config.stats.all += config.assertions.length; + config.moduleStats.all += config.assertions.length; + + if ( tests ) { + var ol = document.createElement("ol"); + ol.style.display = "none"; + + for ( var i = 0; i < config.assertions.length; i++ ) { + var assertion = config.assertions[i]; + + var li = document.createElement("li"); + li.className = assertion.result ? "pass" : "fail"; + li.appendChild(document.createTextNode(assertion.message || "(no message)")); + ol.appendChild( li ); + + if ( assertion.result ) { + good++; + } else { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + var b = document.createElement("strong"); + b.innerHTML = name + " (" + bad + ", " + good + ", " + config.assertions.length + ")"; + + addEvent(b, "click", function() { + var next = b.nextSibling, display = next.style.display; + next.style.display = display === "none" ? "block" : "none"; + }); + + addEvent(b, "dblclick", function(e) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() === "strong" ) { + var text = "", node = target.firstChild; + + while ( node.nodeType === 3 ) { + text += node.nodeValue; + node = node.nextSibling; + } + + text = text.replace(/(^\s*|\s*$)/g, ""); + + if ( window.location ) { + window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text); + } + } + }); + + var li = document.createElement("li"); + li.className = bad ? "fail" : "pass"; + li.appendChild( b ); + li.appendChild( ol ); + tests.appendChild( li ); + + if ( bad ) { + var toolbar = id("qunit-testrunner-toolbar"); + if ( toolbar ) { + toolbar.style.display = "block"; + id("qunit-filter-pass").disabled = null; + id("qunit-filter-missing").disabled = null; + } + } + + } else { + for ( var i = 0; i < config.assertions.length; i++ ) { + if ( !config.assertions[i].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + } + + QUnit.testDone( testName, bad, config.assertions.length ); + + if ( !window.setTimeout && !config.queue.length ) { + done(); + } + }); + + if ( window.setTimeout && !config.doneTimer ) { + config.doneTimer = window.setTimeout(function(){ + if ( !config.queue.length ) { + done(); + } else { + synchronize( done ); + } + }, 13); + } + }, + + /** + * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. + */ + expect: function(asserts) { + config.expected = asserts; + }, + + /** + * Asserts true. + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function(a, msg) { + QUnit.log(a, msg); + + config.assertions.push({ + result: !!a, + message: msg + }); + }, + + /** + * Checks that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * + * Prefered to ok( actual == expected, message ) + * + * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); + * + * @param Object actual + * @param Object expected + * @param String message (optional) + */ + equal: function(actual, expected, message) { + push(expected == actual, actual, expected, message); + }, + + notEqual: function(actual, expected, message) { + push(expected != actual, actual, expected, message); + }, + + deepEqual: function(a, b, message) { + push(QUnit.equiv(a, b), a, b, message); + }, + + notDeepEqual: function(a, b, message) { + push(!QUnit.equiv(a, b), a, b, message); + }, + + strictEqual: function(actual, expected, message) { + push(expected === actual, actual, expected, message); + }, + + notStrictEqual: function(actual, expected, message) { + push(expected !== actual, actual, expected, message); + }, + + start: function() { + // A slight delay, to avoid any current callbacks + if ( window.setTimeout ) { + window.setTimeout(function() { + if ( config.timeout ) { + clearTimeout(config.timeout); + } + + config.blocking = false; + process(); + }, 13); + } else { + config.blocking = false; + process(); + } + }, + + stop: function(timeout) { + config.blocking = true; + + if ( timeout && window.setTimeout ) { + config.timeout = window.setTimeout(function() { + QUnit.ok( false, "Test timed out" ); + QUnit.start(); + }, timeout); + } + }, + + /** + * Resets the test setup. Useful for tests that modify the DOM. + */ + reset: function() { + if ( window.jQuery ) { + jQuery("#main").html( config.fixture ); + jQuery.event.global = {}; + jQuery.ajaxSettings = extend({}, config.ajaxSettings); + } + }, + + /** + * Trigger an event on an element. + * + * @example triggerEvent( document.body, "click" ); + * + * @param DOMElement elem + * @param String type + */ + triggerEvent: function( elem, type, event ) { + if ( document.createEvent ) { + event = document.createEvent("MouseEvents"); + event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + elem.dispatchEvent( event ); + + } else if ( elem.fireEvent ) { + elem.fireEvent("on"+type); + } + }, + + // Safe object type checking + is: function( type, obj ) { + return Object.prototype.toString.call( obj ) === "[object "+ type +"]"; + }, + + // Logging callbacks + done: function(failures, total) {}, + log: function(result, message) {}, + testStart: function(name) {}, + testDone: function(name, failures, total) {}, + moduleStart: function(name, testEnvironment) {}, + moduleDone: function(name, failures, total) {} +}; + +// Backwards compatibility, deprecated +QUnit.equals = QUnit.equal; +QUnit.same = QUnit.deepEqual; + +// Maintain internal state +var config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true +}; + +// Load paramaters +(function() { + var location = window.location || { search: "", protocol: "file:" }, + GETParams = location.search.slice(1).split('&'); + + for ( var i = 0; i < GETParams.length; i++ ) { + GETParams[i] = decodeURIComponent( GETParams[i] ); + if ( GETParams[i] === "noglobals" ) { + GETParams.splice( i, 1 ); + i--; + config.noglobals = true; + } else if ( GETParams[i].search('=') > -1 ) { + GETParams.splice( i, 1 ); + i--; + } + } + + // restrict modules/tests by get parameters + config.filters = GETParams; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = !!(location.protocol === 'file:'); +})(); + +// Expose the API as global variables, unless an 'exports' +// object exists, in that case we assume we're in CommonJS +if ( typeof exports === "undefined" || typeof require === "undefined" ) { + extend(window, QUnit); + window.QUnit = QUnit; +} else { + extend(exports, QUnit); + exports.QUnit = QUnit; +} + +if ( typeof document === "undefined" || document.readyState === "complete" ) { + config.autorun = true; +} + +addEvent(window, "load", function() { + // Initialize the config, saving the execution queue + var oldconfig = extend({}, config); + QUnit.init(); + extend(config, oldconfig); + + config.blocking = false; + + var userAgent = id("qunit-userAgent"); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } + + var toolbar = id("qunit-testrunner-toolbar"); + if ( toolbar ) { + toolbar.style.display = "none"; + + var filter = document.createElement("input"); + filter.type = "checkbox"; + filter.id = "qunit-filter-pass"; + filter.disabled = true; + addEvent( filter, "click", function() { + var li = document.getElementsByTagName("li"); + for ( var i = 0; i < li.length; i++ ) { + if ( li[i].className.indexOf("pass") > -1 ) { + li[i].style.display = filter.checked ? "none" : ""; + } + } + }); + toolbar.appendChild( filter ); + + var label = document.createElement("label"); + label.setAttribute("for", "qunit-filter-pass"); + label.innerHTML = "Hide passed tests"; + toolbar.appendChild( label ); + + var missing = document.createElement("input"); + missing.type = "checkbox"; + missing.id = "qunit-filter-missing"; + missing.disabled = true; + addEvent( missing, "click", function() { + var li = document.getElementsByTagName("li"); + for ( var i = 0; i < li.length; i++ ) { + if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) { + li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block"; + } + } + }); + toolbar.appendChild( missing ); + + label = document.createElement("label"); + label.setAttribute("for", "qunit-filter-missing"); + label.innerHTML = "Hide missing tests (untested code is broken code)"; + toolbar.appendChild( label ); + } + + var main = id('main'); + if ( main ) { + config.fixture = main.innerHTML; + } + + if ( window.jQuery ) { + config.ajaxSettings = window.jQuery.ajaxSettings; + } + + QUnit.start(); +}); + +function done() { + if ( config.doneTimer && window.clearTimeout ) { + window.clearTimeout( config.doneTimer ); + config.doneTimer = null; + } + + if ( config.queue.length ) { + config.doneTimer = window.setTimeout(function(){ + if ( !config.queue.length ) { + done(); + } else { + synchronize( done ); + } + }, 13); + + return; + } + + config.autorun = true; + + // Log the last module results + if ( config.currentModule ) { + QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all ); + } + + var banner = id("qunit-banner"), + tests = id("qunit-tests"), + html = ['Tests completed in ', + +new Date - config.started, ' milliseconds.
', + '', config.stats.all - config.stats.bad, ' tests of ', config.stats.all, ' passed, ', config.stats.bad,' failed.'].join(''); + + if ( banner ) { + banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); + } + + if ( tests ) { + var result = id("qunit-testresult"); + + if ( !result ) { + result = document.createElement("p"); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests.nextSibling ); + } + + result.innerHTML = html; + } + + QUnit.done( config.stats.bad, config.stats.all ); +} + +function validTest( name ) { + var i = config.filters.length, + run = false; + + if ( !i ) { + return true; + } + + while ( i-- ) { + var filter = config.filters[i], + not = filter.charAt(0) == '!'; + + if ( not ) { + filter = filter.slice(1); + } + + if ( name.indexOf(filter) !== -1 ) { + return !not; + } + + if ( not ) { + run = true; + } + } + + return run; +} + +function push(result, actual, expected, message) { + message = message || (result ? "okay" : "failed"); + QUnit.ok( result, result ? message + ": " + expected : message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) ); +} + +function synchronize( callback ) { + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process(); + } +} + +function process() { + while ( config.queue.length && !config.blocking ) { + config.queue.shift()(); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + config.pollution.push( key ); + } + } +} + +function checkPollution( name ) { + var old = config.pollution; + saveGlobal(); + + var newGlobals = diff( old, config.pollution ); + if ( newGlobals.length > 0 ) { + ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); + config.expected++; + } + + var deletedGlobals = diff( config.pollution, old ); + if ( deletedGlobals.length > 0 ) { + ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); + config.expected++; + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var result = a.slice(); + for ( var i = 0; i < result.length; i++ ) { + for ( var j = 0; j < b.length; j++ ) { + if ( result[i] === b[j] ) { + result.splice(i, 1); + i--; + break; + } + } + } + return result; +} + +function fail(message, exception, callback) { + if ( typeof console !== "undefined" && console.error && console.warn ) { + console.error(message); + console.error(exception); + console.warn(callback.toString()); + + } else if ( window.opera && opera.postError ) { + opera.postError(message, exception, callback.toString); + } +} + +function extend(a, b) { + for ( var prop in b ) { + a[prop] = b[prop]; + } + + return a; +} + +function addEvent(elem, type, fn) { + if ( elem.addEventListener ) { + elem.addEventListener( type, fn, false ); + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, fn ); + } else { + fn(); + } +} + +function id(name) { + return !!(typeof document !== "undefined" && document && document.getElementById) && + document.getElementById( name ); +} + +// Test for equality any JavaScript type. +// Discussions and reference: http://philrathe.com/articles/equiv +// Test suites: http://philrathe.com/tests/equiv +// Author: Philippe Rathé +QUnit.equiv = function () { + + var innerEquiv; // the real equiv function + var callers = []; // stack to decide between skip/abort functions + + + // Determine what is o. + function hoozit(o) { + if (QUnit.is("String", o)) { + return "string"; + + } else if (QUnit.is("Boolean", o)) { + return "boolean"; + + } else if (QUnit.is("Number", o)) { + + if (isNaN(o)) { + return "nan"; + } else { + return "number"; + } + + } else if (typeof o === "undefined") { + return "undefined"; + + // consider: typeof null === object + } else if (o === null) { + return "null"; + + // consider: typeof [] === object + } else if (QUnit.is( "Array", o)) { + return "array"; + + // consider: typeof new Date() === object + } else if (QUnit.is( "Date", o)) { + return "date"; + + // consider: /./ instanceof Object; + // /./ instanceof RegExp; + // typeof /./ === "function"; // => false in IE and Opera, + // true in FF and Safari + } else if (QUnit.is( "RegExp", o)) { + return "regexp"; + + } else if (typeof o === "object") { + return "object"; + + } else if (QUnit.is( "Function", o)) { + return "function"; + } else { + return undefined; + } + } + + // Call the o related callback with the given arguments. + function bindCallbacks(o, callbacks, args) { + var prop = hoozit(o); + if (prop) { + if (hoozit(callbacks[prop]) === "function") { + return callbacks[prop].apply(callbacks, args); + } else { + return callbacks[prop]; // or undefined + } + } + } + + var callbacks = function () { + + // for string, boolean, number and null + function useStrictEquality(b, a) { + if (b instanceof a.constructor || a instanceof b.constructor) { + // to catch short annotaion VS 'new' annotation of a declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function (b) { + return isNaN(b); + }, + + "date": function (b, a) { + return hoozit(b) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function (b, a) { + return hoozit(b) === "regexp" && + a.source === b.source && // the regex itself + a.global === b.global && // and its modifers (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function () { + var caller = callers[callers.length - 1]; + return caller !== Object && + typeof caller !== "undefined"; + }, + + "array": function (b, a) { + var i; + var len; + + // b could be an object literal here + if ( ! (hoozit(b) === "array")) { + return false; + } + + len = a.length; + if (len !== b.length) { // safe and faster + return false; + } + for (i = 0; i < len; i++) { + if ( ! innerEquiv(a[i], b[i])) { + return false; + } + } + return true; + }, + + "object": function (b, a) { + var i; + var eq = true; // unless we can proove it + var aProperties = [], bProperties = []; // collection of strings + + // comparing constructors is more strict than using instanceof + if ( a.constructor !== b.constructor) { + return false; + } + + // stack constructor before traversing properties + callers.push(a.constructor); + + for (i in a) { // be strict: don't ensures hasOwnProperty and go deep + + aProperties.push(i); // collect a's properties + + if ( ! innerEquiv(a[i], b[i])) { + eq = false; + } + } + + callers.pop(); // unstack, we are done + + for (i in b) { + bProperties.push(i); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv(aProperties.sort(), bProperties.sort()); + } + }; + }(); + + innerEquiv = function () { // can take multiple arguments + var args = Array.prototype.slice.apply(arguments); + if (args.length < 2) { + return true; // end transition + } + + return (function (a, b) { + if (a === b) { + return true; // catch the most you can + } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) { + return false; // don't lose time with error prone cases + } else { + return bindCallbacks(a, callbacks, [b, a]); + } + + // apply transition with (1..n) arguments + })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1)); + }; + + return innerEquiv; + +}(); + +/** + * jsDump + * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php) + * Date: 5/15/2008 + * @projectDescription Advanced and extensible data dumping for Javascript. + * @version 1.0.0 + * @author Ariel Flesler + * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} + */ +QUnit.jsDump = (function() { + function quote( str ) { + return '"' + str.toString().replace(/"/g, '\\"') + '"'; + }; + function literal( o ) { + return o + ''; + }; + function join( pre, arr, post ) { + var s = jsDump.separator(), + base = jsDump.indent(), + inner = jsDump.indent(1); + if ( arr.join ) + arr = arr.join( ',' + s + inner ); + if ( !arr ) + return pre + post; + return [ pre, inner + arr, base + post ].join(s); + }; + function array( arr ) { + var i = arr.length, ret = Array(i); + this.up(); + while ( i-- ) + ret[i] = this.parse( arr[i] ); + this.down(); + return join( '[', ret, ']' ); + }; + + var reName = /^function (\w+)/; + + var jsDump = { + parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance + var parser = this.parsers[ type || this.typeOf(obj) ]; + type = typeof parser; + + return type == 'function' ? parser.call( this, obj ) : + type == 'string' ? parser : + this.parsers.error; + }, + typeOf:function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if (typeof obj === "undefined") { + type = "undefined"; + } else if (QUnit.is("RegExp", obj)) { + type = "regexp"; + } else if (QUnit.is("Date", obj)) { + type = "date"; + } else if (QUnit.is("Function", obj)) { + type = "function"; + } else if (QUnit.is("Array", obj)) { + type = "array"; + } else if (QUnit.is("Window", obj) || QUnit.is("global", obj)) { + type = "window"; + } else if (QUnit.is("HTMLDocument", obj)) { + type = "document"; + } else if (QUnit.is("HTMLCollection", obj) || QUnit.is("NodeList", obj)) { + type = "nodelist"; + } else if (/^\[object HTML/.test(Object.prototype.toString.call( obj ))) { + type = "node"; + } else { + type = typeof obj; + } + return type; + }, + separator:function() { + return this.multiline ? this.HTML ? '
' : '\n' : this.HTML ? ' ' : ' '; + }, + indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing + if ( !this.multiline ) + return ''; + var chr = this.indentChar; + if ( this.HTML ) + chr = chr.replace(/\t/g,' ').replace(/ /g,' '); + return Array( this._depth_ + (extra||0) ).join(chr); + }, + up:function( a ) { + this._depth_ += a || 1; + }, + down:function( a ) { + this._depth_ -= a || 1; + }, + setParser:function( name, parser ) { + this.parsers[name] = parser; + }, + // The next 3 are exposed so you can use them + quote:quote, + literal:literal, + join:join, + // + _depth_: 1, + // This is the list of parsers, to modify them, use jsDump.setParser + parsers:{ + window: '[Window]', + document: '[Document]', + error:'[ERROR]', //when no parser is found, shouldn't happen + unknown: '[Unknown]', + 'null':'null', + undefined:'undefined', + 'function':function( fn ) { + var ret = 'function', + name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE + if ( name ) + ret += ' ' + name; + ret += '('; + + ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join(''); + return join( ret, this.parse(fn,'functionCode'), '}' ); + }, + array: array, + nodelist: array, + arguments: array, + object:function( map ) { + var ret = [ ]; + this.up(); + for ( var key in map ) + ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) ); + this.down(); + return join( '{', ret, '}' ); + }, + node:function( node ) { + var open = this.HTML ? '<' : '<', + close = this.HTML ? '>' : '>'; + + var tag = node.nodeName.toLowerCase(), + ret = open + tag; + + for ( var a in this.DOMAttrs ) { + var val = node[this.DOMAttrs[a]]; + if ( val ) + ret += ' ' + a + '=' + this.parse( val, 'attribute' ); + } + return ret + close + open + '/' + tag + close; + }, + functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function + var l = fn.length; + if ( !l ) return ''; + + var args = Array(l); + while ( l-- ) + args[l] = String.fromCharCode(97+l);//97 is 'a' + return ' ' + args.join(', ') + ' '; + }, + key:quote, //object calls it internally, the key part of an item in a map + functionCode:'[code]', //function calls it internally, it's the content of the function + attribute:quote, //node calls it internally, it's an html attribute value + string:quote, + date:quote, + regexp:literal, //regex + number:literal, + 'boolean':literal + }, + DOMAttrs:{//attributes to dump from nodes, name=>realName + id:'id', + name:'name', + 'class':'className' + }, + HTML:true,//if true, entities are escaped ( <, >, \t, space and \n ) + indentChar:' ',//indentation unit + multiline:true //if true, items in a collection, are separated by a \n, else just a space. + }; + + return jsDump; +})(); + +})(this); diff --git a/node_modules/uri-js/tests/test-es5-min.html b/node_modules/uri-js/tests/test-es5-min.html new file mode 100644 index 0000000..b841c75 --- /dev/null +++ b/node_modules/uri-js/tests/test-es5-min.html @@ -0,0 +1,17 @@ + + + + + + + + + +

URI.js Test Suite

+

+
+

+
    + + diff --git a/node_modules/uri-js/tests/test-es5.html b/node_modules/uri-js/tests/test-es5.html new file mode 100644 index 0000000..2d89c66 --- /dev/null +++ b/node_modules/uri-js/tests/test-es5.html @@ -0,0 +1,17 @@ + + + + + + + + + +

    URI.js Test Suite

    +

    +
    +

    +
      + + diff --git a/node_modules/uri-js/tests/tests.js b/node_modules/uri-js/tests/tests.js new file mode 100644 index 0000000..624191c --- /dev/null +++ b/node_modules/uri-js/tests/tests.js @@ -0,0 +1,774 @@ +// +// +// Tests +// +// + +if (typeof URI === "undefined") { + var URI = require("../dist/es5/uri.all"); +} + +test("Acquire URI", function () { + //URI = require("./uri").URI; + ok(URI); +}); + +test("URI Parsing", function () { + var components; + + //scheme + components = URI.parse("uri:"); + strictEqual(components.error, undefined, "scheme errors"); + strictEqual(components.scheme, "uri", "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //userinfo + components = URI.parse("//@"); + strictEqual(components.error, undefined, "userinfo errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, "@", "authority"); + strictEqual(components.userinfo, "", "userinfo"); + strictEqual(components.host, "", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //host + components = URI.parse("//"); + strictEqual(components.error, undefined, "host errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, "", "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //port + components = URI.parse("//:"); + strictEqual(components.error, undefined, "port errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, ":", "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "", "host"); + strictEqual(components.port, "", "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //path + components = URI.parse(""); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //query + components = URI.parse("?"); + strictEqual(components.error, undefined, "query errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, "", "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //fragment + components = URI.parse("#"); + strictEqual(components.error, undefined, "fragment errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "", "fragment"); + + //fragment with character tabulation + components = URI.parse("#\t"); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "%09", "fragment"); + + //fragment with line feed + components = URI.parse("#\n"); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "%0A", "fragment"); + + //fragment with line tabulation + components = URI.parse("#\v"); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "%0B", "fragment"); + + //fragment with form feed + components = URI.parse("#\f"); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "%0C", "fragment"); + + //fragment with carriage return + components = URI.parse("#\r"); + strictEqual(components.error, undefined, "path errors"); + strictEqual(components.scheme, undefined, "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, "%0D", "fragment"); + + //all + components = URI.parse("uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body"); + strictEqual(components.error, undefined, "all errors"); + strictEqual(components.scheme, "uri", "scheme"); + //strictEqual(components.authority, "user:pass@example.com:123", "authority"); + strictEqual(components.userinfo, "user:pass", "userinfo"); + strictEqual(components.host, "example.com", "host"); + strictEqual(components.port, 123, "port"); + strictEqual(components.path, "/one/two.three", "path"); + strictEqual(components.query, "q1=a1&q2=a2", "query"); + strictEqual(components.fragment, "body", "fragment"); + + //IPv4address + components = URI.parse("//10.10.10.10"); + strictEqual(components.error, undefined, "IPv4address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "10.10.10.10", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //IPv6address + components = URI.parse("//[2001:db8::7]"); + strictEqual(components.error, undefined, "IPv4address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "2001:db8::7", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //mixed IPv4address & IPv6address + components = URI.parse("//[::ffff:129.144.52.38]"); + strictEqual(components.error, undefined, "IPv4address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "::ffff:129.144.52.38", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4) + components = URI.parse("uri://10.10.10.10.example.com/en/process"); + strictEqual(components.error, undefined, "mixed errors"); + strictEqual(components.scheme, "uri", "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "10.10.10.10.example.com", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "/en/process", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //IPv6address, example from bkw (https://github.com/garycourt/uri-js/pull/16) + components = URI.parse("//[2606:2800:220:1:248:1893:25c8:1946]/test"); + strictEqual(components.error, undefined, "IPv6address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "2606:2800:220:1:248:1893:25c8:1946", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "/test", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //IPv6address, example from RFC 5952 + components = URI.parse("//[2001:db8::1]:80"); + strictEqual(components.error, undefined, "IPv6address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "2001:db8::1", "host"); + strictEqual(components.port, 80, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //IPv6address with zone identifier, RFC 6874 + components = URI.parse("//[fe80::a%25en1]"); + strictEqual(components.error, undefined, "IPv4address errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "fe80::a%en1", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + + //IPv6address with an unescaped interface specifier, example from pekkanikander (https://github.com/garycourt/uri-js/pull/22) + components = URI.parse("//[2001:db8::7%en0]"); + strictEqual(components.error, undefined, "IPv6address interface errors"); + strictEqual(components.scheme, undefined, "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, "2001:db8::7%en0", "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, "", "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); +}); + +test("URI Serialization", function () { + var components = { + scheme : undefined, + userinfo : undefined, + host : undefined, + port : undefined, + path : undefined, + query : undefined, + fragment : undefined + }; + strictEqual(URI.serialize(components), "", "Undefined Components"); + + components = { + scheme : "", + userinfo : "", + host : "", + port : 0, + path : "", + query : "", + fragment : "" + }; + strictEqual(URI.serialize(components), "//@:0?#", "Empty Components"); + + components = { + scheme : "uri", + userinfo : "foo:bar", + host : "example.com", + port : 1, + path : "path", + query : "query", + fragment : "fragment" + }; + strictEqual(URI.serialize(components), "uri://foo:bar@example.com:1/path?query#fragment", "All Components"); + + strictEqual(URI.serialize({path:"//path"}), "/%2Fpath", "Double slash path"); + strictEqual(URI.serialize({path:"foo:bar"}), "foo%3Abar", "Colon path"); + strictEqual(URI.serialize({path:"?query"}), "%3Fquery", "Query path"); + + //mixed IPv4address & reg-name, example from terion-name (https://github.com/garycourt/uri-js/issues/4) + strictEqual(URI.serialize({host:"10.10.10.10.example.com"}), "//10.10.10.10.example.com", "Mixed IPv4address & reg-name"); + + //IPv6address + strictEqual(URI.serialize({host:"2001:db8::7"}), "//[2001:db8::7]", "IPv6 Host"); + strictEqual(URI.serialize({host:"::ffff:129.144.52.38"}), "//[::ffff:129.144.52.38]", "IPv6 Mixed Host"); + strictEqual(URI.serialize({host:"2606:2800:220:1:248:1893:25c8:1946"}), "//[2606:2800:220:1:248:1893:25c8:1946]", "IPv6 Full Host"); + + //IPv6address with zone identifier, RFC 6874 + strictEqual(URI.serialize({host:"fe80::a%en1"}), "//[fe80::a%25en1]", "IPv6 Zone Unescaped Host"); + strictEqual(URI.serialize({host:"fe80::a%25en1"}), "//[fe80::a%25en1]", "IPv6 Zone Escaped Host"); +}); + +test("URI Resolving", function () { + //normal examples from RFC 3986 + var base = "uri://a/b/c/d;p?q"; + strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h"); + strictEqual(URI.resolve(base, "g:h"), "g:h", "g:h"); + strictEqual(URI.resolve(base, "g"), "uri://a/b/c/g", "g"); + strictEqual(URI.resolve(base, "./g"), "uri://a/b/c/g", "./g"); + strictEqual(URI.resolve(base, "g/"), "uri://a/b/c/g/", "g/"); + strictEqual(URI.resolve(base, "/g"), "uri://a/g", "/g"); + strictEqual(URI.resolve(base, "//g"), "uri://g", "//g"); + strictEqual(URI.resolve(base, "?y"), "uri://a/b/c/d;p?y", "?y"); + strictEqual(URI.resolve(base, "g?y"), "uri://a/b/c/g?y", "g?y"); + strictEqual(URI.resolve(base, "#s"), "uri://a/b/c/d;p?q#s", "#s"); + strictEqual(URI.resolve(base, "g#s"), "uri://a/b/c/g#s", "g#s"); + strictEqual(URI.resolve(base, "g?y#s"), "uri://a/b/c/g?y#s", "g?y#s"); + strictEqual(URI.resolve(base, ";x"), "uri://a/b/c/;x", ";x"); + strictEqual(URI.resolve(base, "g;x"), "uri://a/b/c/g;x", "g;x"); + strictEqual(URI.resolve(base, "g;x?y#s"), "uri://a/b/c/g;x?y#s", "g;x?y#s"); + strictEqual(URI.resolve(base, ""), "uri://a/b/c/d;p?q", ""); + strictEqual(URI.resolve(base, "."), "uri://a/b/c/", "."); + strictEqual(URI.resolve(base, "./"), "uri://a/b/c/", "./"); + strictEqual(URI.resolve(base, ".."), "uri://a/b/", ".."); + strictEqual(URI.resolve(base, "../"), "uri://a/b/", "../"); + strictEqual(URI.resolve(base, "../g"), "uri://a/b/g", "../g"); + strictEqual(URI.resolve(base, "../.."), "uri://a/", "../.."); + strictEqual(URI.resolve(base, "../../"), "uri://a/", "../../"); + strictEqual(URI.resolve(base, "../../g"), "uri://a/g", "../../g"); + + //abnormal examples from RFC 3986 + strictEqual(URI.resolve(base, "../../../g"), "uri://a/g", "../../../g"); + strictEqual(URI.resolve(base, "../../../../g"), "uri://a/g", "../../../../g"); + + strictEqual(URI.resolve(base, "/./g"), "uri://a/g", "/./g"); + strictEqual(URI.resolve(base, "/../g"), "uri://a/g", "/../g"); + strictEqual(URI.resolve(base, "g."), "uri://a/b/c/g.", "g."); + strictEqual(URI.resolve(base, ".g"), "uri://a/b/c/.g", ".g"); + strictEqual(URI.resolve(base, "g.."), "uri://a/b/c/g..", "g.."); + strictEqual(URI.resolve(base, "..g"), "uri://a/b/c/..g", "..g"); + + strictEqual(URI.resolve(base, "./../g"), "uri://a/b/g", "./../g"); + strictEqual(URI.resolve(base, "./g/."), "uri://a/b/c/g/", "./g/."); + strictEqual(URI.resolve(base, "g/./h"), "uri://a/b/c/g/h", "g/./h"); + strictEqual(URI.resolve(base, "g/../h"), "uri://a/b/c/h", "g/../h"); + strictEqual(URI.resolve(base, "g;x=1/./y"), "uri://a/b/c/g;x=1/y", "g;x=1/./y"); + strictEqual(URI.resolve(base, "g;x=1/../y"), "uri://a/b/c/y", "g;x=1/../y"); + + strictEqual(URI.resolve(base, "g?y/./x"), "uri://a/b/c/g?y/./x", "g?y/./x"); + strictEqual(URI.resolve(base, "g?y/../x"), "uri://a/b/c/g?y/../x", "g?y/../x"); + strictEqual(URI.resolve(base, "g#s/./x"), "uri://a/b/c/g#s/./x", "g#s/./x"); + strictEqual(URI.resolve(base, "g#s/../x"), "uri://a/b/c/g#s/../x", "g#s/../x"); + + strictEqual(URI.resolve(base, "uri:g"), "uri:g", "uri:g"); + strictEqual(URI.resolve(base, "uri:g", {tolerant:true}), "uri://a/b/c/g", "uri:g"); + + //examples by PAEz + strictEqual(URI.resolve("//www.g.com/","/adf\ngf"), "//www.g.com/adf%0Agf", "/adf\\ngf"); + strictEqual(URI.resolve("//www.g.com/error\n/bleh/bleh",".."), "//www.g.com/error%0A/", "//www.g.com/error\\n/bleh/bleh"); +}); + +test("URI Normalizing", function () { + //test from RFC 3987 + strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red"), "uri://www.example.org/red%09ros%C3%A9#red"); + + //IPv4address + strictEqual(URI.normalize("//192.068.001.000"), "//192.68.1.0"); + + //IPv6address, example from RFC 3513 + strictEqual(URI.normalize("http://[1080::8:800:200C:417A]/"), "http://[1080::8:800:200c:417a]/"); + + //IPv6address, examples from RFC 5952 + strictEqual(URI.normalize("//[2001:0db8::0001]/"), "//[2001:db8::1]/"); + strictEqual(URI.normalize("//[2001:db8::1:0000:1]/"), "//[2001:db8::1:0:1]/"); + strictEqual(URI.normalize("//[2001:db8:0:0:0:0:2:1]/"), "//[2001:db8::2:1]/"); + strictEqual(URI.normalize("//[2001:db8:0:1:1:1:1:1]/"), "//[2001:db8:0:1:1:1:1:1]/"); + strictEqual(URI.normalize("//[2001:0:0:1:0:0:0:1]/"), "//[2001:0:0:1::1]/"); + strictEqual(URI.normalize("//[2001:db8:0:0:1:0:0:1]/"), "//[2001:db8::1:0:0:1]/"); + strictEqual(URI.normalize("//[2001:DB8::1]/"), "//[2001:db8::1]/"); + strictEqual(URI.normalize("//[0:0:0:0:0:ffff:192.0.2.1]/"), "//[::ffff:192.0.2.1]/"); + + //Mixed IPv4 and IPv6 address + strictEqual(URI.normalize("//[1:2:3:4:5:6:192.0.2.1]/"), "//[1:2:3:4:5:6:192.0.2.1]/"); + strictEqual(URI.normalize("//[1:2:3:4:5:6:192.068.001.000]/"), "//[1:2:3:4:5:6:192.68.1.0]/"); +}); + +test("URI Equals", function () { + //test from RFC 3986 + strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d"), true); + + //test from RFC 3987 + strictEqual(URI.equal("http://example.org/~user", "http://example.org/%7euser"), true); +}); + +test("Escape Component", function () { + var chr; + for (var d = 0; d <= 129; ++d) { + chr = String.fromCharCode(d); + if (!chr.match(/[\$\&\+\,\;\=]/)) { + strictEqual(URI.escapeComponent(chr), encodeURIComponent(chr)); + } else { + strictEqual(URI.escapeComponent(chr), chr); + } + } + strictEqual(URI.escapeComponent("\u00c0"), encodeURIComponent("\u00c0")); + strictEqual(URI.escapeComponent("\u07ff"), encodeURIComponent("\u07ff")); + strictEqual(URI.escapeComponent("\u0800"), encodeURIComponent("\u0800")); + strictEqual(URI.escapeComponent("\u30a2"), encodeURIComponent("\u30a2")); +}); + +test("Unescape Component", function () { + var chr; + for (var d = 0; d <= 129; ++d) { + chr = String.fromCharCode(d); + strictEqual(URI.unescapeComponent(encodeURIComponent(chr)), chr); + } + strictEqual(URI.unescapeComponent(encodeURIComponent("\u00c0")), "\u00c0"); + strictEqual(URI.unescapeComponent(encodeURIComponent("\u07ff")), "\u07ff"); + strictEqual(URI.unescapeComponent(encodeURIComponent("\u0800")), "\u0800"); + strictEqual(URI.unescapeComponent(encodeURIComponent("\u30a2")), "\u30a2"); +}); + +// +// IRI +// + + + +var IRI_OPTION = { iri : true, unicodeSupport : true }; + +test("IRI Parsing", function () { + var components = URI.parse("uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy", IRI_OPTION); + strictEqual(components.error, undefined, "all errors"); + strictEqual(components.scheme, "uri", "scheme"); + //strictEqual(components.authority, "us\xA0er:pa\uD7FFss@example.com:123", "authority"); + strictEqual(components.userinfo, "us\xA0er:pa\uD7FFss", "userinfo"); + strictEqual(components.host, "example.com", "host"); + strictEqual(components.port, 123, "port"); + strictEqual(components.path, "/o\uF900ne/t\uFDCFwo.t\uFDF0hree", "path"); + strictEqual(components.query, "q1=a1\uF8FF\uE000&q2=a2", "query"); + strictEqual(components.fragment, "bo\uFFEFdy", "fragment"); +}); + +test("IRI Serialization", function () { + var components = { + scheme : "uri", + userinfo : "us\xA0er:pa\uD7FFss", + host : "example.com", + port : 123, + path : "/o\uF900ne/t\uFDCFwo.t\uFDF0hree", + query : "q1=a1\uF8FF\uE000&q2=a2", + fragment : "bo\uFFEFdy\uE001" + }; + strictEqual(URI.serialize(components, IRI_OPTION), "uri://us\xA0er:pa\uD7FFss@example.com:123/o\uF900ne/t\uFDCFwo.t\uFDF0hree?q1=a1\uF8FF\uE000&q2=a2#bo\uFFEFdy%EE%80%81"); +}); + +test("IRI Normalizing", function () { + strictEqual(URI.normalize("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION), "uri://www.example.org/red%09ros\xE9#red"); +}); + +test("IRI Equals", function () { + //example from RFC 3987 + strictEqual(URI.equal("example://a/b/c/%7Bfoo%7D/ros\xE9", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d/ros%C3%A9", IRI_OPTION), true); +}); + +test("Convert IRI to URI", function () { + //example from RFC 3987 + strictEqual(URI.serialize(URI.parse("uri://www.example.org/red%09ros\xE9#red", IRI_OPTION)), "uri://www.example.org/red%09ros%C3%A9#red"); + + //Internationalized Domain Name conversion via punycode example from RFC 3987 + strictEqual(URI.serialize(URI.parse("uri://r\xE9sum\xE9.example.org", {iri:true, domainHost:true}), {domainHost:true}), "uri://xn--rsum-bpad.example.org"); +}); + +test("Convert URI to IRI", function () { + //examples from RFC 3987 + strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%C3%BCrst"), IRI_OPTION), "uri://www.example.org/D\xFCrst"); + strictEqual(URI.serialize(URI.parse("uri://www.example.org/D%FCrst"), IRI_OPTION), "uri://www.example.org/D%FCrst"); + strictEqual(URI.serialize(URI.parse("uri://xn--99zt52a.example.org/%e2%80%ae"), IRI_OPTION), "uri://xn--99zt52a.example.org/%E2%80%AE"); //or uri://\u7D0D\u8C46.example.org/%E2%80%AE + + //Internationalized Domain Name conversion via punycode example from RFC 3987 + strictEqual(URI.serialize(URI.parse("uri://xn--rsum-bpad.example.org", {domainHost:true}), {iri:true, domainHost:true}), "uri://r\xE9sum\xE9.example.org"); +}); + +// +// HTTP +// + +if (URI.SCHEMES["http"]) { + + //module("HTTP"); + + test("HTTP Equals", function () { + //test from RFC 2616 + strictEqual(URI.equal("http://abc.com:80/~smith/home.html", "http://abc.com/~smith/home.html"), true); + strictEqual(URI.equal("http://ABC.com/%7Esmith/home.html", "http://abc.com/~smith/home.html"), true); + strictEqual(URI.equal("http://ABC.com:/%7esmith/home.html", "http://abc.com/~smith/home.html"), true); + strictEqual(URI.equal("HTTP://ABC.COM", "http://abc.com/"), true); + //test from RFC 3986 + strictEqual(URI.equal("http://example.com:/", "http://example.com:80/"), true); + }); + +} + +if (URI.SCHEMES["https"]) { + + //module("HTTPS"); + + test("HTTPS Equals", function () { + strictEqual(URI.equal("https://example.com", "https://example.com:443/"), true); + strictEqual(URI.equal("https://example.com:/", "https://example.com:443/"), true); + }); + +} + +// +// URN +// + +if (URI.SCHEMES["urn"]) { + + //module("URN"); + + test("URN Parsing", function () { + //example from RFC 2141 + var components = URI.parse("urn:foo:a123,456"); + strictEqual(components.error, undefined, "errors"); + strictEqual(components.scheme, "urn", "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, undefined, "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + strictEqual(components.nid, "foo", "nid"); + strictEqual(components.nss, "a123,456", "nss"); + }); + + test("URN Serialization", function () { + //example from RFC 2141 + var components = { + scheme : "urn", + nid : "foo", + nss : "a123,456" + }; + strictEqual(URI.serialize(components), "urn:foo:a123,456"); + }); + + test("URN Equals", function () { + //test from RFC 2141 + strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:a123,456"), true); + strictEqual(URI.equal("urn:foo:a123,456", "URN:foo:a123,456"), true); + strictEqual(URI.equal("urn:foo:a123,456", "urn:FOO:a123,456"), true); + strictEqual(URI.equal("urn:foo:a123,456", "urn:foo:A123,456"), false); + strictEqual(URI.equal("urn:foo:a123%2C456", "URN:FOO:a123%2c456"), true); + }); + + test("URN Resolving", function () { + //example from epoberezkin + strictEqual(URI.resolve('', 'urn:some:ip:prop'), 'urn:some:ip:prop'); + strictEqual(URI.resolve('#', 'urn:some:ip:prop'), 'urn:some:ip:prop'); + strictEqual(URI.resolve('urn:some:ip:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop'); + strictEqual(URI.resolve('urn:some:other:prop', 'urn:some:ip:prop'), 'urn:some:ip:prop'); + }); + + // + // URN UUID + // + + test("UUID Parsing", function () { + //example from RFC 4122 + var components = URI.parse("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); + strictEqual(components.error, undefined, "errors"); + strictEqual(components.scheme, "urn", "scheme"); + //strictEqual(components.authority, undefined, "authority"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, undefined, "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + strictEqual(components.nid, "uuid", "nid"); + strictEqual(components.nss, undefined, "nss"); + strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid"); + + components = URI.parse("urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6"); + notStrictEqual(components.error, undefined, "errors"); + }); + + test("UUID Serialization", function () { + //example from RFC 4122 + var components = { + scheme : "urn", + nid : "uuid", + uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" + }; + strictEqual(URI.serialize(components), "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); + + components = { + scheme : "urn", + nid : "uuid", + uuid : "notauuid-7dec-11d0-a765-00a0c91e6bf6" + }; + strictEqual(URI.serialize(components), "urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6"); + }); + + test("UUID Equals", function () { + strictEqual(URI.equal("URN:UUID:F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6", "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"), true); + }); + + test("URN NID Override", function () { + var components = URI.parse("urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", {nid:"uuid"}); + strictEqual(components.error, undefined, "errors"); + strictEqual(components.scheme, "urn", "scheme"); + strictEqual(components.path, undefined, "path"); + strictEqual(components.nid, "foo", "nid"); + strictEqual(components.nss, undefined, "nss"); + strictEqual(components.uuid, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uuid"); + + var components = { + scheme : "urn", + nid : "foo", + uuid : "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" + }; + strictEqual(URI.serialize(components, {nid:"uuid"}), "urn:foo:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"); + }); +} + +// +// Mailto +// + +if (URI.SCHEMES["mailto"]) { + + //module("Mailto"); + + test("Mailto Parse", function () { + var components; + + //tests from RFC 6068 + + components = URI.parse("mailto:chris@example.com"); + strictEqual(components.error, undefined, "error"); + strictEqual(components.scheme, "mailto", "scheme"); + strictEqual(components.userinfo, undefined, "userinfo"); + strictEqual(components.host, undefined, "host"); + strictEqual(components.port, undefined, "port"); + strictEqual(components.path, undefined, "path"); + strictEqual(components.query, undefined, "query"); + strictEqual(components.fragment, undefined, "fragment"); + deepEqual(components.to, ["chris@example.com"], "to"); + strictEqual(components.subject, undefined, "subject"); + strictEqual(components.body, undefined, "body"); + strictEqual(components.headers, undefined, "headers"); + + components = URI.parse("mailto:infobot@example.com?subject=current-issue"); + deepEqual(components.to, ["infobot@example.com"], "to"); + strictEqual(components.subject, "current-issue", "subject"); + + components = URI.parse("mailto:infobot@example.com?body=send%20current-issue"); + deepEqual(components.to, ["infobot@example.com"], "to"); + strictEqual(components.body, "send current-issue", "body"); + + components = URI.parse("mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"); + deepEqual(components.to, ["infobot@example.com"], "to"); + strictEqual(components.body, "send current-issue\x0D\x0Asend index", "body"); + + components = URI.parse("mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E"); + deepEqual(components.to, ["list@example.org"], "to"); + deepEqual(components.headers, {"In-Reply-To":"<3469A91.D10AF4C@example.com>"}, "headers"); + + components = URI.parse("mailto:majordomo@example.com?body=subscribe%20bamboo-l"); + deepEqual(components.to, ["majordomo@example.com"], "to"); + strictEqual(components.body, "subscribe bamboo-l", "body"); + + components = URI.parse("mailto:joe@example.com?cc=bob@example.com&body=hello"); + deepEqual(components.to, ["joe@example.com"], "to"); + strictEqual(components.body, "hello", "body"); + deepEqual(components.headers, {"cc":"bob@example.com"}, "headers"); + + components = URI.parse("mailto:joe@example.com?cc=bob@example.com?body=hello"); + if (URI.VALIDATE_SUPPORT) ok(components.error, "invalid header fields"); + + components = URI.parse("mailto:gorby%25kremvax@example.com"); + deepEqual(components.to, ["gorby%kremvax@example.com"], "to gorby%kremvax@example.com"); + + components = URI.parse("mailto:unlikely%3Faddress@example.com?blat=foop"); + deepEqual(components.to, ["unlikely?address@example.com"], "to unlikely?address@example.com"); + deepEqual(components.headers, {"blat":"foop"}, "headers"); + + components = URI.parse("mailto:Mike%26family@example.org"); + deepEqual(components.to, ["Mike&family@example.org"], "to Mike&family@example.org"); + + components = URI.parse("mailto:%22not%40me%22@example.org"); + deepEqual(components.to, ['"not@me"@example.org'], "to " + '"not@me"@example.org'); + + components = URI.parse("mailto:%22oh%5C%5Cno%22@example.org"); + deepEqual(components.to, ['"oh\\\\no"@example.org'], "to " + '"oh\\\\no"@example.org'); + + components = URI.parse("mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org"); + deepEqual(components.to, ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org'], "to " + '"\\\\\\"it\'s\\ ugly\\\\\\""@example.org'); + + components = URI.parse("mailto:user@example.org?subject=caf%C3%A9"); + deepEqual(components.to, ["user@example.org"], "to"); + strictEqual(components.subject, "caf\xE9", "subject"); + + components = URI.parse("mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D"); + deepEqual(components.to, ["user@example.org"], "to"); + strictEqual(components.subject, "=?utf-8?Q?caf=C3=A9?=", "subject"); //TODO: Verify this + + components = URI.parse("mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D"); + deepEqual(components.to, ["user@example.org"], "to"); + strictEqual(components.subject, "=?iso-8859-1?Q?caf=E9?=", "subject"); //TODO: Verify this + + components = URI.parse("mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9"); + deepEqual(components.to, ["user@example.org"], "to"); + strictEqual(components.subject, "caf\xE9", "subject"); + strictEqual(components.body, "caf\xE9", "body"); + + if (URI.IRI_SUPPORT) { + components = URI.parse("mailto:user@%E7%B4%8D%E8%B1%86.example.org?subject=Test&body=NATTO"); + deepEqual(components.to, ["user@xn--99zt52a.example.org"], "to"); + strictEqual(components.subject, "Test", "subject"); + strictEqual(components.body, "NATTO", "body"); + } + + }); + + test("Mailto Serialize", function () { + var components; + + //tests from RFC 6068 + strictEqual(URI.serialize({scheme : "mailto", to : ["chris@example.com"]}), "mailto:chris@example.com"); + strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "current-issue"}), "mailto:infobot@example.com?body=current-issue"); + strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue"}), "mailto:infobot@example.com?body=send%20current-issue"); + strictEqual(URI.serialize({scheme : "mailto", to : ["infobot@example.com"], body : "send current-issue\x0D\x0Asend index"}), "mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"); + strictEqual(URI.serialize({scheme : "mailto", to : ["list@example.org"], headers : {"In-Reply-To" : "<3469A91.D10AF4C@example.com>"}}), "mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E"); + strictEqual(URI.serialize({scheme : "mailto", to : ["majordomo@example.com"], body : "subscribe bamboo-l"}), "mailto:majordomo@example.com?body=subscribe%20bamboo-l"); + strictEqual(URI.serialize({scheme : "mailto", to : ["joe@example.com"], headers : {"cc" : "bob@example.com", "body" : "hello"}}), "mailto:joe@example.com?cc=bob@example.com&body=hello"); + strictEqual(URI.serialize({scheme : "mailto", to : ["gorby%25kremvax@example.com"]}), "mailto:gorby%25kremvax@example.com"); + strictEqual(URI.serialize({scheme : "mailto", to : ["unlikely%3Faddress@example.com"], headers : {"blat" : "foop"}}), "mailto:unlikely%3Faddress@example.com?blat=foop"); + strictEqual(URI.serialize({scheme : "mailto", to : ["Mike&family@example.org"]}), "mailto:Mike%26family@example.org"); + strictEqual(URI.serialize({scheme : "mailto", to : ['"not@me"@example.org']}), "mailto:%22not%40me%22@example.org"); + strictEqual(URI.serialize({scheme : "mailto", to : ['"oh\\\\no"@example.org']}), "mailto:%22oh%5C%5Cno%22@example.org"); + strictEqual(URI.serialize({scheme : "mailto", to : ['"\\\\\\"it\'s\\ ugly\\\\\\""@example.org']}), "mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org"); + strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9"); + strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?utf-8?Q?caf=C3=A9?="}), "mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D"); + strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "=?iso-8859-1?Q?caf=E9?="}), "mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D"); + strictEqual(URI.serialize({scheme : "mailto", to : ["user@example.org"], subject : "caf\xE9", body : "caf\xE9"}), "mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9"); + if (URI.IRI_SUPPORT) { + strictEqual(URI.serialize({scheme : "mailto", to : ["us\xE9r@\u7d0d\u8c46.example.org"], subject : "Test", body : "NATTO"}), "mailto:us%C3%A9r@xn--99zt52a.example.org?subject=Test&body=NATTO"); + } + + }); + + test("Mailto Equals", function () { + //tests from RFC 6068 + strictEqual(URI.equal("mailto:addr1@an.example,addr2@an.example", "mailto:?to=addr1@an.example,addr2@an.example"), true); + strictEqual(URI.equal("mailto:?to=addr1@an.example,addr2@an.example", "mailto:addr1@an.example?to=addr2@an.example"), true); + }); + +} diff --git a/node_modules/uri-js/tsconfig.json b/node_modules/uri-js/tsconfig.json new file mode 100644 index 0000000..e289985 --- /dev/null +++ b/node_modules/uri-js/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "module": "es2015", + "target": "esnext", + "noImplicitAny": true, + "sourceMap": true, + "alwaysStrict": true, + "declaration": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "importHelpers": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "outDir": "dist/esnext", + "strictNullChecks": true + }, + "include": [ + "src/**/*" + ] +} diff --git a/node_modules/uri-js/yarn.lock b/node_modules/uri-js/yarn.lock new file mode 100644 index 0000000..569687d --- /dev/null +++ b/node_modules/uri-js/yarn.lock @@ -0,0 +1,1902 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@6, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-external-helpers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-es2016@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" + dependencies: + babel-plugin-transform-exponentiation-operator "^6.24.1" + +babel-preset-es2017@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.24.1" + +babel-preset-latest@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-latest/-/babel-preset-latest-6.24.1.tgz#677de069154a7485c2d25c577c02f624b85b85e8" + dependencies: + babel-preset-es2015 "^6.24.1" + babel-preset-es2016 "^6.24.1" + babel-preset-es2017 "^6.24.1" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-resolve@^1.11.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +builtin-modules@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@^2.11.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.4.tgz#f2c8bf181f2a80b92f360121429ce63a2f0aeae0" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.39" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash@^4.17.4: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha-qunit-ui@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/mocha-qunit-ui/-/mocha-qunit-ui-0.1.3.tgz#e3e1ff1dac33222b10cef681efd7f82664141ea9" + +mocha@^3.2.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.8" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + he "1.1.1" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nan@^2.3.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +private@^0.1.6, private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.6: + version "1.6.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c" + dependencies: + path-parse "^1.0.5" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rollup-plugin-babel@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" + dependencies: + babel-core "6" + babel-plugin-transform-es2015-classes "^6.9.0" + object-assign "^4.1.0" + rollup-pluginutils "^1.5.0" + +rollup-plugin-node-resolve@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.1.1.tgz#cbb783b0d15b02794d58915350b2f0d902b8ddc8" + dependencies: + browser-resolve "^1.11.0" + builtin-modules "^1.1.0" + resolve "^1.1.6" + +rollup-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup@^0.41.6: + version "0.41.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" + dependencies: + source-map-support "^0.4.0" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + +semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sorcery@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" + dependencies: + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + sourcemap-codec "^1.3.0" + +source-map-support@^0.4.0, source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sourcemap-codec@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2" + +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +typescript@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.1.tgz#6160e4f8f195d5ba81d4876f9c0cc1fbc0820624" + +uglify-js@^2.8.14: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" diff --git a/node_modules/url/.npmignore b/node_modules/url/.npmignore new file mode 100644 index 0000000..ba11471 --- /dev/null +++ b/node_modules/url/.npmignore @@ -0,0 +1 @@ +test-url.js diff --git a/node_modules/url/.travis.yml b/node_modules/url/.travis.yml new file mode 100644 index 0000000..16ed301 --- /dev/null +++ b/node_modules/url/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "0.10" +env: + global: + - secure: OgPRLCzHFh5WbjHEKlghHFW1oOreSF2JVUr3CMaFDi03ngTS2WONSw8mRn8SA6FTldiGGBx1n8orDzUw6cdkB7+tkU3G5B0M0V3vl823NaUFKgxsCM3UGDYfJb3yfAG5cj72rVZoX/ABd1fVuG4vBIlDLxsSlKQFMzUCFoyttr8= + - secure: AiZP8GHbyx83ZBhOvOxxtpNcgNHoP+vo5G1a1OYU78EHCgHg8NRyHKyCdrBnPvw6mV2BI/8frZaXAEicsHMtHMofBYn7nibNlaajBPI8AkHtYfNSc+zO+71Kwv7VOTOKKnkMEIkqhHlc6njFoH3QaBNHsgNlzzplPxaIt8vdUVk= diff --git a/node_modules/url/.zuul.yml b/node_modules/url/.zuul.yml new file mode 100644 index 0000000..feea8b6 --- /dev/null +++ b/node_modules/url/.zuul.yml @@ -0,0 +1,16 @@ +ui: mocha-tdd +browsers: + - name: chrome + version: latest + - name: firefox + version: 24..latest + - name: safari + version: latest + - name: ie + version: 9..latest + - name: iphone + version: oldest..latest + - name: ipad + version: oldest..latest + - name: android + version: oldest..latest diff --git a/node_modules/url/LICENSE b/node_modules/url/LICENSE new file mode 100644 index 0000000..f45bc11 --- /dev/null +++ b/node_modules/url/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright Joyent, Inc. and other Node contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/url/README.md b/node_modules/url/README.md new file mode 100644 index 0000000..8b35460 --- /dev/null +++ b/node_modules/url/README.md @@ -0,0 +1,108 @@ +# node-url + +[![Build Status](https://travis-ci.org/defunctzombie/node-url.svg?branch=master)](https://travis-ci.org/defunctzombie/node-url) + +This module has utilities for URL resolution and parsing meant to have feature parity with node.js core [url](http://nodejs.org/api/url.html) module. + +```js +var url = require('url'); +``` + +## api + +Parsed URL objects have some or all of the following fields, depending on +whether or not they exist in the URL string. Any parts that are not in the URL +string will not be in the parsed object. Examples are shown for the URL + +`'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'` + +* `href`: The full URL that was originally parsed. Both the protocol and host are lowercased. + + Example: `'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'` + +* `protocol`: The request protocol, lowercased. + + Example: `'http:'` + +* `host`: The full lowercased host portion of the URL, including port + information. + + Example: `'host.com:8080'` + +* `auth`: The authentication information portion of a URL. + + Example: `'user:pass'` + +* `hostname`: Just the lowercased hostname portion of the host. + + Example: `'host.com'` + +* `port`: The port number portion of the host. + + Example: `'8080'` + +* `pathname`: The path section of the URL, that comes after the host and + before the query, including the initial slash if present. + + Example: `'/p/a/t/h'` + +* `search`: The 'query string' portion of the URL, including the leading + question mark. + + Example: `'?query=string'` + +* `path`: Concatenation of `pathname` and `search`. + + Example: `'/p/a/t/h?query=string'` + +* `query`: Either the 'params' portion of the query string, or a + querystring-parsed object. + + Example: `'query=string'` or `{'query':'string'}` + +* `hash`: The 'fragment' portion of the URL including the pound-sign. + + Example: `'#hash'` + +The following methods are provided by the URL module: + +### url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) + +Take a URL string, and return an object. + +Pass `true` as the second argument to also parse +the query string using the `querystring` module. +Defaults to `false`. + +Pass `true` as the third argument to treat `//foo/bar` as +`{ host: 'foo', pathname: '/bar' }` rather than +`{ pathname: '//foo/bar' }`. Defaults to `false`. + +### url.format(urlObj) + +Take a parsed URL object, and return a formatted URL string. + +* `href` will be ignored. +* `protocol` is treated the same with or without the trailing `:` (colon). + * The protocols `http`, `https`, `ftp`, `gopher`, `file` will be + postfixed with `://` (colon-slash-slash). + * All other protocols `mailto`, `xmpp`, `aim`, `sftp`, `foo`, etc will + be postfixed with `:` (colon) +* `auth` will be used if present. +* `hostname` will only be used if `host` is absent. +* `port` will only be used if `host` is absent. +* `host` will be used in place of `hostname` and `port` +* `pathname` is treated the same with or without the leading `/` (slash) +* `search` will be used in place of `query` +* `query` (object; see `querystring`) will only be used if `search` is absent. +* `search` is treated the same with or without the leading `?` (question mark) +* `hash` is treated the same with or without the leading `#` (pound sign, anchor) + +### url.resolve(from, to) + +Take a base URL, and a href URL, and resolve them as a browser would for +an anchor tag. Examples: + + url.resolve('/one/two/three', 'four') // '/one/two/four' + url.resolve('http://example.com/', '/one') // 'http://example.com/one' + url.resolve('http://example.com/one', '/two') // 'http://example.com/two' diff --git a/node_modules/url/node_modules/punycode/LICENSE-MIT.txt b/node_modules/url/node_modules/punycode/LICENSE-MIT.txt new file mode 100644 index 0000000..a41e0a7 --- /dev/null +++ b/node_modules/url/node_modules/punycode/LICENSE-MIT.txt @@ -0,0 +1,20 @@ +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/url/node_modules/punycode/README.md b/node_modules/url/node_modules/punycode/README.md new file mode 100644 index 0000000..831e637 --- /dev/null +++ b/node_modules/url/node_modules/punycode/README.md @@ -0,0 +1,176 @@ +# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/coveralls/bestiejs/punycode.js/master.svg)](https://coveralls.io/r/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js) + +A robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms. + +This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: + +* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C) +* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) +* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) +* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) +* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) + +This project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc). + +## Installation + +Via [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2): + +```bash +npm install punycode +``` + +Via [Bower](http://bower.io/): + +```bash +bower install punycode +``` + +Via [Component](https://github.com/component/component): + +```bash +component install bestiejs/punycode.js +``` + +In a browser: + +```html + +``` + +In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): + +```js +var punycode = require('punycode'); +``` + +In [Rhino](http://www.mozilla.org/rhino/): + +```js +load('punycode.js'); +``` + +Using an AMD loader like [RequireJS](http://requirejs.org/): + +```js +require( + { + 'paths': { + 'punycode': 'path/to/punycode' + } + }, + ['punycode'], + function(punycode) { + console.log(punycode); + } +); +``` + +## API + +### `punycode.decode(string)` + +Converts a Punycode string of ASCII symbols to a string of Unicode symbols. + +```js +// decode domain name parts +punycode.decode('maana-pta'); // 'mañana' +punycode.decode('--dqo34k'); // '☃-⌘' +``` + +### `punycode.encode(string)` + +Converts a string of Unicode symbols to a Punycode string of ASCII symbols. + +```js +// encode domain name parts +punycode.encode('mañana'); // 'maana-pta' +punycode.encode('☃-⌘'); // '--dqo34k' +``` + +### `punycode.toUnicode(input)` + +Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. + +```js +// decode domain names +punycode.toUnicode('xn--maana-pta.com'); +// → 'mañana.com' +punycode.toUnicode('xn----dqo34k.com'); +// → '☃-⌘.com' + +// decode email addresses +punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); +// → 'джумла@джpумлатест.bрфa' +``` + +### `punycode.toASCII(input)` + +Converts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. + +```js +// encode domain names +punycode.toASCII('mañana.com'); +// → 'xn--maana-pta.com' +punycode.toASCII('☃-⌘.com'); +// → 'xn----dqo34k.com' + +// encode email addresses +punycode.toASCII('джумла@джpумлатест.bрфa'); +// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' +``` + +### `punycode.ucs2` + +#### `punycode.ucs2.decode(string)` + +Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. + +```js +punycode.ucs2.decode('abc'); +// → [0x61, 0x62, 0x63] +// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: +punycode.ucs2.decode('\uD834\uDF06'); +// → [0x1D306] +``` + +#### `punycode.ucs2.encode(codePoints)` + +Creates a string based on an array of numeric code point values. + +```js +punycode.ucs2.encode([0x61, 0x62, 0x63]); +// → 'abc' +punycode.ucs2.encode([0x1D306]); +// → '\uD834\uDF06' +``` + +### `punycode.version` + +A string representing the current Punycode.js version number. + +## Unit tests & code coverage + +After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. + +Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. + +To generate the code coverage report, use `grunt cover`. + +Feel free to fork if you see possible improvements! + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## Contributors + +| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | +|---| +| [John-David Dalton](http://allyoucanleet.com/) | + +## License + +Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/url/node_modules/punycode/package.json b/node_modules/url/node_modules/punycode/package.json new file mode 100644 index 0000000..9d38e3d --- /dev/null +++ b/node_modules/url/node_modules/punycode/package.json @@ -0,0 +1,80 @@ +{ + "_from": "punycode@1.3.2", + "_id": "punycode@1.3.2", + "_inBundle": false, + "_integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "_location": "/url/punycode", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "punycode@1.3.2", + "name": "punycode", + "escapedName": "punycode", + "rawSpec": "1.3.2", + "saveSpec": null, + "fetchSpec": "1.3.2" + }, + "_requiredBy": [ + "/url" + ], + "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "_shasum": "9653a036fb7c1ee42342f2325cceefea3926c48d", + "_spec": "punycode@1.3.2", + "_where": "/home/peter/www/prive/cypress-test/node_modules/url", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "bugs": { + "url": "https://github.com/bestiejs/punycode.js/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + { + "name": "John-David Dalton", + "url": "http://allyoucanleet.com/" + } + ], + "deprecated": false, + "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", + "devDependencies": { + "coveralls": "^2.10.1", + "grunt": "^0.4.5", + "grunt-contrib-uglify": "^0.5.0", + "grunt-shell": "^0.7.0", + "istanbul": "^0.2.13", + "qunit-extras": "^1.2.0", + "qunitjs": "~1.11.0", + "requirejs": "^2.1.14" + }, + "files": [ + "LICENSE-MIT.txt", + "punycode.js" + ], + "homepage": "https://mths.be/punycode", + "keywords": [ + "punycode", + "unicode", + "idn", + "idna", + "dns", + "url", + "domain" + ], + "license": "MIT", + "main": "punycode.js", + "name": "punycode", + "repository": { + "type": "git", + "url": "git+https://github.com/bestiejs/punycode.js.git" + }, + "scripts": { + "test": "node tests/tests.js" + }, + "version": "1.3.2" +} diff --git a/node_modules/url/node_modules/punycode/punycode.js b/node_modules/url/node_modules/punycode/punycode.js new file mode 100644 index 0000000..ac68597 --- /dev/null +++ b/node_modules/url/node_modules/punycode/punycode.js @@ -0,0 +1,530 @@ +/*! https://mths.be/punycode v1.3.2 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * http://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.3.2', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); diff --git a/node_modules/url/package.json b/node_modules/url/package.json new file mode 100644 index 0000000..39105e0 --- /dev/null +++ b/node_modules/url/package.json @@ -0,0 +1,53 @@ +{ + "_from": "url@0.11.0", + "_id": "url@0.11.0", + "_inBundle": false, + "_integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "_location": "/url", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "url@0.11.0", + "name": "url", + "escapedName": "url", + "rawSpec": "0.11.0", + "saveSpec": null, + "fetchSpec": "0.11.0" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "_shasum": "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1", + "_spec": "url@0.11.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "bugs": { + "url": "https://github.com/defunctzombie/node-url/issues" + }, + "bundleDependencies": false, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "deprecated": false, + "description": "The core `url` packaged standalone for use with Browserify.", + "devDependencies": { + "assert": "1.1.1", + "mocha": "1.18.2", + "zuul": "3.3.0" + }, + "homepage": "https://github.com/defunctzombie/node-url#readme", + "license": "MIT", + "main": "./url.js", + "name": "url", + "repository": { + "type": "git", + "url": "git+https://github.com/defunctzombie/node-url.git" + }, + "scripts": { + "test": "mocha --ui qunit test.js && zuul -- test.js", + "test-local": "zuul --local -- test.js" + }, + "version": "0.11.0" +} diff --git a/node_modules/url/test.js b/node_modules/url/test.js new file mode 100644 index 0000000..3b7d335 --- /dev/null +++ b/node_modules/url/test.js @@ -0,0 +1,1599 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var assert = require('assert'); + +var url = require('./url'); + +// URLs to parse, and expected data +// { url : parsed } +var parseTests = { + '//some_path' : { + 'href': '//some_path', + 'pathname': '//some_path', + 'path': '//some_path' + }, + + 'http:\\\\evil-phisher\\foo.html#h\\a\\s\\h': { + protocol: 'http:', + slashes: true, + host: 'evil-phisher', + hostname: 'evil-phisher', + pathname: '/foo.html', + path: '/foo.html', + hash: '#h%5Ca%5Cs%5Ch', + href: 'http://evil-phisher/foo.html#h%5Ca%5Cs%5Ch' + }, + + 'http:\\\\evil-phisher\\foo.html?json="\\"foo\\""#h\\a\\s\\h': { + protocol: 'http:', + slashes: true, + host: 'evil-phisher', + hostname: 'evil-phisher', + pathname: '/foo.html', + search: '?json=%22%5C%22foo%5C%22%22', + query: 'json=%22%5C%22foo%5C%22%22', + path: '/foo.html?json=%22%5C%22foo%5C%22%22', + hash: '#h%5Ca%5Cs%5Ch', + href: 'http://evil-phisher/foo.html?json=%22%5C%22foo%5C%22%22#h%5Ca%5Cs%5Ch' + }, + + 'http:\\\\evil-phisher\\foo.html#h\\a\\s\\h?blarg': { + protocol: 'http:', + slashes: true, + host: 'evil-phisher', + hostname: 'evil-phisher', + pathname: '/foo.html', + path: '/foo.html', + hash: '#h%5Ca%5Cs%5Ch?blarg', + href: 'http://evil-phisher/foo.html#h%5Ca%5Cs%5Ch?blarg' + }, + + + 'http:\\\\evil-phisher\\foo.html': { + protocol: 'http:', + slashes: true, + host: 'evil-phisher', + hostname: 'evil-phisher', + pathname: '/foo.html', + path: '/foo.html', + href: 'http://evil-phisher/foo.html' + }, + + 'HTTP://www.example.com/' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'HTTP://www.example.com' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.ExAmPlE.com/' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user:pw@www.ExAmPlE.com/' : { + 'href': 'http://user:pw@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pw', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://USER:PW@www.ExAmPlE.com/' : { + 'href': 'http://USER:PW@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'USER:PW', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user@www.example.com/' : { + 'href': 'http://user@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user%3Apw@www.example.com/' : { + 'href': 'http://user:pw@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pw', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://x.com/path?that\'s#all, folks' : { + 'href': 'http://x.com/path?that%27s#all,%20folks', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.com', + 'hostname': 'x.com', + 'search': '?that%27s', + 'query': 'that%27s', + 'pathname': '/path', + 'hash': '#all,%20folks', + 'path': '/path?that%27s' + }, + + 'HTTP://X.COM/Y' : { + 'href': 'http://x.com/Y', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.com', + 'hostname': 'x.com', + 'pathname': '/Y', + 'path': '/Y' + }, + + // + not an invalid host character + // per https://url.spec.whatwg.org/#host-parsing + 'http://x.y.com+a/b/c' : { + 'href': 'http://x.y.com+a/b/c', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.y.com+a', + 'hostname': 'x.y.com+a', + 'pathname': '/b/c', + 'path': '/b/c' + }, + + // an unexpected invalid char in the hostname. + 'HtTp://x.y.cOm;a/b/c?d=e#f gi' : { + 'href': 'http://x.y.com/;a/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.y.com', + 'hostname': 'x.y.com', + 'pathname': ';a/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': ';a/b/c?d=e' + }, + + // make sure that we don't accidentally lcast the path parts. + 'HtTp://x.y.cOm;A/b/c?d=e#f gi' : { + 'href': 'http://x.y.com/;A/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.y.com', + 'hostname': 'x.y.com', + 'pathname': ';A/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': ';A/b/c?d=e' + }, + + 'http://x...y...#p': { + 'href': 'http://x...y.../#p', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x...y...', + 'hostname': 'x...y...', + 'hash': '#p', + 'pathname': '/', + 'path': '/' + }, + + 'http://x/p/"quoted"': { + 'href': 'http://x/p/%22quoted%22', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x', + 'hostname': 'x', + 'pathname': '/p/%22quoted%22', + 'path': '/p/%22quoted%22' + }, + + ' Is a URL!': { + 'href': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', + 'pathname': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', + 'path': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!' + }, + + 'http://www.narwhaljs.org/blog/categories?id=news' : { + 'href': 'http://www.narwhaljs.org/blog/categories?id=news', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.narwhaljs.org', + 'hostname': 'www.narwhaljs.org', + 'search': '?id=news', + 'query': 'id=news', + 'pathname': '/blog/categories', + 'path': '/blog/categories?id=news' + }, + + 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' : { + 'href': 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'hostname': 'mt0.google.com', + 'pathname': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', + 'path': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' : { + 'href': 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api' + + '&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'hostname': 'mt0.google.com', + 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', + 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', + 'pathname': '/vt/lyrs=m@114', + 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'http://user:pass@mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=': + { + 'href': 'http://user:pass@mt0.google.com/vt/lyrs=m@114???' + + '&hl=en&src=api&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'auth': 'user:pass', + 'hostname': 'mt0.google.com', + 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', + 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', + 'pathname': '/vt/lyrs=m@114', + 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'file:///etc/passwd' : { + 'href': 'file:///etc/passwd', + 'slashes': true, + 'protocol': 'file:', + 'pathname': '/etc/passwd', + 'hostname': '', + 'host': '', + 'path': '/etc/passwd' + }, + + 'file://localhost/etc/passwd' : { + 'href': 'file://localhost/etc/passwd', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/passwd', + 'hostname': 'localhost', + 'host': 'localhost', + 'path': '/etc/passwd' + }, + + 'file://foo/etc/passwd' : { + 'href': 'file://foo/etc/passwd', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/passwd', + 'hostname': 'foo', + 'host': 'foo', + 'path': '/etc/passwd' + }, + + 'file:///etc/node/' : { + 'href': 'file:///etc/node/', + 'slashes': true, + 'protocol': 'file:', + 'pathname': '/etc/node/', + 'hostname': '', + 'host': '', + 'path': '/etc/node/' + }, + + 'file://localhost/etc/node/' : { + 'href': 'file://localhost/etc/node/', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/node/', + 'hostname': 'localhost', + 'host': 'localhost', + 'path': '/etc/node/' + }, + + 'file://foo/etc/node/' : { + 'href': 'file://foo/etc/node/', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/node/', + 'hostname': 'foo', + 'host': 'foo', + 'path': '/etc/node/' + }, + + 'http:/baz/../foo/bar' : { + 'href': 'http:/baz/../foo/bar', + 'protocol': 'http:', + 'pathname': '/baz/../foo/bar', + 'path': '/baz/../foo/bar' + }, + + 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag' : { + 'href': 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com:8000', + 'auth': 'user:pass', + 'port': '8000', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + '//user:pass@example.com:8000/foo/bar?baz=quux#frag' : { + 'href': '//user:pass@example.com:8000/foo/bar?baz=quux#frag', + 'slashes': true, + 'host': 'example.com:8000', + 'auth': 'user:pass', + 'port': '8000', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + '/foo/bar?baz=quux#frag' : { + 'href': '/foo/bar?baz=quux#frag', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + 'http:/foo/bar?baz=quux#frag' : { + 'href': 'http:/foo/bar?baz=quux#frag', + 'protocol': 'http:', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + 'mailto:foo@bar.com?subject=hello' : { + 'href': 'mailto:foo@bar.com?subject=hello', + 'protocol': 'mailto:', + 'host': 'bar.com', + 'auth' : 'foo', + 'hostname' : 'bar.com', + 'search': '?subject=hello', + 'query': 'subject=hello', + 'path': '?subject=hello' + }, + + 'javascript:alert(\'hello\');' : { + 'href': 'javascript:alert(\'hello\');', + 'protocol': 'javascript:', + 'pathname': 'alert(\'hello\');', + 'path': 'alert(\'hello\');' + }, + + 'xmpp:isaacschlueter@jabber.org' : { + 'href': 'xmpp:isaacschlueter@jabber.org', + 'protocol': 'xmpp:', + 'host': 'jabber.org', + 'auth': 'isaacschlueter', + 'hostname': 'jabber.org' + }, + + 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar' : { + 'href' : 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar', + 'protocol' : 'http:', + 'slashes': true, + 'host' : '127.0.0.1:8080', + 'auth' : 'atpass:foo@bar', + 'hostname' : '127.0.0.1', + 'port' : '8080', + 'pathname': '/path', + 'search' : '?search=foo', + 'query' : 'search=foo', + 'hash' : '#bar', + 'path': '/path?search=foo' + }, + + 'svn+ssh://foo/bar': { + 'href': 'svn+ssh://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'svn+ssh:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dash-test://foo/bar': { + 'href': 'dash-test://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dash-test:foo/bar': { + 'href': 'dash-test:foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'path': '/bar' + }, + + 'dot.test://foo/bar': { + 'href': 'dot.test://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dot.test:foo/bar': { + 'href': 'dot.test:foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'path': '/bar' + }, + + // IDNA tests + 'http://www.日本語.com/' : { + 'href': 'http://www.xn--wgv71a119e.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--wgv71a119e.com', + 'hostname': 'www.xn--wgv71a119e.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://example.Bücher.com/' : { + 'href': 'http://example.xn--bcher-kva.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.xn--bcher-kva.com', + 'hostname': 'example.xn--bcher-kva.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.Äffchen.com/' : { + 'href': 'http://www.xn--ffchen-9ta.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--ffchen-9ta.com', + 'hostname': 'www.xn--ffchen-9ta.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.Äffchen.cOm;A/b/c?d=e#f gi' : { + 'href': 'http://www.xn--ffchen-9ta.com/;A/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--ffchen-9ta.com', + 'hostname': 'www.xn--ffchen-9ta.com', + 'pathname': ';A/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': ';A/b/c?d=e' + }, + + 'http://SÉLIER.COM/' : { + 'href': 'http://xn--slier-bsa.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--slier-bsa.com', + 'hostname': 'xn--slier-bsa.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://ليهمابتكلموشعربي؟.ي؟/' : { + 'href': 'http://xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', + 'hostname': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', + 'pathname': '/', + 'path': '/' + }, + + 'http://➡.ws/➡' : { + 'href': 'http://xn--hgi.ws/➡', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--hgi.ws', + 'hostname': 'xn--hgi.ws', + 'pathname': '/➡', + 'path': '/➡' + }, + + 'http://bucket_name.s3.amazonaws.com/image.jpg': { + protocol: 'http:', + 'slashes': true, + slashes: true, + host: 'bucket_name.s3.amazonaws.com', + hostname: 'bucket_name.s3.amazonaws.com', + pathname: '/image.jpg', + href: 'http://bucket_name.s3.amazonaws.com/image.jpg', + 'path': '/image.jpg' + }, + + 'git+http://github.com/joyent/node.git': { + protocol: 'git+http:', + slashes: true, + host: 'github.com', + hostname: 'github.com', + pathname: '/joyent/node.git', + path: '/joyent/node.git', + href: 'git+http://github.com/joyent/node.git' + }, + + //if local1@domain1 is uses as a relative URL it may + //be parse into auth@hostname, but here there is no + //way to make it work in url.parse, I add the test to be explicit + 'local1@domain1': { + 'pathname': 'local1@domain1', + 'path': 'local1@domain1', + 'href': 'local1@domain1' + }, + + //While this may seem counter-intuitive, a browser will parse + // as a path. + 'www.example.com' : { + 'href': 'www.example.com', + 'pathname': 'www.example.com', + 'path': 'www.example.com' + }, + + // ipv6 support + '[fe80::1]': { + 'href': '[fe80::1]', + 'pathname': '[fe80::1]', + 'path': '[fe80::1]' + }, + + 'coap://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]': { + 'protocol': 'coap:', + 'slashes': true, + 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]', + 'hostname': 'fedc:ba98:7654:3210:fedc:ba98:7654:3210', + 'href': 'coap://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/', + 'pathname': '/', + 'path': '/' + }, + + 'coap://[1080:0:0:0:8:800:200C:417A]:61616/': { + 'protocol': 'coap:', + 'slashes': true, + 'host': '[1080:0:0:0:8:800:200c:417a]:61616', + 'port': '61616', + 'hostname': '1080:0:0:0:8:800:200c:417a', + 'href': 'coap://[1080:0:0:0:8:800:200c:417a]:61616/', + 'pathname': '/', + 'path': '/' + }, + + 'http://user:password@[3ffe:2a00:100:7031::1]:8080': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:password', + 'host': '[3ffe:2a00:100:7031::1]:8080', + 'port': '8080', + 'hostname': '3ffe:2a00:100:7031::1', + 'href': 'http://user:password@[3ffe:2a00:100:7031::1]:8080/', + 'pathname': '/', + 'path': '/' + }, + + 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature': { + 'protocol': 'coap:', + 'slashes': true, + 'auth': 'u:p', + 'host': '[::192.9.5.5]:61616', + 'port': '61616', + 'hostname': '::192.9.5.5', + 'href': 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature', + 'search': '?n=Temperature', + 'query': 'n=Temperature', + 'pathname': '/.well-known/r', + 'path': '/.well-known/r?n=Temperature' + }, + + // empty port + 'http://example.com:': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/', + 'pathname': '/', + 'path': '/' + }, + + 'http://example.com:/a/b.html': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/a/b.html', + 'pathname': '/a/b.html', + 'path': '/a/b.html' + }, + + 'http://example.com:?a=b': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/?a=b', + 'search': '?a=b', + 'query': 'a=b', + 'pathname': '/', + 'path': '/?a=b' + }, + + 'http://example.com:#abc': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/#abc', + 'hash': '#abc', + 'pathname': '/', + 'path': '/' + }, + + 'http://[fe80::1]:/a/b?a=b#abc': { + 'protocol': 'http:', + 'slashes': true, + 'host': '[fe80::1]', + 'hostname': 'fe80::1', + 'href': 'http://[fe80::1]/a/b?a=b#abc', + 'search': '?a=b', + 'query': 'a=b', + 'hash': '#abc', + 'pathname': '/a/b', + 'path': '/a/b?a=b' + }, + + 'http://-lovemonsterz.tumblr.com/rss': { + 'protocol': 'http:', + 'slashes': true, + 'host': '-lovemonsterz.tumblr.com', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://-lovemonsterz.tumblr.com/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://-lovemonsterz.tumblr.com:80/rss': { + 'protocol': 'http:', + 'slashes': true, + 'port': '80', + 'host': '-lovemonsterz.tumblr.com:80', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://-lovemonsterz.tumblr.com:80/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://user:pass@-lovemonsterz.tumblr.com/rss': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'host': '-lovemonsterz.tumblr.com', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://user:pass@-lovemonsterz.tumblr.com/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://user:pass@-lovemonsterz.tumblr.com:80/rss': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'port': '80', + 'host': '-lovemonsterz.tumblr.com:80', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://user:pass@-lovemonsterz.tumblr.com:80/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://_jabber._tcp.google.com/test': { + 'protocol': 'http:', + 'slashes': true, + 'host': '_jabber._tcp.google.com', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://_jabber._tcp.google.com/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://user:pass@_jabber._tcp.google.com/test': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'host': '_jabber._tcp.google.com', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://user:pass@_jabber._tcp.google.com/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://_jabber._tcp.google.com:80/test': { + 'protocol': 'http:', + 'slashes': true, + 'port': '80', + 'host': '_jabber._tcp.google.com:80', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://_jabber._tcp.google.com:80/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://user:pass@_jabber._tcp.google.com:80/test': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'port': '80', + 'host': '_jabber._tcp.google.com:80', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://user:pass@_jabber._tcp.google.com:80/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://x:1/\' <>"`/{}|\\^~`/': { + protocol: 'http:', + slashes: true, + host: 'x:1', + port: '1', + hostname: 'x', + pathname: '/%27%20%3C%3E%22%60/%7B%7D%7C/%5E~%60/', + path: '/%27%20%3C%3E%22%60/%7B%7D%7C/%5E~%60/', + href: 'http://x:1/%27%20%3C%3E%22%60/%7B%7D%7C/%5E~%60/' + }, + + 'http://a@b@c/': { + protocol: 'http:', + slashes: true, + auth: 'a@b', + host: 'c', + hostname: 'c', + href: 'http://a%40b@c/', + path: '/', + pathname: '/' + }, + + 'http://a@b?@c': { + protocol: 'http:', + slashes: true, + auth: 'a', + host: 'b', + hostname: 'b', + href: 'http://a@b/?@c', + path: '/?@c', + pathname: '/', + search: '?@c', + query: '@c' + }, + + 'http://a\r" \t\n<\'b:b@c\r\nd/e?f':{ + protocol: 'http:', + slashes: true, + auth: 'a\r" \t\n<\'b:b', + host: 'c', + port: null, + hostname: 'c', + hash: null, + search: '?f', + query: 'f', + pathname: '%0D%0Ad/e', + path: '%0D%0Ad/e?f', + href: 'http://a%0D%22%20%09%0A%3C\'b:b@c/%0D%0Ad/e?f' + }, + + // git urls used by npm + 'git+ssh://git@github.com:npm/npm': { + protocol: 'git+ssh:', + slashes: true, + auth: 'git', + host: 'github.com', + port: null, + hostname: 'github.com', + hash: null, + search: null, + query: null, + pathname: '/:npm/npm', + path: '/:npm/npm', + href: 'git+ssh://git@github.com/:npm/npm' + } + +}; + +Object.keys(parseTests).forEach(function(u) { + test('parse(' + u + ')', function() { + var actual = url.parse(u), + spaced = url.parse(' \t ' + u + '\n\t'); + expected = parseTests[u]; + + Object.keys(actual).forEach(function (i) { + if (expected[i] === undefined && actual[i] === null) { + expected[i] = null; + } + }); + + assert.deepEqual(actual, expected); + assert.deepEqual(spaced, expected); + + var expected = parseTests[u].href, + actual = url.format(parseTests[u]); + + assert.equal(actual, expected, + 'format(' + u + ') == ' + u + '\nactual:' + actual); + }); +}); + +var parseTestsWithQueryString = { + '/foo/bar?baz=quux#frag' : { + 'href': '/foo/bar?baz=quux#frag', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': { + 'baz': 'quux' + }, + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + 'http://example.com' : { + 'href': 'http://example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'query': {}, + 'search': '', + 'pathname': '/', + 'path': '/' + }, + '/example': { + protocol: null, + slashes: null, + auth: null, + host: null, + port: null, + hostname: null, + hash: null, + search: '', + query: {}, + pathname: '/example', + path: '/example', + href: '/example' + }, + '/example?query=value':{ + protocol: null, + slashes: null, + auth: null, + host: null, + port: null, + hostname: null, + hash: null, + search: '?query=value', + query: { query: 'value' }, + pathname: '/example', + path: '/example?query=value', + href: '/example?query=value' + } +}; + +Object.keys(parseTestsWithQueryString).forEach(function(u) { + test('parse(' + u + ')', function() { + var actual = url.parse(u, true); + var expected = parseTestsWithQueryString[u]; + for (var i in actual) { + if (actual[i] === null && expected[i] === undefined) { + expected[i] = null; + } + } + + assert.deepEqual(actual, expected); + }); +}); + +// some extra formatting tests, just to verify +// that it'll format slightly wonky content to a valid url. +var formatTests = { + 'http://example.com?' : { + 'href': 'http://example.com/?', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'search': '?', + 'query': {}, + 'pathname': '/' + }, + 'http://example.com?foo=bar#frag' : { + 'href': 'http://example.com/?foo=bar#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=bar', + 'query': 'foo=bar', + 'pathname': '/' + }, + 'http://example.com?foo=@bar#frag' : { + 'href': 'http://example.com/?foo=@bar#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=@bar', + 'query': 'foo=@bar', + 'pathname': '/' + }, + 'http://example.com?foo=/bar/#frag' : { + 'href': 'http://example.com/?foo=/bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=/bar/', + 'query': 'foo=/bar/', + 'pathname': '/' + }, + 'http://example.com?foo=?bar/#frag' : { + 'href': 'http://example.com/?foo=?bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=?bar/', + 'query': 'foo=?bar/', + 'pathname': '/' + }, + 'http://example.com#frag=?bar/#frag' : { + 'href': 'http://example.com/#frag=?bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag=?bar/#frag', + 'pathname': '/' + }, + 'http://google.com" onload="alert(42)/' : { + 'href': 'http://google.com/%22%20onload=%22alert(42)/', + 'protocol': 'http:', + 'host': 'google.com', + 'pathname': '/%22%20onload=%22alert(42)/' + }, + 'http://a.com/a/b/c?s#h' : { + 'href': 'http://a.com/a/b/c?s#h', + 'protocol': 'http', + 'host': 'a.com', + 'pathname': 'a/b/c', + 'hash': 'h', + 'search': 's' + }, + 'xmpp:isaacschlueter@jabber.org' : { + 'href': 'xmpp:isaacschlueter@jabber.org', + 'protocol': 'xmpp:', + 'host': 'jabber.org', + 'auth': 'isaacschlueter', + 'hostname': 'jabber.org' + }, + 'http://atpass:foo%40bar@127.0.0.1/' : { + 'href': 'http://atpass:foo%40bar@127.0.0.1/', + 'auth': 'atpass:foo@bar', + 'hostname': '127.0.0.1', + 'protocol': 'http:', + 'pathname': '/' + }, + 'http://atslash%2F%40:%2F%40@foo/' : { + 'href': 'http://atslash%2F%40:%2F%40@foo/', + 'auth': 'atslash/@:/@', + 'hostname': 'foo', + 'protocol': 'http:', + 'pathname': '/' + }, + 'svn+ssh://foo/bar': { + 'href': 'svn+ssh://foo/bar', + 'hostname': 'foo', + 'protocol': 'svn+ssh:', + 'pathname': '/bar', + 'slashes': true + }, + 'dash-test://foo/bar': { + 'href': 'dash-test://foo/bar', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'slashes': true + }, + 'dash-test:foo/bar': { + 'href': 'dash-test:foo/bar', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar' + }, + 'dot.test://foo/bar': { + 'href': 'dot.test://foo/bar', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'slashes': true + }, + 'dot.test:foo/bar': { + 'href': 'dot.test:foo/bar', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar' + }, + // ipv6 support + 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature': { + 'href': 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature', + 'protocol': 'coap:', + 'auth': 'u:p', + 'hostname': '::1', + 'port': '61616', + 'pathname': '/.well-known/r', + 'search': 'n=Temperature' + }, + 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton': { + 'href': 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton', + 'protocol': 'coap', + 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616', + 'pathname': '/s/stopButton' + }, + + // encode context-specific delimiters in path and query, but do not touch + // other non-delimiter chars like `%`. + // + + // `#`,`?` in path + '/path/to/%%23%3F+=&.txt?foo=theA1#bar' : { + href : '/path/to/%%23%3F+=&.txt?foo=theA1#bar', + pathname: '/path/to/%#?+=&.txt', + query: { + foo: 'theA1' + }, + hash: "#bar" + }, + + // `#`,`?` in path + `#` in query + '/path/to/%%23%3F+=&.txt?foo=the%231#bar' : { + href : '/path/to/%%23%3F+=&.txt?foo=the%231#bar', + pathname: '/path/to/%#?+=&.txt', + query: { + foo: 'the#1' + }, + hash: "#bar" + }, + + // `?` and `#` in path and search + 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag': { + href: 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag', + protocol: 'http:', + hostname: 'ex.com', + hash: '#frag', + search: '?abc=the#1?&foo=bar', + pathname: '/foo?100%m#r', + }, + + // `?` and `#` in search only + 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag': { + href: 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag', + protocol: 'http:', + hostname: 'ex.com', + hash: '#frag', + search: '?abc=the#1?&foo=bar', + pathname: '/fooA100%mBr', + } +}; + +Object.keys(formatTests).forEach(function(u) { + test('format(' + u + ')', function() { + var expect = formatTests[u].href; + delete formatTests[u].href; + var actual = url.format(u); + var actualObj = url.format(formatTests[u]); + assert.equal(actual, expect, + 'wonky format(' + u + ') == ' + expect + + '\nactual:' + actual); + assert.equal(actualObj, expect, + 'wonky format(' + JSON.stringify(formatTests[u]) + + ') == ' + expect + + '\nactual: ' + actualObj); + }); +}); + +/* + [from, path, expected] +*/ +var relativeTests = [ + ['/foo/bar/baz', 'quux', '/foo/bar/quux'], + ['/foo/bar/baz', 'quux/asdf', '/foo/bar/quux/asdf'], + ['/foo/bar/baz', 'quux/baz', '/foo/bar/quux/baz'], + ['/foo/bar/baz', '../quux/baz', '/foo/quux/baz'], + ['/foo/bar/baz', '/bar', '/bar'], + ['/foo/bar/baz/', 'quux', '/foo/bar/baz/quux'], + ['/foo/bar/baz/', 'quux/baz', '/foo/bar/baz/quux/baz'], + ['/foo/bar/baz', '../../../../../../../../quux/baz', '/quux/baz'], + ['/foo/bar/baz', '../../../../../../../quux/baz', '/quux/baz'], + ['/foo', '.', '/'], + ['/foo', '..', '/'], + ['/foo/', '.', '/foo/'], + ['/foo/', '..', '/'], + ['/foo/bar', '.', '/foo/'], + ['/foo/bar', '..', '/'], + ['/foo/bar/', '.', '/foo/bar/'], + ['/foo/bar/', '..', '/foo/'], + ['foo/bar', '../../../baz', '../../baz'], + ['foo/bar/', '../../../baz', '../baz'], + ['http://example.com/b//c//d;p?q#blarg', 'https:#hash2', 'https:///#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https:/p/a/t/h?s#hash2', + 'https://p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https://u:p@h.com/p/a/t/h?s#hash2', + 'https://u:p@h.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https:/a/b/c/d', + 'https://a/b/c/d'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:#hash2', + 'http://example.com/b//c//d;p?q#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:/p/a/t/h?s#hash2', + 'http://example.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http://u:p@h.com/p/a/t/h?s#hash2', + 'http://u:p@h.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:/a/b/c/d', + 'http://example.com/a/b/c/d'], + ['/foo/bar/baz', '/../etc/passwd', '/etc/passwd'] +]; + +relativeTests.forEach(function(relativeTest) { + test('resolve(' + [relativeTest[0], relativeTest[1]] + ')', function() { + var a = url.resolve(relativeTest[0], relativeTest[1]), + e = relativeTest[2]; + assert.equal(a, e, + 'resolve(' + [relativeTest[0], relativeTest[1]] + ') == ' + e + + '\n actual=' + a); + }); +}); + + +// https://github.com/joyent/node/issues/568 +[ + undefined, + null, + true, + false, + 0.0, + 0, + [], + {} +].forEach(function(val) { + test('parse(' + val + ')', function() { + assert.throws(function() { url.parse(val); }, TypeError); + }); +}); + + +// +// Tests below taken from Chiron +// http://code.google.com/p/chironjs/source/browse/trunk/src/test/http/url.js +// +// Copyright (c) 2002-2008 Kris Kowal +// used with permission under MIT License +// +// Changes marked with @isaacs + +var bases = [ + 'http://a/b/c/d;p?q', + 'http://a/b/c/d;p?q=1/2', + 'http://a/b/c/d;p=1/2?q', + 'fred:///s//a/b/c', + 'http:///s//a/b/c' +]; + +//[to, from, result] +var relativeTests2 = [ + // http://lists.w3.org/Archives/Public/uri/2004Feb/0114.html + ['../c', 'foo:a/b', 'foo:c'], + ['foo:.', 'foo:a', 'foo:'], + ['/foo/../../../bar', 'zz:abc', 'zz:/bar'], + ['/foo/../bar', 'zz:abc', 'zz:/bar'], + // @isaacs Disagree. Not how web browsers resolve this. + ['foo/../../../bar', 'zz:abc', 'zz:bar'], + // ['foo/../../../bar', 'zz:abc', 'zz:../../bar'], // @isaacs Added + ['foo/../bar', 'zz:abc', 'zz:bar'], + ['zz:.', 'zz:abc', 'zz:'], + ['/.', bases[0], 'http://a/'], + ['/.foo', bases[0], 'http://a/.foo'], + ['.foo', bases[0], 'http://a/b/c/.foo'], + + // http://gbiv.com/protocols/uri/test/rel_examples1.html + // examples from RFC 2396 + ['g:h', bases[0], 'g:h'], + ['g', bases[0], 'http://a/b/c/g'], + ['./g', bases[0], 'http://a/b/c/g'], + ['g/', bases[0], 'http://a/b/c/g/'], + ['/g', bases[0], 'http://a/g'], + ['//g', bases[0], 'http://g/'], + // changed with RFC 2396bis + //('?y', bases[0], 'http://a/b/c/d;p?y'], + ['?y', bases[0], 'http://a/b/c/d;p?y'], + ['g?y', bases[0], 'http://a/b/c/g?y'], + // changed with RFC 2396bis + //('#s', bases[0], CURRENT_DOC_URI + '#s'], + ['#s', bases[0], 'http://a/b/c/d;p?q#s'], + ['g#s', bases[0], 'http://a/b/c/g#s'], + ['g?y#s', bases[0], 'http://a/b/c/g?y#s'], + [';x', bases[0], 'http://a/b/c/;x'], + ['g;x', bases[0], 'http://a/b/c/g;x'], + ['g;x?y#s' , bases[0], 'http://a/b/c/g;x?y#s'], + // changed with RFC 2396bis + //('', bases[0], CURRENT_DOC_URI], + ['', bases[0], 'http://a/b/c/d;p?q'], + ['.', bases[0], 'http://a/b/c/'], + ['./', bases[0], 'http://a/b/c/'], + ['..', bases[0], 'http://a/b/'], + ['../', bases[0], 'http://a/b/'], + ['../g', bases[0], 'http://a/b/g'], + ['../..', bases[0], 'http://a/'], + ['../../', bases[0], 'http://a/'], + ['../../g' , bases[0], 'http://a/g'], + ['../../../g', bases[0], ('http://a/../g', 'http://a/g')], + ['../../../../g', bases[0], ('http://a/../../g', 'http://a/g')], + // changed with RFC 2396bis + //('/./g', bases[0], 'http://a/./g'], + ['/./g', bases[0], 'http://a/g'], + // changed with RFC 2396bis + //('/../g', bases[0], 'http://a/../g'], + ['/../g', bases[0], 'http://a/g'], + ['g.', bases[0], 'http://a/b/c/g.'], + ['.g', bases[0], 'http://a/b/c/.g'], + ['g..', bases[0], 'http://a/b/c/g..'], + ['..g', bases[0], 'http://a/b/c/..g'], + ['./../g', bases[0], 'http://a/b/g'], + ['./g/.', bases[0], 'http://a/b/c/g/'], + ['g/./h', bases[0], 'http://a/b/c/g/h'], + ['g/../h', bases[0], 'http://a/b/c/h'], + ['g;x=1/./y', bases[0], 'http://a/b/c/g;x=1/y'], + ['g;x=1/../y', bases[0], 'http://a/b/c/y'], + ['g?y/./x', bases[0], 'http://a/b/c/g?y/./x'], + ['g?y/../x', bases[0], 'http://a/b/c/g?y/../x'], + ['g#s/./x', bases[0], 'http://a/b/c/g#s/./x'], + ['g#s/../x', bases[0], 'http://a/b/c/g#s/../x'], + ['http:g', bases[0], ('http:g', 'http://a/b/c/g')], + ['http:', bases[0], ('http:', bases[0])], + // not sure where this one originated + ['/a/b/c/./../../g', bases[0], 'http://a/a/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples2.html + // slashes in base URI's query args + ['g', bases[1], 'http://a/b/c/g'], + ['./g', bases[1], 'http://a/b/c/g'], + ['g/', bases[1], 'http://a/b/c/g/'], + ['/g', bases[1], 'http://a/g'], + ['//g', bases[1], 'http://g/'], + // changed in RFC 2396bis + //('?y', bases[1], 'http://a/b/c/?y'], + ['?y', bases[1], 'http://a/b/c/d;p?y'], + ['g?y', bases[1], 'http://a/b/c/g?y'], + ['g?y/./x' , bases[1], 'http://a/b/c/g?y/./x'], + ['g?y/../x', bases[1], 'http://a/b/c/g?y/../x'], + ['g#s', bases[1], 'http://a/b/c/g#s'], + ['g#s/./x' , bases[1], 'http://a/b/c/g#s/./x'], + ['g#s/../x', bases[1], 'http://a/b/c/g#s/../x'], + ['./', bases[1], 'http://a/b/c/'], + ['../', bases[1], 'http://a/b/'], + ['../g', bases[1], 'http://a/b/g'], + ['../../', bases[1], 'http://a/'], + ['../../g' , bases[1], 'http://a/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples3.html + // slashes in path params + // all of these changed in RFC 2396bis + ['g', bases[2], 'http://a/b/c/d;p=1/g'], + ['./g', bases[2], 'http://a/b/c/d;p=1/g'], + ['g/', bases[2], 'http://a/b/c/d;p=1/g/'], + ['g?y', bases[2], 'http://a/b/c/d;p=1/g?y'], + [';x', bases[2], 'http://a/b/c/d;p=1/;x'], + ['g;x', bases[2], 'http://a/b/c/d;p=1/g;x'], + ['g;x=1/./y', bases[2], 'http://a/b/c/d;p=1/g;x=1/y'], + ['g;x=1/../y', bases[2], 'http://a/b/c/d;p=1/y'], + ['./', bases[2], 'http://a/b/c/d;p=1/'], + ['../', bases[2], 'http://a/b/c/'], + ['../g', bases[2], 'http://a/b/c/g'], + ['../../', bases[2], 'http://a/b/'], + ['../../g' , bases[2], 'http://a/b/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples4.html + // double and triple slash, unknown scheme + ['g:h', bases[3], 'g:h'], + ['g', bases[3], 'fred:///s//a/b/g'], + ['./g', bases[3], 'fred:///s//a/b/g'], + ['g/', bases[3], 'fred:///s//a/b/g/'], + ['/g', bases[3], 'fred:///g'], // may change to fred:///s//a/g + ['//g', bases[3], 'fred://g'], // may change to fred:///s//g + ['//g/x', bases[3], 'fred://g/x'], // may change to fred:///s//g/x + ['///g', bases[3], 'fred:///g'], + ['./', bases[3], 'fred:///s//a/b/'], + ['../', bases[3], 'fred:///s//a/'], + ['../g', bases[3], 'fred:///s//a/g'], + + ['../../', bases[3], 'fred:///s//'], + ['../../g' , bases[3], 'fred:///s//g'], + ['../../../g', bases[3], 'fred:///s/g'], + // may change to fred:///s//a/../../../g + ['../../../../g', bases[3], 'fred:///g'], + + // http://gbiv.com/protocols/uri/test/rel_examples5.html + // double and triple slash, well-known scheme + ['g:h', bases[4], 'g:h'], + ['g', bases[4], 'http:///s//a/b/g'], + ['./g', bases[4], 'http:///s//a/b/g'], + ['g/', bases[4], 'http:///s//a/b/g/'], + ['/g', bases[4], 'http:///g'], // may change to http:///s//a/g + ['//g', bases[4], 'http://g/'], // may change to http:///s//g + ['//g/x', bases[4], 'http://g/x'], // may change to http:///s//g/x + ['///g', bases[4], 'http:///g'], + ['./', bases[4], 'http:///s//a/b/'], + ['../', bases[4], 'http:///s//a/'], + ['../g', bases[4], 'http:///s//a/g'], + ['../../', bases[4], 'http:///s//'], + ['../../g' , bases[4], 'http:///s//g'], + // may change to http:///s//a/../../g + ['../../../g', bases[4], 'http:///s/g'], + // may change to http:///s//a/../../../g + ['../../../../g', bases[4], 'http:///g'], + + // from Dan Connelly's tests in http://www.w3.org/2000/10/swap/uripath.py + ['bar:abc', 'foo:xyz', 'bar:abc'], + ['../abc', 'http://example/x/y/z', 'http://example/x/abc'], + ['http://example/x/abc', 'http://example2/x/y/z', 'http://example/x/abc'], + ['../r', 'http://ex/x/y/z', 'http://ex/x/r'], + ['q/r', 'http://ex/x/y', 'http://ex/x/q/r'], + ['q/r#s', 'http://ex/x/y', 'http://ex/x/q/r#s'], + ['q/r#s/t', 'http://ex/x/y', 'http://ex/x/q/r#s/t'], + ['ftp://ex/x/q/r', 'http://ex/x/y', 'ftp://ex/x/q/r'], + ['', 'http://ex/x/y', 'http://ex/x/y'], + ['', 'http://ex/x/y/', 'http://ex/x/y/'], + ['', 'http://ex/x/y/pdq', 'http://ex/x/y/pdq'], + ['z/', 'http://ex/x/y/', 'http://ex/x/y/z/'], + ['#Animal', + 'file:/swap/test/animal.rdf', + 'file:/swap/test/animal.rdf#Animal'], + ['../abc', 'file:/e/x/y/z', 'file:/e/x/abc'], + ['/example/x/abc', 'file:/example2/x/y/z', 'file:/example/x/abc'], + ['../r', 'file:/ex/x/y/z', 'file:/ex/x/r'], + ['/r', 'file:/ex/x/y/z', 'file:/r'], + ['q/r', 'file:/ex/x/y', 'file:/ex/x/q/r'], + ['q/r#s', 'file:/ex/x/y', 'file:/ex/x/q/r#s'], + ['q/r#', 'file:/ex/x/y', 'file:/ex/x/q/r#'], + ['q/r#s/t', 'file:/ex/x/y', 'file:/ex/x/q/r#s/t'], + ['ftp://ex/x/q/r', 'file:/ex/x/y', 'ftp://ex/x/q/r'], + ['', 'file:/ex/x/y', 'file:/ex/x/y'], + ['', 'file:/ex/x/y/', 'file:/ex/x/y/'], + ['', 'file:/ex/x/y/pdq', 'file:/ex/x/y/pdq'], + ['z/', 'file:/ex/x/y/', 'file:/ex/x/y/z/'], + ['file://meetings.example.com/cal#m1', + 'file:/devel/WWW/2000/10/swap/test/reluri-1.n3', + 'file://meetings.example.com/cal#m1'], + ['file://meetings.example.com/cal#m1', + 'file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3', + 'file://meetings.example.com/cal#m1'], + ['./#blort', 'file:/some/dir/foo', 'file:/some/dir/#blort'], + ['./#', 'file:/some/dir/foo', 'file:/some/dir/#'], + // Ryan Lee + ['./', 'http://example/x/abc.efg', 'http://example/x/'], + + + // Graham Klyne's tests + // http://www.ninebynine.org/Software/HaskellUtils/Network/UriTest.xls + // 01-31 are from Connelly's cases + + // 32-49 + ['./q:r', 'http://ex/x/y', 'http://ex/x/q:r'], + ['./p=q:r', 'http://ex/x/y', 'http://ex/x/p=q:r'], + ['?pp/rr', 'http://ex/x/y?pp/qq', 'http://ex/x/y?pp/rr'], + ['y/z', 'http://ex/x/y?pp/qq', 'http://ex/x/y/z'], + ['local/qual@domain.org#frag', + 'mailto:local', + 'mailto:local/qual@domain.org#frag'], + ['more/qual2@domain2.org#frag', + 'mailto:local/qual1@domain1.org', + 'mailto:local/more/qual2@domain2.org#frag'], + ['y?q', 'http://ex/x/y?q', 'http://ex/x/y?q'], + ['/x/y?q', 'http://ex?p', 'http://ex/x/y?q'], + ['c/d', 'foo:a/b', 'foo:a/c/d'], + ['/c/d', 'foo:a/b', 'foo:/c/d'], + ['', 'foo:a/b?c#d', 'foo:a/b?c'], + ['b/c', 'foo:a', 'foo:b/c'], + ['../b/c', 'foo:/a/y/z', 'foo:/a/b/c'], + ['./b/c', 'foo:a', 'foo:b/c'], + ['/./b/c', 'foo:a', 'foo:/b/c'], + ['../../d', 'foo://a//b/c', 'foo://a/d'], + ['.', 'foo:a', 'foo:'], + ['..', 'foo:a', 'foo:'], + + // 50-57[cf. TimBL comments -- + // http://lists.w3.org/Archives/Public/uri/2003Feb/0028.html, + // http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html) + ['abc', 'http://example/x/y%2Fz', 'http://example/x/abc'], + ['../../x%2Fabc', 'http://example/a/x/y/z', 'http://example/a/x%2Fabc'], + ['../x%2Fabc', 'http://example/a/x/y%2Fz', 'http://example/a/x%2Fabc'], + ['abc', 'http://example/x%2Fy/z', 'http://example/x%2Fy/abc'], + ['q%3Ar', 'http://ex/x/y', 'http://ex/x/q%3Ar'], + ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], + ['/x%2Fabc', 'http://example/x/y/z', 'http://example/x%2Fabc'], + ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], + + // 70-77 + ['local2@domain2', 'mailto:local1@domain1?query1', 'mailto:local2@domain2'], + ['local2@domain2?query2', + 'mailto:local1@domain1', + 'mailto:local2@domain2?query2'], + ['local2@domain2?query2', + 'mailto:local1@domain1?query1', + 'mailto:local2@domain2?query2'], + ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], + ['local@domain?query2', 'mailto:?query1', 'mailto:local@domain?query2'], + ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], + ['http://example/a/b?c/../d', 'foo:bar', 'http://example/a/b?c/../d'], + ['http://example/a/b#c/../d', 'foo:bar', 'http://example/a/b#c/../d'], + + // 82-88 + // @isaacs Disagree. Not how browsers do it. + // ['http:this', 'http://example.org/base/uri', 'http:this'], + // @isaacs Added + ['http:this', 'http://example.org/base/uri', 'http://example.org/base/this'], + ['http:this', 'http:base', 'http:this'], + ['.//g', 'f:/a', 'f://g'], + ['b/c//d/e', 'f://example.org/base/a', 'f://example.org/base/b/c//d/e'], + ['m2@example.ord/c2@example.org', + 'mid:m@example.ord/c@example.org', + 'mid:m@example.ord/m2@example.ord/c2@example.org'], + ['mini1.xml', + 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/', + 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml'], + ['../b/c', 'foo:a/y/z', 'foo:a/b/c'], + + //changeing auth + ['http://diff:auth@www.example.com', + 'http://asdf:qwer@www.example.com', + 'http://diff:auth@www.example.com/'] +]; + +relativeTests2.forEach(function(relativeTest) { + test('resolve(' + [relativeTest[1], relativeTest[0]] + ')', function() { + var a = url.resolve(relativeTest[1], relativeTest[0]), + e = relativeTest[2]; + assert.equal(a, e, + 'resolve(' + [relativeTest[1], relativeTest[0]] + ') == ' + e + + '\n actual=' + a); + }); +}); + +//if format and parse are inverse operations then +//resolveObject(parse(x), y) == parse(resolve(x, y)) + +//host and hostname are special, in this case a '' value is important +var emptyIsImportant = {'host': true, 'hostname': ''}; + +//format: [from, path, expected] +relativeTests.forEach(function(relativeTest) { +test('resolveObject(' + [relativeTest[0], relativeTest[1]] + ')', function() { + var actual = url.resolveObject(url.parse(relativeTest[0]), relativeTest[1]), + expected = url.parse(relativeTest[2]); + + + assert.deepEqual(actual, expected); + + expected = relativeTest[2]; + actual = url.format(actual); + + assert.equal(actual, expected, + 'format(' + actual + ') == ' + expected + '\nactual:' + actual); + }); +}); + +//format: [to, from, result] +// the test: ['.//g', 'f:/a', 'f://g'] is a fundamental problem +// url.parse('f:/a') does not have a host +// url.resolve('f:/a', './/g') does not have a host because you have moved +// down to the g directory. i.e. f: //g, however when this url is parsed +// f:// will indicate that the host is g which is not the case. +// it is unclear to me how to keep this information from being lost +// it may be that a pathname of ////g should collapse to /g but this seems +// to be a lot of work for an edge case. Right now I remove the test +if (relativeTests2[181][0] === './/g' && + relativeTests2[181][1] === 'f:/a' && + relativeTests2[181][2] === 'f://g') { + relativeTests2.splice(181, 1); +} + +relativeTests2.forEach(function(relativeTest) { + test('resolveObject(' + [relativeTest[1], relativeTest[0]] + ')', function() { + var actual = url.resolveObject(url.parse(relativeTest[1]), relativeTest[0]), + expected = url.parse(relativeTest[2]); + + assert.deepEqual(actual, expected); + + var expected = relativeTest[2], + actual = url.format(actual); + + assert.equal(actual, expected, + 'format(' + relativeTest[1] + ') == ' + expected + + '\nactual:' + actual); + }); +}); diff --git a/node_modules/url/url.js b/node_modules/url/url.js new file mode 100644 index 0000000..23ac6f5 --- /dev/null +++ b/node_modules/url/url.js @@ -0,0 +1,732 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var punycode = require('punycode'); +var util = require('./util'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + util.isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; diff --git a/node_modules/url/util.js b/node_modules/url/util.js new file mode 100644 index 0000000..97dcf31 --- /dev/null +++ b/node_modules/url/util.js @@ -0,0 +1,16 @@ +'use strict'; + +module.exports = { + isString: function(arg) { + return typeof(arg) === 'string'; + }, + isObject: function(arg) { + return typeof(arg) === 'object' && arg !== null; + }, + isNull: function(arg) { + return arg === null; + }, + isNullOrUndefined: function(arg) { + return arg == null; + } +}; diff --git a/node_modules/util-deprecate/History.md b/node_modules/util-deprecate/History.md new file mode 100644 index 0000000..acc8675 --- /dev/null +++ b/node_modules/util-deprecate/History.md @@ -0,0 +1,16 @@ + +1.0.2 / 2015-10-07 +================== + + * use try/catch when checking `localStorage` (#3, @kumavis) + +1.0.1 / 2014-11-25 +================== + + * browser: use `console.warn()` for deprecation calls + * browser: more jsdocs + +1.0.0 / 2014-04-30 +================== + + * initial commit diff --git a/node_modules/util-deprecate/LICENSE b/node_modules/util-deprecate/LICENSE new file mode 100644 index 0000000..6a60e8c --- /dev/null +++ b/node_modules/util-deprecate/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/util-deprecate/README.md b/node_modules/util-deprecate/README.md new file mode 100644 index 0000000..75622fa --- /dev/null +++ b/node_modules/util-deprecate/README.md @@ -0,0 +1,53 @@ +util-deprecate +============== +### The Node.js `util.deprecate()` function with browser support + +In Node.js, this module simply re-exports the `util.deprecate()` function. + +In the web browser (i.e. via browserify), a browser-specific implementation +of the `util.deprecate()` function is used. + + +## API + +A `deprecate()` function is the only thing exposed by this module. + +``` javascript +// setup: +exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead'); + + +// users see: +foo(); +// foo() is deprecated, use bar() instead +foo(); +foo(); +``` + + +## License + +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/util-deprecate/browser.js b/node_modules/util-deprecate/browser.js new file mode 100644 index 0000000..549ae2f --- /dev/null +++ b/node_modules/util-deprecate/browser.js @@ -0,0 +1,67 @@ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} diff --git a/node_modules/util-deprecate/node.js b/node_modules/util-deprecate/node.js new file mode 100644 index 0000000..5e6fcff --- /dev/null +++ b/node_modules/util-deprecate/node.js @@ -0,0 +1,6 @@ + +/** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + +module.exports = require('util').deprecate; diff --git a/node_modules/util-deprecate/package.json b/node_modules/util-deprecate/package.json new file mode 100644 index 0000000..524c2c0 --- /dev/null +++ b/node_modules/util-deprecate/package.json @@ -0,0 +1,56 @@ +{ + "_from": "util-deprecate@~1.0.1", + "_id": "util-deprecate@1.0.2", + "_inBundle": false, + "_integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "_location": "/util-deprecate", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "util-deprecate@~1.0.1", + "name": "util-deprecate", + "escapedName": "util-deprecate", + "rawSpec": "~1.0.1", + "saveSpec": null, + "fetchSpec": "~1.0.1" + }, + "_requiredBy": [ + "/readable-stream" + ], + "_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf", + "_spec": "util-deprecate@~1.0.1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/readable-stream", + "author": { + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": "http://n8.io/" + }, + "browser": "browser.js", + "bugs": { + "url": "https://github.com/TooTallNate/util-deprecate/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "The Node.js `util.deprecate()` function with browser support", + "homepage": "https://github.com/TooTallNate/util-deprecate", + "keywords": [ + "util", + "deprecate", + "browserify", + "browser", + "node" + ], + "license": "MIT", + "main": "node.js", + "name": "util-deprecate", + "repository": { + "type": "git", + "url": "git://github.com/TooTallNate/util-deprecate.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "version": "1.0.2" +} diff --git a/node_modules/uuid/.eslintrc.json b/node_modules/uuid/.eslintrc.json new file mode 100644 index 0000000..734a8e1 --- /dev/null +++ b/node_modules/uuid/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "root": true, + "env": { + "browser": true, + "commonjs": true, + "node": true, + "mocha": true + }, + "extends": ["eslint:recommended"], + "rules": { + "array-bracket-spacing": ["warn", "never"], + "arrow-body-style": ["warn", "as-needed"], + "arrow-parens": ["warn", "as-needed"], + "arrow-spacing": "warn", + "brace-style": ["warn", "1tbs"], + "camelcase": "warn", + "comma-spacing": ["warn", {"after": true}], + "dot-notation": "warn", + "eqeqeq": ["warn", "smart"], + "indent": ["warn", 2, { + "SwitchCase": 1, + "FunctionDeclaration": {"parameters": 1}, + "MemberExpression": 1, + "CallExpression": {"arguments": 1} + }], + "key-spacing": ["warn", {"beforeColon": false, "afterColon": true, "mode": "minimum"}], + "keyword-spacing": "warn", + "no-console": "off", + "no-empty": "off", + "no-multi-spaces": "warn", + "no-redeclare": "off", + "no-restricted-globals": ["warn", "Promise"], + "no-trailing-spaces": "warn", + "no-undef": "error", + "no-unused-vars": ["warn", {"args": "none"}], + "one-var": ["warn", "never"], + "padded-blocks": ["warn", "never"], + "object-curly-spacing": ["warn", "never"], + "quotes": ["warn", "single"], + "react/prop-types": "off", + "react/jsx-no-bind": "off", + "semi": ["warn", "always"], + "space-before-blocks": ["warn", "always"], + "space-before-function-paren": ["warn", "never"], + "space-in-parens": ["warn", "never"] + } +} diff --git a/node_modules/uuid/AUTHORS b/node_modules/uuid/AUTHORS new file mode 100644 index 0000000..5a10523 --- /dev/null +++ b/node_modules/uuid/AUTHORS @@ -0,0 +1,5 @@ +Robert Kieffer +Christoph Tavan +AJ ONeal +Vincent Voyer +Roman Shtylman diff --git a/node_modules/uuid/CHANGELOG.md b/node_modules/uuid/CHANGELOG.md new file mode 100644 index 0000000..f29d399 --- /dev/null +++ b/node_modules/uuid/CHANGELOG.md @@ -0,0 +1,110 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +## [3.3.2](https://github.com/kelektiv/node-uuid/compare/v3.3.1...v3.3.2) (2018-06-28) + + +### Bug Fixes + +* typo ([305d877](https://github.com/kelektiv/node-uuid/commit/305d877)) + + + + +## [3.3.1](https://github.com/kelektiv/node-uuid/compare/v3.3.0...v3.3.1) (2018-06-28) + + +### Bug Fixes + +* fix [#284](https://github.com/kelektiv/node-uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/kelektiv/node-uuid/commit/f2a60f2)) + + + + +# [3.3.0](https://github.com/kelektiv/node-uuid/compare/v3.2.1...v3.3.0) (2018-06-22) + + +### Bug Fixes + +* assignment to readonly property to allow running in strict mode ([#270](https://github.com/kelektiv/node-uuid/issues/270)) ([d062fdc](https://github.com/kelektiv/node-uuid/commit/d062fdc)) +* fix [#229](https://github.com/kelektiv/node-uuid/issues/229) ([c9684d4](https://github.com/kelektiv/node-uuid/commit/c9684d4)) +* Get correct version of IE11 crypto ([#274](https://github.com/kelektiv/node-uuid/issues/274)) ([153d331](https://github.com/kelektiv/node-uuid/commit/153d331)) +* mem issue when generating uuid ([#267](https://github.com/kelektiv/node-uuid/issues/267)) ([c47702c](https://github.com/kelektiv/node-uuid/commit/c47702c)) + +### Features + +* enforce Conventional Commit style commit messages ([#282](https://github.com/kelektiv/node-uuid/issues/282)) ([cc9a182](https://github.com/kelektiv/node-uuid/commit/cc9a182)) + + + +## [3.2.1](https://github.com/kelektiv/node-uuid/compare/v3.2.0...v3.2.1) (2018-01-16) + + +### Bug Fixes + +* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b)) + + + + +# [3.2.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.2.0) (2018-01-16) + + +### Bug Fixes + +* remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/kelektiv/node-uuid/commit/09fa824)) +* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b)) + + +### Features + +* Add v3 Support ([#217](https://github.com/kelektiv/node-uuid/issues/217)) ([d94f726](https://github.com/kelektiv/node-uuid/commit/d94f726)) + + +# [3.1.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.0.1) (2017-06-17) + +### Bug Fixes + +* (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183) +* Fix typo (#178) +* Simple typo fix (#165) + +### Features +* v5 support in CLI (#197) +* V5 support (#188) + + +# 3.0.1 (2016-11-28) + +* split uuid versions into separate files + + +# 3.0.0 (2016-11-17) + +* remove .parse and .unparse + + +# 2.0.0 + +* Removed uuid.BufferClass + + +# 1.4.0 + +* Improved module context detection +* Removed public RNG functions + + +# 1.3.2 + +* Improve tests and handling of v1() options (Issue #24) +* Expose RNG option to allow for perf testing with different generators + + +# 1.3.0 + +* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! +* Support for node.js crypto API +* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/LICENSE.md b/node_modules/uuid/LICENSE.md new file mode 100644 index 0000000..8c84e39 --- /dev/null +++ b/node_modules/uuid/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/uuid/README.md b/node_modules/uuid/README.md new file mode 100644 index 0000000..9cbe1ac --- /dev/null +++ b/node_modules/uuid/README.md @@ -0,0 +1,293 @@ + + +# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) # + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Support for version 1, 3, 4 and 5 UUIDs +* Cross-platform +* Uses cryptographically-strong random number APIs (when available) +* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883)) + +[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be +supported after version 3.x of this module. Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.] + +## Quickstart - CommonJS (Recommended) + +```shell +npm install uuid +``` + +Then generate your uuid version of choice ... + +Version 1 (timestamp): + +```javascript +const uuidv1 = require('uuid/v1'); +uuidv1(); // ⇨ '45745c60-7b1a-11e8-9c9c-2d42b21b1a3e' + +``` + +Version 3 (namespace): + +```javascript +const uuidv3 = require('uuid/v3'); + +// ... using predefined DNS namespace (for domain names) +uuidv3('hello.example.com', uuidv3.DNS); // ⇨ '9125a8dc-52ee-365b-a5aa-81b0b3681cf6' + +// ... using predefined URL namespace (for, well, URLs) +uuidv3('http://example.com/hello', uuidv3.URL); // ⇨ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138' + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv3('Hello, World!', MY_NAMESPACE); // ⇨ 'e8b5a51d-11c8-3310-a6ab-367563f20686' + +``` + +Version 4 (random): + +```javascript +const uuidv4 = require('uuid/v4'); +uuidv4(); // ⇨ '10ba038e-48da-487b-96e8-8d3b99b6d18a' + +``` + +Version 5 (namespace): + +```javascript +const uuidv5 = require('uuid/v5'); + +// ... using predefined DNS namespace (for domain names) +uuidv5('hello.example.com', uuidv5.DNS); // ⇨ 'fdda765f-fc57-5604-a269-52a7df8164ec' + +// ... using predefined URL namespace (for, well, URLs) +uuidv5('http://example.com/hello', uuidv5.URL); // ⇨ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1' + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681' + +``` + +## Quickstart - Browser-ready Versions + +Browser-ready versions of this module are available via [wzrd.in](https://github.com/jfhbrook/wzrd.in). + +For version 1 uuids: + +```html + + +``` + +For version 3 uuids: + +```html + + +``` + +For version 4 uuids: + +```html + + +``` + +For version 5 uuids: + +```html + + +``` + +## API + +### Version 1 + +```javascript +const uuidv1 = require('uuid/v1'); + +// Incantations +uuidv1(); +uuidv1(options); +uuidv1(options, buffer, offset); +``` + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Note: The id is generated guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript +const v1options = { + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}; +uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab' + +``` + +Example: In-place generation of two binary IDs + +```javascript +// Generate two ids in an array +const arr = new Array(); +uuidv1(null, arr, 0); // ⇨ [ 69, 117, 109, 208, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62 ] +uuidv1(null, arr, 16); // ⇨ [ 69, 117, 109, 208, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62, 69, 117, 109, 209, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62 ] + +``` + +### Version 3 + +```javascript +const uuidv3 = require('uuid/v3'); + +// Incantations +uuidv3(name, namespace); +uuidv3(name, namespace, buffer); +uuidv3(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v3 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript +uuidv3('hello world', MY_NAMESPACE); // ⇨ '042ffd34-d989-321c-ad06-f60826172424' + +``` + +### Version 4 + +```javascript +const uuidv4 = require('uuid/v4') + +// Incantations +uuidv4(); +uuidv4(options); +uuidv4(options, buffer, offset); +``` + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255) +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with predefined `random` values + +```javascript +const v4options = { + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}; +uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836' + +``` + +Example: Generate two IDs in a single buffer + +```javascript +const buffer = new Array(); +uuidv4(null, buffer, 0); // ⇨ [ 54, 122, 218, 70, 45, 70, 65, 24, 171, 53, 95, 130, 83, 195, 242, 45 ] +uuidv4(null, buffer, 16); // ⇨ [ 54, 122, 218, 70, 45, 70, 65, 24, 171, 53, 95, 130, 83, 195, 242, 45, 108, 204, 255, 103, 171, 86, 76, 94, 178, 225, 188, 236, 150, 20, 151, 87 ] + +``` + +### Version 5 + +```javascript +const uuidv5 = require('uuid/v5'); + +// Incantations +uuidv5(name, namespace); +uuidv5(name, namespace, buffer); +uuidv5(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v5 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript +uuidv5('hello world', MY_NAMESPACE); // ⇨ '9f282611-e0fd-5650-8953-89c8e342da0b' + +``` + +## Command Line + +UUIDs can be generated from the command line with the `uuid` command. + +```shell +$ uuid +ddeb27fb-d9a0-4624-be4d-4615062daed4 + +$ uuid v1 +02d37060-d446-11e7-a9fa-7bdae751ebe1 +``` + +Type `uuid --help` for usage details + +## Testing + +```shell +npm test +``` + +---- +Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/uuid/README_js.md b/node_modules/uuid/README_js.md new file mode 100644 index 0000000..f34453b --- /dev/null +++ b/node_modules/uuid/README_js.md @@ -0,0 +1,280 @@ +```javascript --hide +runmd.onRequire = path => path.replace(/^uuid/, './'); +``` + +# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) # + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Support for version 1, 3, 4 and 5 UUIDs +* Cross-platform +* Uses cryptographically-strong random number APIs (when available) +* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883)) + +[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be +supported after version 3.x of this module. Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.] + +## Quickstart - CommonJS (Recommended) + +```shell +npm install uuid +``` + +Then generate your uuid version of choice ... + +Version 1 (timestamp): + +```javascript --run v1 +const uuidv1 = require('uuid/v1'); +uuidv1(); // RESULT +``` + +Version 3 (namespace): + +```javascript --run v3 +const uuidv3 = require('uuid/v3'); + +// ... using predefined DNS namespace (for domain names) +uuidv3('hello.example.com', uuidv3.DNS); // RESULT + +// ... using predefined URL namespace (for, well, URLs) +uuidv3('http://example.com/hello', uuidv3.URL); // RESULT + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv3('Hello, World!', MY_NAMESPACE); // RESULT +``` + +Version 4 (random): + +```javascript --run v4 +const uuidv4 = require('uuid/v4'); +uuidv4(); // RESULT +``` + +Version 5 (namespace): + +```javascript --run v5 +const uuidv5 = require('uuid/v5'); + +// ... using predefined DNS namespace (for domain names) +uuidv5('hello.example.com', uuidv5.DNS); // RESULT + +// ... using predefined URL namespace (for, well, URLs) +uuidv5('http://example.com/hello', uuidv5.URL); // RESULT + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv5('Hello, World!', MY_NAMESPACE); // RESULT +``` + +## Quickstart - Browser-ready Versions + +Browser-ready versions of this module are available via [wzrd.in](https://github.com/jfhbrook/wzrd.in). + +For version 1 uuids: + +```html + + +``` + +For version 3 uuids: + +```html + + +``` + +For version 4 uuids: + +```html + + +``` + +For version 5 uuids: + +```html + + +``` + +## API + +### Version 1 + +```javascript +const uuidv1 = require('uuid/v1'); + +// Incantations +uuidv1(); +uuidv1(options); +uuidv1(options, buffer, offset); +``` + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Note: The id is generated guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript --run v1 +const v1options = { + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}; +uuidv1(v1options); // RESULT +``` + +Example: In-place generation of two binary IDs + +```javascript --run v1 +// Generate two ids in an array +const arr = new Array(); +uuidv1(null, arr, 0); // RESULT +uuidv1(null, arr, 16); // RESULT +``` + +### Version 3 + +```javascript +const uuidv3 = require('uuid/v3'); + +// Incantations +uuidv3(name, namespace); +uuidv3(name, namespace, buffer); +uuidv3(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v3 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript --run v3 +uuidv3('hello world', MY_NAMESPACE); // RESULT +``` + +### Version 4 + +```javascript +const uuidv4 = require('uuid/v4') + +// Incantations +uuidv4(); +uuidv4(options); +uuidv4(options, buffer, offset); +``` + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255) +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with predefined `random` values + +```javascript --run v4 +const v4options = { + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}; +uuidv4(v4options); // RESULT +``` + +Example: Generate two IDs in a single buffer + +```javascript --run v4 +const buffer = new Array(); +uuidv4(null, buffer, 0); // RESULT +uuidv4(null, buffer, 16); // RESULT +``` + +### Version 5 + +```javascript +const uuidv5 = require('uuid/v5'); + +// Incantations +uuidv5(name, namespace); +uuidv5(name, namespace, buffer); +uuidv5(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v5 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript --run v5 +uuidv5('hello world', MY_NAMESPACE); // RESULT +``` + +## Command Line + +UUIDs can be generated from the command line with the `uuid` command. + +```shell +$ uuid +ddeb27fb-d9a0-4624-be4d-4615062daed4 + +$ uuid v1 +02d37060-d446-11e7-a9fa-7bdae751ebe1 +``` + +Type `uuid --help` for usage details + +## Testing + +```shell +npm test +``` diff --git a/node_modules/uuid/bin/uuid b/node_modules/uuid/bin/uuid new file mode 100755 index 0000000..502626e --- /dev/null +++ b/node_modules/uuid/bin/uuid @@ -0,0 +1,65 @@ +#!/usr/bin/env node +var assert = require('assert'); + +function usage() { + console.log('Usage:'); + console.log(' uuid'); + console.log(' uuid v1'); + console.log(' uuid v3 '); + console.log(' uuid v4'); + console.log(' uuid v5 '); + console.log(' uuid --help'); + console.log('\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'); +} + +var args = process.argv.slice(2); + +if (args.indexOf('--help') >= 0) { + usage(); + process.exit(0); +} +var version = args.shift() || 'v4'; + +switch (version) { + case 'v1': + var uuidV1 = require('../v1'); + console.log(uuidV1()); + break; + + case 'v3': + var uuidV3 = require('../v3'); + + var name = args.shift(); + var namespace = args.shift(); + assert(name != null, 'v3 name not specified'); + assert(namespace != null, 'v3 namespace not specified'); + + if (namespace == 'URL') namespace = uuidV3.URL; + if (namespace == 'DNS') namespace = uuidV3.DNS; + + console.log(uuidV3(name, namespace)); + break; + + case 'v4': + var uuidV4 = require('../v4'); + console.log(uuidV4()); + break; + + case 'v5': + var uuidV5 = require('../v5'); + + var name = args.shift(); + var namespace = args.shift(); + assert(name != null, 'v5 name not specified'); + assert(namespace != null, 'v5 namespace not specified'); + + if (namespace == 'URL') namespace = uuidV5.URL; + if (namespace == 'DNS') namespace = uuidV5.DNS; + + console.log(uuidV5(name, namespace)); + break; + + default: + usage(); + process.exit(1); +} diff --git a/node_modules/uuid/index.js b/node_modules/uuid/index.js new file mode 100644 index 0000000..e96791a --- /dev/null +++ b/node_modules/uuid/index.js @@ -0,0 +1,8 @@ +var v1 = require('./v1'); +var v4 = require('./v4'); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; diff --git a/node_modules/uuid/lib/bytesToUuid.js b/node_modules/uuid/lib/bytesToUuid.js new file mode 100644 index 0000000..847c482 --- /dev/null +++ b/node_modules/uuid/lib/bytesToUuid.js @@ -0,0 +1,24 @@ +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; diff --git a/node_modules/uuid/lib/md5-browser.js b/node_modules/uuid/lib/md5-browser.js new file mode 100644 index 0000000..9b3b6c7 --- /dev/null +++ b/node_modules/uuid/lib/md5-browser.js @@ -0,0 +1,216 @@ +/* + * Browser-compatible JavaScript MD5 + * + * Modification of JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +'use strict'; + +function md5(bytes) { + if (typeof(bytes) == 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + bytes = new Array(msg.length); + for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); + } + + return md5ToHexEncodedArray( + wordsToMd5( + bytesToWords(bytes) + , bytes.length * 8) + ); +} + + +/* +* Convert an array of little-endian words to an array of bytes +*/ +function md5ToHexEncodedArray(input) { + var i; + var x; + var output = []; + var length32 = input.length * 32; + var hexTab = '0123456789abcdef'; + var hex; + + for (i = 0; i < length32; i += 8) { + x = (input[i >> 5] >>> (i % 32)) & 0xFF; + + hex = parseInt(hexTab.charAt((x >>> 4) & 0x0F) + hexTab.charAt(x & 0x0F), 16); + + output.push(hex); + } + return output; +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function wordsToMd5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array bytes to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function bytesToWords(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input[(i / 8)] & 0xFF) << (i % 32); + } + + return output; +} + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +module.exports = md5; diff --git a/node_modules/uuid/lib/md5.js b/node_modules/uuid/lib/md5.js new file mode 100644 index 0000000..7044b87 --- /dev/null +++ b/node_modules/uuid/lib/md5.js @@ -0,0 +1,25 @@ +'use strict'; + +var crypto = require('crypto'); + +function md5(bytes) { + if (typeof Buffer.from === 'function') { + // Modern Buffer API + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + } else { + // Pre-v4 Buffer API + if (Array.isArray(bytes)) { + bytes = new Buffer(bytes); + } else if (typeof bytes === 'string') { + bytes = new Buffer(bytes, 'utf8'); + } + } + + return crypto.createHash('md5').update(bytes).digest(); +} + +module.exports = md5; diff --git a/node_modules/uuid/lib/rng-browser.js b/node_modules/uuid/lib/rng-browser.js new file mode 100644 index 0000000..6361fb8 --- /dev/null +++ b/node_modules/uuid/lib/rng-browser.js @@ -0,0 +1,34 @@ +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); + +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} diff --git a/node_modules/uuid/lib/rng.js b/node_modules/uuid/lib/rng.js new file mode 100644 index 0000000..58f0dc9 --- /dev/null +++ b/node_modules/uuid/lib/rng.js @@ -0,0 +1,8 @@ +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. + +var crypto = require('crypto'); + +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; diff --git a/node_modules/uuid/lib/sha1-browser.js b/node_modules/uuid/lib/sha1-browser.js new file mode 100644 index 0000000..5758ed7 --- /dev/null +++ b/node_modules/uuid/lib/sha1-browser.js @@ -0,0 +1,89 @@ +// Adapted from Chris Veness' SHA1 code at +// http://www.movable-type.co.uk/scripts/sha1.html +'use strict'; + +function f(s, x, y, z) { + switch (s) { + case 0: return (x & y) ^ (~x & z); + case 1: return x ^ y ^ z; + case 2: return (x & y) ^ (x & z) ^ (y & z); + case 3: return x ^ y ^ z; + } +} + +function ROTL(x, n) { + return (x << n) | (x>>> (32 - n)); +} + +function sha1(bytes) { + var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; + var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + + if (typeof(bytes) == 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + bytes = new Array(msg.length); + for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); + } + + bytes.push(0x80); + + var l = bytes.length/4 + 2; + var N = Math.ceil(l/16); + var M = new Array(N); + + for (var i=0; i>> 0; + e = d; + d = c; + c = ROTL(b, 30) >>> 0; + b = a; + a = T; + } + + H[0] = (H[0] + a) >>> 0; + H[1] = (H[1] + b) >>> 0; + H[2] = (H[2] + c) >>> 0; + H[3] = (H[3] + d) >>> 0; + H[4] = (H[4] + e) >>> 0; + } + + return [ + H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, + H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, + H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, + H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, + H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff + ]; +} + +module.exports = sha1; diff --git a/node_modules/uuid/lib/sha1.js b/node_modules/uuid/lib/sha1.js new file mode 100644 index 0000000..0b54b25 --- /dev/null +++ b/node_modules/uuid/lib/sha1.js @@ -0,0 +1,25 @@ +'use strict'; + +var crypto = require('crypto'); + +function sha1(bytes) { + if (typeof Buffer.from === 'function') { + // Modern Buffer API + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + } else { + // Pre-v4 Buffer API + if (Array.isArray(bytes)) { + bytes = new Buffer(bytes); + } else if (typeof bytes === 'string') { + bytes = new Buffer(bytes, 'utf8'); + } + } + + return crypto.createHash('sha1').update(bytes).digest(); +} + +module.exports = sha1; diff --git a/node_modules/uuid/lib/v35.js b/node_modules/uuid/lib/v35.js new file mode 100644 index 0000000..8b066cc --- /dev/null +++ b/node_modules/uuid/lib/v35.js @@ -0,0 +1,57 @@ +var bytesToUuid = require('./bytesToUuid'); + +function uuidToBytes(uuid) { + // Note: We assume we're being passed a valid uuid string + var bytes = []; + uuid.replace(/[a-fA-F0-9]{2}/g, function(hex) { + bytes.push(parseInt(hex, 16)); + }); + + return bytes; +} + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + var bytes = new Array(str.length); + for (var i = 0; i < str.length; i++) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} + +module.exports = function(name, version, hashfunc) { + var generateUUID = function(value, namespace, buf, offset) { + var off = buf && offset || 0; + + if (typeof(value) == 'string') value = stringToBytes(value); + if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace); + + if (!Array.isArray(value)) throw TypeError('value must be an array of bytes'); + if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); + + // Per 4.3 + var bytes = hashfunc(namespace.concat(value)); + bytes[6] = (bytes[6] & 0x0f) | version; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + + if (buf) { + for (var idx = 0; idx < 16; ++idx) { + buf[off+idx] = bytes[idx]; + } + } + + return buf || bytesToUuid(bytes); + }; + + // Function#name is not settable on some platforms (#270) + try { + generateUUID.name = name; + } catch (err) { + } + + // Pre-defined namespaces, per Appendix C + generateUUID.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + generateUUID.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; + + return generateUUID; +}; diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json new file mode 100644 index 0000000..f9f729d --- /dev/null +++ b/node_modules/uuid/package.json @@ -0,0 +1,95 @@ +{ + "_from": "uuid@^3.3.2", + "_id": "uuid@3.3.2", + "_inBundle": false, + "_integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "_location": "/uuid", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "uuid@^3.3.2", + "name": "uuid", + "escapedName": "uuid", + "rawSpec": "^3.3.2", + "saveSpec": null, + "fetchSpec": "^3.3.2" + }, + "_requiredBy": [ + "/request" + ], + "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "_shasum": "1b4af4955eb3077c501c23872fc6513811587131", + "_spec": "uuid@^3.3.2", + "_where": "/home/peter/www/prive/cypress-test/node_modules/request", + "bin": { + "uuid": "./bin/uuid" + }, + "browser": { + "./lib/rng.js": "./lib/rng-browser.js", + "./lib/sha1.js": "./lib/sha1-browser.js", + "./lib/md5.js": "./lib/md5-browser.js" + }, + "bugs": { + "url": "https://github.com/kelektiv/node-uuid/issues" + }, + "bundleDependencies": false, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "contributors": [ + { + "name": "Robert Kieffer", + "email": "robert@broofa.com" + }, + { + "name": "Christoph Tavan", + "email": "dev@tavan.de" + }, + { + "name": "AJ ONeal", + "email": "coolaj86@gmail.com" + }, + { + "name": "Vincent Voyer", + "email": "vincent@zeroload.net" + }, + { + "name": "Roman Shtylman", + "email": "shtylman@gmail.com" + } + ], + "deprecated": false, + "description": "RFC4122 (v1, v4, and v5) UUIDs", + "devDependencies": { + "@commitlint/cli": "7.0.0", + "@commitlint/config-conventional": "7.0.1", + "eslint": "4.19.1", + "husky": "0.14.3", + "mocha": "5.2.0", + "runmd": "1.0.1", + "standard-version": "4.4.0" + }, + "homepage": "https://github.com/kelektiv/node-uuid#readme", + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "license": "MIT", + "name": "uuid", + "repository": { + "type": "git", + "url": "git+https://github.com/kelektiv/node-uuid.git" + }, + "scripts": { + "commitmsg": "commitlint -E GIT_PARAMS", + "md": "runmd --watch --output=README.md README_js.md", + "prepare": "runmd --output=README.md README_js.md", + "release": "standard-version", + "test": "mocha test/test.js" + }, + "version": "3.3.2" +} diff --git a/node_modules/uuid/v1.js b/node_modules/uuid/v1.js new file mode 100644 index 0000000..d84c0f4 --- /dev/null +++ b/node_modules/uuid/v1.js @@ -0,0 +1,109 @@ +var rng = require('./lib/rng'); +var bytesToUuid = require('./lib/bytesToUuid'); + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; + +// Previous uuid creation time +var _lastMSecs = 0; +var _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + if (node == null || clockseq == null) { + var seedBytes = rng(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] + ]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); +} + +module.exports = v1; diff --git a/node_modules/uuid/v3.js b/node_modules/uuid/v3.js new file mode 100644 index 0000000..ee7e14c --- /dev/null +++ b/node_modules/uuid/v3.js @@ -0,0 +1,4 @@ +var v35 = require('./lib/v35.js'); +var md5 = require('./lib/md5'); + +module.exports = v35('v3', 0x30, md5); \ No newline at end of file diff --git a/node_modules/uuid/v4.js b/node_modules/uuid/v4.js new file mode 100644 index 0000000..1f07be1 --- /dev/null +++ b/node_modules/uuid/v4.js @@ -0,0 +1,29 @@ +var rng = require('./lib/rng'); +var bytesToUuid = require('./lib/bytesToUuid'); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; diff --git a/node_modules/uuid/v5.js b/node_modules/uuid/v5.js new file mode 100644 index 0000000..4945baf --- /dev/null +++ b/node_modules/uuid/v5.js @@ -0,0 +1,3 @@ +var v35 = require('./lib/v35.js'); +var sha1 = require('./lib/sha1'); +module.exports = v35('v5', 0x50, sha1); diff --git a/node_modules/verror/.npmignore b/node_modules/verror/.npmignore new file mode 100644 index 0000000..f14aec8 --- /dev/null +++ b/node_modules/verror/.npmignore @@ -0,0 +1,9 @@ +.gitignore +.gitmodules +deps +examples +experiments +jsl.node.conf +Makefile +Makefile.targ +test diff --git a/node_modules/verror/CHANGES.md b/node_modules/verror/CHANGES.md new file mode 100644 index 0000000..bbb745a --- /dev/null +++ b/node_modules/verror/CHANGES.md @@ -0,0 +1,28 @@ +# Changelog + +## Not yet released + +None yet. + +## v1.10.0 + +* #49 want convenience functions for MultiErrors + +## v1.9.0 + +* #47 could use VError.hasCauseWithName() + +## v1.8.1 + +* #39 captureStackTrace lost when inheriting from WError + +## v1.8.0 + +* #23 Preserve original stack trace(s) + +## v1.7.0 + +* #10 better support for extra properties on Errors +* #11 make it easy to find causes of a particular kind +* #29 No documentation on how to Install this package +* #36 elide development-only files from npm package diff --git a/node_modules/verror/CONTRIBUTING.md b/node_modules/verror/CONTRIBUTING.md new file mode 100644 index 0000000..750cef8 --- /dev/null +++ b/node_modules/verror/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing + +This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new +changes. Anyone can submit changes. To get started, see the [cr.joyent.us user +guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md). +This repo does not use GitHub pull requests. + +See the [Joyent Engineering +Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general +best practices expected in this repository. + +Contributions should be "make prepush" clean. The "prepush" target runs the +"check" target, which requires these separate tools: + +* https://github.com/davepacheco/jsstyle +* https://github.com/davepacheco/javascriptlint + +If you're changing something non-trivial or user-facing, you may want to submit +an issue first. diff --git a/node_modules/verror/LICENSE b/node_modules/verror/LICENSE new file mode 100644 index 0000000..82a5cb8 --- /dev/null +++ b/node_modules/verror/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2016, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE diff --git a/node_modules/verror/README.md b/node_modules/verror/README.md new file mode 100644 index 0000000..c1f0635 --- /dev/null +++ b/node_modules/verror/README.md @@ -0,0 +1,528 @@ +# verror: rich JavaScript errors + +This module provides several classes in support of Joyent's [Best Practices for +Error Handling in Node.js](http://www.joyent.com/developers/node/design/errors). +If you find any of the behavior here confusing or surprising, check out that +document first. + +The error classes here support: + +* printf-style arguments for the message +* chains of causes +* properties to provide extra information about the error +* creating your own subclasses that support all of these + +The classes here are: + +* **VError**, for chaining errors while preserving each one's error message. + This is useful in servers and command-line utilities when you want to + propagate an error up a call stack, but allow various levels to add their own + context. See examples below. +* **WError**, for wrapping errors while hiding the lower-level messages from the + top-level error. This is useful for API endpoints where you don't want to + expose internal error messages, but you still want to preserve the error chain + for logging and debugging. +* **SError**, which is just like VError but interprets printf-style arguments + more strictly. +* **MultiError**, which is just an Error that encapsulates one or more other + errors. (This is used for parallel operations that return several errors.) + + +# Quick start + +First, install the package: + + npm install verror + +If nothing else, you can use VError as a drop-in replacement for the built-in +JavaScript Error class, with the addition of printf-style messages: + +```javascript +var err = new VError('missing file: "%s"', '/etc/passwd'); +console.log(err.message); +``` + +This prints: + + missing file: "/etc/passwd" + +You can also pass a `cause` argument, which is any other Error object: + +```javascript +var fs = require('fs'); +var filename = '/nonexistent'; +fs.stat(filename, function (err1) { + var err2 = new VError(err1, 'stat "%s"', filename); + console.error(err2.message); +}); +``` + +This prints out: + + stat "/nonexistent": ENOENT, stat '/nonexistent' + +which resembles how Unix programs typically report errors: + + $ sort /nonexistent + sort: open failed: /nonexistent: No such file or directory + +To match the Unixy feel, when you print out the error, just prepend the +program's name to the VError's `message`. Or just call +[node-cmdutil.fail(your_verror)](https://github.com/joyent/node-cmdutil), which +does this for you. + +You can get the next-level Error using `err.cause()`: + +```javascript +console.error(err2.cause().message); +``` + +prints: + + ENOENT, stat '/nonexistent' + +Of course, you can chain these as many times as you want, and it works with any +kind of Error: + +```javascript +var err1 = new Error('No such file or directory'); +var err2 = new VError(err1, 'failed to stat "%s"', '/junk'); +var err3 = new VError(err2, 'request failed'); +console.error(err3.message); +``` + +This prints: + + request failed: failed to stat "/junk": No such file or directory + +The idea is that each layer in the stack annotates the error with a description +of what it was doing. The end result is a message that explains what happened +at each level. + +You can also decorate Error objects with additional information so that callers +can not only handle each kind of error differently, but also construct their own +error messages (e.g., to localize them, format them, group them by type, and so +on). See the example below. + + +# Deeper dive + +The two main goals for VError are: + +* **Make it easy to construct clear, complete error messages intended for + people.** Clear error messages greatly improve both user experience and + debuggability, so we wanted to make it easy to build them. That's why the + constructor takes printf-style arguments. +* **Make it easy to construct objects with programmatically-accessible + metadata** (which we call _informational properties_). Instead of just saying + "connection refused while connecting to 192.168.1.2:80", you can add + properties like `"ip": "192.168.1.2"` and `"tcpPort": 80`. This can be used + for feeding into monitoring systems, analyzing large numbers of Errors (as + from a log file), or localizing error messages. + +To really make this useful, it also needs to be easy to compose Errors: +higher-level code should be able to augment the Errors reported by lower-level +code to provide a more complete description of what happened. Instead of saying +"connection refused", you can say "operation X failed: connection refused". +That's why VError supports `causes`. + +In order for all this to work, programmers need to know that it's generally safe +to wrap lower-level Errors with higher-level ones. If you have existing code +that handles Errors produced by a library, you should be able to wrap those +Errors with a VError to add information without breaking the error handling +code. There are two obvious ways that this could break such consumers: + +* The error's name might change. People typically use `name` to determine what + kind of Error they've got. To ensure compatibility, you can create VErrors + with custom names, but this approach isn't great because it prevents you from + representing complex failures. For this reason, VError provides + `findCauseByName`, which essentially asks: does this Error _or any of its + causes_ have this specific type? If error handling code uses + `findCauseByName`, then subsystems can construct very specific causal chains + for debuggability and still let people handle simple cases easily. There's an + example below. +* The error's properties might change. People often hang additional properties + off of Error objects. If we wrap an existing Error in a new Error, those + properties would be lost unless we copied them. But there are a variety of + both standard and non-standard Error properties that should _not_ be copied in + this way: most obviously `name`, `message`, and `stack`, but also `fileName`, + `lineNumber`, and a few others. Plus, it's useful for some Error subclasses + to have their own private properties -- and there'd be no way to know whether + these should be copied. For these reasons, VError first-classes these + information properties. You have to provide them in the constructor, you can + only fetch them with the `info()` function, and VError takes care of making + sure properties from causes wind up in the `info()` output. + +Let's put this all together with an example from the node-fast RPC library. +node-fast implements a simple RPC protocol for Node programs. There's a server +and client interface, and clients make RPC requests to servers. Let's say the +server fails with an UnauthorizedError with message "user 'bob' is not +authorized". The client wraps all server errors with a FastServerError. The +client also wraps all request errors with a FastRequestError that includes the +name of the RPC call being made. The result of this failed RPC might look like +this: + + name: FastRequestError + message: "request failed: server error: user 'bob' is not authorized" + rpcMsgid: + rpcMethod: GetObject + cause: + name: FastServerError + message: "server error: user 'bob' is not authorized" + cause: + name: UnauthorizedError + message: "user 'bob' is not authorized" + rpcUser: "bob" + +When the caller uses `VError.info()`, the information properties are collapsed +so that it looks like this: + + message: "request failed: server error: user 'bob' is not authorized" + rpcMsgid: + rpcMethod: GetObject + rpcUser: "bob" + +Taking this apart: + +* The error's message is a complete description of the problem. The caller can + report this directly to its caller, which can potentially make its way back to + an end user (if appropriate). It can also be logged. +* The caller can tell that the request failed on the server, rather than as a + result of a client problem (e.g., failure to serialize the request), a + transport problem (e.g., failure to connect to the server), or something else + (e.g., a timeout). They do this using `findCauseByName('FastServerError')` + rather than checking the `name` field directly. +* If the caller logs this error, the logs can be analyzed to aggregate + errors by cause, by RPC method name, by user, or whatever. Or the + error can be correlated with other events for the same rpcMsgid. +* It wasn't very hard for any part of the code to contribute to this Error. + Each part of the stack has just a few lines to provide exactly what it knows, + with very little boilerplate. + +It's not expected that you'd use these complex forms all the time. Despite +supporting the complex case above, you can still just do: + + new VError("my service isn't working"); + +for the simple cases. + + +# Reference: VError, WError, SError + +VError, WError, and SError are convenient drop-in replacements for `Error` that +support printf-style arguments, first-class causes, informational properties, +and other useful features. + + +## Constructors + +The VError constructor has several forms: + +```javascript +/* + * This is the most general form. You can specify any supported options + * (including "cause" and "info") this way. + */ +new VError(options, sprintf_args...) + +/* + * This is a useful shorthand when the only option you need is "cause". + */ +new VError(cause, sprintf_args...) + +/* + * This is a useful shorthand when you don't need any options at all. + */ +new VError(sprintf_args...) +``` + +All of these forms construct a new VError that behaves just like the built-in +JavaScript `Error` class, with some additional methods described below. + +In the first form, `options` is a plain object with any of the following +optional properties: + +Option name | Type | Meaning +---------------- | ---------------- | ------- +`name` | string | Describes what kind of error this is. This is intended for programmatic use to distinguish between different kinds of errors. Note that in modern versions of Node.js, this name is ignored in the `stack` property value, but callers can still use the `name` property to get at it. +`cause` | any Error object | Indicates that the new error was caused by `cause`. See `cause()` below. If unspecified, the cause will be `null`. +`strict` | boolean | If true, then `null` and `undefined` values in `sprintf_args` are passed through to `sprintf()`. Otherwise, these are replaced with the strings `'null'`, and '`undefined`', respectively. +`constructorOpt` | function | If specified, then the stack trace for this error ends at function `constructorOpt`. Functions called by `constructorOpt` will not show up in the stack. This is useful when this class is subclassed. +`info` | object | Specifies arbitrary informational properties that are available through the `VError.info(err)` static class method. See that method for details. + +The second form is equivalent to using the first form with the specified `cause` +as the error's cause. This form is distinguished from the first form because +the first argument is an Error. + +The third form is equivalent to using the first form with all default option +values. This form is distinguished from the other forms because the first +argument is not an object or an Error. + +The `WError` constructor is used exactly the same way as the `VError` +constructor. The `SError` constructor is also used the same way as the +`VError` constructor except that in all cases, the `strict` property is +overriden to `true. + + +## Public properties + +`VError`, `WError`, and `SError` all provide the same public properties as +JavaScript's built-in Error objects. + +Property name | Type | Meaning +------------- | ------ | ------- +`name` | string | Programmatically-usable name of the error. +`message` | string | Human-readable summary of the failure. Programmatically-accessible details are provided through `VError.info(err)` class method. +`stack` | string | Human-readable stack trace where the Error was constructed. + +For all of these classes, the printf-style arguments passed to the constructor +are processed with `sprintf()` to form a message. For `WError`, this becomes +the complete `message` property. For `SError` and `VError`, this message is +prepended to the message of the cause, if any (with a suitable separator), and +the result becomes the `message` property. + +The `stack` property is managed entirely by the underlying JavaScript +implementation. It's generally implemented using a getter function because +constructing the human-readable stack trace is somewhat expensive. + +## Class methods + +The following methods are defined on the `VError` class and as exported +functions on the `verror` module. They're defined this way rather than using +methods on VError instances so that they can be used on Errors not created with +`VError`. + +### `VError.cause(err)` + +The `cause()` function returns the next Error in the cause chain for `err`, or +`null` if there is no next error. See the `cause` argument to the constructor. +Errors can have arbitrarily long cause chains. You can walk the `cause` chain +by invoking `VError.cause(err)` on each subsequent return value. If `err` is +not a `VError`, the cause is `null`. + +### `VError.info(err)` + +Returns an object with all of the extra error information that's been associated +with this Error and all of its causes. These are the properties passed in using +the `info` option to the constructor. Properties not specified in the +constructor for this Error are implicitly inherited from this error's cause. + +These properties are intended to provide programmatically-accessible metadata +about the error. For an error that indicates a failure to resolve a DNS name, +informational properties might include the DNS name to be resolved, or even the +list of resolvers used to resolve it. The values of these properties should +generally be plain objects (i.e., consisting only of null, undefined, numbers, +booleans, strings, and objects and arrays containing only other plain objects). + +### `VError.fullStack(err)` + +Returns a string containing the full stack trace, with all nested errors recursively +reported as `'caused by:' + err.stack`. + +### `VError.findCauseByName(err, name)` + +The `findCauseByName()` function traverses the cause chain for `err`, looking +for an error whose `name` property matches the passed in `name` value. If no +match is found, `null` is returned. + +If all you want is to know _whether_ there's a cause (and you don't care what it +is), you can use `VError.hasCauseWithName(err, name)`. + +If a vanilla error or a non-VError error is passed in, then there is no cause +chain to traverse. In this scenario, the function will check the `name` +property of only `err`. + +### `VError.hasCauseWithName(err, name)` + +Returns true if and only if `VError.findCauseByName(err, name)` would return +a non-null value. This essentially determines whether `err` has any cause in +its cause chain that has name `name`. + +### `VError.errorFromList(errors)` + +Given an array of Error objects (possibly empty), return a single error +representing the whole collection of errors. If the list has: + +* 0 elements, returns `null` +* 1 element, returns the sole error +* more than 1 element, returns a MultiError referencing the whole list + +This is useful for cases where an operation may produce any number of errors, +and you ultimately want to implement the usual `callback(err)` pattern. You can +accumulate the errors in an array and then invoke +`callback(VError.errorFromList(errors))` when the operation is complete. + + +### `VError.errorForEach(err, func)` + +Convenience function for iterating an error that may itself be a MultiError. + +In all cases, `err` must be an Error. If `err` is a MultiError, then `func` is +invoked as `func(errorN)` for each of the underlying errors of the MultiError. +If `err` is any other kind of error, `func` is invoked once as `func(err)`. In +all cases, `func` is invoked synchronously. + +This is useful for cases where an operation may produce any number of warnings +that may be encapsulated with a MultiError -- but may not be. + +This function does not iterate an error's cause chain. + + +## Examples + +The "Demo" section above covers several basic cases. Here's a more advanced +case: + +```javascript +var err1 = new VError('something bad happened'); +/* ... */ +var err2 = new VError({ + 'name': 'ConnectionError', + 'cause': err1, + 'info': { + 'errno': 'ECONNREFUSED', + 'remote_ip': '127.0.0.1', + 'port': 215 + } +}, 'failed to connect to "%s:%d"', '127.0.0.1', 215); + +console.log(err2.message); +console.log(err2.name); +console.log(VError.info(err2)); +console.log(err2.stack); +``` + +This outputs: + + failed to connect to "127.0.0.1:215": something bad happened + ConnectionError + { errno: 'ECONNREFUSED', remote_ip: '127.0.0.1', port: 215 } + ConnectionError: failed to connect to "127.0.0.1:215": something bad happened + at Object. (/home/dap/node-verror/examples/info.js:5:12) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) + at node.js:935:3 + +Information properties are inherited up the cause chain, with values at the top +of the chain overriding same-named values lower in the chain. To continue that +example: + +```javascript +var err3 = new VError({ + 'name': 'RequestError', + 'cause': err2, + 'info': { + 'errno': 'EBADREQUEST' + } +}, 'request failed'); + +console.log(err3.message); +console.log(err3.name); +console.log(VError.info(err3)); +console.log(err3.stack); +``` + +This outputs: + + request failed: failed to connect to "127.0.0.1:215": something bad happened + RequestError + { errno: 'EBADREQUEST', remote_ip: '127.0.0.1', port: 215 } + RequestError: request failed: failed to connect to "127.0.0.1:215": something bad happened + at Object. (/home/dap/node-verror/examples/info.js:20:12) + at Module._compile (module.js:456:26) + at Object.Module._extensions..js (module.js:474:10) + at Module.load (module.js:356:32) + at Function.Module._load (module.js:312:12) + at Function.Module.runMain (module.js:497:10) + at startup (node.js:119:16) + at node.js:935:3 + +You can also print the complete stack trace of combined `Error`s by using +`VError.fullStack(err).` + +```javascript +var err1 = new VError('something bad happened'); +/* ... */ +var err2 = new VError(err1, 'something really bad happened here'); + +console.log(VError.fullStack(err2)); +``` + +This outputs: + + VError: something really bad happened here: something bad happened + at Object. (/home/dap/node-verror/examples/fullStack.js:5:12) + at Module._compile (module.js:409:26) + at Object.Module._extensions..js (module.js:416:10) + at Module.load (module.js:343:32) + at Function.Module._load (module.js:300:12) + at Function.Module.runMain (module.js:441:10) + at startup (node.js:139:18) + at node.js:968:3 + caused by: VError: something bad happened + at Object. (/home/dap/node-verror/examples/fullStack.js:3:12) + at Module._compile (module.js:409:26) + at Object.Module._extensions..js (module.js:416:10) + at Module.load (module.js:343:32) + at Function.Module._load (module.js:300:12) + at Function.Module.runMain (module.js:441:10) + at startup (node.js:139:18) + at node.js:968:3 + +`VError.fullStack` is also safe to use on regular `Error`s, so feel free to use +it whenever you need to extract the stack trace from an `Error`, regardless if +it's a `VError` or not. + +# Reference: MultiError + +MultiError is an Error class that represents a group of Errors. This is used +when you logically need to provide a single Error, but you want to preserve +information about multiple underying Errors. A common case is when you execute +several operations in parallel and some of them fail. + +MultiErrors are constructed as: + +```javascript +new MultiError(error_list) +``` + +`error_list` is an array of at least one `Error` object. + +The cause of the MultiError is the first error provided. None of the other +`VError` options are supported. The `message` for a MultiError consists the +`message` from the first error, prepended with a message indicating that there +were other errors. + +For example: + +```javascript +err = new MultiError([ + new Error('failed to resolve DNS name "abc.example.com"'), + new Error('failed to resolve DNS name "def.example.com"'), +]); + +console.error(err.message); +``` + +outputs: + + first of 2 errors: failed to resolve DNS name "abc.example.com" + +See the convenience function `VError.errorFromList`, which is sometimes simpler +to use than this constructor. + +## Public methods + + +### `errors()` + +Returns an array of the errors used to construct this MultiError. + + +# Contributing + +See separate [contribution guidelines](CONTRIBUTING.md). diff --git a/node_modules/verror/lib/verror.js b/node_modules/verror/lib/verror.js new file mode 100644 index 0000000..8663dde --- /dev/null +++ b/node_modules/verror/lib/verror.js @@ -0,0 +1,451 @@ +/* + * verror.js: richer JavaScript errors + */ + +var mod_assertplus = require('assert-plus'); +var mod_util = require('util'); + +var mod_extsprintf = require('extsprintf'); +var mod_isError = require('core-util-is').isError; +var sprintf = mod_extsprintf.sprintf; + +/* + * Public interface + */ + +/* So you can 'var VError = require('verror')' */ +module.exports = VError; +/* For compatibility */ +VError.VError = VError; +/* Other exported classes */ +VError.SError = SError; +VError.WError = WError; +VError.MultiError = MultiError; + +/* + * Common function used to parse constructor arguments for VError, WError, and + * SError. Named arguments to this function: + * + * strict force strict interpretation of sprintf arguments, even + * if the options in "argv" don't say so + * + * argv error's constructor arguments, which are to be + * interpreted as described in README.md. For quick + * reference, "argv" has one of the following forms: + * + * [ sprintf_args... ] (argv[0] is a string) + * [ cause, sprintf_args... ] (argv[0] is an Error) + * [ options, sprintf_args... ] (argv[0] is an object) + * + * This function normalizes these forms, producing an object with the following + * properties: + * + * options equivalent to "options" in third form. This will never + * be a direct reference to what the caller passed in + * (i.e., it may be a shallow copy), so it can be freely + * modified. + * + * shortmessage result of sprintf(sprintf_args), taking options.strict + * into account as described in README.md. + */ +function parseConstructorArguments(args) +{ + var argv, options, sprintf_args, shortmessage, k; + + mod_assertplus.object(args, 'args'); + mod_assertplus.bool(args.strict, 'args.strict'); + mod_assertplus.array(args.argv, 'args.argv'); + argv = args.argv; + + /* + * First, figure out which form of invocation we've been given. + */ + if (argv.length === 0) { + options = {}; + sprintf_args = []; + } else if (mod_isError(argv[0])) { + options = { 'cause': argv[0] }; + sprintf_args = argv.slice(1); + } else if (typeof (argv[0]) === 'object') { + options = {}; + for (k in argv[0]) { + options[k] = argv[0][k]; + } + sprintf_args = argv.slice(1); + } else { + mod_assertplus.string(argv[0], + 'first argument to VError, SError, or WError ' + + 'constructor must be a string, object, or Error'); + options = {}; + sprintf_args = argv; + } + + /* + * Now construct the error's message. + * + * extsprintf (which we invoke here with our caller's arguments in order + * to construct this Error's message) is strict in its interpretation of + * values to be processed by the "%s" specifier. The value passed to + * extsprintf must actually be a string or something convertible to a + * String using .toString(). Passing other values (notably "null" and + * "undefined") is considered a programmer error. The assumption is + * that if you actually want to print the string "null" or "undefined", + * then that's easy to do that when you're calling extsprintf; on the + * other hand, if you did NOT want that (i.e., there's actually a bug + * where the program assumes some variable is non-null and tries to + * print it, which might happen when constructing a packet or file in + * some specific format), then it's better to stop immediately than + * produce bogus output. + * + * However, sometimes the bug is only in the code calling VError, and a + * programmer might prefer to have the error message contain "null" or + * "undefined" rather than have the bug in the error path crash the + * program (making the first bug harder to identify). For that reason, + * by default VError converts "null" or "undefined" arguments to their + * string representations and passes those to extsprintf. Programmers + * desiring the strict behavior can use the SError class or pass the + * "strict" option to the VError constructor. + */ + mod_assertplus.object(options); + if (!options.strict && !args.strict) { + sprintf_args = sprintf_args.map(function (a) { + return (a === null ? 'null' : + a === undefined ? 'undefined' : a); + }); + } + + if (sprintf_args.length === 0) { + shortmessage = ''; + } else { + shortmessage = sprintf.apply(null, sprintf_args); + } + + return ({ + 'options': options, + 'shortmessage': shortmessage + }); +} + +/* + * See README.md for reference documentation. + */ +function VError() +{ + var args, obj, parsed, cause, ctor, message, k; + + args = Array.prototype.slice.call(arguments, 0); + + /* + * This is a regrettable pattern, but JavaScript's built-in Error class + * is defined to work this way, so we allow the constructor to be called + * without "new". + */ + if (!(this instanceof VError)) { + obj = Object.create(VError.prototype); + VError.apply(obj, arguments); + return (obj); + } + + /* + * For convenience and backwards compatibility, we support several + * different calling forms. Normalize them here. + */ + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': false + }); + + /* + * If we've been given a name, apply it now. + */ + if (parsed.options.name) { + mod_assertplus.string(parsed.options.name, + 'error\'s "name" must be a string'); + this.name = parsed.options.name; + } + + /* + * For debugging, we keep track of the original short message (attached + * this Error particularly) separately from the complete message (which + * includes the messages of our cause chain). + */ + this.jse_shortmsg = parsed.shortmessage; + message = parsed.shortmessage; + + /* + * If we've been given a cause, record a reference to it and update our + * message appropriately. + */ + cause = parsed.options.cause; + if (cause) { + mod_assertplus.ok(mod_isError(cause), 'cause is not an Error'); + this.jse_cause = cause; + + if (!parsed.options.skipCauseMessage) { + message += ': ' + cause.message; + } + } + + /* + * If we've been given an object with properties, shallow-copy that + * here. We don't want to use a deep copy in case there are non-plain + * objects here, but we don't want to use the original object in case + * the caller modifies it later. + */ + this.jse_info = {}; + if (parsed.options.info) { + for (k in parsed.options.info) { + this.jse_info[k] = parsed.options.info[k]; + } + } + + this.message = message; + Error.call(this, message); + + if (Error.captureStackTrace) { + ctor = parsed.options.constructorOpt || this.constructor; + Error.captureStackTrace(this, ctor); + } + + return (this); +} + +mod_util.inherits(VError, Error); +VError.prototype.name = 'VError'; + +VError.prototype.toString = function ve_toString() +{ + var str = (this.hasOwnProperty('name') && this.name || + this.constructor.name || this.constructor.prototype.name); + if (this.message) + str += ': ' + this.message; + + return (str); +}; + +/* + * This method is provided for compatibility. New callers should use + * VError.cause() instead. That method also uses the saner `null` return value + * when there is no cause. + */ +VError.prototype.cause = function ve_cause() +{ + var cause = VError.cause(this); + return (cause === null ? undefined : cause); +}; + +/* + * Static methods + * + * These class-level methods are provided so that callers can use them on + * instances of Errors that are not VErrors. New interfaces should be provided + * only using static methods to eliminate the class of programming mistake where + * people fail to check whether the Error object has the corresponding methods. + */ + +VError.cause = function (err) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + return (mod_isError(err.jse_cause) ? err.jse_cause : null); +}; + +VError.info = function (err) +{ + var rv, cause, k; + + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + cause = VError.cause(err); + if (cause !== null) { + rv = VError.info(cause); + } else { + rv = {}; + } + + if (typeof (err.jse_info) == 'object' && err.jse_info !== null) { + for (k in err.jse_info) { + rv[k] = err.jse_info[k]; + } + } + + return (rv); +}; + +VError.findCauseByName = function (err, name) +{ + var cause; + + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + mod_assertplus.string(name, 'name'); + mod_assertplus.ok(name.length > 0, 'name cannot be empty'); + + for (cause = err; cause !== null; cause = VError.cause(cause)) { + mod_assertplus.ok(mod_isError(cause)); + if (cause.name == name) { + return (cause); + } + } + + return (null); +}; + +VError.hasCauseWithName = function (err, name) +{ + return (VError.findCauseByName(err, name) !== null); +}; + +VError.fullStack = function (err) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + + var cause = VError.cause(err); + + if (cause) { + return (err.stack + '\ncaused by: ' + VError.fullStack(cause)); + } + + return (err.stack); +}; + +VError.errorFromList = function (errors) +{ + mod_assertplus.arrayOfObject(errors, 'errors'); + + if (errors.length === 0) { + return (null); + } + + errors.forEach(function (e) { + mod_assertplus.ok(mod_isError(e)); + }); + + if (errors.length == 1) { + return (errors[0]); + } + + return (new MultiError(errors)); +}; + +VError.errorForEach = function (err, func) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + mod_assertplus.func(func, 'func'); + + if (err instanceof MultiError) { + err.errors().forEach(function iterError(e) { func(e); }); + } else { + func(err); + } +}; + + +/* + * SError is like VError, but stricter about types. You cannot pass "null" or + * "undefined" as string arguments to the formatter. + */ +function SError() +{ + var args, obj, parsed, options; + + args = Array.prototype.slice.call(arguments, 0); + if (!(this instanceof SError)) { + obj = Object.create(SError.prototype); + SError.apply(obj, arguments); + return (obj); + } + + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': true + }); + + options = parsed.options; + VError.call(this, options, '%s', parsed.shortmessage); + + return (this); +} + +/* + * We don't bother setting SError.prototype.name because once constructed, + * SErrors are just like VErrors. + */ +mod_util.inherits(SError, VError); + + +/* + * Represents a collection of errors for the purpose of consumers that generally + * only deal with one error. Callers can extract the individual errors + * contained in this object, but may also just treat it as a normal single + * error, in which case a summary message will be printed. + */ +function MultiError(errors) +{ + mod_assertplus.array(errors, 'list of errors'); + mod_assertplus.ok(errors.length > 0, 'must be at least one error'); + this.ase_errors = errors; + + VError.call(this, { + 'cause': errors[0] + }, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's'); +} + +mod_util.inherits(MultiError, VError); +MultiError.prototype.name = 'MultiError'; + +MultiError.prototype.errors = function me_errors() +{ + return (this.ase_errors.slice(0)); +}; + + +/* + * See README.md for reference details. + */ +function WError() +{ + var args, obj, parsed, options; + + args = Array.prototype.slice.call(arguments, 0); + if (!(this instanceof WError)) { + obj = Object.create(WError.prototype); + WError.apply(obj, args); + return (obj); + } + + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': false + }); + + options = parsed.options; + options['skipCauseMessage'] = true; + VError.call(this, options, '%s', parsed.shortmessage); + + return (this); +} + +mod_util.inherits(WError, VError); +WError.prototype.name = 'WError'; + +WError.prototype.toString = function we_toString() +{ + var str = (this.hasOwnProperty('name') && this.name || + this.constructor.name || this.constructor.prototype.name); + if (this.message) + str += ': ' + this.message; + if (this.jse_cause && this.jse_cause.message) + str += '; caused by ' + this.jse_cause.toString(); + + return (str); +}; + +/* + * For purely historical reasons, WError's cause() function allows you to set + * the cause. + */ +WError.prototype.cause = function we_cause(c) +{ + if (mod_isError(c)) + this.jse_cause = c; + + return (this.jse_cause); +}; diff --git a/node_modules/verror/package.json b/node_modules/verror/package.json new file mode 100644 index 0000000..afc96a8 --- /dev/null +++ b/node_modules/verror/package.json @@ -0,0 +1,51 @@ +{ + "_from": "verror@1.10.0", + "_id": "verror@1.10.0", + "_inBundle": false, + "_integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "_location": "/verror", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "verror@1.10.0", + "name": "verror", + "escapedName": "verror", + "rawSpec": "1.10.0", + "saveSpec": null, + "fetchSpec": "1.10.0" + }, + "_requiredBy": [ + "/jsprim" + ], + "_resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "_shasum": "3a105ca17053af55d6e270c1f8288682e18da400", + "_spec": "verror@1.10.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/jsprim", + "bugs": { + "url": "https://github.com/davepacheco/node-verror/issues" + }, + "bundleDependencies": false, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "deprecated": false, + "description": "richer JavaScript errors", + "engines": [ + "node >=0.6.0" + ], + "homepage": "https://github.com/davepacheco/node-verror#readme", + "license": "MIT", + "main": "./lib/verror.js", + "name": "verror", + "repository": { + "type": "git", + "url": "git://github.com/davepacheco/node-verror.git" + }, + "scripts": { + "test": "make test" + }, + "version": "1.10.0" +} diff --git a/node_modules/which/CHANGELOG.md b/node_modules/which/CHANGELOG.md new file mode 100644 index 0000000..3d83d26 --- /dev/null +++ b/node_modules/which/CHANGELOG.md @@ -0,0 +1,152 @@ +# Changes + + +## 1.3.1 + +* update deps +* update travis + +## v1.3.0 + +* Add nothrow option to which.sync +* update tap + +## v1.2.14 + +* appveyor: drop node 5 and 0.x +* travis-ci: add node 6, drop 0.x + +## v1.2.13 + +* test: Pass missing option to pass on windows +* update tap +* update isexe to 2.0.0 +* neveragain.tech pledge request + +## v1.2.12 + +* Removed unused require + +## v1.2.11 + +* Prevent changelog script from being included in package + +## v1.2.10 + +* Use env.PATH only, not env.Path + +## v1.2.9 + +* fix for paths starting with ../ +* Remove unused `is-absolute` module + +## v1.2.8 + +* bullet items in changelog that contain (but don't start with) # + +## v1.2.7 + +* strip 'update changelog' changelog entries out of changelog + +## v1.2.6 + +* make the changelog bulleted + +## v1.2.5 + +* make a changelog, and keep it up to date +* don't include tests in package +* Properly handle relative-path executables +* appveyor +* Attach error code to Not Found error +* Make tests pass on Windows + +## v1.2.4 + +* Fix typo + +## v1.2.3 + +* update isexe, fix regression in pathExt handling + +## v1.2.2 + +* update deps, use isexe module, test windows + +## v1.2.1 + +* Sometimes windows PATH entries are quoted +* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode. +* doc cli + +## v1.2.0 + +* Add support for opt.all and -as cli flags +* test the bin +* update travis +* Allow checking for multiple programs in bin/which +* tap 2 + +## v1.1.2 + +* travis +* Refactored and fixed undefined error on Windows +* Support strict mode + +## v1.1.1 + +* test +g exes against secondary groups, if available +* Use windows exe semantics on cygwin & msys +* cwd should be first in path on win32, not last +* Handle lower-case 'env.Path' on Windows +* Update docs +* use single-quotes + +## v1.1.0 + +* Add tests, depend on is-absolute + +## v1.0.9 + +* which.js: root is allowed to execute files owned by anyone + +## v1.0.8 + +* don't use graceful-fs + +## v1.0.7 + +* add license to package.json + +## v1.0.6 + +* isc license + +## 1.0.5 + +* Awful typo + +## 1.0.4 + +* Test for path absoluteness properly +* win: Allow '' as a pathext if cmd has a . in it + +## 1.0.3 + +* Remove references to execPath +* Make `which.sync()` work on Windows by honoring the PATHEXT variable. +* Make `isExe()` always return true on Windows. +* MIT + +## 1.0.2 + +* Only files can be exes + +## 1.0.1 + +* Respect the PATHEXT env for win32 support +* should 0755 the bin +* binary +* guts +* package +* 1st diff --git a/node_modules/which/LICENSE b/node_modules/which/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/which/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/which/README.md b/node_modules/which/README.md new file mode 100644 index 0000000..8c0b0cb --- /dev/null +++ b/node_modules/which/README.md @@ -0,0 +1,51 @@ +# which + +Like the unix `which` utility. + +Finds the first instance of a specified executable in the PATH +environment variable. Does not cache the results, so `hash -r` is not +needed when the PATH changes. + +## USAGE + +```javascript +var which = require('which') + +// async usage +which('node', function (er, resolvedPath) { + // er is returned if no "node" is found on the PATH + // if it is found, then the absolute path to the exec is returned +}) + +// sync usage +// throws if not found +var resolved = which.sync('node') + +// if nothrow option is used, returns null if not found +resolved = which.sync('node', {nothrow: true}) + +// Pass options to override the PATH and PATHEXT environment vars. +which('node', { path: someOtherPath }, function (er, resolved) { + if (er) + throw er + console.log('found at %j', resolved) +}) +``` + +## CLI USAGE + +Same as the BSD `which(1)` binary. + +``` +usage: which [-as] program ... +``` + +## OPTIONS + +You may pass an options object as the second argument. + +- `path`: Use instead of the `PATH` environment variable. +- `pathExt`: Use instead of the `PATHEXT` environment variable. +- `all`: Return all matches, instead of just the first one. Note that + this means the function returns an array of strings instead of a + single string. diff --git a/node_modules/which/bin/which b/node_modules/which/bin/which new file mode 100755 index 0000000..7cee372 --- /dev/null +++ b/node_modules/which/bin/which @@ -0,0 +1,52 @@ +#!/usr/bin/env node +var which = require("../") +if (process.argv.length < 3) + usage() + +function usage () { + console.error('usage: which [-as] program ...') + process.exit(1) +} + +var all = false +var silent = false +var dashdash = false +var args = process.argv.slice(2).filter(function (arg) { + if (dashdash || !/^-/.test(arg)) + return true + + if (arg === '--') { + dashdash = true + return false + } + + var flags = arg.substr(1).split('') + for (var f = 0; f < flags.length; f++) { + var flag = flags[f] + switch (flag) { + case 's': + silent = true + break + case 'a': + all = true + break + default: + console.error('which: illegal option -- ' + flag) + usage() + } + } + return false +}) + +process.exit(args.reduce(function (pv, current) { + try { + var f = which.sync(current, { all: all }) + if (all) + f = f.join('\n') + if (!silent) + console.log(f) + return pv; + } catch (e) { + return 1; + } +}, 0)) diff --git a/node_modules/which/package.json b/node_modules/which/package.json new file mode 100644 index 0000000..76fdfda --- /dev/null +++ b/node_modules/which/package.json @@ -0,0 +1,65 @@ +{ + "_from": "which@^1.2.9", + "_id": "which@1.3.1", + "_inBundle": false, + "_integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "_location": "/which", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "which@^1.2.9", + "name": "which", + "escapedName": "which", + "rawSpec": "^1.2.9", + "saveSpec": null, + "fetchSpec": "^1.2.9" + }, + "_requiredBy": [ + "/cross-spawn" + ], + "_resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "_shasum": "a45043d54f5805316da8d62f9f50918d3da70b0a", + "_spec": "which@^1.2.9", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cross-spawn", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" + }, + "bin": { + "which": "./bin/which" + }, + "bugs": { + "url": "https://github.com/isaacs/node-which/issues" + }, + "bundleDependencies": false, + "dependencies": { + "isexe": "^2.0.0" + }, + "deprecated": false, + "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.", + "devDependencies": { + "mkdirp": "^0.5.0", + "rimraf": "^2.6.2", + "tap": "^12.0.1" + }, + "files": [ + "which.js", + "bin/which" + ], + "homepage": "https://github.com/isaacs/node-which#readme", + "license": "ISC", + "main": "which.js", + "name": "which", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-which.git" + }, + "scripts": { + "changelog": "bash gen-changelog.sh", + "postversion": "npm run changelog && git add CHANGELOG.md && git commit -m 'update changelog - '${npm_package_version}", + "test": "tap test/*.js --cov" + }, + "version": "1.3.1" +} diff --git a/node_modules/which/which.js b/node_modules/which/which.js new file mode 100644 index 0000000..4347f91 --- /dev/null +++ b/node_modules/which/which.js @@ -0,0 +1,135 @@ +module.exports = which +which.sync = whichSync + +var isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys' + +var path = require('path') +var COLON = isWindows ? ';' : ':' +var isexe = require('isexe') + +function getNotFoundError (cmd) { + var er = new Error('not found: ' + cmd) + er.code = 'ENOENT' + + return er +} + +function getPathInfo (cmd, opt) { + var colon = opt.colon || COLON + var pathEnv = opt.path || process.env.PATH || '' + var pathExt = [''] + + pathEnv = pathEnv.split(colon) + + var pathExtExe = '' + if (isWindows) { + pathEnv.unshift(process.cwd()) + pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM') + pathExt = pathExtExe.split(colon) + + + // Always test the cmd itself first. isexe will check to make sure + // it's found in the pathExt set. + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift('') + } + + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + if (cmd.match(/\//) || isWindows && cmd.match(/\\/)) + pathEnv = [''] + + return { + env: pathEnv, + ext: pathExt, + extExe: pathExtExe + } +} + +function which (cmd, opt, cb) { + if (typeof opt === 'function') { + cb = opt + opt = {} + } + + var info = getPathInfo(cmd, opt) + var pathEnv = info.env + var pathExt = info.ext + var pathExtExe = info.extExe + var found = [] + + ;(function F (i, l) { + if (i === l) { + if (opt.all && found.length) + return cb(null, found) + else + return cb(getNotFoundError(cmd)) + } + + var pathPart = pathEnv[i] + if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"') + pathPart = pathPart.slice(1, -1) + + var p = path.join(pathPart, cmd) + if (!pathPart && (/^\.[\\\/]/).test(cmd)) { + p = cmd.slice(0, 2) + p + } + ;(function E (ii, ll) { + if (ii === ll) return F(i + 1, l) + var ext = pathExt[ii] + isexe(p + ext, { pathExt: pathExtExe }, function (er, is) { + if (!er && is) { + if (opt.all) + found.push(p + ext) + else + return cb(null, p + ext) + } + return E(ii + 1, ll) + }) + })(0, pathExt.length) + })(0, pathEnv.length) +} + +function whichSync (cmd, opt) { + opt = opt || {} + + var info = getPathInfo(cmd, opt) + var pathEnv = info.env + var pathExt = info.ext + var pathExtExe = info.extExe + var found = [] + + for (var i = 0, l = pathEnv.length; i < l; i ++) { + var pathPart = pathEnv[i] + if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"') + pathPart = pathPart.slice(1, -1) + + var p = path.join(pathPart, cmd) + if (!pathPart && /^\.[\\\/]/.test(cmd)) { + p = cmd.slice(0, 2) + p + } + for (var j = 0, ll = pathExt.length; j < ll; j ++) { + var cur = p + pathExt[j] + var is + try { + is = isexe.sync(cur, { pathExt: pathExtExe }) + if (is) { + if (opt.all) + found.push(cur) + else + return cur + } + } catch (ex) {} + } + } + + if (opt.all && found.length) + return found + + if (opt.nothrow) + return null + + throw getNotFoundError(cmd) +} diff --git a/node_modules/wrappy/LICENSE b/node_modules/wrappy/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/wrappy/README.md b/node_modules/wrappy/README.md new file mode 100644 index 0000000..98eab25 --- /dev/null +++ b/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/node_modules/wrappy/package.json b/node_modules/wrappy/package.json new file mode 100644 index 0000000..fb669dd --- /dev/null +++ b/node_modules/wrappy/package.json @@ -0,0 +1,59 @@ +{ + "_from": "wrappy@1", + "_id": "wrappy@1.0.2", + "_inBundle": false, + "_integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "_location": "/wrappy", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "wrappy@1", + "name": "wrappy", + "escapedName": "wrappy", + "rawSpec": "1", + "saveSpec": null, + "fetchSpec": "1" + }, + "_requiredBy": [ + "/inflight", + "/once" + ], + "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", + "_spec": "wrappy@1", + "_where": "/home/peter/www/prive/cypress-test/node_modules/inflight", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "Callback wrapping utility", + "devDependencies": { + "tap": "^2.3.1" + }, + "directories": { + "test": "test" + }, + "files": [ + "wrappy.js" + ], + "homepage": "https://github.com/npm/wrappy", + "license": "ISC", + "main": "wrappy.js", + "name": "wrappy", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/wrappy.git" + }, + "scripts": { + "test": "tap --coverage test/*.js" + }, + "version": "1.0.2" +} diff --git a/node_modules/wrappy/wrappy.js b/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000..bb7e7d6 --- /dev/null +++ b/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/node_modules/yauzl/LICENSE b/node_modules/yauzl/LICENSE new file mode 100644 index 0000000..37538d4 --- /dev/null +++ b/node_modules/yauzl/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Josh Wolfe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/yauzl/README.md b/node_modules/yauzl/README.md new file mode 100644 index 0000000..d4e53f4 --- /dev/null +++ b/node_modules/yauzl/README.md @@ -0,0 +1,658 @@ +# yauzl + +[![Build Status](https://travis-ci.org/thejoshwolfe/yauzl.svg?branch=master)](https://travis-ci.org/thejoshwolfe/yauzl) +[![Coverage Status](https://img.shields.io/coveralls/thejoshwolfe/yauzl.svg)](https://coveralls.io/r/thejoshwolfe/yauzl) + +yet another unzip library for node. For zipping, see +[yazl](https://github.com/thejoshwolfe/yazl). + +Design principles: + + * Follow the spec. + Don't scan for local file headers. + Read the central directory for file metadata. + (see [No Streaming Unzip API](#no-streaming-unzip-api)). + * Don't block the JavaScript thread. + Use and provide async APIs. + * Keep memory usage under control. + Don't attempt to buffer entire files in RAM at once. + * Never crash (if used properly). + Don't let malformed zip files bring down client applications who are trying to catch errors. + * Catch unsafe file names. + See `validateFileName()`. + +## Usage + +```js +var yauzl = require("yauzl"); + +yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) { + if (err) throw err; + zipfile.readEntry(); + zipfile.on("entry", function(entry) { + if (/\/$/.test(entry.fileName)) { + // Directory file names end with '/'. + // Note that entires for directories themselves are optional. + // An entry's fileName implicitly requires its parent directories to exist. + zipfile.readEntry(); + } else { + // file entry + zipfile.openReadStream(entry, function(err, readStream) { + if (err) throw err; + readStream.on("end", function() { + zipfile.readEntry(); + }); + readStream.pipe(somewhere); + }); + } + }); +}); +``` + +See also `examples/` for more usage examples. + +## API + +The default for every optional `callback` parameter is: + +```js +function defaultCallback(err) { + if (err) throw err; +} +``` + +### open(path, [options], [callback]) + +Calls `fs.open(path, "r")` and reads the `fd` effectively the same as `fromFd()` would. + +`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`. + +`autoClose` is effectively equivalent to: + +```js +zipfile.once("end", function() { + zipfile.close(); +}); +``` + +`lazyEntries` indicates that entries should be read only when `readEntry()` is called. +If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing +file data from all entries in parallel. +This is not recommended, as it can lead to out of control memory usage for zip files with many entries. +See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22). +If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`. +This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries. + +`decodeStrings` is the default and causes yauzl to decode strings with `CP437` or `UTF-8` as required by the spec. +The exact effects of turning this option off are: + +* `zipfile.comment`, `entry.fileName`, and `entry.fileComment` will be `Buffer` objects instead of `String`s. +* Any Info-ZIP Unicode Path Extra Field will be ignored. See `extraFields`. +* Automatic file name validation will not be performed. See `validateFileName()`. + +`validateEntrySizes` is the default and ensures that an entry's reported uncompressed size matches its actual uncompressed size. +This check happens as early as possible, which is either before emitting each `"entry"` event (for entries with no compression), +or during the `readStream` piping after calling `openReadStream()`. +See `openReadStream()` for more information on defending against zip bomb attacks. + +When `strictFileNames` is `false` (the default) and `decodeStrings` is `true`, +all backslash (`\`) characters in each `entry.fileName` are replaced with forward slashes (`/`). +The spec forbids file names with backslashes, +but Microsoft's `System.IO.Compression.ZipFile` class in .NET versions 4.5.0 until 4.6.1 +creates non-conformant zipfiles with backslashes in file names. +`strictFileNames` is `false` by default so that clients can read these +non-conformant zipfiles without knowing about this Microsoft-specific bug. +When `strictFileNames` is `true` and `decodeStrings` is `true`, +entries with backslashes in their file names will result in an error. See `validateFileName()`. +When `decodeStrings` is `false`, `strictFileNames` has no effect. + +The `callback` is given the arguments `(err, zipfile)`. +An `err` is provided if the End of Central Directory Record cannot be found, or if its metadata appears malformed. +This kind of error usually indicates that this is not a zip file. +Otherwise, `zipfile` is an instance of `ZipFile`. + +### fromFd(fd, [options], [callback]) + +Reads from the fd, which is presumed to be an open .zip file. +Note that random access is required by the zip file specification, +so the fd cannot be an open socket or any other fd that does not support random access. + +`options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`. + +See `open()` for the meaning of the options and callback. + +### fromBuffer(buffer, [options], [callback]) + +Like `fromFd()`, but reads from a RAM buffer instead of an open file. +`buffer` is a `Buffer`. + +If a `ZipFile` is acquired from this method, +it will never emit the `close` event, +and calling `close()` is not necessary. + +`options` may be omitted or `null`. The defaults are `{lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`. + +See `open()` for the meaning of the options and callback. +The `autoClose` option is ignored for this method. + +### fromRandomAccessReader(reader, totalSize, [options], [callback]) + +This method of reading a zip file allows clients to implement their own back-end file system. +For example, a client might translate read calls into network requests. + +The `reader` parameter must be of a type that is a subclass of +[RandomAccessReader](#class-randomaccessreader) that implements the required methods. +The `totalSize` is a Number and indicates the total file size of the zip file. + +`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false, decodeStrings: true, validateEntrySizes: true, strictFileNames: false}`. + +See `open()` for the meaning of the options and callback. + +### dosDateTimeToDate(date, time) + +Converts MS-DOS `date` and `time` data into a JavaScript `Date` object. +Each parameter is a `Number` treated as an unsigned 16-bit integer. +Note that this format does not support timezones, +so the returned object will use the local timezone. + +### validateFileName(fileName) + +Returns `null` or a `String` error message depending on the validity of `fileName`. +If `fileName` starts with `"/"` or `/[A-Za-z]:\//` or if it contains `".."` path segments or `"\\"`, +this function returns an error message appropriate for use like this: + +```js +var errorMessage = yauzl.validateFileName(fileName); +if (errorMessage != null) throw new Error(errorMessage); +``` + +This function is automatically run for each entry, as long as `decodeStrings` is `true`. +See `open()`, `strictFileNames`, and `Event: "entry"` for more information. + +### Class: ZipFile + +The constructor for the class is not part of the public API. +Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead. + +#### Event: "entry" + +Callback gets `(entry)`, which is an `Entry`. +See `open()` and `readEntry()` for when this event is emitted. + +If `decodeStrings` is `true`, entries emitted via this event have already passed file name validation. +See `validateFileName()` and `open()` for more information. + +If `validateEntrySizes` is `true` and this entry's `compressionMethod` is `0` (stored without compression), +this entry has already passed entry size validation. +See `open()` for more information. + +#### Event: "end" + +Emitted after the last `entry` event has been emitted. +See `open()` and `readEntry()` for more info on when this event is emitted. + +#### Event: "close" + +Emitted after the fd is actually closed. +This is after calling `close()` (or after the `end` event when `autoClose` is `true`), +and after all stream pipelines created from `openReadStream()` have finished reading data from the fd. + +If this `ZipFile` was acquired from `fromRandomAccessReader()`, +the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client. + +If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted. + +#### Event: "error" + +Emitted in the case of errors with reading the zip file. +(Note that other errors can be emitted from the streams created from `openReadStream()` as well.) +After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted, +but the `close` event may still be emitted. + +#### readEntry() + +Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event). +This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`). +When this `ZipFile` was created with the `lazyEntries` option set to `true`, +`entry` and `end` events are only ever emitted in response to this method call. + +The event that is emitted in response to this method will not be emitted until after this method has returned, +so it is safe to call this method before attaching event listeners. + +After calling this method, calling this method again before the response event has been emitted will cause undefined behavior. +Calling this method after the `end` event has been emitted will cause undefined behavior. +Calling this method after calling `close()` will cause undefined behavior. + +#### openReadStream(entry, [options], callback) + +`entry` must be an `Entry` object from this `ZipFile`. +`callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream` that provides the file data for this entry. +If this zipfile is already closed (see `close()`), the `callback` will receive an `err`. + +`options` may be omitted or `null`, and has the following defaults: + +```js +{ + decompress: entry.isCompressed() ? true : null, + decrypt: null, + start: 0, // actually the default is null, see below + end: entry.compressedSize, // actually the default is null, see below +} +``` + +If the entry is compressed (with a supported compression method), +and the `decompress` option is `true` (or omitted), +the read stream provides the decompressed data. +Omitting the `decompress` option is what most clients should do. + +The `decompress` option must be `null` (or omitted) when the entry is not compressed (see `isCompressed()`), +and either `true` (or omitted) or `false` when the entry is compressed. +Specifying `decompress: false` for a compressed entry causes the read stream +to provide the raw compressed file data without going through a zlib inflate transform. + +If the entry is encrypted (see `isEncrypted()`), clients may want to avoid calling `openReadStream()` on the entry entirely. +Alternatively, clients may call `openReadStream()` for encrypted entries and specify `decrypt: false`. +If the entry is also compressed, clients must *also* specify `decompress: false`. +Specifying `decrypt: false` for an encrypted entry causes the read stream to provide the raw, still-encrypted file data. +(This data includes the 12-byte header described in the spec.) + +The `decrypt` option must be `null` (or omitted) for non-encrypted entries, and `false` for encrypted entries. +Omitting the `decrypt` option (or specifying it as `null`) for an encrypted entry +will result in the `callback` receiving an `err`. +This default behavior is so that clients not accounting for encrypted files aren't surprised by bogus file data. + +The `start` (inclusive) and `end` (exclusive) options are byte offsets into this entry's file data, +and can be used to obtain part of an entry's file data rather than the whole thing. +If either of these options are specified and non-`null`, +then the above options must be used to obain the file's raw data. +Speficying `{start: 0, end: entry.compressedSize}` will result in the complete file, +which is effectively the default values for these options, +but note that unlike omitting the options, when you specify `start` or `end` as any non-`null` value, +the above requirement is still enforced that you must also pass the appropriate options to get the file's raw data. + +It's possible for the `readStream` provided to the `callback` to emit errors for several reasons. +For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`. +Two more error cases (when `validateEntrySizes` is `true`) are if the decompressed data has too many +or too few actual bytes compared to the reported byte count from the entry's `uncompressedSize` field. +yauzl notices this false information and emits an error from the `readStream` +after some number of bytes have already been piped through the stream. + +This check allows clients to trust the `uncompressedSize` field in `Entry` objects. +Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by +doing some heuristic checks on the size metadata and then watching out for the above errors. +Such heuristics are outside the scope of this library, +but enforcing the `uncompressedSize` is implemented here as a security feature. + +It is possible to destroy the `readStream` before it has piped all of its data. +To do this, call `readStream.destroy()`. +You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`. +If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation +must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`) +in order for calls to `readStream.destroy()` to work in this context. + +#### close() + +Causes all future calls to `openReadStream()` to fail, +and closes the fd, if any, after all streams created by `openReadStream()` have emitted their `end` events. + +If the `autoClose` option is set to `true` (see `open()`), +this function will be called automatically effectively in response to this object's `end` event. + +If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet, +this function causes undefined behavior. +If the `lazyEntries` option is set to `true`, +you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile. + +It is safe to call this function multiple times; after the first call, successive calls have no effect. +This includes situations where the `autoClose` option effectively calls this function for you. + +If `close()` is never called, then the zipfile is "kept open". +For zipfiles created with `fromFd()`, this will leave the `fd` open, which may be desirable. +For zipfiles created with `open()`, this will leave the underlying `fd` open, thereby "leaking" it, which is probably undesirable. +For zipfiles created with `fromRandomAccessReader()`, the reader's `close()` method will never be called. +For zipfiles created with `fromBuffer()`, the `close()` function has no effect whether called or not. + +Regardless of how this `ZipFile` was created, there are no resources other than those listed above that require cleanup from this function. +This means it may be desirable to never call `close()` in some usecases. + +#### isOpen + +`Boolean`. `true` until `close()` is called; then it's `false`. + +#### entryCount + +`Number`. Total number of central directory records. + +#### comment + +`String`. Always decoded with `CP437` per the spec. + +If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`. + +### Class: Entry + +Objects of this class represent Central Directory Records. +Refer to the zipfile specification for more details about these fields. + +These fields are of type `Number`: + + * `versionMadeBy` + * `versionNeededToExtract` + * `generalPurposeBitFlag` + * `compressionMethod` + * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`) + * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`) + * `crc32` + * `compressedSize` + * `uncompressedSize` + * `fileNameLength` (bytes) + * `extraFieldLength` (bytes) + * `fileCommentLength` (bytes) + * `internalFileAttributes` + * `externalFileAttributes` + * `relativeOffsetOfLocalHeader` + +#### fileName + +`String`. +Following the spec, the bytes for the file name are decoded with +`UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`. +Alternatively, this field may be populated from the Info-ZIP Unicode Path Extra Field +(see `extraFields`). + +This field is automatically validated by `validateFileName()` before yauzl emits an "entry" event. +If this field would contain unsafe characters, yauzl emits an error instead of an entry. + +If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`. +Therefore, `generalPurposeBitFlag` and any Info-ZIP Unicode Path Extra Field are ignored. +Furthermore, no automatic file name validation is performed for this file name. + +#### extraFields + +`Array` with each entry in the form `{id: id, data: data}`, +where `id` is a `Number` and `data` is a `Buffer`. + +This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001) +in order to support ZIP64 format zip files. + +This library also looks for and reads the Info-ZIP Unicode Path Extra Field (0x7075) +in order to support some zipfiles that use it instead of General Purpose Bit 11 +to convey `UTF-8` file names. +When the field is identified and verified to be reliable (see the zipfile spec), +the the file name in this field is stored in the `fileName` property, +and the file name in the central directory record for this entry is ignored. +Note that when `decodeStrings` is false, all Info-ZIP Unicode Path Extra Fields are ignored. + +None of the other fields are considered significant by this library. +Fields that this library reads are left unalterned in the `extraFields` array. + +#### fileComment + +`String` decoded with the charset indicated by `generalPurposeBitFlag & 0x800` as with the `fileName`. +(The Info-ZIP Unicode Path Extra Field has no effect on the charset used for this field.) + +If `decodeStrings` is `false` (see `open()`), this field is the undecoded `Buffer` instead of a decoded `String`. + +Prior to yauzl version 2.7.0, this field was erroneously documented as `comment` instead of `fileComment`. +For compatibility with any code that uses the field name `comment`, +yauzl creates an alias field named `comment` which is identical to `fileComment`. + +#### getLastModDate() + +Effectively implemented as: + +```js +return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime); +``` + +#### isEncrypted() + +Returns is this entry encrypted with "Traditional Encryption". +Effectively implemented as: + +```js +return (this.generalPurposeBitFlag & 0x1) !== 0; +``` + +See `openReadStream()` for the implications of this value. + +Note that "Strong Encryption" is not supported, and will result in an `"error"` event emitted from the `ZipFile`. + +#### isCompressed() + +Effectively implemented as: + +```js +return this.compressionMethod === 8; +``` + +See `openReadStream()` for the implications of this value. + +### Class: RandomAccessReader + +This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function. + +An example implementation can be found in `test/test.js`. + +#### randomAccessReader._readStreamForRange(start, end) + +Subclasses *must* implement this method. + +`start` and `end` are Numbers and indicate byte offsets from the start of the file. +`end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes. +`end - start` will always be at least `1`. + +This method should return a readable stream which will be `pipe()`ed into another stream. +It is expected that the readable stream will provide data in several chunks if necessary. +If the readable stream provides too many or too few bytes, an error will be emitted. +(Note that `validateEntrySizes` has no effect on this check, +because this is a low-level API that should behave correctly regardless of the contents of the file.) +Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream +(returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback +(for example, for `fromRandomAccessReader()`). + +The returned stream *must* implement a method `.destroy()` +if you call `readStream.destroy()` on streams you get from `openReadStream()`. +If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`. +`.destroy()` should abort any streaming that is in progress and clean up any associated resources. +`.destroy()` will only be called after the stream has been `unpipe()`d from its destination. + +Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`. +The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream). + +#### randomAccessReader.read(buffer, offset, length, position, callback) + +Subclasses may implement this method. +The default implementation uses `createReadStream()` to fill the `buffer`. + +This method should behave like `fs.read()`. + +#### randomAccessReader.close(callback) + +Subclasses may implement this method. +The default implementation is effectively `setImmediate(callback);`. + +`callback` takes parameters `(err)`. + +This method is called once the all streams returned from `_readStreamForRange()` have ended, +and no more `_readStreamForRange()` or `read()` requests will be issued to this object. + +## How to Avoid Crashing + +When a malformed zipfile is encountered, the default behavior is to crash (throw an exception). +If you want to handle errors more gracefully than this, +be sure to do the following: + + * Provide `callback` parameters where they are allowed, and check the `err` parameter. + * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`. + * Attach a listener for the `error` event on any stream you get from `openReadStream()`. + +Minor version updates to yauzl will not add any additional requirements to this list. + +## Limitations + +### No Streaming Unzip API + +Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish +(such as from a readable stream) without sacrificing correctness. +The Central Directory, which is the authority on the contents of the .zip file, is at the end of a .zip file, not the beginning. +A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything +(defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file. +However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory, +so trusting them would be a violation of the spec. + +Any library that offers a streaming unzip API must make one of the above two compromises, +which makes the library either dishonest or nonconformant (usually the latter). +This library insists on correctness and adherence to the spec, and so does not offer a streaming API. + +Here is a way to create a spec-conformant .zip file using the `zip` command line program (Info-ZIP) +available in most unix-like environments, that is (nearly) impossible to parse correctly with a streaming parser: + +``` +$ echo -ne '\x50\x4b\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' > file.txt +$ zip -q0 - file.txt | cat > out.zip +``` + +This .zip file contains a single file entry that uses General Purpose Bit 3, +which means the Local File Header doesn't know the size of the file. +Any streaming parser that encounters this situation will either immediately fail, +or attempt to search for the Data Descriptor after the file's contents. +The file's contents is a sequence of 16-bytes crafted to exactly mimic a valid Data Descriptor for an empty file, +which will fool any parser that gets this far into thinking that the file is empty rather than containing 16-bytes. +What follows the file's real contents is the file's real Data Descriptor, +which will likely cause some kind of signature mismatch error for a streaming parser (if one hasn't occurred already). + +By using General Purpose Bit 3 (and compression method 0), +it's possible to create arbitrarily ambiguous .zip files that +distract parsers with file contents that contain apparently valid .zip file metadata. + +### Limitted ZIP64 Support + +For ZIP64, only zip files smaller than `8PiB` are supported, +not the full `16EiB` range that a 64-bit integer should be able to index. +This is due to the JavaScript Number type being an IEEE 754 double precision float. + +The Node.js `fs` module probably has this same limitation. + +### ZIP64 Extensible Data Sector Is Ignored + +The spec does not allow zip file creators to put arbitrary data here, +but rather reserves its use for PKWARE and mentions something about Z390. +This doesn't seem useful to expose in this library, so it is ignored. + +### No Multi-Disk Archive Support + +This library does not support multi-disk zip files. +The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks, +which probably never happens now. +If the "number of this disk" field in the End of Central Directory Record is not `0`, +the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`. +By extension the following zip file fields are ignored by this library and not provided to clients: + + * Disk where central directory starts + * Number of central directory records on this disk + * Disk number where file starts + +### Limited Encryption Handling + +You can detect when a file entry is encrypted with "Traditional Encryption" via `isEncrypted()`, +but yauzl will not help you decrypt it. +See `openReadStream()`. + +If a zip file contains file entries encrypted with "Strong Encryption", yauzl emits an error. + +If the central directory is encrypted or compressed, yauzl emits an error. + +### Local File Headers Are Ignored + +Many unzip libraries mistakenly read the Local File Header data in zip files. +This data is officially defined to be redundant with the Central Directory information, +and is not to be trusted. +Aside from checking the signature, yauzl ignores the content of the Local File Header. + +### No CRC-32 Checking + +This library provides the `crc32` field of `Entry` objects read from the Central Directory. +However, this field is not used for anything in this library. + +### versionNeededToExtract Is Ignored + +The field `versionNeededToExtract` is ignored, +because this library doesn't support the complete zip file spec at any version, + +### No Support For Obscure Compression Methods + +Regarding the `compressionMethod` field of `Entry` objects, +only method `0` (stored with no compression) +and method `8` (deflated) are supported. +Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`. + +### Data Descriptors Are Ignored + +There may or may not be Data Descriptor sections in a zip file. +This library provides no support for finding or interpreting them. + +### Archive Extra Data Record Is Ignored + +There may or may not be an Archive Extra Data Record section in a zip file. +This library provides no support for finding or interpreting it. + +### No Language Encoding Flag Support + +Zip files officially support charset encodings other than CP437 and UTF-8, +but the zip file spec does not specify how it works. +This library makes no attempt to interpret the Language Encoding Flag. + +## Change History + + * 2.10.0 + * Added support for non-conformant zipfiles created by Microsoft, and added option `strictFileNames` to disable the workaround. [issue #66](https://github.com/thejoshwolfe/yauzl/issues/66), [issue #88](https://github.com/thejoshwolfe/yauzl/issues/88) + * 2.9.2 + * Removed `tools/hexdump-zip.js` and `tools/hex2bin.js`. Those tools are now located here: [thejoshwolfe/hexdump-zip](https://github.com/thejoshwolfe/hexdump-zip) and [thejoshwolfe/hex2bin](https://github.com/thejoshwolfe/hex2bin) + * Worked around performance problem with zlib when using `fromBuffer()` and `readStream.destroy()` for large compressed files. [issue #87](https://github.com/thejoshwolfe/yauzl/issues/87) + * 2.9.1 + * Removed `console.log()` accidentally introduced in 2.9.0. [issue #64](https://github.com/thejoshwolfe/yauzl/issues/64) + * 2.9.0 + * Throw an exception if `readEntry()` is called without `lazyEntries:true`. Previously this caused undefined behavior. [issue #63](https://github.com/thejoshwolfe/yauzl/issues/63) + * 2.8.0 + * Added option `validateEntrySizes`. [issue #53](https://github.com/thejoshwolfe/yauzl/issues/53) + * Added `examples/promises.js` + * Added ability to read raw file data via `decompress` and `decrypt` options. [issue #11](https://github.com/thejoshwolfe/yauzl/issues/11), [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38), [pull #39](https://github.com/thejoshwolfe/yauzl/pull/39) + * Added `start` and `end` options to `openReadStream()`. [issue #38](https://github.com/thejoshwolfe/yauzl/issues/38) + * 2.7.0 + * Added option `decodeStrings`. [issue #42](https://github.com/thejoshwolfe/yauzl/issues/42) + * Fixed documentation for `entry.fileComment` and added compatibility alias. [issue #47](https://github.com/thejoshwolfe/yauzl/issues/47) + * 2.6.0 + * Support Info-ZIP Unicode Path Extra Field, used by WinRAR for Chinese file names. [issue #33](https://github.com/thejoshwolfe/yauzl/issues/33) + * 2.5.0 + * Ignore malformed Extra Field that is common in Android .apk files. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31) + * 2.4.3 + * Fix crash when parsing malformed Extra Field buffers. [issue #31](https://github.com/thejoshwolfe/yauzl/issues/31) + * 2.4.2 + * Remove .npmignore and .travis.yml from npm package. + * 2.4.1 + * Fix error handling. + * 2.4.0 + * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yauzl/issues/6) + * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22) + * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yauzl/issues/26) + * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yauzl/issues/14) + * Add `examples/unzip.js`. + * 2.3.1 + * Documentation updates. + * 2.3.0 + * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yauzl/issues/13) + * 2.2.1 + * Update dependencies. + * 2.2.0 + * Update dependencies. + * 2.1.0 + * Remove dependency on `iconv`. + * 2.0.3 + * Fix crash when trying to read a 0-byte file. + * 2.0.2 + * Fix event behavior after errors. + * 2.0.1 + * Fix bug with using `iconv`. + * 2.0.0 + * Initial release. diff --git a/node_modules/yauzl/index.js b/node_modules/yauzl/index.js new file mode 100644 index 0000000..cf5d70d --- /dev/null +++ b/node_modules/yauzl/index.js @@ -0,0 +1,796 @@ +var fs = require("fs"); +var zlib = require("zlib"); +var fd_slicer = require("fd-slicer"); +var crc32 = require("buffer-crc32"); +var util = require("util"); +var EventEmitter = require("events").EventEmitter; +var Transform = require("stream").Transform; +var PassThrough = require("stream").PassThrough; +var Writable = require("stream").Writable; + +exports.open = open; +exports.fromFd = fromFd; +exports.fromBuffer = fromBuffer; +exports.fromRandomAccessReader = fromRandomAccessReader; +exports.dosDateTimeToDate = dosDateTimeToDate; +exports.validateFileName = validateFileName; +exports.ZipFile = ZipFile; +exports.Entry = Entry; +exports.RandomAccessReader = RandomAccessReader; + +function open(path, options, callback) { + if (typeof options === "function") { + callback = options; + options = null; + } + if (options == null) options = {}; + if (options.autoClose == null) options.autoClose = true; + if (options.lazyEntries == null) options.lazyEntries = false; + if (options.decodeStrings == null) options.decodeStrings = true; + if (options.validateEntrySizes == null) options.validateEntrySizes = true; + if (options.strictFileNames == null) options.strictFileNames = false; + if (callback == null) callback = defaultCallback; + fs.open(path, "r", function(err, fd) { + if (err) return callback(err); + fromFd(fd, options, function(err, zipfile) { + if (err) fs.close(fd, defaultCallback); + callback(err, zipfile); + }); + }); +} + +function fromFd(fd, options, callback) { + if (typeof options === "function") { + callback = options; + options = null; + } + if (options == null) options = {}; + if (options.autoClose == null) options.autoClose = false; + if (options.lazyEntries == null) options.lazyEntries = false; + if (options.decodeStrings == null) options.decodeStrings = true; + if (options.validateEntrySizes == null) options.validateEntrySizes = true; + if (options.strictFileNames == null) options.strictFileNames = false; + if (callback == null) callback = defaultCallback; + fs.fstat(fd, function(err, stats) { + if (err) return callback(err); + var reader = fd_slicer.createFromFd(fd, {autoClose: true}); + fromRandomAccessReader(reader, stats.size, options, callback); + }); +} + +function fromBuffer(buffer, options, callback) { + if (typeof options === "function") { + callback = options; + options = null; + } + if (options == null) options = {}; + options.autoClose = false; + if (options.lazyEntries == null) options.lazyEntries = false; + if (options.decodeStrings == null) options.decodeStrings = true; + if (options.validateEntrySizes == null) options.validateEntrySizes = true; + if (options.strictFileNames == null) options.strictFileNames = false; + // limit the max chunk size. see https://github.com/thejoshwolfe/yauzl/issues/87 + var reader = fd_slicer.createFromBuffer(buffer, {maxChunkSize: 0x10000}); + fromRandomAccessReader(reader, buffer.length, options, callback); +} + +function fromRandomAccessReader(reader, totalSize, options, callback) { + if (typeof options === "function") { + callback = options; + options = null; + } + if (options == null) options = {}; + if (options.autoClose == null) options.autoClose = true; + if (options.lazyEntries == null) options.lazyEntries = false; + if (options.decodeStrings == null) options.decodeStrings = true; + var decodeStrings = !!options.decodeStrings; + if (options.validateEntrySizes == null) options.validateEntrySizes = true; + if (options.strictFileNames == null) options.strictFileNames = false; + if (callback == null) callback = defaultCallback; + if (typeof totalSize !== "number") throw new Error("expected totalSize parameter to be a number"); + if (totalSize > Number.MAX_SAFE_INTEGER) { + throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double."); + } + + // the matching unref() call is in zipfile.close() + reader.ref(); + + // eocdr means End of Central Directory Record. + // search backwards for the eocdr signature. + // the last field of the eocdr is a variable-length comment. + // the comment size is encoded in a 2-byte field in the eocdr, which we can't find without trudging backwards through the comment to find it. + // as a consequence of this design decision, it's possible to have ambiguous zip file metadata if a coherent eocdr was in the comment. + // we search backwards for a eocdr signature, and hope that whoever made the zip file was smart enough to forbid the eocdr signature in the comment. + var eocdrWithoutCommentSize = 22; + var maxCommentSize = 0xffff; // 2-byte size + var bufferSize = Math.min(eocdrWithoutCommentSize + maxCommentSize, totalSize); + var buffer = newBuffer(bufferSize); + var bufferReadStart = totalSize - buffer.length; + readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) { + if (err) return callback(err); + for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) { + if (buffer.readUInt32LE(i) !== 0x06054b50) continue; + // found eocdr + var eocdrBuffer = buffer.slice(i); + + // 0 - End of central directory signature = 0x06054b50 + // 4 - Number of this disk + var diskNumber = eocdrBuffer.readUInt16LE(4); + if (diskNumber !== 0) { + return callback(new Error("multi-disk zip files are not supported: found disk number: " + diskNumber)); + } + // 6 - Disk where central directory starts + // 8 - Number of central directory records on this disk + // 10 - Total number of central directory records + var entryCount = eocdrBuffer.readUInt16LE(10); + // 12 - Size of central directory (bytes) + // 16 - Offset of start of central directory, relative to start of archive + var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16); + // 20 - Comment length + var commentLength = eocdrBuffer.readUInt16LE(20); + var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize; + if (commentLength !== expectedCommentLength) { + return callback(new Error("invalid comment length. expected: " + expectedCommentLength + ". found: " + commentLength)); + } + // 22 - Comment + // the encoding is always cp437. + var comment = decodeStrings ? decodeBuffer(eocdrBuffer, 22, eocdrBuffer.length, false) + : eocdrBuffer.slice(22); + + if (!(entryCount === 0xffff || centralDirectoryOffset === 0xffffffff)) { + return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames)); + } + + // ZIP64 format + + // ZIP64 Zip64 end of central directory locator + var zip64EocdlBuffer = newBuffer(20); + var zip64EocdlOffset = bufferReadStart + i - zip64EocdlBuffer.length; + readAndAssertNoEof(reader, zip64EocdlBuffer, 0, zip64EocdlBuffer.length, zip64EocdlOffset, function(err) { + if (err) return callback(err); + + // 0 - zip64 end of central dir locator signature = 0x07064b50 + if (zip64EocdlBuffer.readUInt32LE(0) !== 0x07064b50) { + return callback(new Error("invalid zip64 end of central directory locator signature")); + } + // 4 - number of the disk with the start of the zip64 end of central directory + // 8 - relative offset of the zip64 end of central directory record + var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8); + // 16 - total number of disks + + // ZIP64 end of central directory record + var zip64EocdrBuffer = newBuffer(56); + readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err) { + if (err) return callback(err); + + // 0 - zip64 end of central dir signature 4 bytes (0x06064b50) + if (zip64EocdrBuffer.readUInt32LE(0) !== 0x06064b50) { + return callback(new Error("invalid zip64 end of central directory record signature")); + } + // 4 - size of zip64 end of central directory record 8 bytes + // 12 - version made by 2 bytes + // 14 - version needed to extract 2 bytes + // 16 - number of this disk 4 bytes + // 20 - number of the disk with the start of the central directory 4 bytes + // 24 - total number of entries in the central directory on this disk 8 bytes + // 32 - total number of entries in the central directory 8 bytes + entryCount = readUInt64LE(zip64EocdrBuffer, 32); + // 40 - size of the central directory 8 bytes + // 48 - offset of start of central directory with respect to the starting disk number 8 bytes + centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48); + // 56 - zip64 extensible data sector (variable size) + return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries, decodeStrings, options.validateEntrySizes, options.strictFileNames)); + }); + }); + return; + } + callback(new Error("end of central directory record signature not found")); + }); +} + +util.inherits(ZipFile, EventEmitter); +function ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) { + var self = this; + EventEmitter.call(self); + self.reader = reader; + // forward close events + self.reader.on("error", function(err) { + // error closing the fd + emitError(self, err); + }); + self.reader.once("close", function() { + self.emit("close"); + }); + self.readEntryCursor = centralDirectoryOffset; + self.fileSize = fileSize; + self.entryCount = entryCount; + self.comment = comment; + self.entriesRead = 0; + self.autoClose = !!autoClose; + self.lazyEntries = !!lazyEntries; + self.decodeStrings = !!decodeStrings; + self.validateEntrySizes = !!validateEntrySizes; + self.strictFileNames = !!strictFileNames; + self.isOpen = true; + self.emittedError = false; + + if (!self.lazyEntries) self._readEntry(); +} +ZipFile.prototype.close = function() { + if (!this.isOpen) return; + this.isOpen = false; + this.reader.unref(); +}; + +function emitErrorAndAutoClose(self, err) { + if (self.autoClose) self.close(); + emitError(self, err); +} +function emitError(self, err) { + if (self.emittedError) return; + self.emittedError = true; + self.emit("error", err); +} + +ZipFile.prototype.readEntry = function() { + if (!this.lazyEntries) throw new Error("readEntry() called without lazyEntries:true"); + this._readEntry(); +}; +ZipFile.prototype._readEntry = function() { + var self = this; + if (self.entryCount === self.entriesRead) { + // done with metadata + setImmediate(function() { + if (self.autoClose) self.close(); + if (self.emittedError) return; + self.emit("end"); + }); + return; + } + if (self.emittedError) return; + var buffer = newBuffer(46); + readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) { + if (err) return emitErrorAndAutoClose(self, err); + if (self.emittedError) return; + var entry = new Entry(); + // 0 - Central directory file header signature + var signature = buffer.readUInt32LE(0); + if (signature !== 0x02014b50) return emitErrorAndAutoClose(self, new Error("invalid central directory file header signature: 0x" + signature.toString(16))); + // 4 - Version made by + entry.versionMadeBy = buffer.readUInt16LE(4); + // 6 - Version needed to extract (minimum) + entry.versionNeededToExtract = buffer.readUInt16LE(6); + // 8 - General purpose bit flag + entry.generalPurposeBitFlag = buffer.readUInt16LE(8); + // 10 - Compression method + entry.compressionMethod = buffer.readUInt16LE(10); + // 12 - File last modification time + entry.lastModFileTime = buffer.readUInt16LE(12); + // 14 - File last modification date + entry.lastModFileDate = buffer.readUInt16LE(14); + // 16 - CRC-32 + entry.crc32 = buffer.readUInt32LE(16); + // 20 - Compressed size + entry.compressedSize = buffer.readUInt32LE(20); + // 24 - Uncompressed size + entry.uncompressedSize = buffer.readUInt32LE(24); + // 28 - File name length (n) + entry.fileNameLength = buffer.readUInt16LE(28); + // 30 - Extra field length (m) + entry.extraFieldLength = buffer.readUInt16LE(30); + // 32 - File comment length (k) + entry.fileCommentLength = buffer.readUInt16LE(32); + // 34 - Disk number where file starts + // 36 - Internal file attributes + entry.internalFileAttributes = buffer.readUInt16LE(36); + // 38 - External file attributes + entry.externalFileAttributes = buffer.readUInt32LE(38); + // 42 - Relative offset of local file header + entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42); + + if (entry.generalPurposeBitFlag & 0x40) return emitErrorAndAutoClose(self, new Error("strong encryption is not supported")); + + self.readEntryCursor += 46; + + buffer = newBuffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength); + readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) { + if (err) return emitErrorAndAutoClose(self, err); + if (self.emittedError) return; + // 46 - File name + var isUtf8 = (entry.generalPurposeBitFlag & 0x800) !== 0; + entry.fileName = self.decodeStrings ? decodeBuffer(buffer, 0, entry.fileNameLength, isUtf8) + : buffer.slice(0, entry.fileNameLength); + + // 46+n - Extra field + var fileCommentStart = entry.fileNameLength + entry.extraFieldLength; + var extraFieldBuffer = buffer.slice(entry.fileNameLength, fileCommentStart); + entry.extraFields = []; + var i = 0; + while (i < extraFieldBuffer.length - 3) { + var headerId = extraFieldBuffer.readUInt16LE(i + 0); + var dataSize = extraFieldBuffer.readUInt16LE(i + 2); + var dataStart = i + 4; + var dataEnd = dataStart + dataSize; + if (dataEnd > extraFieldBuffer.length) return emitErrorAndAutoClose(self, new Error("extra field length exceeds extra field buffer size")); + var dataBuffer = newBuffer(dataSize); + extraFieldBuffer.copy(dataBuffer, 0, dataStart, dataEnd); + entry.extraFields.push({ + id: headerId, + data: dataBuffer, + }); + i = dataEnd; + } + + // 46+n+m - File comment + entry.fileComment = self.decodeStrings ? decodeBuffer(buffer, fileCommentStart, fileCommentStart + entry.fileCommentLength, isUtf8) + : buffer.slice(fileCommentStart, fileCommentStart + entry.fileCommentLength); + // compatibility hack for https://github.com/thejoshwolfe/yauzl/issues/47 + entry.comment = entry.fileComment; + + self.readEntryCursor += buffer.length; + self.entriesRead += 1; + + if (entry.uncompressedSize === 0xffffffff || + entry.compressedSize === 0xffffffff || + entry.relativeOffsetOfLocalHeader === 0xffffffff) { + // ZIP64 format + // find the Zip64 Extended Information Extra Field + var zip64EiefBuffer = null; + for (var i = 0; i < entry.extraFields.length; i++) { + var extraField = entry.extraFields[i]; + if (extraField.id === 0x0001) { + zip64EiefBuffer = extraField.data; + break; + } + } + if (zip64EiefBuffer == null) { + return emitErrorAndAutoClose(self, new Error("expected zip64 extended information extra field")); + } + var index = 0; + // 0 - Original Size 8 bytes + if (entry.uncompressedSize === 0xffffffff) { + if (index + 8 > zip64EiefBuffer.length) { + return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include uncompressed size")); + } + entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index); + index += 8; + } + // 8 - Compressed Size 8 bytes + if (entry.compressedSize === 0xffffffff) { + if (index + 8 > zip64EiefBuffer.length) { + return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include compressed size")); + } + entry.compressedSize = readUInt64LE(zip64EiefBuffer, index); + index += 8; + } + // 16 - Relative Header Offset 8 bytes + if (entry.relativeOffsetOfLocalHeader === 0xffffffff) { + if (index + 8 > zip64EiefBuffer.length) { + return emitErrorAndAutoClose(self, new Error("zip64 extended information extra field does not include relative header offset")); + } + entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index); + index += 8; + } + // 24 - Disk Start Number 4 bytes + } + + // check for Info-ZIP Unicode Path Extra Field (0x7075) + // see https://github.com/thejoshwolfe/yauzl/issues/33 + if (self.decodeStrings) { + for (var i = 0; i < entry.extraFields.length; i++) { + var extraField = entry.extraFields[i]; + if (extraField.id === 0x7075) { + if (extraField.data.length < 6) { + // too short to be meaningful + continue; + } + // Version 1 byte version of this extra field, currently 1 + if (extraField.data.readUInt8(0) !== 1) { + // > Changes may not be backward compatible so this extra + // > field should not be used if the version is not recognized. + continue; + } + // NameCRC32 4 bytes File Name Field CRC32 Checksum + var oldNameCrc32 = extraField.data.readUInt32LE(1); + if (crc32.unsigned(buffer.slice(0, entry.fileNameLength)) !== oldNameCrc32) { + // > If the CRC check fails, this UTF-8 Path Extra Field should be + // > ignored and the File Name field in the header should be used instead. + continue; + } + // UnicodeName Variable UTF-8 version of the entry File Name + entry.fileName = decodeBuffer(extraField.data, 5, extraField.data.length, true); + break; + } + } + } + + // validate file size + if (self.validateEntrySizes && entry.compressionMethod === 0) { + var expectedCompressedSize = entry.uncompressedSize; + if (entry.isEncrypted()) { + // traditional encryption prefixes the file data with a header + expectedCompressedSize += 12; + } + if (entry.compressedSize !== expectedCompressedSize) { + var msg = "compressed/uncompressed size mismatch for stored file: " + entry.compressedSize + " != " + entry.uncompressedSize; + return emitErrorAndAutoClose(self, new Error(msg)); + } + } + + if (self.decodeStrings) { + if (!self.strictFileNames) { + // allow backslash + entry.fileName = entry.fileName.replace(/\\/g, "/"); + } + var errorMessage = validateFileName(entry.fileName, self.validateFileNameOptions); + if (errorMessage != null) return emitErrorAndAutoClose(self, new Error(errorMessage)); + } + self.emit("entry", entry); + + if (!self.lazyEntries) self._readEntry(); + }); + }); +}; + +ZipFile.prototype.openReadStream = function(entry, options, callback) { + var self = this; + // parameter validation + var relativeStart = 0; + var relativeEnd = entry.compressedSize; + if (callback == null) { + callback = options; + options = {}; + } else { + // validate options that the caller has no excuse to get wrong + if (options.decrypt != null) { + if (!entry.isEncrypted()) { + throw new Error("options.decrypt can only be specified for encrypted entries"); + } + if (options.decrypt !== false) throw new Error("invalid options.decrypt value: " + options.decrypt); + if (entry.isCompressed()) { + if (options.decompress !== false) throw new Error("entry is encrypted and compressed, and options.decompress !== false"); + } + } + if (options.decompress != null) { + if (!entry.isCompressed()) { + throw new Error("options.decompress can only be specified for compressed entries"); + } + if (!(options.decompress === false || options.decompress === true)) { + throw new Error("invalid options.decompress value: " + options.decompress); + } + } + if (options.start != null || options.end != null) { + if (entry.isCompressed() && options.decompress !== false) { + throw new Error("start/end range not allowed for compressed entry without options.decompress === false"); + } + if (entry.isEncrypted() && options.decrypt !== false) { + throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false"); + } + } + if (options.start != null) { + relativeStart = options.start; + if (relativeStart < 0) throw new Error("options.start < 0"); + if (relativeStart > entry.compressedSize) throw new Error("options.start > entry.compressedSize"); + } + if (options.end != null) { + relativeEnd = options.end; + if (relativeEnd < 0) throw new Error("options.end < 0"); + if (relativeEnd > entry.compressedSize) throw new Error("options.end > entry.compressedSize"); + if (relativeEnd < relativeStart) throw new Error("options.end < options.start"); + } + } + // any further errors can either be caused by the zipfile, + // or were introduced in a minor version of yauzl, + // so should be passed to the client rather than thrown. + if (!self.isOpen) return callback(new Error("closed")); + if (entry.isEncrypted()) { + if (options.decrypt !== false) return callback(new Error("entry is encrypted, and options.decrypt !== false")); + } + // make sure we don't lose the fd before we open the actual read stream + self.reader.ref(); + var buffer = newBuffer(30); + readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) { + try { + if (err) return callback(err); + // 0 - Local file header signature = 0x04034b50 + var signature = buffer.readUInt32LE(0); + if (signature !== 0x04034b50) { + return callback(new Error("invalid local file header signature: 0x" + signature.toString(16))); + } + // all this should be redundant + // 4 - Version needed to extract (minimum) + // 6 - General purpose bit flag + // 8 - Compression method + // 10 - File last modification time + // 12 - File last modification date + // 14 - CRC-32 + // 18 - Compressed size + // 22 - Uncompressed size + // 26 - File name length (n) + var fileNameLength = buffer.readUInt16LE(26); + // 28 - Extra field length (m) + var extraFieldLength = buffer.readUInt16LE(28); + // 30 - File name + // 30+n - Extra field + var localFileHeaderEnd = entry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength; + var decompress; + if (entry.compressionMethod === 0) { + // 0 - The file is stored (no compression) + decompress = false; + } else if (entry.compressionMethod === 8) { + // 8 - The file is Deflated + decompress = options.decompress != null ? options.decompress : true; + } else { + return callback(new Error("unsupported compression method: " + entry.compressionMethod)); + } + var fileDataStart = localFileHeaderEnd; + var fileDataEnd = fileDataStart + entry.compressedSize; + if (entry.compressedSize !== 0) { + // bounds check now, because the read streams will probably not complain loud enough. + // since we're dealing with an unsigned offset plus an unsigned size, + // we only have 1 thing to check for. + if (fileDataEnd > self.fileSize) { + return callback(new Error("file data overflows file bounds: " + + fileDataStart + " + " + entry.compressedSize + " > " + self.fileSize)); + } + } + var readStream = self.reader.createReadStream({ + start: fileDataStart + relativeStart, + end: fileDataStart + relativeEnd, + }); + var endpointStream = readStream; + if (decompress) { + var destroyed = false; + var inflateFilter = zlib.createInflateRaw(); + readStream.on("error", function(err) { + // setImmediate here because errors can be emitted during the first call to pipe() + setImmediate(function() { + if (!destroyed) inflateFilter.emit("error", err); + }); + }); + readStream.pipe(inflateFilter); + + if (self.validateEntrySizes) { + endpointStream = new AssertByteCountStream(entry.uncompressedSize); + inflateFilter.on("error", function(err) { + // forward zlib errors to the client-visible stream + setImmediate(function() { + if (!destroyed) endpointStream.emit("error", err); + }); + }); + inflateFilter.pipe(endpointStream); + } else { + // the zlib filter is the client-visible stream + endpointStream = inflateFilter; + } + // this is part of yauzl's API, so implement this function on the client-visible stream + endpointStream.destroy = function() { + destroyed = true; + if (inflateFilter !== endpointStream) inflateFilter.unpipe(endpointStream); + readStream.unpipe(inflateFilter); + // TODO: the inflateFilter may cause a memory leak. see Issue #27. + readStream.destroy(); + }; + } + callback(null, endpointStream); + } finally { + self.reader.unref(); + } + }); +}; + +function Entry() { +} +Entry.prototype.getLastModDate = function() { + return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime); +}; +Entry.prototype.isEncrypted = function() { + return (this.generalPurposeBitFlag & 0x1) !== 0; +}; +Entry.prototype.isCompressed = function() { + return this.compressionMethod === 8; +}; + +function dosDateTimeToDate(date, time) { + var day = date & 0x1f; // 1-31 + var month = (date >> 5 & 0xf) - 1; // 1-12, 0-11 + var year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108 + + var millisecond = 0; + var second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers) + var minute = time >> 5 & 0x3f; // 0-59 + var hour = time >> 11 & 0x1f; // 0-23 + + return new Date(year, month, day, hour, minute, second, millisecond); +} + +function validateFileName(fileName) { + if (fileName.indexOf("\\") !== -1) { + return "invalid characters in fileName: " + fileName; + } + if (/^[a-zA-Z]:/.test(fileName) || /^\//.test(fileName)) { + return "absolute path: " + fileName; + } + if (fileName.split("/").indexOf("..") !== -1) { + return "invalid relative path: " + fileName; + } + // all good + return null; +} + +function readAndAssertNoEof(reader, buffer, offset, length, position, callback) { + if (length === 0) { + // fs.read will throw an out-of-bounds error if you try to read 0 bytes from a 0 byte file + return setImmediate(function() { callback(null, newBuffer(0)); }); + } + reader.read(buffer, offset, length, position, function(err, bytesRead) { + if (err) return callback(err); + if (bytesRead < length) { + return callback(new Error("unexpected EOF")); + } + callback(); + }); +} + +util.inherits(AssertByteCountStream, Transform); +function AssertByteCountStream(byteCount) { + Transform.call(this); + this.actualByteCount = 0; + this.expectedByteCount = byteCount; +} +AssertByteCountStream.prototype._transform = function(chunk, encoding, cb) { + this.actualByteCount += chunk.length; + if (this.actualByteCount > this.expectedByteCount) { + var msg = "too many bytes in the stream. expected " + this.expectedByteCount + ". got at least " + this.actualByteCount; + return cb(new Error(msg)); + } + cb(null, chunk); +}; +AssertByteCountStream.prototype._flush = function(cb) { + if (this.actualByteCount < this.expectedByteCount) { + var msg = "not enough bytes in the stream. expected " + this.expectedByteCount + ". got only " + this.actualByteCount; + return cb(new Error(msg)); + } + cb(); +}; + +util.inherits(RandomAccessReader, EventEmitter); +function RandomAccessReader() { + EventEmitter.call(this); + this.refCount = 0; +} +RandomAccessReader.prototype.ref = function() { + this.refCount += 1; +}; +RandomAccessReader.prototype.unref = function() { + var self = this; + self.refCount -= 1; + + if (self.refCount > 0) return; + if (self.refCount < 0) throw new Error("invalid unref"); + + self.close(onCloseDone); + + function onCloseDone(err) { + if (err) return self.emit('error', err); + self.emit('close'); + } +}; +RandomAccessReader.prototype.createReadStream = function(options) { + var start = options.start; + var end = options.end; + if (start === end) { + var emptyStream = new PassThrough(); + setImmediate(function() { + emptyStream.end(); + }); + return emptyStream; + } + var stream = this._readStreamForRange(start, end); + + var destroyed = false; + var refUnrefFilter = new RefUnrefFilter(this); + stream.on("error", function(err) { + setImmediate(function() { + if (!destroyed) refUnrefFilter.emit("error", err); + }); + }); + refUnrefFilter.destroy = function() { + stream.unpipe(refUnrefFilter); + refUnrefFilter.unref(); + stream.destroy(); + }; + + var byteCounter = new AssertByteCountStream(end - start); + refUnrefFilter.on("error", function(err) { + setImmediate(function() { + if (!destroyed) byteCounter.emit("error", err); + }); + }); + byteCounter.destroy = function() { + destroyed = true; + refUnrefFilter.unpipe(byteCounter); + refUnrefFilter.destroy(); + }; + + return stream.pipe(refUnrefFilter).pipe(byteCounter); +}; +RandomAccessReader.prototype._readStreamForRange = function(start, end) { + throw new Error("not implemented"); +}; +RandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) { + var readStream = this.createReadStream({start: position, end: position + length}); + var writeStream = new Writable(); + var written = 0; + writeStream._write = function(chunk, encoding, cb) { + chunk.copy(buffer, offset + written, 0, chunk.length); + written += chunk.length; + cb(); + }; + writeStream.on("finish", callback); + readStream.on("error", function(error) { + callback(error); + }); + readStream.pipe(writeStream); +}; +RandomAccessReader.prototype.close = function(callback) { + setImmediate(callback); +}; + +util.inherits(RefUnrefFilter, PassThrough); +function RefUnrefFilter(context) { + PassThrough.call(this); + this.context = context; + this.context.ref(); + this.unreffedYet = false; +} +RefUnrefFilter.prototype._flush = function(cb) { + this.unref(); + cb(); +}; +RefUnrefFilter.prototype.unref = function(cb) { + if (this.unreffedYet) return; + this.unreffedYet = true; + this.context.unref(); +}; + +var cp437 = '\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ '; +function decodeBuffer(buffer, start, end, isUtf8) { + if (isUtf8) { + return buffer.toString("utf8", start, end); + } else { + var result = ""; + for (var i = start; i < end; i++) { + result += cp437[buffer[i]]; + } + return result; + } +} + +function readUInt64LE(buffer, offset) { + // there is no native function for this, because we can't actually store 64-bit integers precisely. + // after 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore. + // but since 53 bits is a whole lot more than 32 bits, we do our best anyway. + var lower32 = buffer.readUInt32LE(offset); + var upper32 = buffer.readUInt32LE(offset + 4); + // we can't use bitshifting here, because JavaScript bitshifting only works on 32-bit integers. + return upper32 * 0x100000000 + lower32; + // as long as we're bounds checking the result of this function against the total file size, + // we'll catch any overflow errors, because we already made sure the total file size was within reason. +} + +// Node 10 deprecated new Buffer(). +var newBuffer; +if (typeof Buffer.allocUnsafe === "function") { + newBuffer = function(len) { + return Buffer.allocUnsafe(len); + }; +} else { + newBuffer = function(len) { + return new Buffer(len); + }; +} + +function defaultCallback(err) { + if (err) throw err; +} diff --git a/node_modules/yauzl/node_modules/fd-slicer/.npmignore b/node_modules/yauzl/node_modules/fd-slicer/.npmignore new file mode 100644 index 0000000..ccc2930 --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/.npmignore @@ -0,0 +1,2 @@ +/coverage +/node_modules diff --git a/node_modules/yauzl/node_modules/fd-slicer/.travis.yml b/node_modules/yauzl/node_modules/fd-slicer/.travis.yml new file mode 100644 index 0000000..77b7202 --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "0.10" +script: + - "npm run test-travis" +after_script: + - "npm install coveralls@2 && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls" diff --git a/node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md b/node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md new file mode 100644 index 0000000..783042f --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md @@ -0,0 +1,49 @@ +### 1.0.1 + + * use `setImmediate` instead of `nextTick` + +### 1.0.0 + + * `new FdSlicer(fd, options)` must now be `fdSlicer.createFromFd(fd, options)` + * fix behavior when `end` is 0. + * fix `createWriteStream` when using `createFromBuffer` + +### 0.4.0 + + * add ability to create an FdSlicer instance from a Buffer + +### 0.3.2 + + * fix write stream and read stream destroy behavior + +### 0.3.1 + + * write stream: fix end option behavior + +### 0.3.0 + + * write stream emits 'progress' events + * write stream supports 'end' option which causes the stream to emit an error + if a maximum size is exceeded + * improve documentation + +### 0.2.1 + + * Update pend dependency to latest bugfix version. + +### 0.2.0 + + * Add read and write functions + +### 0.1.0 + + * Add `autoClose` option and `ref()` and `unref()`. + +### 0.0.2 + + * Add API documentation + * read stream: create buffer at last possible moment + +### 0.0.1 + + * Initial release diff --git a/node_modules/yauzl/node_modules/fd-slicer/LICENSE b/node_modules/yauzl/node_modules/fd-slicer/LICENSE new file mode 100644 index 0000000..e57596d --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2014 Andrew Kelley + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation files +(the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/yauzl/node_modules/fd-slicer/README.md b/node_modules/yauzl/node_modules/fd-slicer/README.md new file mode 100644 index 0000000..ad7f0ec --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/README.md @@ -0,0 +1,199 @@ +# fd-slicer + +[![Build Status](https://travis-ci.org/andrewrk/node-fd-slicer.svg?branch=master)](https://travis-ci.org/andrewrk/node-fd-slicer) + +Safe `fs.ReadStream` and `fs.WriteStream` using the same fd. + +Let's say that you want to perform a parallel upload of a file to a remote +server. To do this, we want to create multiple read streams. The first thing +you might think of is to use the `{start: 0, end: 0}` API of +`fs.createReadStream`. This gives you two choices: + + 0. Use the same file descriptor for all `fs.ReadStream` objects. + 0. Open the file multiple times, resulting in a separate file descriptor + for each read stream. + +Neither of these are acceptable options. The first one is a severe bug, +because the API docs for `fs.write` state: + +> Note that it is unsafe to use `fs.write` multiple times on the same file +> without waiting for the callback. For this scenario, `fs.createWriteStream` +> is strongly recommended. + +`fs.createWriteStream` will solve the problem if you only create one of them +for the file descriptor, but it will exhibit this unsafety if you create +multiple write streams per file descriptor. + +The second option suffers from a race condition. For each additional time the +file is opened after the first, it is possible that the file is modified. So +in our parallel uploading example, we might upload a corrupt file that never +existed on the client's computer. + +This module solves this problem by providing `createReadStream` and +`createWriteStream` that operate on a shared file descriptor and provides +the convenient stream API while still allowing slicing and dicing. + +This module also gives you some additional power that the builtin +`fs.createWriteStream` do not give you. These features are: + + * Emitting a 'progress' event on write. + * Ability to set a maximum size and emit an error if this size is exceeded. + * Ability to create an `FdSlicer` instance from a `Buffer`. This enables you + to provide API for handling files as well as buffers using the same API. + +## Usage + +```js +var fdSlicer = require('fd-slicer'); +var fs = require('fs'); + +fs.open("file.txt", 'r', function(err, fd) { + if (err) throw err; + var slicer = fdSlicer.createFromFd(fd); + var firstPart = slicer.createReadStream({start: 0, end: 100}); + var secondPart = slicer.createReadStream({start: 100}); + var firstOut = fs.createWriteStream("first.txt"); + var secondOut = fs.createWriteStream("second.txt"); + firstPart.pipe(firstOut); + secondPart.pipe(secondOut); +}); +``` + +You can also create from a buffer: + +```js +var fdSlicer = require('fd-slicer'); +var slicer = FdSlicer.createFromBuffer(someBuffer); +var firstPart = slicer.createReadStream({start: 0, end: 100}); +var secondPart = slicer.createReadStream({start: 100}); +var firstOut = fs.createWriteStream("first.txt"); +var secondOut = fs.createWriteStream("second.txt"); +firstPart.pipe(firstOut); +secondPart.pipe(secondOut); +``` + +## API Documentation + +### fdSlicer.createFromFd(fd, [options]) + +```js +var fdSlicer = require('fd-slicer'); +fs.open("file.txt", 'r', function(err, fd) { + if (err) throw err; + var slicer = fdSlicer.createFromFd(fd); + // ... +}); +``` + +Make sure `fd` is a properly initialized file descriptor. If you want to +use `createReadStream` make sure you open it for reading and if you want +to use `createWriteStream` make sure you open it for writing. + +`options` is an optional object which can contain: + + * `autoClose` - if set to `true`, the file descriptor will be automatically + closed once the last stream that references it is closed. Defaults to + `false`. `ref()` and `unref()` can be used to increase or decrease the + reference count, respectively. + +### fdSlicer.createFromBuffer(buffer, [options]) + +```js +var fdSlicer = require('fd-slicer'); +var slicer = fdSlicer.createFromBuffer(someBuffer); +// ... +``` + +`options` is an optional object which can contain: + + * `maxChunkSize` - A `Number` of bytes. see `createReadStream()`. + If falsey, defaults to unlimited. + +#### Properties + +##### fd + +The file descriptor passed in. `undefined` if created from a buffer. + +#### Methods + +##### createReadStream(options) + +Available `options`: + + * `start` - Number. The offset into the file to start reading from. Defaults + to 0. + * `end` - Number. Exclusive upper bound offset into the file to stop reading + from. + * `highWaterMark` - Number. The maximum number of bytes to store in the + internal buffer before ceasing to read from the underlying resource. + Defaults to 16 KB. + * `encoding` - String. If specified, then buffers will be decoded to strings + using the specified encoding. Defaults to `null`. + +The ReadableStream that this returns has these additional methods: + + * `destroy(err)` - stop streaming. `err` is optional and is the error that + will be emitted in order to cause the streaming to stop. Defaults to + `new Error("stream destroyed")`. + +If `maxChunkSize` was specified (see `createFromBuffer()`), the read stream +will provide chunks of at most that size. Normally, the read stream provides +the entire range requested in a single chunk, but this can cause performance +problems in some circumstances. +See [thejoshwolfe/yauzl#87](https://github.com/thejoshwolfe/yauzl/issues/87). + +##### createWriteStream(options) + +Available `options`: + + * `start` - Number. The offset into the file to start writing to. Defaults to + 0. + * `end` - Number. Exclusive upper bound offset into the file. If this offset + is reached, the write stream will emit an 'error' event and stop functioning. + In this situation, `err.code === 'ETOOBIG'`. Defaults to `Infinity`. + * `highWaterMark` - Number. Buffer level when `write()` starts returning + false. Defaults to 16KB. + * `decodeStrings` - Boolean. Whether or not to decode strings into Buffers + before passing them to` _write()`. Defaults to `true`. + +The WritableStream that this returns has these additional methods: + + * `destroy()` - stop streaming + +And these additional properties: + + * `bytesWritten` - number of bytes written to the stream + +And these additional events: + + * 'progress' - emitted when `bytesWritten` changes. + +##### read(buffer, offset, length, position, callback) + +Equivalent to `fs.read`, but with concurrency protection. +`callback` must be defined. + +##### write(buffer, offset, length, position, callback) + +Equivalent to `fs.write`, but with concurrency protection. +`callback` must be defined. + +##### ref() + +Increase the `autoClose` reference count by 1. + +##### unref() + +Decrease the `autoClose` reference count by 1. + +#### Events + +##### 'error' + +Emitted if `fs.close` returns an error when auto closing. + +##### 'close' + +Emitted when fd-slicer closes the file descriptor due to `autoClose`. Never +emitted if created from a buffer. diff --git a/node_modules/yauzl/node_modules/fd-slicer/index.js b/node_modules/yauzl/node_modules/fd-slicer/index.js new file mode 100644 index 0000000..65d32a3 --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/index.js @@ -0,0 +1,296 @@ +var fs = require('fs'); +var util = require('util'); +var stream = require('stream'); +var Readable = stream.Readable; +var Writable = stream.Writable; +var PassThrough = stream.PassThrough; +var Pend = require('pend'); +var EventEmitter = require('events').EventEmitter; + +exports.createFromBuffer = createFromBuffer; +exports.createFromFd = createFromFd; +exports.BufferSlicer = BufferSlicer; +exports.FdSlicer = FdSlicer; + +util.inherits(FdSlicer, EventEmitter); +function FdSlicer(fd, options) { + options = options || {}; + EventEmitter.call(this); + + this.fd = fd; + this.pend = new Pend(); + this.pend.max = 1; + this.refCount = 0; + this.autoClose = !!options.autoClose; +} + +FdSlicer.prototype.read = function(buffer, offset, length, position, callback) { + var self = this; + self.pend.go(function(cb) { + fs.read(self.fd, buffer, offset, length, position, function(err, bytesRead, buffer) { + cb(); + callback(err, bytesRead, buffer); + }); + }); +}; + +FdSlicer.prototype.write = function(buffer, offset, length, position, callback) { + var self = this; + self.pend.go(function(cb) { + fs.write(self.fd, buffer, offset, length, position, function(err, written, buffer) { + cb(); + callback(err, written, buffer); + }); + }); +}; + +FdSlicer.prototype.createReadStream = function(options) { + return new ReadStream(this, options); +}; + +FdSlicer.prototype.createWriteStream = function(options) { + return new WriteStream(this, options); +}; + +FdSlicer.prototype.ref = function() { + this.refCount += 1; +}; + +FdSlicer.prototype.unref = function() { + var self = this; + self.refCount -= 1; + + if (self.refCount > 0) return; + if (self.refCount < 0) throw new Error("invalid unref"); + + if (self.autoClose) { + fs.close(self.fd, onCloseDone); + } + + function onCloseDone(err) { + if (err) { + self.emit('error', err); + } else { + self.emit('close'); + } + } +}; + +util.inherits(ReadStream, Readable); +function ReadStream(context, options) { + options = options || {}; + Readable.call(this, options); + + this.context = context; + this.context.ref(); + + this.start = options.start || 0; + this.endOffset = options.end; + this.pos = this.start; + this.destroyed = false; +} + +ReadStream.prototype._read = function(n) { + var self = this; + if (self.destroyed) return; + + var toRead = Math.min(self._readableState.highWaterMark, n); + if (self.endOffset != null) { + toRead = Math.min(toRead, self.endOffset - self.pos); + } + if (toRead <= 0) { + self.destroyed = true; + self.push(null); + self.context.unref(); + return; + } + self.context.pend.go(function(cb) { + if (self.destroyed) return cb(); + var buffer = new Buffer(toRead); + fs.read(self.context.fd, buffer, 0, toRead, self.pos, function(err, bytesRead) { + if (err) { + self.destroy(err); + } else if (bytesRead === 0) { + self.destroyed = true; + self.push(null); + self.context.unref(); + } else { + self.pos += bytesRead; + self.push(buffer.slice(0, bytesRead)); + } + cb(); + }); + }); +}; + +ReadStream.prototype.destroy = function(err) { + if (this.destroyed) return; + err = err || new Error("stream destroyed"); + this.destroyed = true; + this.emit('error', err); + this.context.unref(); +}; + +util.inherits(WriteStream, Writable); +function WriteStream(context, options) { + options = options || {}; + Writable.call(this, options); + + this.context = context; + this.context.ref(); + + this.start = options.start || 0; + this.endOffset = (options.end == null) ? Infinity : +options.end; + this.bytesWritten = 0; + this.pos = this.start; + this.destroyed = false; + + this.on('finish', this.destroy.bind(this)); +} + +WriteStream.prototype._write = function(buffer, encoding, callback) { + var self = this; + if (self.destroyed) return; + + if (self.pos + buffer.length > self.endOffset) { + var err = new Error("maximum file length exceeded"); + err.code = 'ETOOBIG'; + self.destroy(); + callback(err); + return; + } + self.context.pend.go(function(cb) { + if (self.destroyed) return cb(); + fs.write(self.context.fd, buffer, 0, buffer.length, self.pos, function(err, bytes) { + if (err) { + self.destroy(); + cb(); + callback(err); + } else { + self.bytesWritten += bytes; + self.pos += bytes; + self.emit('progress'); + cb(); + callback(); + } + }); + }); +}; + +WriteStream.prototype.destroy = function() { + if (this.destroyed) return; + this.destroyed = true; + this.context.unref(); +}; + +util.inherits(BufferSlicer, EventEmitter); +function BufferSlicer(buffer, options) { + EventEmitter.call(this); + + options = options || {}; + this.refCount = 0; + this.buffer = buffer; + this.maxChunkSize = options.maxChunkSize || Number.MAX_SAFE_INTEGER; +} + +BufferSlicer.prototype.read = function(buffer, offset, length, position, callback) { + var end = position + length; + var delta = end - this.buffer.length; + var written = (delta > 0) ? delta : length; + this.buffer.copy(buffer, offset, position, end); + setImmediate(function() { + callback(null, written); + }); +}; + +BufferSlicer.prototype.write = function(buffer, offset, length, position, callback) { + buffer.copy(this.buffer, position, offset, offset + length); + setImmediate(function() { + callback(null, length, buffer); + }); +}; + +BufferSlicer.prototype.createReadStream = function(options) { + options = options || {}; + var readStream = new PassThrough(options); + readStream.destroyed = false; + readStream.start = options.start || 0; + readStream.endOffset = options.end; + // by the time this function returns, we'll be done. + readStream.pos = readStream.endOffset || this.buffer.length; + + // respect the maxChunkSize option to slice up the chunk into smaller pieces. + var entireSlice = this.buffer.slice(readStream.start, readStream.pos); + var offset = 0; + while (true) { + var nextOffset = offset + this.maxChunkSize; + if (nextOffset >= entireSlice.length) { + // last chunk + if (offset < entireSlice.length) { + readStream.write(entireSlice.slice(offset, entireSlice.length)); + } + break; + } + readStream.write(entireSlice.slice(offset, nextOffset)); + offset = nextOffset; + } + + readStream.end(); + readStream.destroy = function() { + readStream.destroyed = true; + }; + return readStream; +}; + +BufferSlicer.prototype.createWriteStream = function(options) { + var bufferSlicer = this; + options = options || {}; + var writeStream = new Writable(options); + writeStream.start = options.start || 0; + writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end; + writeStream.bytesWritten = 0; + writeStream.pos = writeStream.start; + writeStream.destroyed = false; + writeStream._write = function(buffer, encoding, callback) { + if (writeStream.destroyed) return; + + var end = writeStream.pos + buffer.length; + if (end > writeStream.endOffset) { + var err = new Error("maximum file length exceeded"); + err.code = 'ETOOBIG'; + writeStream.destroyed = true; + callback(err); + return; + } + buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length); + + writeStream.bytesWritten += buffer.length; + writeStream.pos = end; + writeStream.emit('progress'); + callback(); + }; + writeStream.destroy = function() { + writeStream.destroyed = true; + }; + return writeStream; +}; + +BufferSlicer.prototype.ref = function() { + this.refCount += 1; +}; + +BufferSlicer.prototype.unref = function() { + this.refCount -= 1; + + if (this.refCount < 0) { + throw new Error("invalid unref"); + } +}; + +function createFromBuffer(buffer, options) { + return new BufferSlicer(buffer, options); +} + +function createFromFd(fd, options) { + return new FdSlicer(fd, options); +} diff --git a/node_modules/yauzl/node_modules/fd-slicer/package.json b/node_modules/yauzl/node_modules/fd-slicer/package.json new file mode 100644 index 0000000..d86a302 --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/package.json @@ -0,0 +1,65 @@ +{ + "_from": "fd-slicer@~1.1.0", + "_id": "fd-slicer@1.1.0", + "_inBundle": false, + "_integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "_location": "/yauzl/fd-slicer", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "fd-slicer@~1.1.0", + "name": "fd-slicer", + "escapedName": "fd-slicer", + "rawSpec": "~1.1.0", + "saveSpec": null, + "fetchSpec": "~1.1.0" + }, + "_requiredBy": [ + "/yauzl" + ], + "_resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "_shasum": "25c7c89cb1f9077f8891bbe61d8f390eae256f1e", + "_spec": "fd-slicer@~1.1.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/yauzl", + "author": { + "name": "Andrew Kelley", + "email": "superjoe30@gmail.com" + }, + "bugs": { + "url": "https://github.com/andrewrk/node-fd-slicer/issues" + }, + "bundleDependencies": false, + "dependencies": { + "pend": "~1.2.0" + }, + "deprecated": false, + "description": "safely create multiple ReadStream or WriteStream objects from the same file descriptor", + "devDependencies": { + "istanbul": "~0.3.3", + "mocha": "~2.0.1", + "stream-equal": "~0.1.5", + "streamsink": "~1.2.0" + }, + "directories": { + "test": "test" + }, + "homepage": "https://github.com/andrewrk/node-fd-slicer#readme", + "keywords": [ + "createReadStream", + "createWriteStream" + ], + "license": "MIT", + "main": "index.js", + "name": "fd-slicer", + "repository": { + "type": "git", + "url": "git://github.com/andrewrk/node-fd-slicer.git" + }, + "scripts": { + "test": "mocha --reporter spec --check-leaks", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/test.js", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --timeout 10000 --reporter spec --check-leaks test/test.js" + }, + "version": "1.1.0" +} diff --git a/node_modules/yauzl/node_modules/fd-slicer/test/test.js b/node_modules/yauzl/node_modules/fd-slicer/test/test.js new file mode 100644 index 0000000..d05ab00 --- /dev/null +++ b/node_modules/yauzl/node_modules/fd-slicer/test/test.js @@ -0,0 +1,350 @@ +var fdSlicer = require('../'); +var fs = require('fs'); +var crypto = require('crypto'); +var path = require('path'); +var streamEqual = require('stream-equal'); +var assert = require('assert'); +var Pend = require('pend'); +var StreamSink = require('streamsink'); + +var describe = global.describe; +var it = global.it; +var before = global.before; +var beforeEach = global.beforeEach; +var after = global.after; + +var testBlobFile = path.join(__dirname, "test-blob.bin"); +var testBlobFileSize = 20 * 1024 * 1024; +var testOutBlobFile = path.join(__dirname, "test-blob-out.bin"); + +describe("FdSlicer", function() { + before(function(done) { + var out = fs.createWriteStream(testBlobFile); + for (var i = 0; i < testBlobFileSize / 1024; i += 1) { + out.write(crypto.pseudoRandomBytes(1024)); + } + out.end(); + out.on('close', done); + }); + beforeEach(function() { + try { + fs.unlinkSync(testOutBlobFile); + } catch (err) { + } + }); + after(function() { + try { + fs.unlinkSync(testBlobFile); + fs.unlinkSync(testOutBlobFile); + } catch (err) { + } + }); + it("reads a 20MB file (autoClose on)", function(done) { + fs.open(testBlobFile, 'r', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var actualStream = slicer.createReadStream(); + var expectedStream = fs.createReadStream(testBlobFile); + + var pend = new Pend(); + pend.go(function(cb) { + slicer.on('close', cb); + }); + pend.go(function(cb) { + streamEqual(expectedStream, actualStream, function(err, equal) { + if (err) return done(err); + assert.ok(equal); + cb(); + }); + }); + pend.wait(done); + }); + }); + it("reads 4 chunks simultaneously", function(done) { + fs.open(testBlobFile, 'r', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd); + var actualPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); + var actualPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); + var actualPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); + var actualPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); + var expectedPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); + var expectedPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); + var expectedPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); + var expectedPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); + var pend = new Pend(); + pend.go(function(cb) { + streamEqual(expectedPart1, actualPart1, function(err, equal) { + assert.ok(equal); + cb(err); + }); + }); + pend.go(function(cb) { + streamEqual(expectedPart2, actualPart2, function(err, equal) { + assert.ok(equal); + cb(err); + }); + }); + pend.go(function(cb) { + streamEqual(expectedPart3, actualPart3, function(err, equal) { + assert.ok(equal); + cb(err); + }); + }); + pend.go(function(cb) { + streamEqual(expectedPart4, actualPart4, function(err, equal) { + assert.ok(equal); + cb(err); + }); + }); + pend.wait(function(err) { + if (err) return done(err); + fs.close(fd, done); + }); + }); + }); + + it("writes a 20MB file (autoClose on)", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var actualStream = slicer.createWriteStream(); + var inStream = fs.createReadStream(testBlobFile); + + slicer.on('close', function() { + var expected = fs.createReadStream(testBlobFile); + var actual = fs.createReadStream(testOutBlobFile); + + streamEqual(expected, actual, function(err, equal) { + if (err) return done(err); + assert.ok(equal); + done(); + }); + }); + inStream.pipe(actualStream); + }); + }); + + it("writes 4 chunks simultaneously", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd); + var actualPart1 = slicer.createWriteStream({start: testBlobFileSize * 0/4}); + var actualPart2 = slicer.createWriteStream({start: testBlobFileSize * 1/4}); + var actualPart3 = slicer.createWriteStream({start: testBlobFileSize * 2/4}); + var actualPart4 = slicer.createWriteStream({start: testBlobFileSize * 3/4}); + var in1 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); + var in2 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); + var in3 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); + var in4 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); + var pend = new Pend(); + pend.go(function(cb) { + actualPart1.on('finish', cb); + }); + pend.go(function(cb) { + actualPart2.on('finish', cb); + }); + pend.go(function(cb) { + actualPart3.on('finish', cb); + }); + pend.go(function(cb) { + actualPart4.on('finish', cb); + }); + in1.pipe(actualPart1); + in2.pipe(actualPart2); + in3.pipe(actualPart3); + in4.pipe(actualPart4); + pend.wait(function() { + fs.close(fd, function(err) { + if (err) return done(err); + var expected = fs.createReadStream(testBlobFile); + var actual = fs.createReadStream(testOutBlobFile); + streamEqual(expected, actual, function(err, equal) { + if (err) return done(err); + assert.ok(equal); + done(); + }); + }); + }); + }); + }); + + it("throws on invalid ref", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + assert.throws(function() { + slicer.unref(); + }, /invalid unref/); + fs.close(fd, done); + }); + }); + + it("write stream emits error when max size exceeded", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var ws = slicer.createWriteStream({start: 0, end: 1000}); + ws.on('error', function(err) { + assert.strictEqual(err.code, 'ETOOBIG'); + slicer.on('close', done); + }); + ws.end(new Buffer(1001)); + }); + }); + + it("write stream does not emit error when max size not exceeded", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var ws = slicer.createWriteStream({end: 1000}); + slicer.on('close', done); + ws.end(new Buffer(1000)); + }); + }); + + it("write stream start and end work together", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var ws = slicer.createWriteStream({start: 1, end: 1000}); + ws.on('error', function(err) { + assert.strictEqual(err.code, 'ETOOBIG'); + slicer.on('close', done); + }); + ws.end(new Buffer(1000)); + }); + }); + + it("write stream emits progress events", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var ws = slicer.createWriteStream(); + var progressEventCount = 0; + var prevBytesWritten = 0; + ws.on('progress', function() { + progressEventCount += 1; + assert.ok(ws.bytesWritten > prevBytesWritten); + prevBytesWritten = ws.bytesWritten; + }); + slicer.on('close', function() { + assert.ok(progressEventCount > 5); + done(); + }); + for (var i = 0; i < 10; i += 1) { + ws.write(new Buffer(16 * 1024 * 2)); + } + ws.end(); + }); + }); + + it("write stream unrefs when destroyed", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var ws = slicer.createWriteStream(); + slicer.on('close', done); + ws.write(new Buffer(1000)); + ws.destroy(); + }); + }); + + it("read stream unrefs when destroyed", function(done) { + fs.open(testBlobFile, 'r', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); + var rs = slicer.createReadStream(); + rs.on('error', function(err) { + assert.strictEqual(err.message, "stream destroyed"); + slicer.on('close', done); + }); + rs.destroy(); + }); + }); + + it("fdSlicer.read", function(done) { + fs.open(testBlobFile, 'r', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd); + var outBuf = new Buffer(1024); + slicer.read(outBuf, 0, 10, 0, function(err, bytesRead, buf) { + assert.strictEqual(bytesRead, 10); + fs.close(fd, done); + }); + }); + }); + + it("fdSlicer.write", function(done) { + fs.open(testOutBlobFile, 'w', function(err, fd) { + if (err) return done(err); + var slicer = fdSlicer.createFromFd(fd); + slicer.write(new Buffer("blah\n"), 0, 5, 0, function() { + if (err) return done(err); + fs.close(fd, done); + }); + }); + }); +}); + +describe("BufferSlicer", function() { + it("invalid ref", function() { + var slicer = fdSlicer.createFromBuffer(new Buffer(16)); + slicer.ref(); + slicer.unref(); + assert.throws(function() { + slicer.unref(); + }, /invalid unref/); + }); + it("read and write", function(done) { + var buf = new Buffer("through the tangled thread the needle finds its way"); + var slicer = fdSlicer.createFromBuffer(buf); + var outBuf = new Buffer(1024); + slicer.read(outBuf, 10, 11, 8, function(err) { + if (err) return done(err); + assert.strictEqual(outBuf.toString('utf8', 10, 21), "the tangled"); + slicer.write(new Buffer("derp"), 0, 4, 7, function(err) { + if (err) return done(err); + assert.strictEqual(buf.toString('utf8', 7, 19), "derp tangled"); + done(); + }); + }); + }); + it("createReadStream", function(done) { + var str = "I never conquered rarely came, 16 just held such better days"; + var buf = new Buffer(str); + var slicer = fdSlicer.createFromBuffer(buf); + var inStream = slicer.createReadStream(); + var sink = new StreamSink(); + inStream.pipe(sink); + sink.on('finish', function() { + assert.strictEqual(sink.toString(), str); + inStream.destroy(); + done(); + }); + }); + it("createWriteStream exceed buffer size", function(done) { + var slicer = fdSlicer.createFromBuffer(new Buffer(4)); + var outStream = slicer.createWriteStream(); + outStream.on('error', function(err) { + assert.strictEqual(err.code, 'ETOOBIG'); + done(); + }); + outStream.write("hi!\n"); + outStream.write("it warked\n"); + outStream.end(); + }); + it("createWriteStream ok", function(done) { + var buf = new Buffer(1024); + var slicer = fdSlicer.createFromBuffer(buf); + var outStream = slicer.createWriteStream(); + outStream.on('finish', function() { + assert.strictEqual(buf.toString('utf8', 0, "hi!\nit warked\n".length), "hi!\nit warked\n"); + outStream.destroy(); + done(); + }); + outStream.write("hi!\n"); + outStream.write("it warked\n"); + outStream.end(); + }); +}); diff --git a/node_modules/yauzl/package.json b/node_modules/yauzl/package.json new file mode 100644 index 0000000..0b343e5 --- /dev/null +++ b/node_modules/yauzl/package.json @@ -0,0 +1,70 @@ +{ + "_from": "yauzl@2.10.0", + "_id": "yauzl@2.10.0", + "_inBundle": false, + "_integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "_location": "/yauzl", + "_phantomChildren": { + "pend": "1.2.0" + }, + "_requested": { + "type": "version", + "registry": true, + "raw": "yauzl@2.10.0", + "name": "yauzl", + "escapedName": "yauzl", + "rawSpec": "2.10.0", + "saveSpec": null, + "fetchSpec": "2.10.0" + }, + "_requiredBy": [ + "/cypress" + ], + "_resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "_shasum": "c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9", + "_spec": "yauzl@2.10.0", + "_where": "/home/peter/www/prive/cypress-test/node_modules/cypress", + "author": { + "name": "Josh Wolfe", + "email": "thejoshwolfe@gmail.com" + }, + "bugs": { + "url": "https://github.com/thejoshwolfe/yauzl/issues" + }, + "bundleDependencies": false, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + }, + "deprecated": false, + "description": "yet another unzip library for node", + "devDependencies": { + "bl": "~1.0.0", + "istanbul": "~0.3.4", + "pend": "~1.2.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/thejoshwolfe/yauzl", + "keywords": [ + "unzip", + "zip", + "stream", + "archive", + "file" + ], + "license": "MIT", + "main": "index.js", + "name": "yauzl", + "repository": { + "type": "git", + "url": "git+https://github.com/thejoshwolfe/yauzl.git" + }, + "scripts": { + "test": "node test/test.js", + "test-cov": "istanbul cover test/test.js", + "test-travis": "istanbul cover --report lcovonly test/test.js" + }, + "version": "2.10.0" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4a16c03 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1576 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cachedir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz", + "integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cypress": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.4.1.tgz", + "integrity": "sha512-1HBS7t9XXzkt6QHbwfirWYty8vzxNMawGj1yI+Fu6C3/VZJ8UtUngMW6layqwYZzLTZV8tiDpdCNBypn78V4Dg==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "0.4.1", + "@cypress/xvfb": "1.2.4", + "arch": "2.1.1", + "bluebird": "3.5.0", + "cachedir": "1.3.0", + "chalk": "2.4.2", + "check-more-types": "2.24.0", + "commander": "2.15.1", + "common-tags": "1.8.0", + "debug": "3.2.6", + "execa": "0.10.0", + "executable": "4.1.1", + "extract-zip": "1.6.7", + "fs-extra": "5.0.0", + "getos": "3.1.1", + "is-ci": "1.2.1", + "is-installed-globally": "0.1.0", + "lazy-ass": "1.6.0", + "listr": "0.12.0", + "lodash": "4.17.15", + "log-symbols": "2.2.0", + "minimist": "1.2.0", + "moment": "2.24.0", + "ramda": "0.24.1", + "request": "2.88.0", + "request-progress": "3.0.0", + "supports-color": "5.5.0", + "tmp": "0.1.0", + "url": "0.11.0", + "yauzl": "2.10.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getos": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.1.tgz", + "integrity": "sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg==", + "dev": true, + "requires": { + "async": "2.6.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", + "dev": true + }, + "listr": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", + "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.2.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.0.0-beta.11", + "stream-to-observable": "^0.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", + "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "psl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "ramda": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.24.1.tgz", + "integrity": "sha1-w7d1UZfzW43DUCIoJixMkd22uFc=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stream-to-observable": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", + "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + }, + "dependencies": { + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + } + } + } + } +}