From a60b16c49ca3970bbe44c46e0ef0436e87e9e344 Mon Sep 17 00:00:00 2001 From: Lukas Jakob Date: Mon, 24 Oct 2016 08:23:22 +0200 Subject: [PATCH 1/2] Test setup lathonez, redux error. --- src/test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test.ts b/src/test.ts index 820d040..4b7f8b4 100644 --- a/src/test.ts +++ b/src/test.ts @@ -43,6 +43,7 @@ export const appStoreFactory = createAppStoreFactoryWithOptions({ Promise.all([ System.import('@angular/core/testing'), System.import('@angular/platform-browser-dynamic/testing'), + //System.import('redux'), ]) // First, initialize the Angular testing environment. .then(([testing, testingBrowser]) => { From 4c99318928f4dba47d703bcceb6b54de4cc6a724 Mon Sep 17 00:00:00 2001 From: Lukas Jakob Date: Mon, 24 Oct 2016 08:43:14 +0200 Subject: [PATCH 2/2] Not working. --- config.js | 79 + jspm_packages/.dependencies.json | 69 + jspm_packages/.loaderversions | 1 + .../github/jspm/nodelibs-assert@0.1.0.js | 1 + .../jspm/nodelibs-assert@0.1.0/.jspm-hash | 1 + .../jspm/nodelibs-assert@0.1.0/index.js | 2 + .../jspm/nodelibs-assert@0.1.0/package.json | 6 + .../github/jspm/nodelibs-buffer@0.1.0.js | 1 + .../jspm/nodelibs-buffer@0.1.0/.jspm-hash | 1 + .../jspm/nodelibs-buffer@0.1.0/index.js | 2 + .../jspm/nodelibs-buffer@0.1.0/package.json | 6 + .../jspm/nodelibs-child_process@0.1.0.js | 1 + .../nodelibs-child_process@0.1.0/.jspm-hash | 1 + .../nodelibs-child_process@0.1.0/index.js | 5 + .../nodelibs-child_process@0.1.0/package.json | 3 + .../github/jspm/nodelibs-fs@0.1.2.js | 1 + .../github/jspm/nodelibs-fs@0.1.2/.jspm-hash | 1 + .../github/jspm/nodelibs-fs@0.1.2/index.js | 25 + .../jspm/nodelibs-fs@0.1.2/package.json | 3 + .../github/jspm/nodelibs-path@0.1.0.js | 1 + .../jspm/nodelibs-path@0.1.0/.jspm-hash | 1 + .../github/jspm/nodelibs-path@0.1.0/index.js | 2 + .../jspm/nodelibs-path@0.1.0/package.json | 6 + .../github/jspm/nodelibs-process@0.1.2.js | 1 + .../jspm/nodelibs-process@0.1.2/.jspm-hash | 1 + .../jspm/nodelibs-process@0.1.2/index.js | 1 + .../jspm/nodelibs-process@0.1.2/package.json | 6 + .../github/jspm/nodelibs-util@0.1.0.js | 1 + .../jspm/nodelibs-util@0.1.0/.jspm-hash | 1 + .../github/jspm/nodelibs-util@0.1.0/index.js | 2 + .../jspm/nodelibs-util@0.1.0/package.json | 6 + .../github/jspm/nodelibs-vm@0.1.0.js | 1 + .../github/jspm/nodelibs-vm@0.1.0/.jspm-hash | 1 + .../github/jspm/nodelibs-vm@0.1.0/index.js | 2 + .../jspm/nodelibs-vm@0.1.0/package.json | 6 + .../github/systemjs/plugin-json@0.1.2.js | 3 + .../systemjs/plugin-json@0.1.2/.jspm-hash | 1 + .../github/systemjs/plugin-json@0.1.2/LICENSE | 20 + .../systemjs/plugin-json@0.1.2/README.md | 5 + .../github/systemjs/plugin-json@0.1.2/json.js | 16 + .../systemjs/plugin-json@0.1.2/json.json | 3 + .../systemjs/plugin-json@0.1.2/package.json | 14 + .../systemjs/plugin-json@0.1.2/test.html | 5 + jspm_packages/npm/assert@1.4.1.js | 1 + jspm_packages/npm/assert@1.4.1/.jspm-hash | 1 + jspm_packages/npm/assert@1.4.1/.npmignore | 1 + jspm_packages/npm/assert@1.4.1/.travis.yml | 31 + jspm_packages/npm/assert@1.4.1/.zuul.yml | 13 + jspm_packages/npm/assert@1.4.1/LICENSE | 18 + jspm_packages/npm/assert@1.4.1/README.md | 64 + jspm_packages/npm/assert@1.4.1/assert.js | 315 + jspm_packages/npm/assert@1.4.1/package.json | 30 + jspm_packages/npm/assert@1.4.1/test.js | 275 + jspm_packages/npm/babel-core@5.8.38.js | 1 + .../npm/babel-core@5.8.38/.jspm-hash | 1 + .../npm/babel-core@5.8.38/browser-polyfill.js | 4414 + .../babel-core@5.8.38/browser-polyfill.min.js | 4 + .../npm/babel-core@5.8.38/browser.js | 68451 ++++++++++++++++ .../npm/babel-core@5.8.38/browser.min.js | 32 + .../npm/babel-core@5.8.38/external-helpers.js | 429 + .../babel-core@5.8.38/external-helpers.min.js | 3 + jspm_packages/npm/babel-core@5.8.38/index.js | 3 + .../npm/babel-core@5.8.38/lib/README.md | 4 + .../npm/babel-core@5.8.38/lib/api/README.md | 18 + .../npm/babel-core@5.8.38/lib/api/browser.js | 134 + .../npm/babel-core@5.8.38/lib/api/node.js | 181 + .../lib/api/register/browser.js | 13 + .../lib/api/register/cache.js | 65 + .../lib/api/register/node-polyfill.js | 15 + .../lib/api/register/node.js | 272 + .../lib/babel/transformation/modules.js | 5 + .../lib/generation/README.md | 16 + .../lib/generation/buffer.js | 354 + .../lib/generation/generators/README.md | 10 + .../lib/generation/generators/base.js | 51 + .../lib/generation/generators/classes.js | 99 + .../generation/generators/comprehensions.js | 43 + .../lib/generation/generators/expressions.js | 362 + .../lib/generation/generators/flow.js | 480 + .../lib/generation/generators/jsx.js | 136 + .../lib/generation/generators/methods.js | 130 + .../lib/generation/generators/modules.js | 194 + .../lib/generation/generators/statements.js | 342 + .../generators/template-literals.js | 48 + .../lib/generation/generators/types.js | 213 + .../babel-core@5.8.38/lib/generation/index.js | 548 + .../lib/generation/node/index.js | 170 + .../lib/generation/node/parentheses.js | 255 + .../lib/generation/node/printer.js | 96 + .../lib/generation/node/whitespace.js | 252 + .../lib/generation/position.js | 55 + .../lib/generation/source-map.js | 95 + .../lib/generation/whitespace.js | 142 + .../babel-core@5.8.38/lib/helpers/README.md | 4 + .../lib/helpers/code-frame.js | 149 + .../babel-core@5.8.38/lib/helpers/merge.js | 47 + .../lib/helpers/normalize-ast.js | 28 + .../babel-core@5.8.38/lib/helpers/object.js | 15 + .../babel-core@5.8.38/lib/helpers/parse.js | 41 + .../npm/babel-core@5.8.38/lib/messages.js | 102 + .../npm/babel-core@5.8.38/lib/polyfill.js | 12 + .../npm/babel-core@5.8.38/lib/tools/README.md | 15 + .../lib/tools/build-external-helpers.js | 129 + .../lib/transformation/README.md | 3 + .../lib/transformation/file/README.md | 3 + .../lib/transformation/file/index.js | 851 + .../lib/transformation/file/logger.js | 109 + .../lib/transformation/file/options/README.md | 3 + .../transformation/file/options/config.json | 269 + .../lib/transformation/file/options/index.js | 61 + .../file/options/option-manager.js | 250 + .../transformation/file/options/parsers.js | 84 + .../lib/transformation/file/plugin-manager.js | 229 + .../lib/transformation/helpers/README.md | 3 + ...-binary-assignment-operator-transformer.js | 89 + .../helpers/build-comprehension.js | 37 + ...itional-assignment-operator-transformer.js | 75 + .../helpers/build-react-transformer.js | 217 + .../transformation/helpers/call-delegate.js | 63 + .../lib/transformation/helpers/define-map.js | 151 + .../helpers/explode-assignable-expression.js | 92 + .../helpers/get-function-arity.js | 29 + .../helpers/memoise-decorators.js | 48 + .../lib/transformation/helpers/name-method.js | 221 + .../lib/transformation/helpers/react.js | 98 + .../lib/transformation/helpers/regex.js | 41 + .../helpers/remap-async-to-generator.js | 97 + .../transformation/helpers/replace-supers.js | 324 + .../lib/transformation/index.js | 82 + .../lib/transformation/modules/README.md | 3 + .../lib/transformation/modules/_default.js | 404 + .../lib/transformation/modules/_strict.js | 30 + .../lib/transformation/modules/amd-strict.js | 23 + .../lib/transformation/modules/amd.js | 224 + .../transformation/modules/common-strict.js | 23 + .../lib/transformation/modules/common.js | 188 + .../lib/transformation/modules/ignore.js | 70 + .../lib/transformation/modules/index.js | 20 + .../transformation/modules/lib/metadata.js | 202 + .../lib/transformation/modules/lib/remaps.js | 200 + .../lib/transformation/modules/system.js | 344 + .../lib/transformation/modules/umd-strict.js | 23 + .../lib/transformation/modules/umd.js | 140 + .../lib/transformation/pipeline.js | 225 + .../lib/transformation/plugin-pass.js | 61 + .../lib/transformation/plugin.js | 133 + .../lib/transformation/transformer.js | 36 + .../lib/transformation/transformers/README.md | 3 + .../transformation/transformers/aliases.json | 6 + .../transformers/deprecated.json | 15 + .../es3/member-expression-literals.js | 55 + .../transformers/es3/property-literals.js | 56 + .../transformers/es5/properties.mutators.js | 81 + .../transformers/es6/arrow-functions.js | 39 + .../transformers/es6/block-scoping.js | 790 + .../transformers/es6/classes/index.js | 57 + .../transformers/es6/classes/loose.js | 67 + .../transformers/es6/classes/vanilla.js | 688 + .../transformers/es6/constants.js | 64 + .../transformers/es6/destructuring.js | 626 + .../transformation/transformers/es6/for-of.js | 211 + .../transformers/es6/literals.js | 24 + .../transformers/es6/modules.js | 114 + .../transformers/es6/object-super.js | 69 + .../transformers/es6/parameters/default.js | 167 + .../transformers/es6/parameters/index.js | 32 + .../transformers/es6/parameters/rest.js | 271 + .../transformers/es6/properties.computed.js | 134 + .../transformers/es6/properties.shorthand.js | 26 + .../transformers/es6/regex.sticky.js | 33 + .../transformers/es6/regex.unicode.js | 38 + .../transformers/es6/spec.arrow-functions.js | 35 + .../transformers/es6/spec.block-scoping.js | 117 + .../transformers/es6/spec.modules.js | 26 + .../transformers/es6/spec.symbols.js | 69 + .../es6/spec.template-literals.js | 38 + .../transformation/transformers/es6/spread.js | 160 + .../transformers/es6/tail-call.js | 522 + .../transformers/es6/template-literals.js | 133 + .../transformers/es7/async-functions.js | 9 + .../transformers/es7/class-properties.js | 10 + .../transformers/es7/comprehensions.js | 100 + .../transformers/es7/decorators.js | 73 + .../transformers/es7/do-expressions.js | 39 + .../es7/exponentiation-operator.js | 46 + .../transformers/es7/export-extensions.js | 67 + .../transformers/es7/function-bind.js | 88 + .../transformers/es7/object-rest-spread.js | 76 + .../es7/trailing-function-commas.js | 9 + .../transformation/transformers/filters.js | 60 + .../lib/transformation/transformers/index.js | 96 + .../transformers/internal/block-hoist.js | 59 + .../transformers/internal/hoist-directives.js | 42 + .../transformers/internal/module-formatter.js | 40 + .../transformers/internal/modules.js | 150 + .../transformers/internal/shadow-functions.js | 101 + .../transformers/internal/validation.js | 54 + .../transformers/optimisation/flow.for-of.js | 30 + .../optimisation/modules.system.js | 60 + .../optimisation/react.inline-elements.js | 110 + .../transformers/other/async-to-generator.js | 39 + .../transformers/other/bluebird-coroutines.js | 53 + .../transformation/transformers/other/flow.js | 93 + .../transformers/other/react-compat.js | 57 + .../transformers/other/react.js | 82 + .../transformers/other/regenerator.js | 107 + .../transformers/other/strict.js | 72 + .../spec/block-scoped-functions.js | 65 + .../transformers/spec/function-name.js | 51 + .../transformers/validation/react.js | 54 + .../babel-core@5.8.38/lib/traversal/README.md | 3 + .../lib/traversal/context.js | 158 + .../babel-core@5.8.38/lib/traversal/hub.js | 21 + .../babel-core@5.8.38/lib/traversal/index.js | 153 + .../lib/traversal/path/README.md | 15 + .../lib/traversal/path/ancestry.js | 246 + .../lib/traversal/path/comments.js | 60 + .../lib/traversal/path/context.js | 315 + .../lib/traversal/path/conversion.js | 45 + .../lib/traversal/path/evaluation.js | 269 + .../lib/traversal/path/family.js | 186 + .../lib/traversal/path/index.js | 213 + .../lib/traversal/path/inference/README.md | 3 + .../lib/traversal/path/inference/index.js | 157 + .../path/inference/inferer-reference.js | 229 + .../lib/traversal/path/inference/inferers.js | 259 + .../lib/traversal/path/introspection.js | 405 + .../lib/traversal/path/lib/hoister.js | 194 + .../lib/traversal/path/lib/removal-hooks.js | 136 + .../lib/traversal/path/lib/virtual-types.js | 210 + .../lib/traversal/path/modification.js | 257 + .../lib/traversal/path/removal.js | 96 + .../lib/traversal/path/replacement.js | 258 + .../lib/traversal/scope/README.md | 3 + .../lib/traversal/scope/binding.js | 113 + .../lib/traversal/scope/index.js | 1163 + .../lib/traversal/visitors.js | 253 + .../npm/babel-core@5.8.38/lib/types/README.md | 3 + .../babel-core@5.8.38/lib/types/converters.js | 341 + .../lib/types/definitions/core.js | 256 + .../lib/types/definitions/es2015.js | 144 + .../lib/types/definitions/experimental.js | 44 + .../lib/types/definitions/flow.js | 200 + .../lib/types/definitions/index.js | 34 + .../lib/types/definitions/init.js | 17 + .../lib/types/definitions/jsx.js | 59 + .../lib/types/definitions/misc.js | 20 + .../npm/babel-core@5.8.38/lib/types/flow.js | 132 + .../npm/babel-core@5.8.38/lib/types/index.js | 448 + .../babel-core@5.8.38/lib/types/retrievers.js | 96 + .../babel-core@5.8.38/lib/types/validators.js | 258 + .../npm/babel-core@5.8.38/lib/util.js | 324 + .../npm/babel-core@5.8.38/package.json | 77 + .../npm/babel-core@5.8.38/polyfill.js | 3 + .../register-without-polyfill.js | 3 + .../npm/babel-core@5.8.38/register.js | 3 + .../npm/babel-core@5.8.38/templates.json | 1 + .../npm/babel-runtime@5.8.38/.jspm-hash | 1 + .../npm/babel-runtime@5.8.38/.jspm.errors | 2 + .../npm/babel-runtime@5.8.38/.npmignore | 2 + .../npm/babel-runtime@5.8.38/README.md | 5 + .../npm/babel-runtime@5.8.38/core-js.js | 5 + .../core-js/array/concat.js | 2 + .../core-js/array/copy-within.js | 2 + .../core-js/array/entries.js | 2 + .../core-js/array/every.js | 2 + .../core-js/array/fill.js | 2 + .../core-js/array/filter.js | 2 + .../core-js/array/find-index.js | 2 + .../core-js/array/find.js | 2 + .../core-js/array/for-each.js | 2 + .../core-js/array/from.js | 2 + .../core-js/array/includes.js | 2 + .../core-js/array/index-of.js | 2 + .../core-js/array/join.js | 2 + .../core-js/array/keys.js | 2 + .../core-js/array/last-index-of.js | 2 + .../babel-runtime@5.8.38/core-js/array/map.js | 2 + .../babel-runtime@5.8.38/core-js/array/of.js | 2 + .../babel-runtime@5.8.38/core-js/array/pop.js | 2 + .../core-js/array/push.js | 2 + .../core-js/array/reduce-right.js | 2 + .../core-js/array/reduce.js | 2 + .../core-js/array/reverse.js | 2 + .../core-js/array/shift.js | 2 + .../core-js/array/slice.js | 2 + .../core-js/array/some.js | 2 + .../core-js/array/sort.js | 2 + .../core-js/array/splice.js | 2 + .../core-js/array/turn.js | 2 + .../core-js/array/unshift.js | 2 + .../core-js/array/values.js | 2 + .../core-js/clear-immediate.js | 2 + .../core-js/date/add-locale.js | 2 + .../core-js/date/format-utc.js | 2 + .../core-js/date/format.js | 2 + .../core-js/error/is-error.js | 2 + .../core-js/function/only.js | 2 + .../core-js/function/part.js | 2 + .../core-js/get-iterator.js | 2 + .../core-js/is-iterable.js | 2 + .../core-js/json/stringify.js | 2 + .../npm/babel-runtime@5.8.38/core-js/map.js | 2 + .../core-js/math/acosh.js | 2 + .../core-js/math/asinh.js | 2 + .../core-js/math/atanh.js | 2 + .../babel-runtime@5.8.38/core-js/math/cbrt.js | 2 + .../core-js/math/clz32.js | 2 + .../babel-runtime@5.8.38/core-js/math/cosh.js | 2 + .../core-js/math/expm1.js | 2 + .../core-js/math/fround.js | 2 + .../core-js/math/hypot.js | 2 + .../core-js/math/iaddh.js | 2 + .../babel-runtime@5.8.38/core-js/math/imul.js | 2 + .../core-js/math/imulh.js | 2 + .../core-js/math/isubh.js | 2 + .../core-js/math/log10.js | 2 + .../core-js/math/log1p.js | 2 + .../babel-runtime@5.8.38/core-js/math/log2.js | 2 + .../babel-runtime@5.8.38/core-js/math/pot.js | 2 + .../babel-runtime@5.8.38/core-js/math/sign.js | 2 + .../babel-runtime@5.8.38/core-js/math/sinh.js | 2 + .../babel-runtime@5.8.38/core-js/math/tanh.js | 2 + .../core-js/math/trunc.js | 2 + .../core-js/math/umulh.js | 2 + .../core-js/number/epsilon.js | 2 + .../core-js/number/is-finite.js | 2 + .../core-js/number/is-integer.js | 2 + .../core-js/number/is-nan.js | 2 + .../core-js/number/is-safe-integer.js | 2 + .../core-js/number/max-safe-integer.js | 2 + .../core-js/number/min-safe-integer.js | 2 + .../core-js/number/parse-float.js | 2 + .../core-js/number/parse-int.js | 2 + .../core-js/number/random.js | 2 + .../babel-runtime@5.8.38/core-js/object.js | 2 + .../core-js/object/assign.js | 2 + .../core-js/object/classof.js | 2 + .../core-js/object/create.js | 2 + .../core-js/object/define-properties.js | 2 + .../core-js/object/define-property.js | 2 + .../core-js/object/define.js | 2 + .../core-js/object/entries.js | 2 + .../core-js/object/freeze.js | 2 + .../object/get-own-property-descriptor.js | 2 + .../object/get-own-property-descriptors.js | 2 + .../core-js/object/get-own-property-names.js | 2 + .../object/get-own-property-symbols.js | 2 + .../core-js/object/get-prototype-of.js | 2 + .../core-js/object/index.js | 2 + .../core-js/object/is-extensible.js | 2 + .../core-js/object/is-frozen.js | 2 + .../core-js/object/is-object.js | 2 + .../core-js/object/is-sealed.js | 2 + .../babel-runtime@5.8.38/core-js/object/is.js | 2 + .../core-js/object/keys.js | 2 + .../core-js/object/make.js | 2 + .../core-js/object/prevent-extensions.js | 2 + .../core-js/object/seal.js | 2 + .../core-js/object/set-prototype-of.js | 2 + .../core-js/object/values.js | 2 + .../babel-runtime@5.8.38/core-js/promise.js | 2 + .../core-js/reflect/apply.js | 2 + .../core-js/reflect/construct.js | 2 + .../core-js/reflect/define-metadata.js | 2 + .../core-js/reflect/define-property.js | 2 + .../core-js/reflect/delete-metadata.js | 2 + .../core-js/reflect/delete-property.js | 2 + .../core-js/reflect/enumerate.js | 2 + .../core-js/reflect/get-metadata-keys.js | 2 + .../core-js/reflect/get-metadata.js | 2 + .../core-js/reflect/get-own-metadata-keys.js | 2 + .../core-js/reflect/get-own-metadata.js | 2 + .../reflect/get-own-property-descriptor.js | 2 + .../core-js/reflect/get-prototype-of.js | 2 + .../core-js/reflect/get.js | 2 + .../core-js/reflect/has-metadata.js | 2 + .../core-js/reflect/has-own-metadata.js | 2 + .../core-js/reflect/has.js | 2 + .../core-js/reflect/is-extensible.js | 2 + .../core-js/reflect/metadata.js | 2 + .../core-js/reflect/own-keys.js | 2 + .../core-js/reflect/prevent-extensions.js | 2 + .../core-js/reflect/set-prototype-of.js | 2 + .../core-js/reflect/set.js | 2 + .../core-js/regexp/escape.js | 2 + .../core-js/set-immediate.js | 2 + .../npm/babel-runtime@5.8.38/core-js/set.js | 2 + .../babel-runtime@5.8.38/core-js/string/at.js | 2 + .../core-js/string/code-point-at.js | 2 + .../core-js/string/ends-with.js | 2 + .../core-js/string/escape-html.js | 2 + .../core-js/string/from-code-point.js | 2 + .../core-js/string/includes.js | 2 + .../core-js/string/pad-end.js | 2 + .../core-js/string/pad-left.js | 2 + .../core-js/string/pad-right.js | 2 + .../core-js/string/pad-start.js | 2 + .../core-js/string/raw.js | 2 + .../core-js/string/repeat.js | 2 + .../core-js/string/starts-with.js | 2 + .../core-js/string/trim-end.js | 2 + .../core-js/string/trim-left.js | 2 + .../core-js/string/trim-right.js | 2 + .../core-js/string/trim-start.js | 2 + .../core-js/string/trim.js | 2 + .../core-js/string/unescape-html.js | 2 + .../babel-runtime@5.8.38/core-js/symbol.js | 2 + .../core-js/symbol/for.js | 2 + .../core-js/symbol/has-instance.js | 2 + .../core-js/symbol/is-concat-spreadable.js | 2 + .../core-js/symbol/iterator.js | 2 + .../core-js/symbol/key-for.js | 2 + .../core-js/symbol/match.js | 2 + .../core-js/symbol/replace.js | 2 + .../core-js/symbol/search.js | 2 + .../core-js/symbol/species.js | 2 + .../core-js/symbol/split.js | 2 + .../core-js/symbol/to-primitive.js | 2 + .../core-js/symbol/to-string-tag.js | 2 + .../core-js/symbol/unscopables.js | 2 + .../core-js/system/global.js | 2 + .../babel-runtime@5.8.38/core-js/weak-map.js | 2 + .../babel-runtime@5.8.38/core-js/weak-set.js | 2 + .../helpers/_async-to-generator.js | 2 + .../helpers/_class-call-check.js | 2 + .../helpers/_create-class.js | 2 + .../babel-runtime@5.8.38/helpers/_defaults.js | 2 + .../helpers/_define-enumerable-properties.js | 2 + .../helpers/_define-property.js | 2 + .../babel-runtime@5.8.38/helpers/_extends.js | 2 + .../npm/babel-runtime@5.8.38/helpers/_get.js | 2 + .../babel-runtime@5.8.38/helpers/_inherits.js | 2 + .../helpers/_instanceof.js | 2 + .../helpers/_interop-require-default.js | 2 + .../helpers/_interop-require-wildcard.js | 2 + .../npm/babel-runtime@5.8.38/helpers/_jsx.js | 2 + .../helpers/_new-arrow-check.js | 2 + .../helpers/_object-destructuring-empty.js | 2 + .../helpers/_object-without-properties.js | 2 + .../helpers/_possible-constructor-return.js | 2 + .../helpers/_self-global.js | 2 + .../npm/babel-runtime@5.8.38/helpers/_set.js | 2 + .../helpers/_sliced-to-array-loose.js | 2 + .../helpers/_sliced-to-array.js | 2 + .../helpers/_tagged-template-literal-loose.js | 2 + .../helpers/_tagged-template-literal.js | 2 + .../helpers/_temporal-ref.js | 2 + .../helpers/_temporal-undefined.js | 2 + .../babel-runtime@5.8.38/helpers/_to-array.js | 2 + .../helpers/_to-consumable-array.js | 2 + .../babel-runtime@5.8.38/helpers/_typeof.js | 2 + .../helpers/async-to-generator.js | 28 + .../helpers/asyncToGenerator.js | 34 + .../npm/babel-runtime@5.8.38/helpers/bind.js | 5 + .../helpers/class-call-check.js | 10 + .../helpers/classCallCheck.js | 10 + .../helpers/create-class.js | 23 + .../helpers/create-decorated-class.js | 41 + .../helpers/create-decorated-object.js | 33 + .../helpers/createClass.js | 27 + .../helpers/default-props.js | 16 + .../babel-runtime@5.8.38/helpers/defaults.js | 17 + .../define-decorated-property-descriptor.js | 14 + .../helpers/define-enumerable-properties.js | 2 + .../helpers/define-property.js | 17 + .../helpers/defineEnumerableProperties.js | 18 + .../helpers/defineProperty.js | 21 + .../babel-runtime@5.8.38/helpers/extends.js | 15 + .../npm/babel-runtime@5.8.38/helpers/get.js | 37 + .../babel-runtime@5.8.38/helpers/has-own.js | 5 + .../babel-runtime@5.8.38/helpers/inherits.js | 18 + .../helpers/instanceof.js | 11 + .../helpers/interop-export-wildcard.js | 10 + .../helpers/interop-require-default.js | 10 + .../helpers/interop-require-wildcard.js | 21 + .../helpers/interop-require.js | 8 + .../helpers/interopRequireDefault.js | 10 + .../helpers/interopRequireWildcard.js | 21 + .../npm/babel-runtime@5.8.38/helpers/jsx.js | 46 + .../helpers/new-arrow-check.js | 10 + .../helpers/newArrowCheck.js | 10 + .../helpers/object-destructuring-empty.js | 8 + .../helpers/object-without-properties.js | 16 + .../helpers/objectDestructuringEmpty.js | 8 + .../helpers/objectWithoutProperties.js | 16 + .../helpers/possible-constructor-return.js | 2 + .../helpers/possibleConstructorReturn.js | 14 + .../helpers/self-global.js | 5 + .../helpers/selfGlobal.js | 5 + .../npm/babel-runtime@5.8.38/helpers/set.js | 21 + .../npm/babel-runtime@5.8.38/helpers/slice.js | 5 + .../helpers/sliced-to-array-loose.js | 21 + .../helpers/sliced-to-array.js | 42 + .../helpers/slicedToArray.js | 47 + .../helpers/slicedToArrayLoose.js | 26 + .../helpers/tagged-template-literal-loose.js | 9 + .../helpers/tagged-template-literal.js | 8 + .../helpers/taggedTemplateLiteral.js | 13 + .../helpers/taggedTemplateLiteralLoose.js | 9 + .../helpers/temporal-assert-defined.js | 12 + .../helpers/temporal-ref.js | 2 + .../helpers/temporal-undefined.js | 5 + .../helpers/temporalRef.js | 12 + .../helpers/temporalUndefined.js | 5 + .../babel-runtime@5.8.38/helpers/to-array.js | 7 + .../helpers/to-consumable-array.js | 14 + .../babel-runtime@5.8.38/helpers/toArray.js | 11 + .../helpers/toConsumableArray.js | 19 + .../helpers/typeof-react-element.js | 7 + .../babel-runtime@5.8.38/helpers/typeof.js | 7 + .../npm/babel-runtime@5.8.38/package.json | 15 + .../npm/babel-runtime@5.8.38/regenerator.js | 2 + .../babel-runtime@5.8.38/regenerator/index.js | 19 + .../regenerator/runtime.js | 435 + jspm_packages/npm/base64-js@0.0.8.js | 1 + jspm_packages/npm/base64-js@0.0.8/.jspm-hash | 1 + jspm_packages/npm/base64-js@0.0.8/.travis.yml | 5 + jspm_packages/npm/base64-js@0.0.8/LICENSE.MIT | 21 + jspm_packages/npm/base64-js@0.0.8/README.md | 31 + jspm_packages/npm/base64-js@0.0.8/lib/b64.js | 125 + .../npm/base64-js@0.0.8/package.json | 34 + .../npm/base64-js@0.0.8/test/convert.js | 39 + .../npm/base64-js@0.0.8/test/url-safe.js | 15 + jspm_packages/npm/buffer@3.6.0.js | 1 + jspm_packages/npm/buffer@3.6.0/.jspm-hash | 1 + jspm_packages/npm/buffer@3.6.0/.npmignore | 1 + jspm_packages/npm/buffer@3.6.0/.travis.yml | 8 + jspm_packages/npm/buffer@3.6.0/.zuul.yml | 22 + jspm_packages/npm/buffer@3.6.0/LICENSE | 21 + jspm_packages/npm/buffer@3.6.0/README.md | 364 + .../buffer@3.6.0/bin/download-node-tests.js | 74 + jspm_packages/npm/buffer@3.6.0/bin/test.js | 16 + jspm_packages/npm/buffer@3.6.0/index.js | 1548 + jspm_packages/npm/buffer@3.6.0/package.json | 74 + .../npm/buffer@3.6.0/test/_polyfill.js | 152 + jspm_packages/npm/buffer@3.6.0/test/base64.js | 33 + jspm_packages/npm/buffer@3.6.0/test/basic.js | 80 + .../npm/buffer@3.6.0/test/compare.js | 53 + .../npm/buffer@3.6.0/test/constructor.js | 132 + .../npm/buffer@3.6.0/test/deprecated.js | 21 + .../npm/buffer@3.6.0/test/from-string.js | 111 + .../npm/buffer@3.6.0/test/methods.js | 109 + .../npm/buffer@3.6.0/test/node-es6/README.txt | 1 + .../test/node-es6/test-buffer-arraybuffer.js | 37 + .../test/node-es6/test-buffer-iterator.js | 32 + .../npm/buffer@3.6.0/test/node/README.txt | 1 + .../test/node/test-buffer-ascii.js | 20 + .../test/node/test-buffer-bytelength.js | 38 + .../test/node/test-buffer-concat.js | 26 + .../test/node/test-buffer-indexof.js | 78 + .../test/node/test-buffer-inspect.js | 31 + .../npm/buffer@3.6.0/test/node/test-buffer.js | 804 + jspm_packages/npm/buffer@3.6.0/test/slice.js | 33 + jspm_packages/npm/buffer@3.6.0/test/static.js | 32 + .../npm/buffer@3.6.0/test/to-string.js | 106 + jspm_packages/npm/buffer@3.6.0/test/write.js | 105 + jspm_packages/npm/core-js@1.2.7.js | 1 + jspm_packages/npm/core-js@1.2.7/.jspm-hash | 1 + jspm_packages/npm/core-js@1.2.7/CHANGELOG.md | 409 + jspm_packages/npm/core-js@1.2.7/Gruntfile.js | 3 + jspm_packages/npm/core-js@1.2.7/LICENSE | 19 + jspm_packages/npm/core-js@1.2.7/bower.json | 34 + jspm_packages/npm/core-js@1.2.7/build.js | 2 + .../npm/core-js@1.2.7/build/Gruntfile.ls | 84 + .../npm/core-js@1.2.7/build/build.ls | 218 + .../npm/core-js@1.2.7/build/config.js | 2 + .../npm/core-js@1.2.7/build/index.js | 122 + .../npm/core-js@1.2.7/client/core.js | 3811 + .../npm/core-js@1.2.7/client/core.min.js | 2973 + .../npm/core-js@1.2.7/client/core.min.js.map | 1 + .../npm/core-js@1.2.7/client/library.js | 3500 + .../npm/core-js@1.2.7/client/library.min.js | 2744 + .../core-js@1.2.7/client/library.min.js.map | 1 + .../npm/core-js@1.2.7/client/shim.js | 3515 + .../npm/core-js@1.2.7/client/shim.min.js | 2731 + .../npm/core-js@1.2.7/client/shim.min.js.map | 1 + jspm_packages/npm/core-js@1.2.7/core.js | 2 + jspm_packages/npm/core-js@1.2.7/core/_.js | 3 + jspm_packages/npm/core-js@1.2.7/core/delay.js | 3 + jspm_packages/npm/core-js@1.2.7/core/dict.js | 3 + .../npm/core-js@1.2.7/core/function.js | 3 + jspm_packages/npm/core-js@1.2.7/core/index.js | 16 + jspm_packages/npm/core-js@1.2.7/core/log.js | 3 + .../npm/core-js@1.2.7/core/number.js | 3 + .../npm/core-js@1.2.7/core/object.js | 6 + .../npm/core-js@1.2.7/core/string.js | 4 + jspm_packages/npm/core-js@1.2.7/es5.js | 2 + jspm_packages/npm/core-js@1.2.7/es5/index.js | 10 + jspm_packages/npm/core-js@1.2.7/es6.js | 2 + jspm_packages/npm/core-js@1.2.7/es6/array.js | 11 + .../npm/core-js@1.2.7/es6/function.js | 4 + jspm_packages/npm/core-js@1.2.7/es6/index.js | 88 + jspm_packages/npm/core-js@1.2.7/es6/map.js | 6 + jspm_packages/npm/core-js@1.2.7/es6/math.js | 19 + jspm_packages/npm/core-js@1.2.7/es6/number.js | 12 + jspm_packages/npm/core-js@1.2.7/es6/object.js | 17 + .../npm/core-js@1.2.7/es6/promise.js | 6 + .../npm/core-js@1.2.7/es6/reflect.js | 16 + jspm_packages/npm/core-js@1.2.7/es6/regexp.js | 8 + jspm_packages/npm/core-js@1.2.7/es6/set.js | 6 + jspm_packages/npm/core-js@1.2.7/es6/string.js | 15 + jspm_packages/npm/core-js@1.2.7/es6/symbol.js | 4 + .../npm/core-js@1.2.7/es6/weak-map.js | 5 + .../npm/core-js@1.2.7/es6/weak-set.js | 5 + jspm_packages/npm/core-js@1.2.7/es7.js | 2 + jspm_packages/npm/core-js@1.2.7/es7/array.js | 3 + jspm_packages/npm/core-js@1.2.7/es7/index.js | 14 + jspm_packages/npm/core-js@1.2.7/es7/map.js | 3 + jspm_packages/npm/core-js@1.2.7/es7/object.js | 5 + jspm_packages/npm/core-js@1.2.7/es7/regexp.js | 3 + jspm_packages/npm/core-js@1.2.7/es7/set.js | 3 + jspm_packages/npm/core-js@1.2.7/es7/string.js | 7 + jspm_packages/npm/core-js@1.2.7/fn/_.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/array.js | 2 + .../npm/core-js@1.2.7/fn/array/concat.js | 3 + .../npm/core-js@1.2.7/fn/array/copy-within.js | 3 + .../npm/core-js@1.2.7/fn/array/entries.js | 3 + .../npm/core-js@1.2.7/fn/array/every.js | 3 + .../npm/core-js@1.2.7/fn/array/fill.js | 3 + .../npm/core-js@1.2.7/fn/array/filter.js | 3 + .../npm/core-js@1.2.7/fn/array/find-index.js | 3 + .../npm/core-js@1.2.7/fn/array/find.js | 3 + .../npm/core-js@1.2.7/fn/array/for-each.js | 3 + .../npm/core-js@1.2.7/fn/array/from.js | 4 + .../npm/core-js@1.2.7/fn/array/includes.js | 3 + .../npm/core-js@1.2.7/fn/array/index-of.js | 3 + .../npm/core-js@1.2.7/fn/array/index.js | 13 + .../npm/core-js@1.2.7/fn/array/iterator.js | 3 + .../npm/core-js@1.2.7/fn/array/join.js | 3 + .../npm/core-js@1.2.7/fn/array/keys.js | 3 + .../core-js@1.2.7/fn/array/last-index-of.js | 3 + .../npm/core-js@1.2.7/fn/array/map.js | 3 + .../npm/core-js@1.2.7/fn/array/of.js | 3 + .../npm/core-js@1.2.7/fn/array/pop.js | 3 + .../npm/core-js@1.2.7/fn/array/push.js | 3 + .../core-js@1.2.7/fn/array/reduce-right.js | 3 + .../npm/core-js@1.2.7/fn/array/reduce.js | 3 + .../npm/core-js@1.2.7/fn/array/reverse.js | 3 + .../npm/core-js@1.2.7/fn/array/shift.js | 3 + .../npm/core-js@1.2.7/fn/array/slice.js | 3 + .../npm/core-js@1.2.7/fn/array/some.js | 3 + .../npm/core-js@1.2.7/fn/array/sort.js | 3 + .../npm/core-js@1.2.7/fn/array/splice.js | 3 + .../npm/core-js@1.2.7/fn/array/unshift.js | 3 + .../npm/core-js@1.2.7/fn/array/values.js | 3 + .../npm/core-js@1.2.7/fn/clear-immediate.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/delay.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/dict.js | 3 + .../npm/core-js@1.2.7/fn/function.js | 2 + .../core-js@1.2.7/fn/function/has-instance.js | 3 + .../npm/core-js@1.2.7/fn/function/index.js | 5 + .../npm/core-js@1.2.7/fn/function/name.js | 2 + .../npm/core-js@1.2.7/fn/function/part.js | 3 + .../core-js@1.2.7/fn/get-iterator-method.js | 4 + .../npm/core-js@1.2.7/fn/get-iterator.js | 4 + .../npm/core-js@1.2.7/fn/html-collection.js | 2 + .../core-js@1.2.7/fn/html-collection/index.js | 3 + .../fn/html-collection/iterator.js | 3 + .../npm/core-js@1.2.7/fn/is-iterable.js | 4 + .../npm/core-js@1.2.7/fn/json/stringify.js | 5 + jspm_packages/npm/core-js@1.2.7/fn/log.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/map.js | 7 + jspm_packages/npm/core-js@1.2.7/fn/math.js | 2 + .../npm/core-js@1.2.7/fn/math/acosh.js | 3 + .../npm/core-js@1.2.7/fn/math/asinh.js | 3 + .../npm/core-js@1.2.7/fn/math/atanh.js | 3 + .../npm/core-js@1.2.7/fn/math/cbrt.js | 3 + .../npm/core-js@1.2.7/fn/math/clz32.js | 3 + .../npm/core-js@1.2.7/fn/math/cosh.js | 3 + .../npm/core-js@1.2.7/fn/math/expm1.js | 3 + .../npm/core-js@1.2.7/fn/math/fround.js | 3 + .../npm/core-js@1.2.7/fn/math/hypot.js | 3 + .../npm/core-js@1.2.7/fn/math/imul.js | 3 + .../npm/core-js@1.2.7/fn/math/index.js | 19 + .../npm/core-js@1.2.7/fn/math/log10.js | 3 + .../npm/core-js@1.2.7/fn/math/log1p.js | 3 + .../npm/core-js@1.2.7/fn/math/log2.js | 3 + .../npm/core-js@1.2.7/fn/math/sign.js | 3 + .../npm/core-js@1.2.7/fn/math/sinh.js | 3 + .../npm/core-js@1.2.7/fn/math/tanh.js | 3 + .../npm/core-js@1.2.7/fn/math/trunc.js | 3 + .../npm/core-js@1.2.7/fn/node-list.js | 2 + .../npm/core-js@1.2.7/fn/node-list/index.js | 3 + .../core-js@1.2.7/fn/node-list/iterator.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/number.js | 2 + .../npm/core-js@1.2.7/fn/number/epsilon.js | 3 + .../npm/core-js@1.2.7/fn/number/index.js | 13 + .../npm/core-js@1.2.7/fn/number/is-finite.js | 3 + .../npm/core-js@1.2.7/fn/number/is-integer.js | 3 + .../npm/core-js@1.2.7/fn/number/is-nan.js | 3 + .../fn/number/is-safe-integer.js | 3 + .../npm/core-js@1.2.7/fn/number/iterator.js | 6 + .../fn/number/max-safe-integer.js | 3 + .../fn/number/min-safe-integer.js | 3 + .../core-js@1.2.7/fn/number/parse-float.js | 3 + .../npm/core-js@1.2.7/fn/number/parse-int.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/object.js | 2 + .../npm/core-js@1.2.7/fn/object/assign.js | 3 + .../npm/core-js@1.2.7/fn/object/classof.js | 3 + .../npm/core-js@1.2.7/fn/object/create.js | 5 + .../fn/object/define-properties.js | 5 + .../fn/object/define-property.js | 5 + .../npm/core-js@1.2.7/fn/object/define.js | 3 + .../npm/core-js@1.2.7/fn/object/entries.js | 3 + .../npm/core-js@1.2.7/fn/object/freeze.js | 3 + .../fn/object/get-own-property-descriptor.js | 6 + .../fn/object/get-own-property-descriptors.js | 3 + .../fn/object/get-own-property-names.js | 6 + .../fn/object/get-own-property-symbols.js | 3 + .../fn/object/get-prototype-of.js | 3 + .../npm/core-js@1.2.7/fn/object/index.js | 24 + .../core-js@1.2.7/fn/object/is-extensible.js | 3 + .../npm/core-js@1.2.7/fn/object/is-frozen.js | 3 + .../npm/core-js@1.2.7/fn/object/is-object.js | 3 + .../npm/core-js@1.2.7/fn/object/is-sealed.js | 3 + .../npm/core-js@1.2.7/fn/object/is.js | 3 + .../npm/core-js@1.2.7/fn/object/keys.js | 3 + .../npm/core-js@1.2.7/fn/object/make.js | 3 + .../fn/object/prevent-extensions.js | 3 + .../npm/core-js@1.2.7/fn/object/seal.js | 3 + .../fn/object/set-prototype-of.js | 3 + .../npm/core-js@1.2.7/fn/object/values.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/promise.js | 6 + jspm_packages/npm/core-js@1.2.7/fn/reflect.js | 2 + .../npm/core-js@1.2.7/fn/reflect/apply.js | 3 + .../npm/core-js@1.2.7/fn/reflect/construct.js | 3 + .../fn/reflect/define-property.js | 3 + .../fn/reflect/delete-property.js | 3 + .../npm/core-js@1.2.7/fn/reflect/enumerate.js | 3 + .../fn/reflect/get-own-property-descriptor.js | 3 + .../fn/reflect/get-prototype-of.js | 3 + .../npm/core-js@1.2.7/fn/reflect/get.js | 3 + .../npm/core-js@1.2.7/fn/reflect/has.js | 3 + .../npm/core-js@1.2.7/fn/reflect/index.js | 16 + .../core-js@1.2.7/fn/reflect/is-extensible.js | 3 + .../npm/core-js@1.2.7/fn/reflect/own-keys.js | 3 + .../fn/reflect/prevent-extensions.js | 3 + .../fn/reflect/set-prototype-of.js | 3 + .../npm/core-js@1.2.7/fn/reflect/set.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/regexp.js | 2 + .../npm/core-js@1.2.7/fn/regexp/escape.js | 3 + .../npm/core-js@1.2.7/fn/regexp/index.js | 9 + .../npm/core-js@1.2.7/fn/set-immediate.js | 3 + .../npm/core-js@1.2.7/fn/set-interval.js | 3 + .../npm/core-js@1.2.7/fn/set-timeout.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/set.js | 7 + jspm_packages/npm/core-js@1.2.7/fn/string.js | 2 + .../npm/core-js@1.2.7/fn/string/at.js | 3 + .../core-js@1.2.7/fn/string/code-point-at.js | 3 + .../npm/core-js@1.2.7/fn/string/ends-with.js | 3 + .../core-js@1.2.7/fn/string/escape-html.js | 3 + .../fn/string/from-code-point.js | 3 + .../npm/core-js@1.2.7/fn/string/includes.js | 3 + .../npm/core-js@1.2.7/fn/string/index.js | 22 + .../npm/core-js@1.2.7/fn/string/iterator.js | 6 + .../npm/core-js@1.2.7/fn/string/pad-left.js | 3 + .../npm/core-js@1.2.7/fn/string/pad-right.js | 3 + .../npm/core-js@1.2.7/fn/string/raw.js | 3 + .../npm/core-js@1.2.7/fn/string/repeat.js | 3 + .../core-js@1.2.7/fn/string/starts-with.js | 3 + .../npm/core-js@1.2.7/fn/string/trim-left.js | 3 + .../npm/core-js@1.2.7/fn/string/trim-right.js | 3 + .../npm/core-js@1.2.7/fn/string/trim.js | 3 + .../core-js@1.2.7/fn/string/unescape-html.js | 3 + jspm_packages/npm/core-js@1.2.7/fn/symbol.js | 2 + .../npm/core-js@1.2.7/fn/symbol/for.js | 3 + .../core-js@1.2.7/fn/symbol/has-instance.js | 2 + .../npm/core-js@1.2.7/fn/symbol/index.js | 4 + .../fn/symbol/is-concat-spreadable.js | 2 + .../npm/core-js@1.2.7/fn/symbol/iterator.js | 4 + .../npm/core-js@1.2.7/fn/symbol/key-for.js | 3 + .../npm/core-js@1.2.7/fn/symbol/match.js | 3 + .../npm/core-js@1.2.7/fn/symbol/replace.js | 3 + .../npm/core-js@1.2.7/fn/symbol/search.js | 3 + .../npm/core-js@1.2.7/fn/symbol/species.js | 2 + .../npm/core-js@1.2.7/fn/symbol/split.js | 3 + .../core-js@1.2.7/fn/symbol/to-primitive.js | 2 + .../core-js@1.2.7/fn/symbol/to-string-tag.js | 3 + .../core-js@1.2.7/fn/symbol/unscopables.js | 2 + .../npm/core-js@1.2.7/fn/weak-map.js | 5 + .../npm/core-js@1.2.7/fn/weak-set.js | 5 + jspm_packages/npm/core-js@1.2.7/index.js | 17 + jspm_packages/npm/core-js@1.2.7/js.js | 2 + jspm_packages/npm/core-js@1.2.7/js/array.js | 3 + jspm_packages/npm/core-js@1.2.7/js/index.js | 3 + jspm_packages/npm/core-js@1.2.7/library.js | 2 + .../npm/core-js@1.2.7/library/core.js | 2 + .../npm/core-js@1.2.7/library/core/_.js | 3 + .../npm/core-js@1.2.7/library/core/delay.js | 3 + .../npm/core-js@1.2.7/library/core/dict.js | 3 + .../core-js@1.2.7/library/core/function.js | 3 + .../npm/core-js@1.2.7/library/core/index.js | 16 + .../npm/core-js@1.2.7/library/core/log.js | 3 + .../npm/core-js@1.2.7/library/core/number.js | 3 + .../npm/core-js@1.2.7/library/core/object.js | 6 + .../npm/core-js@1.2.7/library/core/string.js | 4 + .../npm/core-js@1.2.7/library/es5.js | 2 + .../npm/core-js@1.2.7/library/es5/index.js | 10 + .../npm/core-js@1.2.7/library/es6.js | 2 + .../npm/core-js@1.2.7/library/es6/array.js | 11 + .../npm/core-js@1.2.7/library/es6/function.js | 4 + .../npm/core-js@1.2.7/library/es6/index.js | 88 + .../npm/core-js@1.2.7/library/es6/map.js | 6 + .../npm/core-js@1.2.7/library/es6/math.js | 19 + .../npm/core-js@1.2.7/library/es6/number.js | 12 + .../npm/core-js@1.2.7/library/es6/object.js | 17 + .../npm/core-js@1.2.7/library/es6/promise.js | 6 + .../npm/core-js@1.2.7/library/es6/reflect.js | 16 + .../npm/core-js@1.2.7/library/es6/regexp.js | 8 + .../npm/core-js@1.2.7/library/es6/set.js | 6 + .../npm/core-js@1.2.7/library/es6/string.js | 15 + .../npm/core-js@1.2.7/library/es6/symbol.js | 4 + .../npm/core-js@1.2.7/library/es6/weak-map.js | 5 + .../npm/core-js@1.2.7/library/es6/weak-set.js | 5 + .../npm/core-js@1.2.7/library/es7.js | 2 + .../npm/core-js@1.2.7/library/es7/array.js | 3 + .../npm/core-js@1.2.7/library/es7/index.js | 14 + .../npm/core-js@1.2.7/library/es7/map.js | 3 + .../npm/core-js@1.2.7/library/es7/object.js | 5 + .../npm/core-js@1.2.7/library/es7/regexp.js | 3 + .../npm/core-js@1.2.7/library/es7/set.js | 3 + .../npm/core-js@1.2.7/library/es7/string.js | 7 + .../npm/core-js@1.2.7/library/fn/_.js | 3 + .../npm/core-js@1.2.7/library/fn/array.js | 2 + .../core-js@1.2.7/library/fn/array/concat.js | 3 + .../library/fn/array/copy-within.js | 3 + .../core-js@1.2.7/library/fn/array/entries.js | 3 + .../core-js@1.2.7/library/fn/array/every.js | 3 + .../core-js@1.2.7/library/fn/array/fill.js | 3 + .../core-js@1.2.7/library/fn/array/filter.js | 3 + .../library/fn/array/find-index.js | 3 + .../core-js@1.2.7/library/fn/array/find.js | 3 + .../library/fn/array/for-each.js | 3 + .../core-js@1.2.7/library/fn/array/from.js | 4 + .../library/fn/array/includes.js | 3 + .../library/fn/array/index-of.js | 3 + .../core-js@1.2.7/library/fn/array/index.js | 13 + .../library/fn/array/iterator.js | 3 + .../core-js@1.2.7/library/fn/array/join.js | 3 + .../core-js@1.2.7/library/fn/array/keys.js | 3 + .../library/fn/array/last-index-of.js | 3 + .../npm/core-js@1.2.7/library/fn/array/map.js | 3 + .../npm/core-js@1.2.7/library/fn/array/of.js | 3 + .../npm/core-js@1.2.7/library/fn/array/pop.js | 3 + .../core-js@1.2.7/library/fn/array/push.js | 3 + .../library/fn/array/reduce-right.js | 3 + .../core-js@1.2.7/library/fn/array/reduce.js | 3 + .../core-js@1.2.7/library/fn/array/reverse.js | 3 + .../core-js@1.2.7/library/fn/array/shift.js | 3 + .../core-js@1.2.7/library/fn/array/slice.js | 3 + .../core-js@1.2.7/library/fn/array/some.js | 3 + .../core-js@1.2.7/library/fn/array/sort.js | 3 + .../core-js@1.2.7/library/fn/array/splice.js | 3 + .../core-js@1.2.7/library/fn/array/unshift.js | 3 + .../core-js@1.2.7/library/fn/array/values.js | 3 + .../library/fn/clear-immediate.js | 3 + .../npm/core-js@1.2.7/library/fn/delay.js | 3 + .../npm/core-js@1.2.7/library/fn/dict.js | 3 + .../npm/core-js@1.2.7/library/fn/function.js | 2 + .../library/fn/function/has-instance.js | 3 + .../library/fn/function/index.js | 5 + .../core-js@1.2.7/library/fn/function/name.js | 2 + .../core-js@1.2.7/library/fn/function/part.js | 3 + .../library/fn/get-iterator-method.js | 4 + .../core-js@1.2.7/library/fn/get-iterator.js | 4 + .../library/fn/html-collection.js | 2 + .../library/fn/html-collection/index.js | 3 + .../library/fn/html-collection/iterator.js | 3 + .../core-js@1.2.7/library/fn/is-iterable.js | 4 + .../library/fn/json/stringify.js | 5 + .../npm/core-js@1.2.7/library/fn/log.js | 3 + .../npm/core-js@1.2.7/library/fn/map.js | 7 + .../npm/core-js@1.2.7/library/fn/math.js | 2 + .../core-js@1.2.7/library/fn/math/acosh.js | 3 + .../core-js@1.2.7/library/fn/math/asinh.js | 3 + .../core-js@1.2.7/library/fn/math/atanh.js | 3 + .../npm/core-js@1.2.7/library/fn/math/cbrt.js | 3 + .../core-js@1.2.7/library/fn/math/clz32.js | 3 + .../npm/core-js@1.2.7/library/fn/math/cosh.js | 3 + .../core-js@1.2.7/library/fn/math/expm1.js | 3 + .../core-js@1.2.7/library/fn/math/fround.js | 3 + .../core-js@1.2.7/library/fn/math/hypot.js | 3 + .../npm/core-js@1.2.7/library/fn/math/imul.js | 3 + .../core-js@1.2.7/library/fn/math/index.js | 19 + .../core-js@1.2.7/library/fn/math/log10.js | 3 + .../core-js@1.2.7/library/fn/math/log1p.js | 3 + .../npm/core-js@1.2.7/library/fn/math/log2.js | 3 + .../npm/core-js@1.2.7/library/fn/math/sign.js | 3 + .../npm/core-js@1.2.7/library/fn/math/sinh.js | 3 + .../npm/core-js@1.2.7/library/fn/math/tanh.js | 3 + .../core-js@1.2.7/library/fn/math/trunc.js | 3 + .../npm/core-js@1.2.7/library/fn/node-list.js | 2 + .../library/fn/node-list/index.js | 3 + .../library/fn/node-list/iterator.js | 3 + .../npm/core-js@1.2.7/library/fn/number.js | 2 + .../library/fn/number/epsilon.js | 3 + .../core-js@1.2.7/library/fn/number/index.js | 13 + .../library/fn/number/is-finite.js | 3 + .../library/fn/number/is-integer.js | 3 + .../core-js@1.2.7/library/fn/number/is-nan.js | 3 + .../library/fn/number/is-safe-integer.js | 3 + .../library/fn/number/iterator.js | 6 + .../library/fn/number/max-safe-integer.js | 3 + .../library/fn/number/min-safe-integer.js | 3 + .../library/fn/number/parse-float.js | 3 + .../library/fn/number/parse-int.js | 3 + .../npm/core-js@1.2.7/library/fn/object.js | 2 + .../core-js@1.2.7/library/fn/object/assign.js | 3 + .../library/fn/object/classof.js | 3 + .../core-js@1.2.7/library/fn/object/create.js | 5 + .../library/fn/object/define-properties.js | 5 + .../library/fn/object/define-property.js | 5 + .../core-js@1.2.7/library/fn/object/define.js | 3 + .../library/fn/object/entries.js | 3 + .../core-js@1.2.7/library/fn/object/freeze.js | 3 + .../fn/object/get-own-property-descriptor.js | 6 + .../fn/object/get-own-property-descriptors.js | 3 + .../fn/object/get-own-property-names.js | 6 + .../fn/object/get-own-property-symbols.js | 3 + .../library/fn/object/get-prototype-of.js | 3 + .../core-js@1.2.7/library/fn/object/index.js | 24 + .../library/fn/object/is-extensible.js | 3 + .../library/fn/object/is-frozen.js | 3 + .../library/fn/object/is-object.js | 3 + .../library/fn/object/is-sealed.js | 3 + .../npm/core-js@1.2.7/library/fn/object/is.js | 3 + .../core-js@1.2.7/library/fn/object/keys.js | 3 + .../core-js@1.2.7/library/fn/object/make.js | 3 + .../library/fn/object/prevent-extensions.js | 3 + .../core-js@1.2.7/library/fn/object/seal.js | 3 + .../library/fn/object/set-prototype-of.js | 3 + .../core-js@1.2.7/library/fn/object/values.js | 3 + .../npm/core-js@1.2.7/library/fn/promise.js | 6 + .../npm/core-js@1.2.7/library/fn/reflect.js | 2 + .../core-js@1.2.7/library/fn/reflect/apply.js | 3 + .../library/fn/reflect/construct.js | 3 + .../library/fn/reflect/define-property.js | 3 + .../library/fn/reflect/delete-property.js | 3 + .../library/fn/reflect/enumerate.js | 3 + .../fn/reflect/get-own-property-descriptor.js | 3 + .../library/fn/reflect/get-prototype-of.js | 3 + .../core-js@1.2.7/library/fn/reflect/get.js | 3 + .../core-js@1.2.7/library/fn/reflect/has.js | 3 + .../core-js@1.2.7/library/fn/reflect/index.js | 16 + .../library/fn/reflect/is-extensible.js | 3 + .../library/fn/reflect/own-keys.js | 3 + .../library/fn/reflect/prevent-extensions.js | 3 + .../library/fn/reflect/set-prototype-of.js | 3 + .../core-js@1.2.7/library/fn/reflect/set.js | 3 + .../npm/core-js@1.2.7/library/fn/regexp.js | 2 + .../core-js@1.2.7/library/fn/regexp/escape.js | 3 + .../core-js@1.2.7/library/fn/regexp/index.js | 9 + .../core-js@1.2.7/library/fn/set-immediate.js | 3 + .../core-js@1.2.7/library/fn/set-interval.js | 3 + .../core-js@1.2.7/library/fn/set-timeout.js | 3 + .../npm/core-js@1.2.7/library/fn/set.js | 7 + .../npm/core-js@1.2.7/library/fn/string.js | 2 + .../npm/core-js@1.2.7/library/fn/string/at.js | 3 + .../library/fn/string/code-point-at.js | 3 + .../library/fn/string/ends-with.js | 3 + .../library/fn/string/escape-html.js | 3 + .../library/fn/string/from-code-point.js | 3 + .../library/fn/string/includes.js | 3 + .../core-js@1.2.7/library/fn/string/index.js | 22 + .../library/fn/string/iterator.js | 6 + .../library/fn/string/pad-left.js | 3 + .../library/fn/string/pad-right.js | 3 + .../core-js@1.2.7/library/fn/string/raw.js | 3 + .../core-js@1.2.7/library/fn/string/repeat.js | 3 + .../library/fn/string/starts-with.js | 3 + .../library/fn/string/trim-left.js | 3 + .../library/fn/string/trim-right.js | 3 + .../core-js@1.2.7/library/fn/string/trim.js | 3 + .../library/fn/string/unescape-html.js | 3 + .../npm/core-js@1.2.7/library/fn/symbol.js | 2 + .../core-js@1.2.7/library/fn/symbol/for.js | 3 + .../library/fn/symbol/has-instance.js | 2 + .../core-js@1.2.7/library/fn/symbol/index.js | 4 + .../library/fn/symbol/is-concat-spreadable.js | 2 + .../library/fn/symbol/iterator.js | 4 + .../library/fn/symbol/key-for.js | 3 + .../core-js@1.2.7/library/fn/symbol/match.js | 3 + .../library/fn/symbol/replace.js | 3 + .../core-js@1.2.7/library/fn/symbol/search.js | 3 + .../library/fn/symbol/species.js | 2 + .../core-js@1.2.7/library/fn/symbol/split.js | 3 + .../library/fn/symbol/to-primitive.js | 2 + .../library/fn/symbol/to-string-tag.js | 3 + .../library/fn/symbol/unscopables.js | 2 + .../npm/core-js@1.2.7/library/fn/weak-map.js | 5 + .../npm/core-js@1.2.7/library/fn/weak-set.js | 5 + .../npm/core-js@1.2.7/library/index.js | 17 + jspm_packages/npm/core-js@1.2.7/library/js.js | 2 + .../npm/core-js@1.2.7/library/js/array.js | 3 + .../npm/core-js@1.2.7/library/js/index.js | 3 + .../library/modules/$.a-function.js | 5 + .../library/modules/$.add-to-unscopables.js | 2 + .../library/modules/$.an-object.js | 7 + .../library/modules/$.array-copy-within.js | 29 + .../library/modules/$.array-fill.js | 17 + .../library/modules/$.array-includes.js | 25 + .../library/modules/$.array-methods.js | 47 + .../library/modules/$.array-species-create.js | 18 + .../core-js@1.2.7/library/modules/$.buffer.js | 295 + .../library/modules/$.classof.js | 12 + .../core-js@1.2.7/library/modules/$.cof.js | 6 + .../library/modules/$.collection-strong.js | 154 + .../library/modules/$.collection-to-json.js | 12 + .../library/modules/$.collection-weak.js | 90 + .../library/modules/$.collection.js | 53 + .../core-js@1.2.7/library/modules/$.core.js | 3 + .../core-js@1.2.7/library/modules/$.ctx.js | 24 + .../library/modules/$.defined.js | 5 + .../library/modules/$.descriptors.js | 6 + .../library/modules/$.dom-create.js | 7 + .../library/modules/$.enum-keys.js | 16 + .../core-js@1.2.7/library/modules/$.export.js | 42 + .../library/modules/$.fails-is-regexp.js | 14 + .../core-js@1.2.7/library/modules/$.fails.js | 8 + .../library/modules/$.fix-re-wks.js | 25 + .../core-js@1.2.7/library/modules/$.flags.js | 18 + .../core-js@1.2.7/library/modules/$.for-of.js | 25 + .../library/modules/$.get-names.js | 17 + .../core-js@1.2.7/library/modules/$.global.js | 4 + .../core-js@1.2.7/library/modules/$.has.js | 5 + .../core-js@1.2.7/library/modules/$.hide.js | 9 + .../core-js@1.2.7/library/modules/$.html.js | 2 + .../core-js@1.2.7/library/modules/$.invoke.js | 16 + .../library/modules/$.iobject.js | 5 + .../library/modules/$.is-array-iter.js | 7 + .../library/modules/$.is-array.js | 5 + .../library/modules/$.is-integer.js | 6 + .../library/modules/$.is-object.js | 4 + .../library/modules/$.is-regexp.js | 8 + .../library/modules/$.iter-call.js | 12 + .../library/modules/$.iter-create.js | 13 + .../library/modules/$.iter-define.js | 79 + .../library/modules/$.iter-detect.js | 29 + .../library/modules/$.iter-step.js | 4 + .../library/modules/$.iterators.js | 2 + .../npm/core-js@1.2.7/library/modules/$.js | 14 + .../core-js@1.2.7/library/modules/$.keyof.js | 13 + .../library/modules/$.library.js | 2 + .../library/modules/$.math-expm1.js | 4 + .../library/modules/$.math-log1p.js | 4 + .../library/modules/$.math-sign.js | 4 + .../library/modules/$.microtask.js | 68 + .../library/modules/$.object-assign.js | 35 + .../library/modules/$.object-define.js | 13 + .../library/modules/$.object-sap.js | 12 + .../library/modules/$.object-to-array.js | 19 + .../library/modules/$.own-keys.js | 9 + .../library/modules/$.partial.js | 34 + .../core-js@1.2.7/library/modules/$.path.js | 2 + .../library/modules/$.property-desc.js | 9 + .../library/modules/$.redefine-all.js | 7 + .../library/modules/$.redefine.js | 2 + .../library/modules/$.replacer.js | 9 + .../library/modules/$.same-value.js | 4 + .../library/modules/$.set-proto.js | 29 + .../library/modules/$.set-species.js | 16 + .../library/modules/$.set-to-string-tag.js | 11 + .../core-js@1.2.7/library/modules/$.shared.js | 7 + .../library/modules/$.species-constructor.js | 9 + .../library/modules/$.strict-new.js | 5 + .../library/modules/$.string-at.js | 16 + .../library/modules/$.string-context.js | 8 + .../library/modules/$.string-pad.js | 19 + .../library/modules/$.string-repeat.js | 15 + .../library/modules/$.string-trim.js | 25 + .../core-js@1.2.7/library/modules/$.task.js | 75 + .../library/modules/$.to-index.js | 8 + .../library/modules/$.to-integer.js | 6 + .../library/modules/$.to-iobject.js | 6 + .../library/modules/$.to-length.js | 6 + .../library/modules/$.to-object.js | 5 + .../library/modules/$.to-primitive.js | 15 + .../library/modules/$.typed-array.js | 365 + .../core-js@1.2.7/library/modules/$.typed.js | 26 + .../core-js@1.2.7/library/modules/$.uid.js | 6 + .../core-js@1.2.7/library/modules/$.wks.js | 7 + .../library/modules/core.delay.js | 10 + .../library/modules/core.dict.js | 159 + .../library/modules/core.function.part.js | 5 + .../modules/core.get-iterator-method.js | 8 + .../library/modules/core.get-iterator.js | 9 + .../library/modules/core.is-iterable.js | 8 + .../core-js@1.2.7/library/modules/core.log.js | 22 + .../library/modules/core.number.iterator.js | 13 + .../library/modules/core.object.classof.js | 3 + .../library/modules/core.object.define.js | 4 + .../library/modules/core.object.is-object.js | 3 + .../library/modules/core.object.make.js | 7 + .../modules/core.string.escape-html.js | 13 + .../modules/core.string.unescape-html.js | 13 + .../npm/core-js@1.2.7/library/modules/es5.js | 251 + .../library/modules/es6.array.copy-within.js | 4 + .../library/modules/es6.array.fill.js | 4 + .../library/modules/es6.array.find-index.js | 14 + .../library/modules/es6.array.find.js | 14 + .../library/modules/es6.array.from.js | 39 + .../library/modules/es6.array.iterator.js | 28 + .../library/modules/es6.array.of.js | 16 + .../library/modules/es6.array.species.js | 2 + .../library/modules/es6.date.to-string.js | 2 + .../modules/es6.function.has-instance.js | 17 + .../library/modules/es6.function.name.js | 2 + .../core-js@1.2.7/library/modules/es6.map.js | 16 + .../library/modules/es6.math.acosh.js | 8 + .../library/modules/es6.math.asinh.js | 6 + .../library/modules/es6.math.atanh.js | 5 + .../library/modules/es6.math.cbrt.js | 6 + .../library/modules/es6.math.clz32.js | 5 + .../library/modules/es6.math.cosh.js | 6 + .../library/modules/es6.math.expm1.js | 3 + .../library/modules/es6.math.fround.js | 24 + .../library/modules/es6.math.hypot.js | 25 + .../library/modules/es6.math.imul.js | 13 + .../library/modules/es6.math.log10.js | 5 + .../library/modules/es6.math.log1p.js | 3 + .../library/modules/es6.math.log2.js | 5 + .../library/modules/es6.math.sign.js | 3 + .../library/modules/es6.math.sinh.js | 9 + .../library/modules/es6.math.tanh.js | 9 + .../library/modules/es6.math.trunc.js | 5 + .../library/modules/es6.number.constructor.js | 2 + .../library/modules/es6.number.epsilon.js | 3 + .../library/modules/es6.number.is-finite.js | 6 + .../library/modules/es6.number.is-integer.js | 3 + .../library/modules/es6.number.is-nan.js | 5 + .../modules/es6.number.is-safe-integer.js | 7 + .../modules/es6.number.max-safe-integer.js | 3 + .../modules/es6.number.min-safe-integer.js | 3 + .../library/modules/es6.number.parse-float.js | 3 + .../library/modules/es6.number.parse-int.js | 3 + .../library/modules/es6.object.assign.js | 3 + .../library/modules/es6.object.freeze.js | 7 + .../es6.object.get-own-property-descriptor.js | 7 + .../es6.object.get-own-property-names.js | 4 + .../modules/es6.object.get-prototype-of.js | 7 + .../modules/es6.object.is-extensible.js | 7 + .../library/modules/es6.object.is-frozen.js | 7 + .../library/modules/es6.object.is-sealed.js | 7 + .../library/modules/es6.object.is.js | 3 + .../library/modules/es6.object.keys.js | 7 + .../modules/es6.object.prevent-extensions.js | 7 + .../library/modules/es6.object.seal.js | 7 + .../modules/es6.object.set-prototype-of.js | 3 + .../library/modules/es6.object.to-string.js | 2 + .../library/modules/es6.promise.js | 310 + .../library/modules/es6.reflect.apply.js | 7 + .../library/modules/es6.reflect.construct.js | 36 + .../modules/es6.reflect.define-property.js | 15 + .../modules/es6.reflect.delete-property.js | 8 + .../library/modules/es6.reflect.enumerate.js | 31 + ...es6.reflect.get-own-property-descriptor.js | 7 + .../modules/es6.reflect.get-prototype-of.js | 7 + .../library/modules/es6.reflect.get.js | 18 + .../library/modules/es6.reflect.has.js | 5 + .../modules/es6.reflect.is-extensible.js | 8 + .../library/modules/es6.reflect.own-keys.js | 3 + .../modules/es6.reflect.prevent-extensions.js | 14 + .../modules/es6.reflect.set-prototype-of.js | 13 + .../library/modules/es6.reflect.set.js | 29 + .../library/modules/es6.regexp.constructor.js | 2 + .../library/modules/es6.regexp.flags.js | 2 + .../library/modules/es6.regexp.match.js | 2 + .../library/modules/es6.regexp.replace.js | 2 + .../library/modules/es6.regexp.search.js | 2 + .../library/modules/es6.regexp.split.js | 2 + .../core-js@1.2.7/library/modules/es6.set.js | 10 + .../modules/es6.string.code-point-at.js | 7 + .../library/modules/es6.string.ends-with.js | 16 + .../modules/es6.string.from-code-point.js | 19 + .../library/modules/es6.string.includes.js | 8 + .../library/modules/es6.string.iterator.js | 22 + .../library/modules/es6.string.raw.js | 18 + .../library/modules/es6.string.repeat.js | 3 + .../library/modules/es6.string.starts-with.js | 14 + .../library/modules/es6.string.trim.js | 7 + .../library/modules/es6.symbol.js | 203 + .../library/modules/es6.typed.array-buffer.js | 37 + .../library/modules/es6.typed.data-view.js | 5 + .../modules/es6.typed.float32-array.js | 6 + .../modules/es6.typed.float64-array.js | 6 + .../library/modules/es6.typed.int16-array.js | 6 + .../library/modules/es6.typed.int32-array.js | 6 + .../library/modules/es6.typed.int8-array.js | 6 + .../library/modules/es6.typed.uint16-array.js | 6 + .../library/modules/es6.typed.uint32-array.js | 6 + .../library/modules/es6.typed.uint8-array.js | 6 + .../modules/es6.typed.uint8-clamped-array.js | 6 + .../library/modules/es6.weak-map.js | 41 + .../library/modules/es6.weak-set.js | 10 + .../library/modules/es7.array.includes.js | 8 + .../library/modules/es7.map.to-json.js | 3 + .../library/modules/es7.object.entries.js | 6 + ...es7.object.get-own-property-descriptors.js | 24 + .../library/modules/es7.object.values.js | 6 + .../library/modules/es7.regexp.escape.js | 6 + .../library/modules/es7.set.to-json.js | 3 + .../library/modules/es7.string.at.js | 7 + .../library/modules/es7.string.pad-left.js | 7 + .../library/modules/es7.string.pad-right.js | 7 + .../library/modules/es7.string.trim-left.js | 7 + .../library/modules/es7.string.trim-right.js | 7 + .../library/modules/js.array.statics.js | 18 + .../library/modules/web.dom.iterable.js | 4 + .../library/modules/web.immediate.js | 7 + .../library/modules/web.timers.js | 16 + .../npm/core-js@1.2.7/library/shim.js | 105 + .../npm/core-js@1.2.7/library/web.js | 2 + .../npm/core-js@1.2.7/library/web/dom.js | 3 + .../core-js@1.2.7/library/web/immediate.js | 3 + .../npm/core-js@1.2.7/library/web/index.js | 5 + .../npm/core-js@1.2.7/library/web/timers.js | 3 + .../npm/core-js@1.2.7/modules/$.a-function.js | 5 + .../modules/$.add-to-unscopables.js | 8 + .../npm/core-js@1.2.7/modules/$.an-object.js | 7 + .../modules/$.array-copy-within.js | 29 + .../npm/core-js@1.2.7/modules/$.array-fill.js | 17 + .../core-js@1.2.7/modules/$.array-includes.js | 25 + .../core-js@1.2.7/modules/$.array-methods.js | 47 + .../modules/$.array-species-create.js | 18 + .../npm/core-js@1.2.7/modules/$.buffer.js | 295 + .../npm/core-js@1.2.7/modules/$.classof.js | 12 + .../npm/core-js@1.2.7/modules/$.cof.js | 6 + .../modules/$.collection-strong.js | 154 + .../modules/$.collection-to-json.js | 12 + .../modules/$.collection-weak.js | 90 + .../npm/core-js@1.2.7/modules/$.collection.js | 80 + .../npm/core-js@1.2.7/modules/$.core.js | 3 + .../npm/core-js@1.2.7/modules/$.ctx.js | 24 + .../npm/core-js@1.2.7/modules/$.defined.js | 5 + .../core-js@1.2.7/modules/$.descriptors.js | 6 + .../npm/core-js@1.2.7/modules/$.dom-create.js | 7 + .../npm/core-js@1.2.7/modules/$.enum-keys.js | 16 + .../npm/core-js@1.2.7/modules/$.export.js | 42 + .../modules/$.fails-is-regexp.js | 14 + .../npm/core-js@1.2.7/modules/$.fails.js | 8 + .../npm/core-js@1.2.7/modules/$.fix-re-wks.js | 25 + .../npm/core-js@1.2.7/modules/$.flags.js | 18 + .../npm/core-js@1.2.7/modules/$.for-of.js | 25 + .../npm/core-js@1.2.7/modules/$.get-names.js | 17 + .../npm/core-js@1.2.7/modules/$.global.js | 4 + .../npm/core-js@1.2.7/modules/$.has.js | 5 + .../npm/core-js@1.2.7/modules/$.hide.js | 9 + .../npm/core-js@1.2.7/modules/$.html.js | 2 + .../npm/core-js@1.2.7/modules/$.invoke.js | 16 + .../npm/core-js@1.2.7/modules/$.iobject.js | 5 + .../core-js@1.2.7/modules/$.is-array-iter.js | 7 + .../npm/core-js@1.2.7/modules/$.is-array.js | 5 + .../npm/core-js@1.2.7/modules/$.is-integer.js | 6 + .../npm/core-js@1.2.7/modules/$.is-object.js | 4 + .../npm/core-js@1.2.7/modules/$.is-regexp.js | 8 + .../npm/core-js@1.2.7/modules/$.iter-call.js | 12 + .../core-js@1.2.7/modules/$.iter-create.js | 13 + .../core-js@1.2.7/modules/$.iter-define.js | 79 + .../core-js@1.2.7/modules/$.iter-detect.js | 29 + .../npm/core-js@1.2.7/modules/$.iter-step.js | 4 + .../npm/core-js@1.2.7/modules/$.iterators.js | 2 + jspm_packages/npm/core-js@1.2.7/modules/$.js | 14 + .../npm/core-js@1.2.7/modules/$.keyof.js | 13 + .../npm/core-js@1.2.7/modules/$.library.js | 2 + .../npm/core-js@1.2.7/modules/$.math-expm1.js | 4 + .../npm/core-js@1.2.7/modules/$.math-log1p.js | 4 + .../npm/core-js@1.2.7/modules/$.math-sign.js | 4 + .../npm/core-js@1.2.7/modules/$.microtask.js | 68 + .../core-js@1.2.7/modules/$.object-assign.js | 35 + .../core-js@1.2.7/modules/$.object-define.js | 13 + .../npm/core-js@1.2.7/modules/$.object-sap.js | 12 + .../modules/$.object-to-array.js | 19 + .../npm/core-js@1.2.7/modules/$.own-keys.js | 9 + .../npm/core-js@1.2.7/modules/$.partial.js | 34 + .../npm/core-js@1.2.7/modules/$.path.js | 2 + .../core-js@1.2.7/modules/$.property-desc.js | 9 + .../core-js@1.2.7/modules/$.redefine-all.js | 7 + .../npm/core-js@1.2.7/modules/$.redefine.js | 25 + .../npm/core-js@1.2.7/modules/$.replacer.js | 9 + .../npm/core-js@1.2.7/modules/$.same-value.js | 4 + .../npm/core-js@1.2.7/modules/$.set-proto.js | 29 + .../core-js@1.2.7/modules/$.set-species.js | 16 + .../modules/$.set-to-string-tag.js | 11 + .../npm/core-js@1.2.7/modules/$.shared.js | 7 + .../modules/$.species-constructor.js | 9 + .../npm/core-js@1.2.7/modules/$.strict-new.js | 5 + .../npm/core-js@1.2.7/modules/$.string-at.js | 16 + .../core-js@1.2.7/modules/$.string-context.js | 8 + .../npm/core-js@1.2.7/modules/$.string-pad.js | 19 + .../core-js@1.2.7/modules/$.string-repeat.js | 15 + .../core-js@1.2.7/modules/$.string-trim.js | 25 + .../npm/core-js@1.2.7/modules/$.task.js | 75 + .../npm/core-js@1.2.7/modules/$.to-index.js | 8 + .../npm/core-js@1.2.7/modules/$.to-integer.js | 6 + .../npm/core-js@1.2.7/modules/$.to-iobject.js | 6 + .../npm/core-js@1.2.7/modules/$.to-length.js | 6 + .../npm/core-js@1.2.7/modules/$.to-object.js | 5 + .../core-js@1.2.7/modules/$.to-primitive.js | 15 + .../core-js@1.2.7/modules/$.typed-array.js | 365 + .../npm/core-js@1.2.7/modules/$.typed.js | 26 + .../npm/core-js@1.2.7/modules/$.uid.js | 6 + .../npm/core-js@1.2.7/modules/$.wks.js | 7 + .../npm/core-js@1.2.7/modules/core.delay.js | 10 + .../npm/core-js@1.2.7/modules/core.dict.js | 159 + .../modules/core.function.part.js | 5 + .../modules/core.get-iterator-method.js | 8 + .../modules/core.get-iterator.js | 9 + .../core-js@1.2.7/modules/core.is-iterable.js | 8 + .../npm/core-js@1.2.7/modules/core.log.js | 22 + .../modules/core.number.iterator.js | 13 + .../modules/core.object.classof.js | 3 + .../modules/core.object.define.js | 4 + .../modules/core.object.is-object.js | 3 + .../core-js@1.2.7/modules/core.object.make.js | 7 + .../modules/core.string.escape-html.js | 13 + .../modules/core.string.unescape-html.js | 13 + .../npm/core-js@1.2.7/modules/es5.js | 251 + .../modules/es6.array.copy-within.js | 4 + .../core-js@1.2.7/modules/es6.array.fill.js | 4 + .../modules/es6.array.find-index.js | 14 + .../core-js@1.2.7/modules/es6.array.find.js | 14 + .../core-js@1.2.7/modules/es6.array.from.js | 39 + .../modules/es6.array.iterator.js | 28 + .../npm/core-js@1.2.7/modules/es6.array.of.js | 16 + .../modules/es6.array.species.js | 2 + .../modules/es6.date.to-string.js | 11 + .../modules/es6.function.has-instance.js | 17 + .../modules/es6.function.name.js | 16 + .../npm/core-js@1.2.7/modules/es6.map.js | 16 + .../core-js@1.2.7/modules/es6.math.acosh.js | 8 + .../core-js@1.2.7/modules/es6.math.asinh.js | 6 + .../core-js@1.2.7/modules/es6.math.atanh.js | 5 + .../core-js@1.2.7/modules/es6.math.cbrt.js | 6 + .../core-js@1.2.7/modules/es6.math.clz32.js | 5 + .../core-js@1.2.7/modules/es6.math.cosh.js | 6 + .../core-js@1.2.7/modules/es6.math.expm1.js | 3 + .../core-js@1.2.7/modules/es6.math.fround.js | 24 + .../core-js@1.2.7/modules/es6.math.hypot.js | 25 + .../core-js@1.2.7/modules/es6.math.imul.js | 13 + .../core-js@1.2.7/modules/es6.math.log10.js | 5 + .../core-js@1.2.7/modules/es6.math.log1p.js | 3 + .../core-js@1.2.7/modules/es6.math.log2.js | 5 + .../core-js@1.2.7/modules/es6.math.sign.js | 3 + .../core-js@1.2.7/modules/es6.math.sinh.js | 9 + .../core-js@1.2.7/modules/es6.math.tanh.js | 9 + .../core-js@1.2.7/modules/es6.math.trunc.js | 5 + .../modules/es6.number.constructor.js | 72 + .../modules/es6.number.epsilon.js | 3 + .../modules/es6.number.is-finite.js | 6 + .../modules/es6.number.is-integer.js | 3 + .../modules/es6.number.is-nan.js | 5 + .../modules/es6.number.is-safe-integer.js | 7 + .../modules/es6.number.max-safe-integer.js | 3 + .../modules/es6.number.min-safe-integer.js | 3 + .../modules/es6.number.parse-float.js | 3 + .../modules/es6.number.parse-int.js | 3 + .../modules/es6.object.assign.js | 3 + .../modules/es6.object.freeze.js | 7 + .../es6.object.get-own-property-descriptor.js | 7 + .../es6.object.get-own-property-names.js | 4 + .../modules/es6.object.get-prototype-of.js | 7 + .../modules/es6.object.is-extensible.js | 7 + .../modules/es6.object.is-frozen.js | 7 + .../modules/es6.object.is-sealed.js | 7 + .../core-js@1.2.7/modules/es6.object.is.js | 3 + .../core-js@1.2.7/modules/es6.object.keys.js | 7 + .../modules/es6.object.prevent-extensions.js | 7 + .../core-js@1.2.7/modules/es6.object.seal.js | 7 + .../modules/es6.object.set-prototype-of.js | 3 + .../modules/es6.object.to-string.js | 10 + .../npm/core-js@1.2.7/modules/es6.promise.js | 310 + .../modules/es6.reflect.apply.js | 7 + .../modules/es6.reflect.construct.js | 36 + .../modules/es6.reflect.define-property.js | 15 + .../modules/es6.reflect.delete-property.js | 8 + .../modules/es6.reflect.enumerate.js | 31 + ...es6.reflect.get-own-property-descriptor.js | 7 + .../modules/es6.reflect.get-prototype-of.js | 7 + .../core-js@1.2.7/modules/es6.reflect.get.js | 18 + .../core-js@1.2.7/modules/es6.reflect.has.js | 5 + .../modules/es6.reflect.is-extensible.js | 8 + .../modules/es6.reflect.own-keys.js | 3 + .../modules/es6.reflect.prevent-extensions.js | 14 + .../modules/es6.reflect.set-prototype-of.js | 13 + .../core-js@1.2.7/modules/es6.reflect.set.js | 29 + .../modules/es6.regexp.constructor.js | 36 + .../core-js@1.2.7/modules/es6.regexp.flags.js | 7 + .../core-js@1.2.7/modules/es6.regexp.match.js | 9 + .../modules/es6.regexp.replace.js | 9 + .../modules/es6.regexp.search.js | 9 + .../core-js@1.2.7/modules/es6.regexp.split.js | 9 + .../npm/core-js@1.2.7/modules/es6.set.js | 10 + .../modules/es6.string.code-point-at.js | 7 + .../modules/es6.string.ends-with.js | 16 + .../modules/es6.string.from-code-point.js | 19 + .../modules/es6.string.includes.js | 8 + .../modules/es6.string.iterator.js | 22 + .../core-js@1.2.7/modules/es6.string.raw.js | 18 + .../modules/es6.string.repeat.js | 3 + .../modules/es6.string.starts-with.js | 14 + .../core-js@1.2.7/modules/es6.string.trim.js | 7 + .../npm/core-js@1.2.7/modules/es6.symbol.js | 203 + .../modules/es6.typed.array-buffer.js | 37 + .../modules/es6.typed.data-view.js | 5 + .../modules/es6.typed.float32-array.js | 6 + .../modules/es6.typed.float64-array.js | 6 + .../modules/es6.typed.int16-array.js | 6 + .../modules/es6.typed.int32-array.js | 6 + .../modules/es6.typed.int8-array.js | 6 + .../modules/es6.typed.uint16-array.js | 6 + .../modules/es6.typed.uint32-array.js | 6 + .../modules/es6.typed.uint8-array.js | 6 + .../modules/es6.typed.uint8-clamped-array.js | 6 + .../npm/core-js@1.2.7/modules/es6.weak-map.js | 41 + .../npm/core-js@1.2.7/modules/es6.weak-set.js | 10 + .../modules/es7.array.includes.js | 8 + .../core-js@1.2.7/modules/es7.map.to-json.js | 3 + .../modules/es7.object.entries.js | 6 + ...es7.object.get-own-property-descriptors.js | 24 + .../modules/es7.object.values.js | 6 + .../modules/es7.regexp.escape.js | 6 + .../core-js@1.2.7/modules/es7.set.to-json.js | 3 + .../core-js@1.2.7/modules/es7.string.at.js | 7 + .../modules/es7.string.pad-left.js | 7 + .../modules/es7.string.pad-right.js | 7 + .../modules/es7.string.trim-left.js | 7 + .../modules/es7.string.trim-right.js | 7 + .../core-js@1.2.7/modules/js.array.statics.js | 18 + .../modules/library/$.add-to-unscopables.js | 2 + .../modules/library/$.collection.js | 53 + .../core-js@1.2.7/modules/library/$.export.js | 47 + .../modules/library/$.library.js | 2 + .../core-js@1.2.7/modules/library/$.path.js | 2 + .../modules/library/$.redefine.js | 2 + .../modules/library/$.set-species.js | 14 + .../modules/library/es6.date.to-string.js | 2 + .../modules/library/es6.function.name.js | 2 + .../modules/library/es6.number.constructor.js | 2 + .../modules/library/es6.object.to-string.js | 2 + .../modules/library/es6.regexp.constructor.js | 2 + .../modules/library/es6.regexp.flags.js | 2 + .../modules/library/es6.regexp.match.js | 2 + .../modules/library/es6.regexp.replace.js | 2 + .../modules/library/es6.regexp.search.js | 2 + .../modules/library/es6.regexp.split.js | 2 + .../modules/library/web.dom.iterable.js | 4 + .../core-js@1.2.7/modules/web.dom.iterable.js | 15 + .../core-js@1.2.7/modules/web.immediate.js | 7 + .../npm/core-js@1.2.7/modules/web.timers.js | 16 + jspm_packages/npm/core-js@1.2.7/package.json | 59 + jspm_packages/npm/core-js@1.2.7/shim.js | 105 + jspm_packages/npm/core-js@1.2.7/web.js | 2 + jspm_packages/npm/core-js@1.2.7/web/dom.js | 3 + .../npm/core-js@1.2.7/web/immediate.js | 3 + jspm_packages/npm/core-js@1.2.7/web/index.js | 5 + jspm_packages/npm/core-js@1.2.7/web/timers.js | 3 + jspm_packages/npm/ieee754@1.1.8.js | 1 + jspm_packages/npm/ieee754@1.1.8/.jspm-hash | 1 + jspm_packages/npm/ieee754@1.1.8/.travis.yml | 7 + jspm_packages/npm/ieee754@1.1.8/.zuul.yml | 20 + jspm_packages/npm/ieee754@1.1.8/LICENSE | 28 + jspm_packages/npm/ieee754@1.1.8/README.md | 47 + jspm_packages/npm/ieee754@1.1.8/index.js | 85 + jspm_packages/npm/ieee754@1.1.8/package.json | 37 + jspm_packages/npm/ieee754@1.1.8/test/basic.js | 20 + jspm_packages/npm/indexof@0.0.1.js | 1 + jspm_packages/npm/indexof@0.0.1/.jspm-hash | 1 + jspm_packages/npm/indexof@0.0.1/.npmignore | 2 + jspm_packages/npm/indexof@0.0.1/Makefile | 11 + jspm_packages/npm/indexof@0.0.1/Readme.md | 15 + .../npm/indexof@0.0.1/component.json | 10 + jspm_packages/npm/indexof@0.0.1/index.js | 11 + jspm_packages/npm/indexof@0.0.1/package.json | 12 + jspm_packages/npm/inherits@2.0.1.js | 1 + jspm_packages/npm/inherits@2.0.1/.jspm-hash | 1 + jspm_packages/npm/inherits@2.0.1/LICENSE | 16 + jspm_packages/npm/inherits@2.0.1/README.md | 42 + jspm_packages/npm/inherits@2.0.1/inherits.js | 2 + .../npm/inherits@2.0.1/inherits_browser.js | 24 + jspm_packages/npm/inherits@2.0.1/package.json | 22 + jspm_packages/npm/isarray@1.0.0.js | 1 + jspm_packages/npm/isarray@1.0.0/.jspm-hash | 1 + jspm_packages/npm/isarray@1.0.0/.npmignore | 1 + jspm_packages/npm/isarray@1.0.0/.travis.yml | 4 + jspm_packages/npm/isarray@1.0.0/Makefile | 6 + jspm_packages/npm/isarray@1.0.0/README.md | 60 + .../npm/isarray@1.0.0/component.json | 19 + jspm_packages/npm/isarray@1.0.0/index.js | 6 + jspm_packages/npm/isarray@1.0.0/package.json | 45 + jspm_packages/npm/isarray@1.0.0/test.js | 16 + jspm_packages/npm/path-browserify@0.0.0.js | 1 + .../npm/path-browserify@0.0.0/.jspm-hash | 1 + .../npm/path-browserify@0.0.0/LICENSE | 18 + .../npm/path-browserify@0.0.0/index.js | 149 + .../npm/path-browserify@0.0.0/package.json | 29 + .../npm/path-browserify@0.0.0/readme.markdown | 3 + jspm_packages/npm/process@0.11.9.js | 1 + jspm_packages/npm/process@0.11.9/.eslintrc | 21 + jspm_packages/npm/process@0.11.9/.jspm-hash | 1 + jspm_packages/npm/process@0.11.9/LICENSE | 22 + jspm_packages/npm/process@0.11.9/README.md | 26 + jspm_packages/npm/process@0.11.9/browser.js | 180 + jspm_packages/npm/process@0.11.9/index.js | 2 + jspm_packages/npm/process@0.11.9/package.json | 27 + jspm_packages/npm/process@0.11.9/test.js | 185 + jspm_packages/npm/util@0.10.3.js | 1 + jspm_packages/npm/util@0.10.3/.jspm-hash | 1 + jspm_packages/npm/util@0.10.3/.npmignore | 1 + jspm_packages/npm/util@0.10.3/.travis.yml | 8 + jspm_packages/npm/util@0.10.3/.zuul.yml | 10 + jspm_packages/npm/util@0.10.3/LICENSE | 18 + jspm_packages/npm/util@0.10.3/README.md | 15 + jspm_packages/npm/util@0.10.3/package.json | 31 + .../npm/util@0.10.3/support/isBuffer.js | 6 + .../util@0.10.3/support/isBufferBrowser.js | 7 + .../npm/util@0.10.3/test/browser/inspect.js | 18 + .../npm/util@0.10.3/test/browser/is.js | 77 + .../npm/util@0.10.3/test/node/debug.js | 54 + .../npm/util@0.10.3/test/node/format.js | 50 + .../npm/util@0.10.3/test/node/inspect.js | 139 + .../npm/util@0.10.3/test/node/log.js | 50 + .../npm/util@0.10.3/test/node/util.js | 61 + jspm_packages/npm/util@0.10.3/util.js | 424 + jspm_packages/npm/vm-browserify@0.0.4.js | 1 + .../npm/vm-browserify@0.0.4/.jspm-hash | 1 + jspm_packages/npm/vm-browserify@0.0.4/LICENSE | 18 + .../vm-browserify@0.0.4/example/run/bundle.js | 376 + .../vm-browserify@0.0.4/example/run/entry.js | 6 + .../example/run/index.html | 9 + .../vm-browserify@0.0.4/example/run/server.js | 6 + .../npm/vm-browserify@0.0.4/index.js | 139 + .../npm/vm-browserify@0.0.4/package.json | 46 + .../npm/vm-browserify@0.0.4/readme.markdown | 67 + .../npm/vm-browserify@0.0.4/test/vm.js | 34 + jspm_packages/system-csp-production.js | 6 + jspm_packages/system-csp-production.js.map | 1 + jspm_packages/system-csp-production.src.js | 4536 + jspm_packages/system-polyfills.js | 5 + jspm_packages/system-polyfills.js.map | 1 + jspm_packages/system-polyfills.src.js | 1277 + jspm_packages/system.js | 6 + jspm_packages/system.js.map | 1 + jspm_packages/system.src.js | 5153 ++ karma.conf.js | 72 +- package.json | 29 +- src/polyfills.ts | 19 - src/test.ts | 91 - 1548 files changed, 151689 insertions(+), 150 deletions(-) create mode 100644 config.js create mode 100644 jspm_packages/.dependencies.json create mode 100644 jspm_packages/.loaderversions create mode 100644 jspm_packages/github/jspm/nodelibs-assert@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-assert@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-assert@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-assert@0.1.0/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-buffer@0.1.0/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-child_process@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-child_process@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-child_process@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-child_process@0.1.0/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-fs@0.1.2.js create mode 100644 jspm_packages/github/jspm/nodelibs-fs@0.1.2/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-fs@0.1.2/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-path@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-path@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-path@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-path@0.1.0/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-process@0.1.2.js create mode 100644 jspm_packages/github/jspm/nodelibs-process@0.1.2/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-process@0.1.2/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-util@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-util@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-util@0.1.0/package.json create mode 100644 jspm_packages/github/jspm/nodelibs-vm@0.1.0.js create mode 100644 jspm_packages/github/jspm/nodelibs-vm@0.1.0/.jspm-hash create mode 100644 jspm_packages/github/jspm/nodelibs-vm@0.1.0/index.js create mode 100644 jspm_packages/github/jspm/nodelibs-vm@0.1.0/package.json create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2.js create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/.jspm-hash create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/LICENSE create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/README.md create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/json.js create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/json.json create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/package.json create mode 100644 jspm_packages/github/systemjs/plugin-json@0.1.2/test.html create mode 100644 jspm_packages/npm/assert@1.4.1.js create mode 100644 jspm_packages/npm/assert@1.4.1/.jspm-hash create mode 100644 jspm_packages/npm/assert@1.4.1/.npmignore create mode 100644 jspm_packages/npm/assert@1.4.1/.travis.yml create mode 100644 jspm_packages/npm/assert@1.4.1/.zuul.yml create mode 100644 jspm_packages/npm/assert@1.4.1/LICENSE create mode 100644 jspm_packages/npm/assert@1.4.1/README.md create mode 100644 jspm_packages/npm/assert@1.4.1/assert.js create mode 100644 jspm_packages/npm/assert@1.4.1/package.json create mode 100644 jspm_packages/npm/assert@1.4.1/test.js create mode 100644 jspm_packages/npm/babel-core@5.8.38.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/.jspm-hash create mode 100644 jspm_packages/npm/babel-core@5.8.38/browser-polyfill.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/browser-polyfill.min.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/browser.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/browser.min.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/external-helpers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/external-helpers.min.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/browser.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/node.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/register/browser.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/register/cache.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/register/node-polyfill.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/api/register/node.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/babel/transformation/modules.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/buffer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/base.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/classes.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/comprehensions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/expressions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/flow.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/jsx.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/methods.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/modules.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/statements.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/template-literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/generators/types.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/node/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/node/parentheses.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/node/printer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/node/whitespace.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/position.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/source-map.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/generation/whitespace.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/code-frame.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/merge.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/normalize-ast.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/object.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/helpers/parse.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/messages.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/polyfill.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/tools/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/tools/build-external-helpers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/logger.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/options/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/options/config.json create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/options/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/options/option-manager.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/options/parsers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/file/plugin-manager.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/build-binary-assignment-operator-transformer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/build-comprehension.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/build-conditional-assignment-operator-transformer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/build-react-transformer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/call-delegate.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/define-map.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/explode-assignable-expression.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/get-function-arity.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/memoise-decorators.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/name-method.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/react.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/regex.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/remap-async-to-generator.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/helpers/replace-supers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/_default.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/_strict.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/amd-strict.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/amd.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/common-strict.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/common.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/ignore.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/lib/metadata.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/lib/remaps.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/system.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/umd-strict.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/modules/umd.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/pipeline.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/plugin-pass.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/plugin.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformer.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/aliases.json create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/deprecated.json create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es3/member-expression-literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es3/property-literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es5/properties.mutators.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/arrow-functions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/block-scoping.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/classes/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/classes/loose.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/classes/vanilla.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/constants.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/destructuring.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/for-of.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/modules.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/object-super.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/parameters/default.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/parameters/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/parameters/rest.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/properties.computed.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/properties.shorthand.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/regex.sticky.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/regex.unicode.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spec.arrow-functions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spec.block-scoping.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spec.modules.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spec.symbols.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spec.template-literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/spread.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/tail-call.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es6/template-literals.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/async-functions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/class-properties.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/comprehensions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/decorators.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/do-expressions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/exponentiation-operator.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/export-extensions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/function-bind.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/object-rest-spread.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/es7/trailing-function-commas.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/filters.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/block-hoist.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/hoist-directives.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/module-formatter.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/modules.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/shadow-functions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/internal/validation.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/optimisation/flow.for-of.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/optimisation/modules.system.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/optimisation/react.inline-elements.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/async-to-generator.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/bluebird-coroutines.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/flow.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/react-compat.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/react.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/regenerator.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/other/strict.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/spec/block-scoped-functions.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/spec/function-name.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/transformation/transformers/validation/react.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/context.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/hub.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/ancestry.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/comments.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/context.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/conversion.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/evaluation.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/family.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/inference/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/inference/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/inference/inferer-reference.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/inference/inferers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/introspection.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/lib/hoister.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/lib/removal-hooks.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/lib/virtual-types.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/modification.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/removal.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/path/replacement.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/scope/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/scope/binding.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/scope/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/traversal/visitors.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/README.md create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/converters.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/core.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/es2015.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/experimental.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/flow.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/init.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/jsx.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/definitions/misc.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/flow.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/index.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/retrievers.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/types/validators.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/lib/util.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/package.json create mode 100644 jspm_packages/npm/babel-core@5.8.38/polyfill.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/register-without-polyfill.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/register.js create mode 100644 jspm_packages/npm/babel-core@5.8.38/templates.json create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/.jspm-hash create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/.jspm.errors create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/.npmignore create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/README.md create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/concat.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/copy-within.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/entries.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/every.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/fill.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/filter.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/find-index.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/find.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/for-each.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/from.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/includes.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/index-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/join.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/keys.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/last-index-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/map.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/pop.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/push.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/reduce-right.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/reduce.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/reverse.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/shift.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/slice.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/some.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/sort.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/splice.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/turn.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/unshift.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/array/values.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/clear-immediate.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/date/add-locale.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/date/format-utc.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/date/format.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/error/is-error.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/function/only.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/function/part.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/get-iterator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/is-iterable.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/json/stringify.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/map.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/acosh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/asinh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/atanh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/cbrt.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/clz32.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/cosh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/expm1.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/fround.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/hypot.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/iaddh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/imul.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/imulh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/isubh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/log10.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/log1p.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/log2.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/pot.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/sign.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/sinh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/tanh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/trunc.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/math/umulh.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/epsilon.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/is-finite.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/is-integer.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/is-nan.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/is-safe-integer.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/max-safe-integer.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/min-safe-integer.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/parse-float.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/parse-int.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/number/random.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/assign.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/classof.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/create.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/define-properties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/define-property.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/define.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/entries.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/freeze.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/get-own-property-descriptors.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/get-own-property-names.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/get-own-property-symbols.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/get-prototype-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/index.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/is-extensible.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/is-frozen.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/is-object.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/is-sealed.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/is.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/keys.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/make.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/prevent-extensions.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/seal.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/set-prototype-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/object/values.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/promise.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/apply.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/construct.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/define-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/define-property.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/delete-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/delete-property.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/enumerate.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-metadata-keys.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-own-metadata-keys.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-own-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get-prototype-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/get.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/has-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/has-own-metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/has.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/is-extensible.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/metadata.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/own-keys.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/prevent-extensions.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/set-prototype-of.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/reflect/set.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/regexp/escape.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/set-immediate.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/set.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/at.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/code-point-at.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/ends-with.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/escape-html.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/from-code-point.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/includes.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/pad-end.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/pad-left.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/pad-right.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/pad-start.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/raw.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/repeat.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/starts-with.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/trim-end.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/trim-left.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/trim-right.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/trim-start.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/trim.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/string/unescape-html.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/for.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/has-instance.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/is-concat-spreadable.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/iterator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/key-for.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/match.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/replace.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/search.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/species.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/split.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/to-primitive.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/to-string-tag.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/symbol/unscopables.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/system/global.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/weak-map.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/core-js/weak-set.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_async-to-generator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_class-call-check.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_create-class.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_defaults.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_define-enumerable-properties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_define-property.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_extends.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_get.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_inherits.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_instanceof.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_interop-require-default.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_interop-require-wildcard.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_jsx.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_new-arrow-check.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_object-destructuring-empty.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_object-without-properties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_possible-constructor-return.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_self-global.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_set.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_sliced-to-array-loose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_sliced-to-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_tagged-template-literal-loose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_tagged-template-literal.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_temporal-ref.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_temporal-undefined.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_to-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_to-consumable-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/_typeof.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/async-to-generator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/asyncToGenerator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/bind.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/class-call-check.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/classCallCheck.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/create-class.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/create-decorated-class.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/create-decorated-object.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/createClass.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/default-props.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/defaults.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/define-decorated-property-descriptor.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/define-enumerable-properties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/define-property.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/defineEnumerableProperties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/defineProperty.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/extends.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/get.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/has-own.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/inherits.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/instanceof.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interop-export-wildcard.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interop-require-default.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interop-require-wildcard.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interop-require.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interopRequireDefault.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/interopRequireWildcard.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/jsx.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/new-arrow-check.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/newArrowCheck.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/object-destructuring-empty.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/object-without-properties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/objectDestructuringEmpty.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/objectWithoutProperties.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/possible-constructor-return.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/possibleConstructorReturn.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/self-global.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/selfGlobal.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/set.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/slice.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/sliced-to-array-loose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/sliced-to-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/slicedToArray.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/slicedToArrayLoose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/tagged-template-literal-loose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/tagged-template-literal.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/taggedTemplateLiteral.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/taggedTemplateLiteralLoose.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/temporal-assert-defined.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/temporal-ref.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/temporal-undefined.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/temporalRef.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/temporalUndefined.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/to-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/to-consumable-array.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/toArray.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/toConsumableArray.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/typeof-react-element.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/helpers/typeof.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/package.json create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/regenerator.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/regenerator/index.js create mode 100644 jspm_packages/npm/babel-runtime@5.8.38/regenerator/runtime.js create mode 100644 jspm_packages/npm/base64-js@0.0.8.js create mode 100644 jspm_packages/npm/base64-js@0.0.8/.jspm-hash create mode 100644 jspm_packages/npm/base64-js@0.0.8/.travis.yml create mode 100644 jspm_packages/npm/base64-js@0.0.8/LICENSE.MIT create mode 100644 jspm_packages/npm/base64-js@0.0.8/README.md create mode 100644 jspm_packages/npm/base64-js@0.0.8/lib/b64.js create mode 100644 jspm_packages/npm/base64-js@0.0.8/package.json create mode 100644 jspm_packages/npm/base64-js@0.0.8/test/convert.js create mode 100644 jspm_packages/npm/base64-js@0.0.8/test/url-safe.js create mode 100644 jspm_packages/npm/buffer@3.6.0.js create mode 100644 jspm_packages/npm/buffer@3.6.0/.jspm-hash create mode 100644 jspm_packages/npm/buffer@3.6.0/.npmignore create mode 100644 jspm_packages/npm/buffer@3.6.0/.travis.yml create mode 100644 jspm_packages/npm/buffer@3.6.0/.zuul.yml create mode 100644 jspm_packages/npm/buffer@3.6.0/LICENSE create mode 100644 jspm_packages/npm/buffer@3.6.0/README.md create mode 100755 jspm_packages/npm/buffer@3.6.0/bin/download-node-tests.js create mode 100644 jspm_packages/npm/buffer@3.6.0/bin/test.js create mode 100644 jspm_packages/npm/buffer@3.6.0/index.js create mode 100644 jspm_packages/npm/buffer@3.6.0/package.json create mode 100644 jspm_packages/npm/buffer@3.6.0/test/_polyfill.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/base64.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/basic.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/compare.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/constructor.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/deprecated.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/from-string.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/methods.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node-es6/README.txt create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node-es6/test-buffer-arraybuffer.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node-es6/test-buffer-iterator.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/README.txt create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer-ascii.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer-bytelength.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer-concat.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer-indexof.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer-inspect.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/node/test-buffer.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/slice.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/static.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/to-string.js create mode 100644 jspm_packages/npm/buffer@3.6.0/test/write.js create mode 100644 jspm_packages/npm/core-js@1.2.7.js create mode 100644 jspm_packages/npm/core-js@1.2.7/.jspm-hash create mode 100644 jspm_packages/npm/core-js@1.2.7/CHANGELOG.md create mode 100644 jspm_packages/npm/core-js@1.2.7/Gruntfile.js create mode 100644 jspm_packages/npm/core-js@1.2.7/LICENSE create mode 100644 jspm_packages/npm/core-js@1.2.7/bower.json create mode 100644 jspm_packages/npm/core-js@1.2.7/build.js create mode 100644 jspm_packages/npm/core-js@1.2.7/build/Gruntfile.ls create mode 100644 jspm_packages/npm/core-js@1.2.7/build/build.ls create mode 100644 jspm_packages/npm/core-js@1.2.7/build/config.js create mode 100644 jspm_packages/npm/core-js@1.2.7/build/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/core.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/core.min.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/core.min.js.map create mode 100644 jspm_packages/npm/core-js@1.2.7/client/library.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/library.min.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/library.min.js.map create mode 100644 jspm_packages/npm/core-js@1.2.7/client/shim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/shim.min.js create mode 100644 jspm_packages/npm/core-js@1.2.7/client/shim.min.js.map create mode 100644 jspm_packages/npm/core-js@1.2.7/core.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/_.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/core/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es5.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es5/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/math.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/reflect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es6/weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/es7/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/_.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/concat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/every.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/filter.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/find-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/find.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/for-each.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/from.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/index-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/join.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/last-index-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/pop.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/push.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/reduce-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/reduce.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/reverse.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/shift.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/slice.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/some.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/sort.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/splice.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/unshift.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/array/values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/clear-immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/function/has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/function/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/function/name.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/function/part.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/get-iterator-method.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/get-iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/html-collection.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/html-collection/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/html-collection/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/is-iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/json/stringify.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/acosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/asinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/atanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/cbrt.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/clz32.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/cosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/fround.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/hypot.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/imul.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/log10.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/log2.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/sinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/tanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/math/trunc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/node-list.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/node-list/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/node-list/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/epsilon.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/is-finite.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/is-nan.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/is-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/max-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/min-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/parse-float.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/number/parse-int.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/define-properties.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/freeze.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/get-own-property-descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/get-own-property-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/get-own-property-symbols.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/is-frozen.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/is-sealed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/is.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/make.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/seal.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/object/values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/apply.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/construct.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/delete-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/enumerate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/get.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/reflect/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/regexp/escape.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/regexp/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/set-immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/set-interval.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/set-timeout.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/code-point-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/ends-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/escape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/from-code-point.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/pad-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/pad-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/raw.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/starts-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/trim-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/trim-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/string/unescape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/for.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/is-concat-spreadable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/key-for.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/match.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/replace.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/search.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/split.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/to-primitive.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/to-string-tag.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/symbol/unscopables.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/fn/weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/js.js create mode 100644 jspm_packages/npm/core-js@1.2.7/js/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/js/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/_.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/core/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es5.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es5/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/math.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/reflect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es6/weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/es7/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/_.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/concat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/every.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/filter.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/find-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/find.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/for-each.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/from.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/index-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/join.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/last-index-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/pop.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/push.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/reduce-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/reduce.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/reverse.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/shift.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/slice.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/some.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/sort.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/splice.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/unshift.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/array/values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/clear-immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/function/has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/function/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/function/name.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/function/part.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/get-iterator-method.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/get-iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/html-collection.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/html-collection/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/html-collection/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/is-iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/json/stringify.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/acosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/asinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/atanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/cbrt.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/clz32.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/cosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/fround.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/hypot.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/imul.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/log10.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/log2.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/sinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/tanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/math/trunc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/node-list.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/node-list/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/node-list/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/epsilon.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/is-finite.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/is-nan.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/is-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/max-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/min-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/parse-float.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/number/parse-int.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/define-properties.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/freeze.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/get-own-property-descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/get-own-property-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/get-own-property-symbols.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/is-frozen.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/is-sealed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/is.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/make.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/seal.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/object/values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/apply.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/construct.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/delete-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/enumerate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/get.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/reflect/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/regexp/escape.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/regexp/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/set-immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/set-interval.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/set-timeout.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/code-point-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/ends-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/escape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/from-code-point.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/pad-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/pad-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/raw.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/starts-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/trim-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/trim-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/string/unescape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/for.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/is-concat-spreadable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/key-for.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/match.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/replace.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/search.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/split.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/to-primitive.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/to-string-tag.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/symbol/unscopables.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/fn/weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/js.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/js/array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/js/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.a-function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.add-to-unscopables.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.an-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.array-copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.array-fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.array-includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.array-methods.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.array-species-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.buffer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.cof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.collection-strong.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.collection-to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.collection-weak.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.collection.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.core.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.ctx.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.defined.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.dom-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.enum-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.export.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.fails-is-regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.fails.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.fix-re-wks.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.flags.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.for-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.get-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.global.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.hide.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.invoke.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iobject.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.is-array-iter.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.is-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.is-regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iter-call.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iter-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iter-define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iter-detect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iter-step.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.iterators.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.keyof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.library.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.math-expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.math-log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.math-sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.microtask.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.object-assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.object-define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.object-sap.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.object-to-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.partial.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.path.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.property-desc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.redefine-all.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.redefine.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.replacer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.same-value.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.set-proto.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.set-species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.set-to-string-tag.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.shared.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.species-constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.strict-new.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.string-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.string-context.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.string-pad.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.string-repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.string-trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.task.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-iobject.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-length.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.to-primitive.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.typed-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.typed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.uid.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/$.wks.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.function.part.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.get-iterator-method.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.get-iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.is-iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.number.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.object.classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.object.define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.object.is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.object.make.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.string.escape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/core.string.unescape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es5.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.find-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.find.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.from.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.array.species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.date.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.function.has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.function.name.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.acosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.asinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.atanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.cbrt.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.clz32.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.cosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.fround.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.hypot.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.imul.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.log10.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.log2.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.sinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.tanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.math.trunc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.epsilon.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.is-finite.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.is-nan.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.is-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.max-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.min-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.parse-float.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.number.parse-int.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.freeze.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.get-own-property-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.is-frozen.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.is-sealed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.is.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.seal.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.object.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.apply.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.construct.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.delete-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.enumerate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.get.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.reflect.set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.flags.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.match.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.replace.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.search.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.regexp.split.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.code-point-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.ends-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.from-code-point.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.raw.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.starts-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.string.trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.array-buffer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.data-view.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.float32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.float64-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.int16-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.int32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.int8-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.uint16-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.uint32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.uint8-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.typed.uint8-clamped-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es6.weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.array.includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.map.to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.object.entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.object.get-own-property-descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.object.values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.regexp.escape.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.set.to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.string.at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.string.pad-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.string.pad-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.string.trim-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/es7.string.trim-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/js.array.statics.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/web.dom.iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/web.immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/modules/web.timers.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/shim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/web.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/web/dom.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/web/immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/web/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/library/web/timers.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.a-function.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.add-to-unscopables.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.an-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.array-copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.array-fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.array-includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.array-methods.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.array-species-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.buffer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.cof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.collection-strong.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.collection-to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.collection-weak.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.collection.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.core.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.ctx.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.defined.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.dom-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.enum-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.export.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.fails-is-regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.fails.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.fix-re-wks.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.flags.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.for-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.get-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.global.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.hide.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.invoke.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iobject.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.is-array-iter.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.is-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.is-regexp.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iter-call.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iter-create.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iter-define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iter-detect.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iter-step.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.iterators.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.keyof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.library.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.math-expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.math-log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.math-sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.microtask.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.object-assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.object-define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.object-sap.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.object-to-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.partial.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.path.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.property-desc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.redefine-all.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.redefine.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.replacer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.same-value.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.set-proto.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.set-species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.set-to-string-tag.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.shared.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.species-constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.strict-new.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.string-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.string-context.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.string-pad.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.string-repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.string-trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.task.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-iobject.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-length.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.to-primitive.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.typed-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.typed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.uid.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/$.wks.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.delay.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.dict.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.function.part.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.get-iterator-method.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.get-iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.is-iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.log.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.number.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.object.classof.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.object.define.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.object.is-object.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.object.make.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.string.escape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/core.string.unescape-html.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es5.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.copy-within.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.fill.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.find-index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.find.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.from.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.array.species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.date.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.function.has-instance.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.function.name.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.acosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.asinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.atanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.cbrt.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.clz32.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.cosh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.expm1.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.fround.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.hypot.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.imul.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.log10.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.log1p.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.log2.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.sign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.sinh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.tanh.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.math.trunc.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.epsilon.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.is-finite.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.is-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.is-nan.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.is-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.max-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.min-safe-integer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.parse-float.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.number.parse-int.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.assign.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.freeze.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.get-own-property-names.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.is-frozen.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.is-sealed.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.is.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.seal.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.object.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.promise.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.apply.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.construct.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.define-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.delete-property.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.enumerate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.get-own-property-descriptor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.get-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.get.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.has.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.is-extensible.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.own-keys.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.prevent-extensions.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.set-prototype-of.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.reflect.set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.flags.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.match.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.replace.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.search.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.regexp.split.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.code-point-at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.ends-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.from-code-point.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.iterator.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.raw.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.repeat.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.starts-with.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.string.trim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.symbol.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.array-buffer.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.data-view.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.float32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.float64-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.int16-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.int32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.int8-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.uint16-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.uint32-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.uint8-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.typed.uint8-clamped-array.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.weak-map.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es6.weak-set.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.array.includes.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.map.to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.object.entries.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.object.get-own-property-descriptors.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.object.values.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.regexp.escape.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.set.to-json.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.string.at.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.string.pad-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.string.pad-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.string.trim-left.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/es7.string.trim-right.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/js.array.statics.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.add-to-unscopables.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.collection.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.export.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.library.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.path.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.redefine.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/$.set-species.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.date.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.function.name.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.number.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.object.to-string.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.constructor.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.flags.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.match.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.replace.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.search.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/es6.regexp.split.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/library/web.dom.iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/web.dom.iterable.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/web.immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/modules/web.timers.js create mode 100644 jspm_packages/npm/core-js@1.2.7/package.json create mode 100644 jspm_packages/npm/core-js@1.2.7/shim.js create mode 100644 jspm_packages/npm/core-js@1.2.7/web.js create mode 100644 jspm_packages/npm/core-js@1.2.7/web/dom.js create mode 100644 jspm_packages/npm/core-js@1.2.7/web/immediate.js create mode 100644 jspm_packages/npm/core-js@1.2.7/web/index.js create mode 100644 jspm_packages/npm/core-js@1.2.7/web/timers.js create mode 100644 jspm_packages/npm/ieee754@1.1.8.js create mode 100644 jspm_packages/npm/ieee754@1.1.8/.jspm-hash create mode 100644 jspm_packages/npm/ieee754@1.1.8/.travis.yml create mode 100644 jspm_packages/npm/ieee754@1.1.8/.zuul.yml create mode 100644 jspm_packages/npm/ieee754@1.1.8/LICENSE create mode 100644 jspm_packages/npm/ieee754@1.1.8/README.md create mode 100644 jspm_packages/npm/ieee754@1.1.8/index.js create mode 100644 jspm_packages/npm/ieee754@1.1.8/package.json create mode 100644 jspm_packages/npm/ieee754@1.1.8/test/basic.js create mode 100644 jspm_packages/npm/indexof@0.0.1.js create mode 100644 jspm_packages/npm/indexof@0.0.1/.jspm-hash create mode 100644 jspm_packages/npm/indexof@0.0.1/.npmignore create mode 100644 jspm_packages/npm/indexof@0.0.1/Makefile create mode 100644 jspm_packages/npm/indexof@0.0.1/Readme.md create mode 100644 jspm_packages/npm/indexof@0.0.1/component.json create mode 100644 jspm_packages/npm/indexof@0.0.1/index.js create mode 100644 jspm_packages/npm/indexof@0.0.1/package.json create mode 100644 jspm_packages/npm/inherits@2.0.1.js create mode 100644 jspm_packages/npm/inherits@2.0.1/.jspm-hash create mode 100644 jspm_packages/npm/inherits@2.0.1/LICENSE create mode 100644 jspm_packages/npm/inherits@2.0.1/README.md create mode 100644 jspm_packages/npm/inherits@2.0.1/inherits.js create mode 100644 jspm_packages/npm/inherits@2.0.1/inherits_browser.js create mode 100644 jspm_packages/npm/inherits@2.0.1/package.json create mode 100644 jspm_packages/npm/isarray@1.0.0.js create mode 100644 jspm_packages/npm/isarray@1.0.0/.jspm-hash create mode 100644 jspm_packages/npm/isarray@1.0.0/.npmignore create mode 100644 jspm_packages/npm/isarray@1.0.0/.travis.yml create mode 100644 jspm_packages/npm/isarray@1.0.0/Makefile create mode 100644 jspm_packages/npm/isarray@1.0.0/README.md create mode 100644 jspm_packages/npm/isarray@1.0.0/component.json create mode 100644 jspm_packages/npm/isarray@1.0.0/index.js create mode 100644 jspm_packages/npm/isarray@1.0.0/package.json create mode 100644 jspm_packages/npm/isarray@1.0.0/test.js create mode 100644 jspm_packages/npm/path-browserify@0.0.0.js create mode 100644 jspm_packages/npm/path-browserify@0.0.0/.jspm-hash create mode 100644 jspm_packages/npm/path-browserify@0.0.0/LICENSE create mode 100644 jspm_packages/npm/path-browserify@0.0.0/index.js create mode 100644 jspm_packages/npm/path-browserify@0.0.0/package.json create mode 100644 jspm_packages/npm/path-browserify@0.0.0/readme.markdown create mode 100644 jspm_packages/npm/process@0.11.9.js create mode 100644 jspm_packages/npm/process@0.11.9/.eslintrc create mode 100644 jspm_packages/npm/process@0.11.9/.jspm-hash create mode 100644 jspm_packages/npm/process@0.11.9/LICENSE create mode 100644 jspm_packages/npm/process@0.11.9/README.md create mode 100644 jspm_packages/npm/process@0.11.9/browser.js create mode 100644 jspm_packages/npm/process@0.11.9/index.js create mode 100644 jspm_packages/npm/process@0.11.9/package.json create mode 100644 jspm_packages/npm/process@0.11.9/test.js create mode 100644 jspm_packages/npm/util@0.10.3.js create mode 100644 jspm_packages/npm/util@0.10.3/.jspm-hash create mode 100644 jspm_packages/npm/util@0.10.3/.npmignore create mode 100644 jspm_packages/npm/util@0.10.3/.travis.yml create mode 100644 jspm_packages/npm/util@0.10.3/.zuul.yml create mode 100644 jspm_packages/npm/util@0.10.3/LICENSE create mode 100644 jspm_packages/npm/util@0.10.3/README.md create mode 100644 jspm_packages/npm/util@0.10.3/package.json create mode 100644 jspm_packages/npm/util@0.10.3/support/isBuffer.js create mode 100644 jspm_packages/npm/util@0.10.3/support/isBufferBrowser.js create mode 100644 jspm_packages/npm/util@0.10.3/test/browser/inspect.js create mode 100644 jspm_packages/npm/util@0.10.3/test/browser/is.js create mode 100644 jspm_packages/npm/util@0.10.3/test/node/debug.js create mode 100644 jspm_packages/npm/util@0.10.3/test/node/format.js create mode 100644 jspm_packages/npm/util@0.10.3/test/node/inspect.js create mode 100644 jspm_packages/npm/util@0.10.3/test/node/log.js create mode 100644 jspm_packages/npm/util@0.10.3/test/node/util.js create mode 100644 jspm_packages/npm/util@0.10.3/util.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/.jspm-hash create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/LICENSE create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/example/run/bundle.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/example/run/entry.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/example/run/index.html create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/example/run/server.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/index.js create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/package.json create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/readme.markdown create mode 100644 jspm_packages/npm/vm-browserify@0.0.4/test/vm.js create mode 100644 jspm_packages/system-csp-production.js create mode 100644 jspm_packages/system-csp-production.js.map create mode 100644 jspm_packages/system-csp-production.src.js create mode 100644 jspm_packages/system-polyfills.js create mode 100644 jspm_packages/system-polyfills.js.map create mode 100644 jspm_packages/system-polyfills.src.js create mode 100644 jspm_packages/system.js create mode 100644 jspm_packages/system.js.map create mode 100644 jspm_packages/system.src.js delete mode 100644 src/polyfills.ts delete mode 100644 src/test.ts diff --git a/config.js b/config.js new file mode 100644 index 0000000..96dea8c --- /dev/null +++ b/config.js @@ -0,0 +1,79 @@ +System.config({ + defaultJSExtensions: true, + transpiler: "babel", + babelOptions: { + "optional": [ + "runtime", + "optimisation.modules.system" + ] + }, + paths: { + "github:*": "jspm_packages/github/*", + "npm:*": "jspm_packages/npm/*" + }, + + map: { + "babel": "npm:babel-core@5.8.38", + "babel-runtime": "npm:babel-runtime@5.8.38", + "core-js": "npm:core-js@1.2.7", + "github:jspm/nodelibs-assert@0.1.0": { + "assert": "npm:assert@1.4.1" + }, + "github:jspm/nodelibs-buffer@0.1.0": { + "buffer": "npm:buffer@3.6.0" + }, + "github:jspm/nodelibs-path@0.1.0": { + "path-browserify": "npm:path-browserify@0.0.0" + }, + "github:jspm/nodelibs-process@0.1.2": { + "process": "npm:process@0.11.9" + }, + "github:jspm/nodelibs-util@0.1.0": { + "util": "npm:util@0.10.3" + }, + "github:jspm/nodelibs-vm@0.1.0": { + "vm-browserify": "npm:vm-browserify@0.0.4" + }, + "npm:assert@1.4.1": { + "assert": "github:jspm/nodelibs-assert@0.1.0", + "buffer": "github:jspm/nodelibs-buffer@0.1.0", + "process": "github:jspm/nodelibs-process@0.1.2", + "util": "npm:util@0.10.3" + }, + "npm:babel-runtime@5.8.38": { + "process": "github:jspm/nodelibs-process@0.1.2" + }, + "npm:buffer@3.6.0": { + "base64-js": "npm:base64-js@0.0.8", + "child_process": "github:jspm/nodelibs-child_process@0.1.0", + "fs": "github:jspm/nodelibs-fs@0.1.2", + "ieee754": "npm:ieee754@1.1.8", + "isarray": "npm:isarray@1.0.0", + "process": "github:jspm/nodelibs-process@0.1.2" + }, + "npm:core-js@1.2.7": { + "fs": "github:jspm/nodelibs-fs@0.1.2", + "path": "github:jspm/nodelibs-path@0.1.0", + "process": "github:jspm/nodelibs-process@0.1.2", + "systemjs-json": "github:systemjs/plugin-json@0.1.2" + }, + "npm:inherits@2.0.1": { + "util": "github:jspm/nodelibs-util@0.1.0" + }, + "npm:path-browserify@0.0.0": { + "process": "github:jspm/nodelibs-process@0.1.2" + }, + "npm:process@0.11.9": { + "assert": "github:jspm/nodelibs-assert@0.1.0", + "fs": "github:jspm/nodelibs-fs@0.1.2", + "vm": "github:jspm/nodelibs-vm@0.1.0" + }, + "npm:util@0.10.3": { + "inherits": "npm:inherits@2.0.1", + "process": "github:jspm/nodelibs-process@0.1.2" + }, + "npm:vm-browserify@0.0.4": { + "indexof": "npm:indexof@0.0.1" + } + } +}); diff --git a/jspm_packages/.dependencies.json b/jspm_packages/.dependencies.json new file mode 100644 index 0000000..109bd99 --- /dev/null +++ b/jspm_packages/.dependencies.json @@ -0,0 +1,69 @@ +{ + "npm:babel-runtime@5.8.38": { + "process": "github:jspm/nodelibs-process@^0.1.0" + }, + "npm:babel-core@5.8.38": {}, + "github:jspm/nodelibs-process@0.1.2": { + "process": "npm:process@^0.11.0" + }, + "npm:core-js@1.2.7": { + "systemjs-json": "github:systemjs/plugin-json@^0.1.0", + "process": "github:jspm/nodelibs-process@^0.1.0", + "fs": "github:jspm/nodelibs-fs@^0.1.0", + "path": "github:jspm/nodelibs-path@^0.1.0" + }, + "npm:process@0.11.9": { + "assert": "github:jspm/nodelibs-assert@^0.1.0", + "vm": "github:jspm/nodelibs-vm@^0.1.0", + "fs": "github:jspm/nodelibs-fs@^0.1.0" + }, + "github:jspm/nodelibs-path@0.1.0": { + "path-browserify": "npm:path-browserify@0.0.0" + }, + "github:jspm/nodelibs-fs@0.1.2": {}, + "github:systemjs/plugin-json@0.1.2": {}, + "npm:path-browserify@0.0.0": { + "process": "github:jspm/nodelibs-process@^0.1.0" + }, + "github:jspm/nodelibs-vm@0.1.0": { + "vm-browserify": "npm:vm-browserify@0.0.4" + }, + "github:jspm/nodelibs-assert@0.1.0": { + "assert": "npm:assert@^1.3.0" + }, + "npm:vm-browserify@0.0.4": { + "indexof": "npm:indexof@0.0.1" + }, + "npm:indexof@0.0.1": {}, + "npm:assert@1.4.1": { + "util": "npm:util@0.10.3", + "buffer": "github:jspm/nodelibs-buffer@^0.1.0", + "assert": "github:jspm/nodelibs-assert@^0.1.0", + "process": "github:jspm/nodelibs-process@^0.1.0" + }, + "npm:util@0.10.3": { + "inherits": "npm:inherits@2.0.1", + "process": "github:jspm/nodelibs-process@^0.1.0" + }, + "npm:inherits@2.0.1": { + "util": "github:jspm/nodelibs-util@^0.1.0" + }, + "github:jspm/nodelibs-util@0.1.0": { + "util": "npm:util@^0.10.3" + }, + "github:jspm/nodelibs-buffer@0.1.0": { + "buffer": "npm:buffer@^3.0.1" + }, + "npm:buffer@3.6.0": { + "base64-js": "npm:base64-js@0.0.8", + "ieee754": "npm:ieee754@^1.1.4", + "isarray": "npm:isarray@^1.0.0", + "fs": "github:jspm/nodelibs-fs@^0.1.0", + "child_process": "github:jspm/nodelibs-child_process@^0.1.0", + "process": "github:jspm/nodelibs-process@^0.1.0" + }, + "npm:isarray@1.0.0": {}, + "npm:base64-js@0.0.8": {}, + "npm:ieee754@1.1.8": {}, + "github:jspm/nodelibs-child_process@0.1.0": {} +} \ No newline at end of file diff --git a/jspm_packages/.loaderversions b/jspm_packages/.loaderversions new file mode 100644 index 0000000..9ef232f --- /dev/null +++ b/jspm_packages/.loaderversions @@ -0,0 +1 @@ +0.19.39 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-assert@0.1.0.js b/jspm_packages/github/jspm/nodelibs-assert@0.1.0.js new file mode 100644 index 0000000..93fa283 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-assert@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-assert@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-assert@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/.jspm-hash new file mode 100644 index 0000000..615c0e7 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/.jspm-hash @@ -0,0 +1 @@ +3df1642a7cf401eacbb46a1d8bfe246ab79b57c299914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-assert@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/index.js new file mode 100644 index 0000000..b8a2f1a --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/index.js @@ -0,0 +1,2 @@ +/* */ +module.exports = System._nodeRequire ? System._nodeRequire('assert') : require('assert'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-assert@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/package.json new file mode 100644 index 0000000..61d704a --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-assert@0.1.0/package.json @@ -0,0 +1,6 @@ +{ + "registry": "npm", + "dependencies": { + "assert": "^1.3.0" + } +} \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js new file mode 100644 index 0000000..e18e5fe --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-buffer@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash new file mode 100644 index 0000000..c344374 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/.jspm-hash @@ -0,0 +1 @@ +59c7427feb449b75ff772d899fbb79766b75f78299914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js new file mode 100644 index 0000000..955b54d --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/index.js @@ -0,0 +1,2 @@ +/* */ +module.exports = System._nodeRequire ? System._nodeRequire('buffer') : require('buffer'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/package.json new file mode 100644 index 0000000..d29b215 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-buffer@0.1.0/package.json @@ -0,0 +1,6 @@ +{ + "registry": "npm", + "dependencies": { + "buffer": "^3.0.1" + } +} \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-child_process@0.1.0.js b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0.js new file mode 100644 index 0000000..f675414 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-child_process@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/.jspm-hash new file mode 100644 index 0000000..5b3d017 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/.jspm-hash @@ -0,0 +1 @@ +ed0ce91afafb6c567874b3e890aa0c353c84c97199914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/index.js new file mode 100644 index 0000000..47aa000 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/index.js @@ -0,0 +1,5 @@ +/* */ +if (System._nodeRequire) + module.exports = System._nodeRequire('child_process'); +else + throw "Node child_process module not supported in browsers."; \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/package.json new file mode 100644 index 0000000..7e4082d --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-child_process@0.1.0/package.json @@ -0,0 +1,3 @@ +{ + "registry": "npm" +} \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-fs@0.1.2.js b/jspm_packages/github/jspm/nodelibs-fs@0.1.2.js new file mode 100644 index 0000000..d6649f6 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-fs@0.1.2.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-fs@0.1.2/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-fs@0.1.2/.jspm-hash b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/.jspm-hash new file mode 100644 index 0000000..fb5d342 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/.jspm-hash @@ -0,0 +1 @@ +e295454174ed9e95b9383f8184859d76c610d19c99914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js new file mode 100644 index 0000000..3894a05 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/index.js @@ -0,0 +1,25 @@ +/* */ +if (System._nodeRequire) { + module.exports = System._nodeRequire('fs'); +} +else { + + exports.readFileSync = function(address) { + var output; + var xhr = new XMLHttpRequest(); + xhr.open('GET', address, false); + xhr.onreadystatechange = function(e) { + if (xhr.readyState == 4) { + var status = xhr.status; + if ((status > 399 && status < 600) || status == 400) { + throw 'File read error on ' + address; + } + else + output = xhr.responseText; + } + } + xhr.send(null); + return output; + }; + +} diff --git a/jspm_packages/github/jspm/nodelibs-fs@0.1.2/package.json b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/package.json new file mode 100644 index 0000000..c514fda --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-fs@0.1.2/package.json @@ -0,0 +1,3 @@ +{ + "registry": "npm" +} diff --git a/jspm_packages/github/jspm/nodelibs-path@0.1.0.js b/jspm_packages/github/jspm/nodelibs-path@0.1.0.js new file mode 100644 index 0000000..b4ff4c5 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-path@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-path@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-path@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-path@0.1.0/.jspm-hash new file mode 100644 index 0000000..d7dc1ee --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-path@0.1.0/.jspm-hash @@ -0,0 +1 @@ +11c0cdcfe4abdec26b2847ed816ed4507544fca899914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-path@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-path@0.1.0/index.js new file mode 100644 index 0000000..1b384e8 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-path@0.1.0/index.js @@ -0,0 +1,2 @@ +/* */ +module.exports = System._nodeRequire ? System._nodeRequire('path') : require('path-browserify'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-path@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-path@0.1.0/package.json new file mode 100644 index 0000000..609c780 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-path@0.1.0/package.json @@ -0,0 +1,6 @@ +{ + "registry": "npm", + "dependencies": { + "path-browserify": "0.0.0" + } +} \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-process@0.1.2.js b/jspm_packages/github/jspm/nodelibs-process@0.1.2.js new file mode 100644 index 0000000..6b37edd --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-process@0.1.2.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-process@0.1.2/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-process@0.1.2/.jspm-hash b/jspm_packages/github/jspm/nodelibs-process@0.1.2/.jspm-hash new file mode 100644 index 0000000..ef88f25 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-process@0.1.2/.jspm-hash @@ -0,0 +1 @@ +32790c950d3f375e4beff9c8bdbc3b3837c355e699914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js b/jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js new file mode 100644 index 0000000..448b6e7 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-process@0.1.2/index.js @@ -0,0 +1 @@ +module.exports = System._nodeRequire ? process : require('process'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-process@0.1.2/package.json b/jspm_packages/github/jspm/nodelibs-process@0.1.2/package.json new file mode 100644 index 0000000..2cc5be8 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-process@0.1.2/package.json @@ -0,0 +1,6 @@ +{ + "registry": "jspm", + "dependencies": { + "process": "npm:process@^0.11.0" + } +} diff --git a/jspm_packages/github/jspm/nodelibs-util@0.1.0.js b/jspm_packages/github/jspm/nodelibs-util@0.1.0.js new file mode 100644 index 0000000..1811521 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-util@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-util@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-util@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-util@0.1.0/.jspm-hash new file mode 100644 index 0000000..ba8bfe8 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-util@0.1.0/.jspm-hash @@ -0,0 +1 @@ +108d15fdf020621a254a7f09bdc94001e5a8dbcb99914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js new file mode 100644 index 0000000..e670e97 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-util@0.1.0/index.js @@ -0,0 +1,2 @@ +/* */ +module.exports = System._nodeRequire ? System._nodeRequire('util') : require('util'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-util@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-util@0.1.0/package.json new file mode 100644 index 0000000..9bdeecd --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-util@0.1.0/package.json @@ -0,0 +1,6 @@ +{ + "registry": "npm", + "dependencies": { + "util": "^0.10.3" + } +} \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-vm@0.1.0.js b/jspm_packages/github/jspm/nodelibs-vm@0.1.0.js new file mode 100644 index 0000000..6fadeb2 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-vm@0.1.0.js @@ -0,0 +1 @@ +module.exports = require("github:jspm/nodelibs-vm@0.1.0/index"); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-vm@0.1.0/.jspm-hash b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/.jspm-hash new file mode 100644 index 0000000..319d9a2 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/.jspm-hash @@ -0,0 +1 @@ +bcb9e18f996339f584b41883ed6fe6cf4ec9676199914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-vm@0.1.0/index.js b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/index.js new file mode 100644 index 0000000..a0b1ff6 --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/index.js @@ -0,0 +1,2 @@ +/* */ +module.exports = System._nodeRequire ? System._nodeRequire('vm') : require('vm-browserify'); \ No newline at end of file diff --git a/jspm_packages/github/jspm/nodelibs-vm@0.1.0/package.json b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/package.json new file mode 100644 index 0000000..15b571e --- /dev/null +++ b/jspm_packages/github/jspm/nodelibs-vm@0.1.0/package.json @@ -0,0 +1,6 @@ +{ + "registry": "npm", + "dependencies": { + "vm-browserify": "0.0.4" + } +} \ No newline at end of file diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2.js b/jspm_packages/github/systemjs/plugin-json@0.1.2.js new file mode 100644 index 0000000..c39e5d3 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2.js @@ -0,0 +1,3 @@ +define(["github:systemjs/plugin-json@0.1.2/json"], function(main) { + return main; +}); \ No newline at end of file diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/.jspm-hash b/jspm_packages/github/systemjs/plugin-json@0.1.2/.jspm-hash new file mode 100644 index 0000000..f72e0ab --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/.jspm-hash @@ -0,0 +1 @@ +bb56c5eac541ee264d607900bb9a901efe22275299914b932bd37a50b983c5e7c90ae93bjspm-github@0.13.10.16.1 \ No newline at end of file diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/LICENSE b/jspm_packages/github/systemjs/plugin-json@0.1.2/LICENSE new file mode 100644 index 0000000..7167772 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 jspm + +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/jspm_packages/github/systemjs/plugin-json@0.1.2/README.md b/jspm_packages/github/systemjs/plugin-json@0.1.2/README.md new file mode 100644 index 0000000..e2a6441 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/README.md @@ -0,0 +1,5 @@ +plugin-json +=========== + +JSON loader plugin + diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/json.js b/jspm_packages/github/systemjs/plugin-json@0.1.2/json.js new file mode 100644 index 0000000..e2a23e6 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/json.js @@ -0,0 +1,16 @@ +/* + JSON plugin +*/ + +define({ + translate: function(load) { + if (this.builder) { + load.metadata.format = 'cjs'; + return 'module.exports = ' + JSON.stringify(JSON.parse(load.source)); + } + }, + instantiate: function(load) { + if (!this.builder) + return JSON.parse(load.source); + } +}); \ No newline at end of file diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/json.json b/jspm_packages/github/systemjs/plugin-json@0.1.2/json.json new file mode 100644 index 0000000..0294a88 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/json.json @@ -0,0 +1,3 @@ +{ + "some": "json" +} \ No newline at end of file diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/package.json b/jspm_packages/github/systemjs/plugin-json@0.1.2/package.json new file mode 100644 index 0000000..aba857e --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/package.json @@ -0,0 +1,14 @@ +{ + "name": "systemjs-plugin-json", + "version": "0.1.0", + "main": "json", + "repository": { + "type": "git", + "url": "http://github.com/systemjs/plugin-json.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/systemjs/plugin-json/issues" + }, + "homepage": "https://github.com/systemjs/plugin-json" +} diff --git a/jspm_packages/github/systemjs/plugin-json@0.1.2/test.html b/jspm_packages/github/systemjs/plugin-json@0.1.2/test.html new file mode 100644 index 0000000..7ee3dc3 --- /dev/null +++ b/jspm_packages/github/systemjs/plugin-json@0.1.2/test.html @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/jspm_packages/npm/assert@1.4.1.js b/jspm_packages/npm/assert@1.4.1.js new file mode 100644 index 0000000..f10d85f --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1.js @@ -0,0 +1 @@ +module.exports = require("npm:assert@1.4.1/assert.js"); \ No newline at end of file diff --git a/jspm_packages/npm/assert@1.4.1/.jspm-hash b/jspm_packages/npm/assert@1.4.1/.jspm-hash new file mode 100644 index 0000000..fe4a36c --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/.jspm-hash @@ -0,0 +1 @@ +99912d591836b5a6f5b345c0f07eefc08fc65d9199914b932bd37a50b983c5e7c90ae93bjspm-npm@0.260.16.1 \ No newline at end of file diff --git a/jspm_packages/npm/assert@1.4.1/.npmignore b/jspm_packages/npm/assert@1.4.1/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/jspm_packages/npm/assert@1.4.1/.travis.yml b/jspm_packages/npm/assert@1.4.1/.travis.yml new file mode 100644 index 0000000..a690ffd --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/.travis.yml @@ -0,0 +1,31 @@ +language: node_js +before_install: + - npm install -g npm@2 + - npm install -g npm +matrix: + include: + - node_js: '0.8' + env: TASK=test-node + - node_js: '0.10' + env: TASK=test-node + - node_js: '0.11' + env: TASK=test-node + - node_js: '0.12' + env: TASK=test-node + - node_js: 1 + env: TASK=test-node + - node_js: 2 + env: TASK=test-node + - node_js: 3 + env: TASK=test-node + - node_js: 4 + env: TASK=test-node + - node_js: 5 + env: TASK=test-node + - node_js: '0.10' + env: TASK=test-browser +script: "npm run $TASK" +env: + global: + - secure: qThuKBZQtkooAvzaYldECGNqvKGPRTnXx62IVyhSbFlsCY1VCmjhLldhyPDiZQ3JqL1XvSkK8OMDupiHqZnNE0nGijoO4M/kaEdjBB+jpjg3f8I6te2SNU935SbkfY9KHAaFXMZwdcq7Fk932AxWEu+FMSDM+080wNKpEATXDe4= + - secure: O/scKjHLRcPN5ILV5qsSkksQ7qcZQdHWEUUPItmj/4+vmCc28bHpicoUxXG5A96iHvkBbdmky/nGCg464ZaNLk68m6hfEMDAR3J6mhM2Pf5C4QI/LlFlR1fob9sQ8lztwSGOItwdK8Rfrgb30RRVV71f6FxnaJ6PKMuMNT5S1AQ= diff --git a/jspm_packages/npm/assert@1.4.1/.zuul.yml b/jspm_packages/npm/assert@1.4.1/.zuul.yml new file mode 100644 index 0000000..9353eb7 --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/.zuul.yml @@ -0,0 +1,13 @@ +ui: mocha-qunit +tunnel: ngrok +browsers: + - name: chrome + version: latest + - name: firefox + version: latest + - name: safari + version: latest + - name: ie + version: 9..latest + - name: microsoftedge + version: latest diff --git a/jspm_packages/npm/assert@1.4.1/LICENSE b/jspm_packages/npm/assert@1.4.1/LICENSE new file mode 100644 index 0000000..e3d4e69 --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/LICENSE @@ -0,0 +1,18 @@ +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/jspm_packages/npm/assert@1.4.1/README.md b/jspm_packages/npm/assert@1.4.1/README.md new file mode 100644 index 0000000..6d252ab --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/README.md @@ -0,0 +1,64 @@ +# assert + +[![Build Status](https://travis-ci.org/defunctzombie/commonjs-assert.svg?branch=master)](https://travis-ci.org/defunctzombie/commonjs-assert) + +This module is used for writing unit tests for your applications, you can access it with require('assert'). + +The API is derived from the [commonjs 1.0 unit testing](http://wiki.commonjs.org/wiki/Unit_Testing/1.0) spec and the [node.js assert module](http://nodejs.org/api/assert.html) + +## assert.fail(actual, expected, message, operator) +Throws an exception that displays the values for actual and expected separated by the provided operator. + +## assert(value, message), assert.ok(value, [message]) +Tests if value is truthy, it is equivalent to assert.equal(true, !!value, message); + +## assert.equal(actual, expected, [message]) +Tests shallow, coercive equality with the equal comparison operator ( == ). + +## assert.notEqual(actual, expected, [message]) +Tests shallow, coercive non-equality with the not equal comparison operator ( != ). + +## assert.deepEqual(actual, expected, [message]) +Tests for deep equality. + +## assert.notDeepEqual(actual, expected, [message]) +Tests for any deep inequality. + +## assert.strictEqual(actual, expected, [message]) +Tests strict equality, as determined by the strict equality operator ( === ) + +## assert.notStrictEqual(actual, expected, [message]) +Tests strict non-equality, as determined by the strict not equal operator ( !== ) + +## assert.throws(block, [error], [message]) +Expects block to throw an error. error can be constructor, regexp or validation function. + +Validate instanceof using constructor: + +```javascript +assert.throws(function() { throw new Error("Wrong value"); }, Error); +``` + +Validate error message using RegExp: + +```javascript +assert.throws(function() { throw new Error("Wrong value"); }, /value/); +``` + +Custom error validation: + +```javascript +assert.throws(function() { + throw new Error("Wrong value"); +}, function(err) { + if ( (err instanceof Error) && /value/.test(err) ) { + return true; + } +}, "unexpected error"); +``` + +## assert.doesNotThrow(block, [message]) +Expects block not to throw an error, see assert.throws for details. + +## assert.ifError(value) +Tests if value is not a false value, throws if it is a true value. Useful when testing the first argument, error in callbacks. diff --git a/jspm_packages/npm/assert@1.4.1/assert.js b/jspm_packages/npm/assert@1.4.1/assert.js new file mode 100644 index 0000000..6a532df --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/assert.js @@ -0,0 +1,315 @@ +/* */ +(function(Buffer) { + 'use strict'; + function compare(a, b) { + if (a === b) { + return 0; + } + var x = a.length; + var y = b.length; + for (var i = 0, + len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; + } + function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); + } + var util = require('util'); + var hasOwn = Object.prototype.hasOwnProperty; + var pSlice = Array.prototype.slice; + var functionsHaveNames = (function() { + return function foo() {}.name === 'foo'; + }()); + function pToString(obj) { + return Object.prototype.toString.call(obj); + } + function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; + } + var assert = module.exports = ok; + var regex = /\s*function\s+([^\(\s]*)\s*/; + function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; + } + assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + var err = new Error(); + if (err.stack) { + var out = err.stack; + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + this.stack = out; + } + } + }; + util.inherits(assert.AssertionError, Error); + function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } + } + function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; + } + function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + self.operator + ' ' + truncate(inspect(self.expected), 128); + } + function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); + } + assert.fail = fail; + function ok(value, message) { + if (!value) + fail(value, true, message, '==', assert.ok); + } + assert.ok = ok; + assert.equal = function equal(actual, expected, message) { + if (actual != expected) + fail(actual, expected, message, '==', assert.equal); + }; + assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } + }; + assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } + }; + assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } + }; + function _deepEqual(actual, expected, strict, memos) { + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && actual.global === expected.global && actual.multiline === expected.multiline && actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase; + } else if ((actual === null || typeof actual !== 'object') && (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + } else if (isView(actual) && isView(expected) && pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), new Uint8Array(expected.buffer)) === 0; + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || { + actual: [], + expected: [] + }; + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + memos.actual.push(actual); + memos.expected.push(expected); + return objEquiv(actual, expected, strict, memos); + } + } + function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; + } + function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, + i; + if (ka.length !== kb.length) + return false; + ka.sort(); + kb.sort(); + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; + } + assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } + }; + assert.notDeepStrictEqual = notDeepStrictEqual; + function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } + } + assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } + }; + assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } + }; + function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + try { + if (actual instanceof expected) { + return true; + } + } catch (e) {} + if (Error.isPrototypeOf(expected)) { + return false; + } + return expected.call({}, actual) === true; + } + function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; + } + function _throws(shouldThrow, block, expected, message) { + var actual; + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + if (typeof expected === 'string') { + message = expected; + expected = null; + } + actual = _tryBlock(block); + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + (message ? ' ' + message : '.'); + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + if ((isUnwantedException && userProvidedMessage && expectedException(actual, expected)) || isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + if ((shouldThrow && actual && expected && !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } + } + assert.throws = function(block, error, message) { + _throws(true, block, error, message); + }; + assert.doesNotThrow = function(block, error, message) { + _throws(false, block, error, message); + }; + assert.ifError = function(err) { + if (err) + throw err; + }; + var objectKeys = Object.keys || function(obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) + keys.push(key); + } + return keys; + }; +})(require('buffer').Buffer); diff --git a/jspm_packages/npm/assert@1.4.1/package.json b/jspm_packages/npm/assert@1.4.1/package.json new file mode 100644 index 0000000..bc6a405 --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/package.json @@ -0,0 +1,30 @@ +{ + "name": "assert", + "description": "commonjs assert - node.js api compatible", + "keywords": [ + "assert" + ], + "version": "1.4.1", + "homepage": "https://github.com/defunctzombie/commonjs-assert", + "repository": { + "type": "git", + "url": "git://github.com/defunctzombie/commonjs-assert.git" + }, + "main": "./assert.js", + "dependencies": { + "util": "0.10.3" + }, + "devDependencies": { + "mocha": "~1.21.4", + "zuul": "~3.10.0", + "zuul-ngrok": "^4.0.0" + }, + "license": "MIT", + "scripts": { + "test-node": "mocha --ui qunit test.js", + "test-browser": "zuul -- test.js", + "test": "npm run test-node && npm run test-browser", + "test-native": "TEST_NATIVE=true mocha --ui qunit test.js", + "browser-local": "zuul --no-coverage --local 8000 -- test.js" + } +} diff --git a/jspm_packages/npm/assert@1.4.1/test.js b/jspm_packages/npm/assert@1.4.1/test.js new file mode 100644 index 0000000..9b0a15e --- /dev/null +++ b/jspm_packages/npm/assert@1.4.1/test.js @@ -0,0 +1,275 @@ +/* */ +(function(Buffer, process) { + var nodeAssert = require('assert'); + var ourAssert = require('./assert'); + var keys = Object.keys; + if (process.env.TEST_NATIVE === true) { + tests(nodeAssert, 'node assert'); + } else { + tests(ourAssert, 'our assert'); + } + function makeBlock(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function() { + return f.apply(this, args); + }; + } + function tests(assert, what) { + test('assert.ok', function() { + assert.throws(makeBlock(assert, false), assert.AssertionError, 'ok(false)'); + assert.doesNotThrow(makeBlock(assert, true), assert.AssertionError, 'ok(true)'); + assert.doesNotThrow(makeBlock(assert, 'test', 'ok(\'test\')')); + assert.throws(makeBlock(assert.ok, false), assert.AssertionError, 'ok(false)'); + assert.doesNotThrow(makeBlock(assert.ok, true), assert.AssertionError, 'ok(true)'); + assert.doesNotThrow(makeBlock(assert.ok, 'test'), 'ok(\'test\')'); + }); + test('assert.equal', function() { + assert.throws(makeBlock(assert.equal, true, false), assert.AssertionError, 'equal'); + assert.doesNotThrow(makeBlock(assert.equal, null, null), 'equal'); + assert.doesNotThrow(makeBlock(assert.equal, undefined, undefined), 'equal'); + assert.doesNotThrow(makeBlock(assert.equal, null, undefined), 'equal'); + assert.doesNotThrow(makeBlock(assert.equal, true, true), 'equal'); + assert.doesNotThrow(makeBlock(assert.equal, 2, '2'), 'equal'); + assert.doesNotThrow(makeBlock(assert.notEqual, true, false), 'notEqual'); + assert.throws(makeBlock(assert.notEqual, true, true), assert.AssertionError, 'notEqual'); + }); + test('assert.strictEqual', function() { + assert.throws(makeBlock(assert.strictEqual, 2, '2'), assert.AssertionError, 'strictEqual'); + assert.throws(makeBlock(assert.strictEqual, null, undefined), assert.AssertionError, 'strictEqual'); + assert.doesNotThrow(makeBlock(assert.notStrictEqual, 2, '2'), 'notStrictEqual'); + }); + test('assert.deepStrictEqual', function() { + assert.throws(makeBlock(assert.deepStrictEqual, [2], ['2']), assert.AssertionError, 'deepStrictEqual'); + assert.throws(makeBlock(assert.deepStrictEqual, [null], [undefined]), assert.AssertionError, 'deepStrictEqual'); + assert.doesNotThrow(makeBlock(assert.notDeepStrictEqual, [2], ['2']), 'notDeepStrictEqual'); + }); + test('assert.deepEqual - 7.2', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, new Date(2000, 3, 14), new Date(2000, 3, 14)), 'deepEqual date'); + assert.throws(makeBlock(assert.deepEqual, new Date(), new Date(2000, 3, 14)), assert.AssertionError, 'deepEqual date'); + }); + test('assert.deepEqual - 7.3', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, /a/, /a/)); + assert.doesNotThrow(makeBlock(assert.deepEqual, /a/g, /a/g)); + assert.doesNotThrow(makeBlock(assert.deepEqual, /a/i, /a/i)); + assert.doesNotThrow(makeBlock(assert.deepEqual, /a/m, /a/m)); + assert.doesNotThrow(makeBlock(assert.deepEqual, /a/igm, /a/igm)); + assert.throws(makeBlock(assert.deepEqual, /ab/, /a/)); + assert.throws(makeBlock(assert.deepEqual, /a/g, /a/)); + assert.throws(makeBlock(assert.deepEqual, /a/i, /a/)); + assert.throws(makeBlock(assert.deepEqual, /a/m, /a/)); + assert.throws(makeBlock(assert.deepEqual, /a/igm, /a/im)); + var re1 = /a/; + re1.lastIndex = 3; + assert.throws(makeBlock(assert.deepEqual, re1, /a/)); + }); + test('assert.deepEqual - 7.4', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, 4, '4'), 'deepEqual == check'); + assert.doesNotThrow(makeBlock(assert.deepEqual, true, 1), 'deepEqual == check'); + assert.throws(makeBlock(assert.deepEqual, 4, '5'), assert.AssertionError, 'deepEqual == check'); + }); + test('assert.deepEqual - 7.5', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, {a: 4}, {a: 4})); + assert.doesNotThrow(makeBlock(assert.deepEqual, { + a: 4, + b: '2' + }, { + a: 4, + b: '2' + })); + assert.doesNotThrow(makeBlock(assert.deepEqual, [4], ['4'])); + assert.throws(makeBlock(assert.deepEqual, {a: 4}, { + a: 4, + b: true + }), assert.AssertionError); + assert.doesNotThrow(makeBlock(assert.deepEqual, ['a'], {0: 'a'})); + assert.doesNotThrow(makeBlock(assert.deepEqual, { + a: 4, + b: '1' + }, { + b: '1', + a: 4 + })); + var a1 = [1, 2, 3]; + var a2 = [1, 2, 3]; + a1.a = 'test'; + a1.b = true; + a2.b = true; + a2.a = 'test'; + assert.throws(makeBlock(assert.deepEqual, keys(a1), keys(a2)), assert.AssertionError); + assert.doesNotThrow(makeBlock(assert.deepEqual, a1, a2)); + }); + test('assert.deepEqual - ES6 primitives', function() { + assert.throws(makeBlock(assert.deepEqual, null, {}), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, undefined, {}), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, 'a', ['a']), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, 'a', {0: 'a'}), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, 1, {}), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, true, {}), assert.AssertionError); + if (typeof Symbol === 'symbol') { + assert.throws(makeBlock(assert.deepEqual, Symbol(), {}), assert.AssertionError); + } + }); + test('assert.deepEqual - object wrappers', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, new String('a'), ['a'])); + assert.doesNotThrow(makeBlock(assert.deepEqual, new String('a'), {0: 'a'})); + assert.doesNotThrow(makeBlock(assert.deepEqual, new Number(1), {})); + assert.doesNotThrow(makeBlock(assert.deepEqual, new Boolean(true), {})); + }); + test('assert.deepEqual - Buffers', function() { + assert.doesNotThrow(makeBlock(assert.deepEqual, new Buffer([1, 2, 3]), new Buffer([1, 2, 3]))); + if (typeof global.Uint8Array === 'function') { + assert.throws(makeBlock(assert.deepEqual, new Buffer([1, 2, 3]), new Uint8Array([1, 2, 3]))); + } + if (typeof global.Uint16Array === 'function') { + assert.doesNotThrow(makeBlock(assert.deepEqual, new Uint16Array([1, 2, 3]), new Uint16Array([1, 2, 3]))); + } + }); + function thrower(errorConstructor) { + throw new errorConstructor('test'); + } + test('assert - Testing the throwing', function() { + var aethrow = makeBlock(thrower, assert.AssertionError); + aethrow = makeBlock(thrower, assert.AssertionError); + assert.throws(makeBlock(thrower, assert.AssertionError), assert.AssertionError, 'message'); + assert.throws(makeBlock(thrower, assert.AssertionError), assert.AssertionError); + assert.throws(makeBlock(thrower, assert.AssertionError)); + assert.throws(makeBlock(thrower, TypeError)); + var threw = false; + try { + assert.throws(makeBlock(thrower, TypeError), assert.AssertionError); + } catch (e) { + threw = true; + assert.ok(e instanceof TypeError, 'type'); + } + assert.equal(true, threw, 'a.throws with an explicit error is eating extra errors', assert.AssertionError); + threw = false; + try { + assert.doesNotThrow(makeBlock(thrower, TypeError), assert.AssertionError); + } catch (e) { + threw = true; + assert.ok(e instanceof TypeError); + } + assert.equal(true, threw, 'a.doesNotThrow with an explicit error is eating extra errors'); + try { + assert.doesNotThrow(makeBlock(thrower, TypeError), TypeError); + } catch (e) { + threw = true; + assert.ok(e instanceof assert.AssertionError); + } + assert.equal(true, threw, 'a.doesNotThrow is not catching type matching errors'); + }); + test('assert.ifError', function() { + assert.throws(function() { + assert.ifError(new Error('test error')); + }); + assert.doesNotThrow(function() { + assert.ifError(null); + }); + assert.doesNotThrow(function() { + assert.ifError(); + }); + }); + test('assert - make sure that validating using constructor really works', function() { + var threw = false; + try { + assert.throws(function() { + throw ({}); + }, Array); + } catch (e) { + threw = true; + } + assert.ok(threw, 'wrong constructor validation'); + }); + test('assert - use a RegExp to validate error message', function() { + assert.throws(makeBlock(thrower, TypeError), /test/); + }); + test('assert - se a fn to validate error object', function() { + assert.throws(makeBlock(thrower, TypeError), function(err) { + if ((err instanceof TypeError) && /test/.test(err)) { + return true; + } + }); + }); + test('assert - Make sure deepEqual doesn\'t loop forever on circular refs', function() { + var b = {}; + b.b = b; + var c = {}; + c.b = c; + var gotError = false; + var equal = true; + try { + equal = assert.deepEqual(b, c); + } catch (e) { + gotError = true; + } + assert.ok(gotError || !equal, gotError ? 'got error' : 'are equal'); + }); + test('assert - Ensure reflexivity of deepEqual with `arguments` objects', function() { + var args = (function() { + return arguments; + })(); + assert.throws(makeBlock(assert.deepEqual, [], args), assert.AssertionError); + assert.throws(makeBlock(assert.deepEqual, args, []), assert.AssertionError); + }); + test('assert - test assertion message', function() { + function testAssertionMessage(actual, expected) { + try { + assert.equal(actual, ''); + } catch (e) { + assert.equal(e.toString(), ['AssertionError:', expected, '==', '\'\''].join(' ')); + } + } + testAssertionMessage(undefined, 'undefined'); + testAssertionMessage(null, 'null'); + testAssertionMessage(true, 'true'); + testAssertionMessage(false, 'false'); + testAssertionMessage(0, '0'); + testAssertionMessage(100, '100'); + testAssertionMessage(NaN, 'NaN'); + testAssertionMessage(Infinity, 'Infinity'); + testAssertionMessage(-Infinity, '-Infinity'); + testAssertionMessage('', '""'); + testAssertionMessage('foo', '\'foo\''); + testAssertionMessage([], '[]'); + testAssertionMessage([1, 2, 3], '[ 1, 2, 3 ]'); + testAssertionMessage(new Buffer([1, 2, 3]), ''); + if (typeof global.Uint8Array === 'function' && Object.getOwnPropertyNames(new Uint8Array([])).length === 0) { + testAssertionMessage(new Uint8Array([1, 2, 3]), '{ \'0\': 1, \'1\': 2, \'2\': 3 }'); + } + testAssertionMessage(/a/, '/a/'); + testAssertionMessage(function f() {}, '[Function: f]'); + testAssertionMessage({}, '{}'); + testAssertionMessage({ + a: undefined, + b: null + }, '{ a: undefined, b: null }'); + testAssertionMessage({ + a: NaN, + b: Infinity, + c: -Infinity + }, '{ a: NaN, b: Infinity, c: -Infinity }'); + }); + test('assert - regressions from node.js testcase', function() { + var threw = false; + try { + assert.throws(function() { + assert.ifError(null); + }); + } catch (e) { + threw = true; + assert.equal(e.message, 'Missing expected exception..'); + } + assert.ok(threw); + try { + assert.equal(1, 2); + } catch (e) { + assert.equal(e.toString().split('\n')[0], 'AssertionError: 1 == 2'); + } + try { + assert.equal(1, 2, 'oh no'); + } catch (e) { + assert.equal(e.toString().split('\n')[0], 'AssertionError: oh no'); + } + }); + } +})(require('buffer').Buffer, require('process')); diff --git a/jspm_packages/npm/babel-core@5.8.38.js b/jspm_packages/npm/babel-core@5.8.38.js new file mode 100644 index 0000000..2e013d0 --- /dev/null +++ b/jspm_packages/npm/babel-core@5.8.38.js @@ -0,0 +1 @@ +module.exports = require("npm:babel-core@5.8.38/browser.js"); \ No newline at end of file diff --git a/jspm_packages/npm/babel-core@5.8.38/.jspm-hash b/jspm_packages/npm/babel-core@5.8.38/.jspm-hash new file mode 100644 index 0000000..8cedbd5 --- /dev/null +++ b/jspm_packages/npm/babel-core@5.8.38/.jspm-hash @@ -0,0 +1 @@ +1fcaee79d7e61b750b00b8e54f6dfc9d0af865582615f3cffc60555b3aeaacf1dd14b06ejspm-npm@0.260.16.1 \ No newline at end of file diff --git a/jspm_packages/npm/babel-core@5.8.38/browser-polyfill.js b/jspm_packages/npm/babel-core@5.8.38/browser-polyfill.js new file mode 100644 index 0000000..99919b6 --- /dev/null +++ b/jspm_packages/npm/babel-core@5.8.38/browser-polyfill.js @@ -0,0 +1,4414 @@ +/* */ +"format cjs"; +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 2 ? $$[2] : undefined + , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to) + , inc = 1; + if(from < to && to < from + count){ + inc = -1; + from += count - 1; + to += count - 1; + } + while(count-- > 0){ + if(from in O)O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; +},{"76":76,"79":79,"80":80}],6:[function(_dereq_,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +'use strict'; +var toObject = _dereq_(80) + , toIndex = _dereq_(76) + , toLength = _dereq_(79); +module.exports = [].fill || function fill(value /*, start = 0, end = @length */){ + var O = toObject(this) + , length = toLength(O.length) + , $$ = arguments + , $$len = $$.length + , index = toIndex($$len > 1 ? $$[1] : undefined, length) + , end = $$len > 2 ? $$[2] : undefined + , endPos = end === undefined ? length : toIndex(end, length); + while(endPos > index)O[index++] = value; + return O; +}; +},{"76":76,"79":79,"80":80}],7:[function(_dereq_,module,exports){ +// false -> Array#indexOf +// true -> Array#includes +var toIObject = _dereq_(78) + , toLength = _dereq_(79) + , toIndex = _dereq_(76); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index; + } return !IS_INCLUDES && -1; + }; +}; +},{"76":76,"78":78,"79":79}],8:[function(_dereq_,module,exports){ +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = _dereq_(17) + , IObject = _dereq_(34) + , toObject = _dereq_(80) + , toLength = _dereq_(79) + , asc = _dereq_(9); +module.exports = function(TYPE){ + var IS_MAP = TYPE == 1 + , IS_FILTER = TYPE == 2 + , IS_SOME = TYPE == 3 + , IS_EVERY = TYPE == 4 + , IS_FIND_INDEX = TYPE == 6 + , NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function($this, callbackfn, that){ + var O = toObject($this) + , self = IObject(O) + , f = ctx(callbackfn, that, 3) + , length = toLength(self.length) + , index = 0 + , result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined + , val, res; + for(;length > index; index++)if(NO_HOLES || index in self){ + val = self[index]; + res = f(val, index, O); + if(TYPE){ + if(IS_MAP)result[index] = res; // map + else if(res)switch(TYPE){ + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if(IS_EVERY)return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; +},{"17":17,"34":34,"79":79,"80":80,"9":9}],9:[function(_dereq_,module,exports){ +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var isObject = _dereq_(38) + , isArray = _dereq_(36) + , SPECIES = _dereq_(83)('species'); +module.exports = function(original, length){ + var C; + if(isArray(original)){ + C = original.constructor; + // cross-realm fallback + if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined; + if(isObject(C)){ + C = C[SPECIES]; + if(C === null)C = undefined; + } + } return new (C === undefined ? Array : C)(length); +}; +},{"36":36,"38":38,"83":83}],10:[function(_dereq_,module,exports){ +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = _dereq_(11) + , TAG = _dereq_(83)('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; + +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = (O = Object(it))[TAG]) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; +},{"11":11,"83":83}],11:[function(_dereq_,module,exports){ +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; +},{}],12:[function(_dereq_,module,exports){ +'use strict'; +var $ = _dereq_(46) + , hide = _dereq_(31) + , redefineAll = _dereq_(60) + , ctx = _dereq_(17) + , strictNew = _dereq_(69) + , defined = _dereq_(18) + , forOf = _dereq_(27) + , $iterDefine = _dereq_(42) + , step = _dereq_(44) + , ID = _dereq_(82)('id') + , $has = _dereq_(30) + , isObject = _dereq_(38) + , setSpecies = _dereq_(65) + , DESCRIPTORS = _dereq_(19) + , isExtensible = Object.isExtensible || isObject + , SIZE = DESCRIPTORS ? '_s' : 'size' + , id = 0; + +var fastKey = function(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!$has(it, ID)){ + // can't set id to frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add id + if(!create)return 'E'; + // add missing object id + hide(it, ID, ++id); + // return object id with prefix + } return 'O' + it[ID]; +}; + +var getEntry = function(that, key){ + // fast case + var index = fastKey(key), entry; + if(index !== 'F')return that._i[index]; + // frozen object case + for(entry = that._f; entry; entry = entry.n){ + if(entry.k == key)return entry; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + strictNew(that, C, NAME); + that._i = $.create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear(){ + for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){ + entry.r = true; + if(entry.p)entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function(key){ + var that = this + , entry = getEntry(that, key); + if(entry){ + var next = entry.n + , prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if(prev)prev.n = next; + if(next)next.p = prev; + if(that._f == entry)that._f = next; + if(that._l == entry)that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /*, that = undefined */){ + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3) + , entry; + while(entry = entry ? entry.n : this._f){ + f(entry.v, entry.k, this); + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key){ + return !!getEntry(this, key); + } + }); + if(DESCRIPTORS)$.setDesc(C.prototype, 'size', { + get: function(){ + return defined(this[SIZE]); + } + }); + return C; + }, + def: function(that, key, value){ + var entry = getEntry(that, key) + , prev, index; + // change existing entry + if(entry){ + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if(!that._f)that._f = entry; + if(prev)prev.n = entry; + that[SIZE]++; + // add to index + if(index !== 'F')that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function(C, NAME, IS_MAP){ + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function(iterated, kind){ + this._t = iterated; // target + this._k = kind; // kind + this._l = undefined; // previous + }, function(){ + var that = this + , kind = that._k + , entry = that._l; + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + // get next entry + if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){ + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if(kind == 'keys' )return step(0, entry.k); + if(kind == 'values')return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; +},{"17":17,"18":18,"19":19,"27":27,"30":30,"31":31,"38":38,"42":42,"44":44,"46":46,"60":60,"65":65,"69":69,"82":82}],13:[function(_dereq_,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var forOf = _dereq_(27) + , classof = _dereq_(10); +module.exports = function(NAME){ + return function toJSON(){ + if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic"); + var arr = []; + forOf(this, false, arr.push, arr); + return arr; + }; +}; +},{"10":10,"27":27}],14:[function(_dereq_,module,exports){ +'use strict'; +var hide = _dereq_(31) + , redefineAll = _dereq_(60) + , anObject = _dereq_(4) + , isObject = _dereq_(38) + , strictNew = _dereq_(69) + , forOf = _dereq_(27) + , createArrayMethod = _dereq_(8) + , $has = _dereq_(30) + , WEAK = _dereq_(82)('weak') + , isExtensible = Object.isExtensible || isObject + , arrayFind = createArrayMethod(5) + , arrayFindIndex = createArrayMethod(6) + , id = 0; + +// fallback for frozen keys +var frozenStore = function(that){ + return that._l || (that._l = new FrozenStore); +}; +var FrozenStore = function(){ + this.a = []; +}; +var findFrozen = function(store, key){ + return arrayFind(store.a, function(it){ + return it[0] === key; + }); +}; +FrozenStore.prototype = { + get: function(key){ + var entry = findFrozen(this, key); + if(entry)return entry[1]; + }, + has: function(key){ + return !!findFrozen(this, key); + }, + set: function(key, value){ + var entry = findFrozen(this, key); + if(entry)entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function(key){ + var index = arrayFindIndex(this.a, function(it){ + return it[0] === key; + }); + if(~index)this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + strictNew(that, C, NAME); + that._i = id++; // collection id + that._l = undefined; // leak store for frozen objects + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function(key){ + if(!isObject(key))return false; + if(!isExtensible(key))return frozenStore(this)['delete'](key); + return $has(key, WEAK) && $has(key[WEAK], this._i) && delete key[WEAK][this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key){ + if(!isObject(key))return false; + if(!isExtensible(key))return frozenStore(this).has(key); + return $has(key, WEAK) && $has(key[WEAK], this._i); + } + }); + return C; + }, + def: function(that, key, value){ + if(!isExtensible(anObject(key))){ + frozenStore(that).set(key, value); + } else { + $has(key, WEAK) || hide(key, WEAK, {}); + key[WEAK][that._i] = value; + } return that; + }, + frozenStore: frozenStore, + WEAK: WEAK +}; +},{"27":27,"30":30,"31":31,"38":38,"4":4,"60":60,"69":69,"8":8,"82":82}],15:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(29) + , $export = _dereq_(22) + , redefine = _dereq_(61) + , redefineAll = _dereq_(60) + , forOf = _dereq_(27) + , strictNew = _dereq_(69) + , isObject = _dereq_(38) + , fails = _dereq_(24) + , $iterDetect = _dereq_(43) + , setToStringTag = _dereq_(66); + +module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ + var Base = global[NAME] + , C = Base + , ADDER = IS_MAP ? 'set' : 'add' + , proto = C && C.prototype + , O = {}; + var fixMethod = function(KEY){ + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a){ + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){ + new C().entries().next(); + }))){ + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + } else { + var instance = new C + // early implementations not supports chaining + , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); }) + // most early implementations doesn't supports iterables, most modern - not close it correctly + , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + , BUGGY_ZERO; + if(!ACCEPT_ITERABLES){ + C = wrapper(function(target, iterable){ + strictNew(target, C, NAME); + var that = new Base; + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + IS_WEAK || instance.forEach(function(val, key){ + BUGGY_ZERO = 1 / key === -Infinity; + }); + if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){ + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER); + // weak collections should not contains .clear method + if(IS_WEAK && proto.clear)delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); + + return C; +}; +},{"22":22,"24":24,"27":27,"29":29,"38":38,"43":43,"60":60,"61":61,"66":66,"69":69}],16:[function(_dereq_,module,exports){ +var core = module.exports = {version: '1.2.6'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef +},{}],17:[function(_dereq_,module,exports){ +// optional / simple context binding +var aFunction = _dereq_(2); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; +},{"2":2}],18:[function(_dereq_,module,exports){ +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; +},{}],19:[function(_dereq_,module,exports){ +// Thank's IE8 for his funny defineProperty +module.exports = !_dereq_(24)(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); +},{"24":24}],20:[function(_dereq_,module,exports){ +var isObject = _dereq_(38) + , document = _dereq_(29).document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; +},{"29":29,"38":38}],21:[function(_dereq_,module,exports){ +// all enumerable object keys, includes symbols +var $ = _dereq_(46); +module.exports = function(it){ + var keys = $.getKeys(it) + , getSymbols = $.getSymbols; + if(getSymbols){ + var symbols = getSymbols(it) + , isEnum = $.isEnum + , i = 0 + , key; + while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key); + } + return keys; +}; +},{"46":46}],22:[function(_dereq_,module,exports){ +var global = _dereq_(29) + , core = _dereq_(16) + , hide = _dereq_(31) + , redefine = _dereq_(61) + , ctx = _dereq_(17) + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE] + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}) + , key, own, out, exp; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && key in target; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if(target && !own)redefine(target, key, out); + // export + if(exports[key] != out)hide(exports, key, exp); + if(IS_PROTO && expProto[key] != out)expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +module.exports = $export; +},{"16":16,"17":17,"29":29,"31":31,"61":61}],23:[function(_dereq_,module,exports){ +var MATCH = _dereq_(83)('match'); +module.exports = function(KEY){ + var re = /./; + try { + '/./'[KEY](re); + } catch(e){ + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch(f){ /* empty */ } + } return true; +}; +},{"83":83}],24:[function(_dereq_,module,exports){ +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; +},{}],25:[function(_dereq_,module,exports){ +'use strict'; +var hide = _dereq_(31) + , redefine = _dereq_(61) + , fails = _dereq_(24) + , defined = _dereq_(18) + , wks = _dereq_(83); + +module.exports = function(KEY, length, exec){ + var SYMBOL = wks(KEY) + , original = ''[KEY]; + if(fails(function(){ + var O = {}; + O[SYMBOL] = function(){ return 7; }; + return ''[KEY](O) != 7; + })){ + redefine(String.prototype, KEY, exec(defined, SYMBOL, original)); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function(string, arg){ return original.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function(string){ return original.call(string, this); } + ); + } +}; +},{"18":18,"24":24,"31":31,"61":61,"83":83}],26:[function(_dereq_,module,exports){ +'use strict'; +// 21.2.5.3 get RegExp.prototype.flags +var anObject = _dereq_(4); +module.exports = function(){ + var that = anObject(this) + , result = ''; + if(that.global) result += 'g'; + if(that.ignoreCase) result += 'i'; + if(that.multiline) result += 'm'; + if(that.unicode) result += 'u'; + if(that.sticky) result += 'y'; + return result; +}; +},{"4":4}],27:[function(_dereq_,module,exports){ +var ctx = _dereq_(17) + , call = _dereq_(40) + , isArrayIter = _dereq_(35) + , anObject = _dereq_(4) + , toLength = _dereq_(79) + , getIterFn = _dereq_(84); +module.exports = function(iterable, entries, fn, that){ + var iterFn = getIterFn(iterable) + , f = ctx(fn, that, entries ? 2 : 1) + , index = 0 + , length, step, iterator; + if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){ + entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ + call(iterator, f, step.value, entries); + } +}; +},{"17":17,"35":35,"4":4,"40":40,"79":79,"84":84}],28:[function(_dereq_,module,exports){ +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = _dereq_(78) + , getNames = _dereq_(46).getNames + , toString = {}.toString; + +var windowNames = typeof window == 'object' && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function(it){ + try { + return getNames(it); + } catch(e){ + return windowNames.slice(); + } +}; + +module.exports.get = function getOwnPropertyNames(it){ + if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it); + return getNames(toIObject(it)); +}; +},{"46":46,"78":78}],29:[function(_dereq_,module,exports){ +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef +},{}],30:[function(_dereq_,module,exports){ +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; +},{}],31:[function(_dereq_,module,exports){ +var $ = _dereq_(46) + , createDesc = _dereq_(59); +module.exports = _dereq_(19) ? function(object, key, value){ + return $.setDesc(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; +},{"19":19,"46":46,"59":59}],32:[function(_dereq_,module,exports){ +module.exports = _dereq_(29).document && document.documentElement; +},{"29":29}],33:[function(_dereq_,module,exports){ +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function(fn, args, that){ + var un = that === undefined; + switch(args.length){ + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; +},{}],34:[function(_dereq_,module,exports){ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = _dereq_(11); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; +},{"11":11}],35:[function(_dereq_,module,exports){ +// check on default Array iterator +var Iterators = _dereq_(45) + , ITERATOR = _dereq_(83)('iterator') + , ArrayProto = Array.prototype; + +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; +},{"45":45,"83":83}],36:[function(_dereq_,module,exports){ +// 7.2.2 IsArray(argument) +var cof = _dereq_(11); +module.exports = Array.isArray || function(arg){ + return cof(arg) == 'Array'; +}; +},{"11":11}],37:[function(_dereq_,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var isObject = _dereq_(38) + , floor = Math.floor; +module.exports = function isInteger(it){ + return !isObject(it) && isFinite(it) && floor(it) === it; +}; +},{"38":38}],38:[function(_dereq_,module,exports){ +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; +},{}],39:[function(_dereq_,module,exports){ +// 7.2.8 IsRegExp(argument) +var isObject = _dereq_(38) + , cof = _dereq_(11) + , MATCH = _dereq_(83)('match'); +module.exports = function(it){ + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; +},{"11":11,"38":38,"83":83}],40:[function(_dereq_,module,exports){ +// call something on iterator step with safe closing on error +var anObject = _dereq_(4); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; +},{"4":4}],41:[function(_dereq_,module,exports){ +'use strict'; +var $ = _dereq_(46) + , descriptor = _dereq_(59) + , setToStringTag = _dereq_(66) + , IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +_dereq_(31)(IteratorPrototype, _dereq_(83)('iterator'), function(){ return this; }); + +module.exports = function(Constructor, NAME, next){ + Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)}); + setToStringTag(Constructor, NAME + ' Iterator'); +}; +},{"31":31,"46":46,"59":59,"66":66,"83":83}],42:[function(_dereq_,module,exports){ +'use strict'; +var LIBRARY = _dereq_(48) + , $export = _dereq_(22) + , redefine = _dereq_(61) + , hide = _dereq_(31) + , has = _dereq_(30) + , Iterators = _dereq_(45) + , $iterCreate = _dereq_(41) + , setToStringTag = _dereq_(66) + , getProto = _dereq_(46).getProto + , ITERATOR = _dereq_(83)('iterator') + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values'; + +var returnThis = function(){ return this; }; + +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + $iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , methods, key; + // Fix native + if($native){ + var IteratorPrototype = getProto($default.call(new Base)); + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // FF fix + if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + } + // Define iterator + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: !DEF_VALUES ? $default : getMethod('entries') + }; + if(FORCED)for(key in methods){ + if(!(key in proto))redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; +},{"22":22,"30":30,"31":31,"41":41,"45":45,"46":46,"48":48,"61":61,"66":66,"83":83}],43:[function(_dereq_,module,exports){ +var ITERATOR = _dereq_(83)('iterator') + , SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } + +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ safe = true; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; +},{"83":83}],44:[function(_dereq_,module,exports){ +module.exports = function(done, value){ + return {value: value, done: !!done}; +}; +},{}],45:[function(_dereq_,module,exports){ +module.exports = {}; +},{}],46:[function(_dereq_,module,exports){ +var $Object = Object; +module.exports = { + create: $Object.create, + getProto: $Object.getPrototypeOf, + isEnum: {}.propertyIsEnumerable, + getDesc: $Object.getOwnPropertyDescriptor, + setDesc: $Object.defineProperty, + setDescs: $Object.defineProperties, + getKeys: $Object.keys, + getNames: $Object.getOwnPropertyNames, + getSymbols: $Object.getOwnPropertySymbols, + each: [].forEach +}; +},{}],47:[function(_dereq_,module,exports){ +var $ = _dereq_(46) + , toIObject = _dereq_(78); +module.exports = function(object, el){ + var O = toIObject(object) + , keys = $.getKeys(O) + , length = keys.length + , index = 0 + , key; + while(length > index)if(O[key = keys[index++]] === el)return key; +}; +},{"46":46,"78":78}],48:[function(_dereq_,module,exports){ +module.exports = false; +},{}],49:[function(_dereq_,module,exports){ +// 20.2.2.14 Math.expm1(x) +module.exports = Math.expm1 || function expm1(x){ + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +}; +},{}],50:[function(_dereq_,module,exports){ +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x){ + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; +},{}],51:[function(_dereq_,module,exports){ +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x){ + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; +},{}],52:[function(_dereq_,module,exports){ +var global = _dereq_(29) + , macrotask = _dereq_(75).set + , Observer = global.MutationObserver || global.WebKitMutationObserver + , process = global.process + , Promise = global.Promise + , isNode = _dereq_(11)(process) == 'process' + , head, last, notify; + +var flush = function(){ + var parent, domain, fn; + if(isNode && (parent = process.domain)){ + process.domain = null; + parent.exit(); + } + while(head){ + domain = head.domain; + fn = head.fn; + if(domain)domain.enter(); + fn(); // <- currently we use it only for Promise - try / catch not required + if(domain)domain.exit(); + head = head.next; + } last = undefined; + if(parent)parent.enter(); +}; + +// Node.js +if(isNode){ + notify = function(){ + process.nextTick(flush); + }; +// browsers with MutationObserver +} else if(Observer){ + var toggle = 1 + , node = document.createTextNode(''); + new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new + notify = function(){ + node.data = toggle = -toggle; + }; +// environments with maybe non-completely correct, but existent Promise +} else if(Promise && Promise.resolve){ + notify = function(){ + Promise.resolve().then(flush); + }; +// for other environments - macrotask based on: +// - setImmediate +// - MessageChannel +// - window.postMessag +// - onreadystatechange +// - setTimeout +} else { + notify = function(){ + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; +} + +module.exports = function asap(fn){ + var task = {fn: fn, next: undefined, domain: isNode && process.domain}; + if(last)last.next = task; + if(!head){ + head = task; + notify(); + } last = task; +}; +},{"11":11,"29":29,"75":75}],53:[function(_dereq_,module,exports){ +// 19.1.2.1 Object.assign(target, source, ...) +var $ = _dereq_(46) + , toObject = _dereq_(80) + , IObject = _dereq_(34); + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = _dereq_(24)(function(){ + var a = Object.assign + , A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K; +}) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , $$ = arguments + , $$len = $$.length + , index = 1 + , getKeys = $.getKeys + , getSymbols = $.getSymbols + , isEnum = $.isEnum; + while($$len > index){ + var S = IObject($$[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } + return T; +} : Object.assign; +},{"24":24,"34":34,"46":46,"80":80}],54:[function(_dereq_,module,exports){ +// most Object methods by ES6 should accept primitives +var $export = _dereq_(22) + , core = _dereq_(16) + , fails = _dereq_(24); +module.exports = function(KEY, exec){ + var fn = (core.Object || {})[KEY] || Object[KEY] + , exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); +}; +},{"16":16,"22":22,"24":24}],55:[function(_dereq_,module,exports){ +var $ = _dereq_(46) + , toIObject = _dereq_(78) + , isEnum = $.isEnum; +module.exports = function(isEntries){ + return function(it){ + var O = toIObject(it) + , keys = $.getKeys(O) + , length = keys.length + , i = 0 + , result = [] + , key; + while(length > i)if(isEnum.call(O, key = keys[i++])){ + result.push(isEntries ? [key, O[key]] : O[key]); + } return result; + }; +}; +},{"46":46,"78":78}],56:[function(_dereq_,module,exports){ +// all object keys, includes non-enumerable and symbols +var $ = _dereq_(46) + , anObject = _dereq_(4) + , Reflect = _dereq_(29).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){ + var keys = $.getNames(anObject(it)) + , getSymbols = $.getSymbols; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; +},{"29":29,"4":4,"46":46}],57:[function(_dereq_,module,exports){ +'use strict'; +var path = _dereq_(58) + , invoke = _dereq_(33) + , aFunction = _dereq_(2); +module.exports = function(/* ...pargs */){ + var fn = aFunction(this) + , length = arguments.length + , pargs = Array(length) + , i = 0 + , _ = path._ + , holder = false; + while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true; + return function(/* ...args */){ + var that = this + , $$ = arguments + , $$len = $$.length + , j = 0, k = 0, args; + if(!holder && !$$len)return invoke(fn, pargs, that); + args = pargs.slice(); + if(holder)for(;length > j; j++)if(args[j] === _)args[j] = $$[k++]; + while($$len > k)args.push($$[k++]); + return invoke(fn, args, that); + }; +}; +},{"2":2,"33":33,"58":58}],58:[function(_dereq_,module,exports){ +module.exports = _dereq_(29); +},{"29":29}],59:[function(_dereq_,module,exports){ +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; +},{}],60:[function(_dereq_,module,exports){ +var redefine = _dereq_(61); +module.exports = function(target, src){ + for(var key in src)redefine(target, key, src[key]); + return target; +}; +},{"61":61}],61:[function(_dereq_,module,exports){ +// add fake Function#toString +// for correct work wrapped methods / constructors with methods like LoDash isNative +var global = _dereq_(29) + , hide = _dereq_(31) + , SRC = _dereq_(82)('src') + , TO_STRING = 'toString' + , $toString = Function[TO_STRING] + , TPL = ('' + $toString).split(TO_STRING); + +_dereq_(16).inspectSource = function(it){ + return $toString.call(it); +}; + +(module.exports = function(O, key, val, safe){ + if(typeof val == 'function'){ + val.hasOwnProperty(SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + val.hasOwnProperty('name') || hide(val, 'name', key); + } + if(O === global){ + O[key] = val; + } else { + if(!safe)delete O[key]; + hide(O, key, val); + } +})(Function.prototype, TO_STRING, function toString(){ + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); +},{"16":16,"29":29,"31":31,"82":82}],62:[function(_dereq_,module,exports){ +module.exports = function(regExp, replace){ + var replacer = replace === Object(replace) ? function(part){ + return replace[part]; + } : replace; + return function(it){ + return String(it).replace(regExp, replacer); + }; +}; +},{}],63:[function(_dereq_,module,exports){ +// 7.2.9 SameValue(x, y) +module.exports = Object.is || function is(x, y){ + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; +},{}],64:[function(_dereq_,module,exports){ +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var getDesc = _dereq_(46).getDesc + , isObject = _dereq_(38) + , anObject = _dereq_(4); +var check = function(O, proto){ + anObject(O); + if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function(test, buggy, set){ + try { + set = _dereq_(17)(Function.call, getDesc(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch(e){ buggy = true; } + return function setPrototypeOf(O, proto){ + check(O, proto); + if(buggy)O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; +},{"17":17,"38":38,"4":4,"46":46}],65:[function(_dereq_,module,exports){ +'use strict'; +var global = _dereq_(29) + , $ = _dereq_(46) + , DESCRIPTORS = _dereq_(19) + , SPECIES = _dereq_(83)('species'); + +module.exports = function(KEY){ + var C = global[KEY]; + if(DESCRIPTORS && C && !C[SPECIES])$.setDesc(C, SPECIES, { + configurable: true, + get: function(){ return this; } + }); +}; +},{"19":19,"29":29,"46":46,"83":83}],66:[function(_dereq_,module,exports){ +var def = _dereq_(46).setDesc + , has = _dereq_(30) + , TAG = _dereq_(83)('toStringTag'); + +module.exports = function(it, tag, stat){ + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; +},{"30":30,"46":46,"83":83}],67:[function(_dereq_,module,exports){ +var global = _dereq_(29) + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; +},{"29":29}],68:[function(_dereq_,module,exports){ +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = _dereq_(4) + , aFunction = _dereq_(2) + , SPECIES = _dereq_(83)('species'); +module.exports = function(O, D){ + var C = anObject(O).constructor, S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; +},{"2":2,"4":4,"83":83}],69:[function(_dereq_,module,exports){ +module.exports = function(it, Constructor, name){ + if(!(it instanceof Constructor))throw TypeError(name + ": use the 'new' operator!"); + return it; +}; +},{}],70:[function(_dereq_,module,exports){ +var toInteger = _dereq_(77) + , defined = _dereq_(18); +// true -> String#at +// false -> String#codePointAt +module.exports = function(TO_STRING){ + return function(that, pos){ + var s = String(defined(that)) + , i = toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; +},{"18":18,"77":77}],71:[function(_dereq_,module,exports){ +// helper for String#{startsWith, endsWith, includes} +var isRegExp = _dereq_(39) + , defined = _dereq_(18); + +module.exports = function(that, searchString, NAME){ + if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; +},{"18":18,"39":39}],72:[function(_dereq_,module,exports){ +// https://github.com/ljharb/proposal-string-pad-left-right +var toLength = _dereq_(79) + , repeat = _dereq_(73) + , defined = _dereq_(18); + +module.exports = function(that, maxLength, fillString, left){ + var S = String(defined(that)) + , stringLength = S.length + , fillStr = fillString === undefined ? ' ' : String(fillString) + , intMaxLength = toLength(maxLength); + if(intMaxLength <= stringLength)return S; + if(fillStr == '')fillStr = ' '; + var fillLen = intMaxLength - stringLength + , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; +},{"18":18,"73":73,"79":79}],73:[function(_dereq_,module,exports){ +'use strict'; +var toInteger = _dereq_(77) + , defined = _dereq_(18); + +module.exports = function repeat(count){ + var str = String(defined(this)) + , res = '' + , n = toInteger(count); + if(n < 0 || n == Infinity)throw RangeError("Count can't be negative"); + for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str; + return res; +}; +},{"18":18,"77":77}],74:[function(_dereq_,module,exports){ +var $export = _dereq_(22) + , defined = _dereq_(18) + , fails = _dereq_(24) + , spaces = '\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' + , space = '[' + spaces + ']' + , non = '\u200b\u0085' + , ltrim = RegExp('^' + space + space + '*') + , rtrim = RegExp(space + space + '*$'); + +var exporter = function(KEY, exec){ + var exp = {}; + exp[KEY] = exec(trim); + $export($export.P + $export.F * fails(function(){ + return !!spaces[KEY]() || non[KEY]() != non; + }), 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function(string, TYPE){ + string = String(defined(string)); + if(TYPE & 1)string = string.replace(ltrim, ''); + if(TYPE & 2)string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; +},{"18":18,"22":22,"24":24}],75:[function(_dereq_,module,exports){ +var ctx = _dereq_(17) + , invoke = _dereq_(33) + , html = _dereq_(32) + , cel = _dereq_(20) + , global = _dereq_(29) + , process = global.process + , setTask = global.setImmediate + , clearTask = global.clearImmediate + , MessageChannel = global.MessageChannel + , counter = 0 + , queue = {} + , ONREADYSTATECHANGE = 'onreadystatechange' + , defer, channel, port; +var run = function(){ + var id = +this; + if(queue.hasOwnProperty(id)){ + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listner = function(event){ + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if(!setTask || !clearTask){ + setTask = function setImmediate(fn){ + var args = [], i = 1; + while(arguments.length > i)args.push(arguments[i++]); + queue[++counter] = function(){ + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id){ + delete queue[id]; + }; + // Node.js 0.8- + if(_dereq_(11)(process) == 'process'){ + defer = function(id){ + process.nextTick(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if(MessageChannel){ + channel = new MessageChannel; + port = channel.port2; + channel.port1.onmessage = listner; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){ + defer = function(id){ + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listner, false); + // IE8- + } else if(ONREADYSTATECHANGE in cel('script')){ + defer = function(id){ + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){ + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function(id){ + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; +},{"11":11,"17":17,"20":20,"29":29,"32":32,"33":33}],76:[function(_dereq_,module,exports){ +var toInteger = _dereq_(77) + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; +},{"77":77}],77:[function(_dereq_,module,exports){ +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; +},{}],78:[function(_dereq_,module,exports){ +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = _dereq_(34) + , defined = _dereq_(18); +module.exports = function(it){ + return IObject(defined(it)); +}; +},{"18":18,"34":34}],79:[function(_dereq_,module,exports){ +// 7.1.15 ToLength +var toInteger = _dereq_(77) + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; +},{"77":77}],80:[function(_dereq_,module,exports){ +// 7.1.13 ToObject(argument) +var defined = _dereq_(18); +module.exports = function(it){ + return Object(defined(it)); +}; +},{"18":18}],81:[function(_dereq_,module,exports){ +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = _dereq_(38); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; +},{"38":38}],82:[function(_dereq_,module,exports){ +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; +},{}],83:[function(_dereq_,module,exports){ +var store = _dereq_(67)('wks') + , uid = _dereq_(82) + , Symbol = _dereq_(29).Symbol; +module.exports = function(name){ + return store[name] || (store[name] = + Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); +}; +},{"29":29,"67":67,"82":82}],84:[function(_dereq_,module,exports){ +var classof = _dereq_(10) + , ITERATOR = _dereq_(83)('iterator') + , Iterators = _dereq_(45); +module.exports = _dereq_(16).getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; +},{"10":10,"16":16,"45":45,"83":83}],85:[function(_dereq_,module,exports){ +'use strict'; +var $ = _dereq_(46) + , $export = _dereq_(22) + , DESCRIPTORS = _dereq_(19) + , createDesc = _dereq_(59) + , html = _dereq_(32) + , cel = _dereq_(20) + , has = _dereq_(30) + , cof = _dereq_(11) + , invoke = _dereq_(33) + , fails = _dereq_(24) + , anObject = _dereq_(4) + , aFunction = _dereq_(2) + , isObject = _dereq_(38) + , toObject = _dereq_(80) + , toIObject = _dereq_(78) + , toInteger = _dereq_(77) + , toIndex = _dereq_(76) + , toLength = _dereq_(79) + , IObject = _dereq_(34) + , IE_PROTO = _dereq_(82)('__proto__') + , createArrayMethod = _dereq_(8) + , arrayIndexOf = _dereq_(7)(false) + , ObjectProto = Object.prototype + , ArrayProto = Array.prototype + , arraySlice = ArrayProto.slice + , arrayJoin = ArrayProto.join + , defineProperty = $.setDesc + , getOwnDescriptor = $.getDesc + , defineProperties = $.setDescs + , factories = {} + , IE8_DOM_DEFINE; + +if(!DESCRIPTORS){ + IE8_DOM_DEFINE = !fails(function(){ + return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7; + }); + $.setDesc = function(O, P, Attributes){ + if(IE8_DOM_DEFINE)try { + return defineProperty(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)anObject(O)[P] = Attributes.value; + return O; + }; + $.getDesc = function(O, P){ + if(IE8_DOM_DEFINE)try { + return getOwnDescriptor(O, P); + } catch(e){ /* empty */ } + if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]); + }; + $.setDescs = defineProperties = function(O, Properties){ + anObject(O); + var keys = $.getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)$.setDesc(O, P = keys[i++], Properties[P]); + return O; + }; +} +$export($export.S + $export.F * !DESCRIPTORS, 'Object', { + // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $.getDesc, + // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) + defineProperty: $.setDesc, + // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) + defineProperties: defineProperties +}); + + // IE 8- don't enum bug keys +var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' + + 'toLocaleString,toString,valueOf').split(',') + // Additional keys for getOwnPropertyNames + , keys2 = keys1.concat('length', 'prototype') + , keysLen1 = keys1.length; + +// Create object with `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = cel('iframe') + , i = keysLen1 + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(' + */ + +var runScripts = function runScripts() { + var scripts = []; + var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"]; + var index = 0; + + /** + * Transform and execute script. Ensures correct load order. + */ + + var exec = function exec() { + var param = scripts[index]; + if (param instanceof Array) { + transform.run.apply(transform, param); + index++; + exec(); + } + }; + + /** + * Load, transform, and execute all scripts. + */ + + var run = function run(script, i) { + var opts = {}; + + if (script.src) { + transform.load(script.src, function (param) { + scripts[i] = param; + exec(); + }, opts, true); + } else { + opts.filename = "embedded"; + scripts[i] = [script.innerHTML, opts]; + } + }; + + // Collect scripts with Babel `types`. + + var _scripts = global.document.getElementsByTagName("script"); + + for (var i = 0; i < _scripts.length; ++i) { + var _script = _scripts[i]; + if (types.indexOf(_script.type) >= 0) scripts.push(_script); + } + + for (i in scripts) { + run(scripts[i], i); + } + + exec(); +}; + +/** + * Register load event to transform and execute scripts. + */ + +if (global.addEventListener) { + global.addEventListener("DOMContentLoaded", runScripts, false); +} else if (global.attachEvent) { + global.attachEvent("onload", runScripts); +} +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"15":15,"49":49,"610":610,"66":66}],15:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +exports.register = register; +exports.polyfill = polyfill; +exports.transformFile = transformFile; +exports.transformFileSync = transformFileSync; +exports.parse = parse; +// istanbul ignore next + +function _interopRequire(obj) { return obj && obj.__esModule ? obj["default"] : obj; } + +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } } + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _lodashLangIsFunction = _dereq_(533); + +var _lodashLangIsFunction2 = _interopRequireDefault(_lodashLangIsFunction); + +var _transformation = _dereq_(66); + +var _transformation2 = _interopRequireDefault(_transformation); + +var _babylon = _dereq_(612); + +var babylon = _interopRequireWildcard(_babylon); + +var _util = _dereq_(182); + +var util = _interopRequireWildcard(_util); + +var _fs = _dereq_(3); + +var _fs2 = _interopRequireDefault(_fs); + +var _types = _dereq_(179); + +var t = _interopRequireWildcard(_types); + +exports.util = util; +exports.acorn = babylon; +exports.transform = _transformation2["default"]; +exports.pipeline = _transformation.pipeline; +exports.canCompile = _util.canCompile; + +var _transformationFile = _dereq_(46); + +exports.File = _interopRequire(_transformationFile); + +var _transformationFileOptionsConfig = _dereq_(48); + +exports.options = _interopRequire(_transformationFileOptionsConfig); + +var _transformationPlugin = _dereq_(82); + +exports.Plugin = _interopRequire(_transformationPlugin); + +var _transformationTransformer = _dereq_(83); + +exports.Transformer = _interopRequire(_transformationTransformer); + +var _transformationPipeline = _dereq_(80); + +exports.Pipeline = _interopRequire(_transformationPipeline); + +var _traversal = _dereq_(148); + +exports.traverse = _interopRequire(_traversal); + +var _toolsBuildExternalHelpers = _dereq_(45); + +exports.buildExternalHelpers = _interopRequire(_toolsBuildExternalHelpers); + +var _package = _dereq_(610); + +exports.version = _package.version; +exports.types = t; + +/** + * Register Babel and polyfill globally. + */ + +function register(opts) { + var callback = _dereq_(17); + if (opts != null) callback(opts); + return callback; +} + +/** + * Register polyfill globally. + */ + +function polyfill() { + _dereq_(44); +} + +/** + * Asynchronously transform `filename` with optional `opts`, calls `callback` when complete. + */ + +function transformFile(filename, opts, callback) { + if (_lodashLangIsFunction2["default"](opts)) { + callback = opts; + opts = {}; + } + + opts.filename = filename; + + _fs2["default"].readFile(filename, function (err, code) { + if (err) return callback(err); + + var result; + + try { + result = _transformation2["default"](code, opts); + } catch (err) { + return callback(err); + } + + callback(null, result); + }); +} + +/** + * Synchronous form of `transformFile`. + */ + +function transformFileSync(filename) { + var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + opts.filename = filename; + return _transformation2["default"](_fs2["default"].readFileSync(filename, "utf8"), opts); +} + +/** + * Parse script with Babel's parser. + */ + +function parse(code) { + var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + opts.allowHashBang = true; + opts.sourceType = "module"; + opts.ecmaVersion = Infinity; + opts.plugins = { + jsx: true, + flow: true + }; + opts.features = {}; + + for (var key in _transformation2["default"].pipeline.transformers) { + opts.features[key] = true; + } + + var ast = babylon.parse(code, opts); + + if (opts.onToken) { + // istanbul ignore next + + var _opts$onToken; + + (_opts$onToken = opts.onToken).push.apply(_opts$onToken, ast.tokens); + } + + if (opts.onComment) { + // istanbul ignore next + + var _opts$onComment; + + (_opts$onComment = opts.onComment).push.apply(_opts$onComment, ast.comments); + } + + return ast.program; +} +},{"148":148,"17":17,"179":179,"182":182,"3":3,"44":44,"45":45,"46":46,"48":48,"533":533,"610":610,"612":612,"66":66,"80":80,"82":82,"83":83}],16:[function(_dereq_,module,exports){ +// required to safely use babel/register within a browserify codebase + +"use strict"; + +exports.__esModule = true; + +_dereq_(44); + +exports["default"] = function () {}; + +module.exports = exports["default"]; +},{"44":44}],17:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequire(obj) { return obj && obj.__esModule ? obj["default"] : obj; } + +_dereq_(44); + +var _node = _dereq_(16); + +exports["default"] = _interopRequire(_node); +module.exports = exports["default"]; +},{"16":16,"44":44}],18:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// istanbul ignore next + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var _repeating = _dereq_(586); + +var _repeating2 = _interopRequireDefault(_repeating); + +var _trimRight = _dereq_(608); + +var _trimRight2 = _interopRequireDefault(_trimRight); + +var _lodashLangIsBoolean = _dereq_(531); + +var _lodashLangIsBoolean2 = _interopRequireDefault(_lodashLangIsBoolean); + +var _lodashCollectionIncludes = _dereq_(446); + +var _lodashCollectionIncludes2 = _interopRequireDefault(_lodashCollectionIncludes); + +var _lodashLangIsNumber = _dereq_(535); + +var _lodashLangIsNumber2 = _interopRequireDefault(_lodashLangIsNumber); + +/** + * Buffer for collecting generated output. + */ + +var Buffer = (function () { + function Buffer(position, format) { + _classCallCheck(this, Buffer); + + this.parenPushNewlineState = null; + + this.position = position; + this._indent = format.indent.base; + this.format = format; + this.buf = ""; + } + + /** + * Get the current trimmed buffer. + */ + + Buffer.prototype.get = function get() { + return _trimRight2["default"](this.buf); + }; + + /** + * Get the current indent. + */ + + Buffer.prototype.getIndent = function getIndent() { + if (this.format.compact || this.format.concise) { + return ""; + } else { + return _repeating2["default"](this.format.indent.style, this._indent); + } + }; + + /** + * Get the current indent size. + */ + + Buffer.prototype.indentSize = function indentSize() { + return this.getIndent().length; + }; + + /** + * Increment indent size. + */ + + Buffer.prototype.indent = function indent() { + this._indent++; + }; + + /** + * Decrement indent size. + */ + + Buffer.prototype.dedent = function dedent() { + this._indent--; + }; + + /** + * Add a semicolon to the buffer. + */ + + Buffer.prototype.semicolon = function semicolon() { + this.push(";"); + }; + + /** + * Ensure last character is a semicolon. + */ + + Buffer.prototype.ensureSemicolon = function ensureSemicolon() { + if (!this.isLast(";")) this.semicolon(); + }; + + /** + * Add a right brace to the buffer. + */ + + Buffer.prototype.rightBrace = function rightBrace() { + this.newline(true); + //if (this.format.compact) this._removeLast(";"); + this.push("}"); + }; + + /** + * Add a keyword to the buffer. + */ + + Buffer.prototype.keyword = function keyword(name) { + this.push(name); + this.space(); + }; + + /** + * Add a space to the buffer unless it is compact (override with force). + */ + + Buffer.prototype.space = function space(force) { + if (!force && this.format.compact) return; + + if (force || this.buf && !this.isLast(" ") && !this.isLast("\n")) { + this.push(" "); + } + }; + + /** + * Remove the last character. + */ + + Buffer.prototype.removeLast = function removeLast(cha) { + if (this.format.compact) return; + return this._removeLast(cha); + }; + + Buffer.prototype._removeLast = function _removeLast(cha) { + if (!this._isLast(cha)) return; + this.buf = this.buf.substr(0, this.buf.length - 1); + this.position.unshift(cha); + }; + + /** + * Set some state that will be modified if a newline has been inserted before any + * non-space characters. + * + * This is to prevent breaking semantics for terminatorless separator nodes. eg: + * + * return foo; + * + * returns `foo`. But if we do: + * + * return + * foo; + * + * `undefined` will be returned and not `foo` due to the terminator. + */ + + Buffer.prototype.startTerminatorless = function startTerminatorless() { + return this.parenPushNewlineState = { + printed: false + }; + }; + + /** + * Print an ending parentheses if a starting one has been printed. + */ + + Buffer.prototype.endTerminatorless = function endTerminatorless(state) { + if (state.printed) { + this.dedent(); + this.newline(); + this.push(")"); + } + }; + + /** + * Add a newline (or many newlines), maintaining formatting. + * Strips multiple newlines if removeLast is true. + */ + + Buffer.prototype.newline = function newline(i, removeLast) { + if (this.format.compact || this.format.retainLines) return; + + if (this.format.concise) { + this.space(); + return; + } + + removeLast = removeLast || false; + + if (_lodashLangIsNumber2["default"](i)) { + i = Math.min(2, i); + + if (this.endsWith("{\n") || this.endsWith(":\n")) i--; + if (i <= 0) return; + + while (i > 0) { + this._newline(removeLast); + i--; + } + return; + } + + if (_lodashLangIsBoolean2["default"](i)) { + removeLast = i; + } + + this._newline(removeLast); + }; + + /** + * Adds a newline unless there is already two previous newlines. + */ + + Buffer.prototype._newline = function _newline(removeLast) { + // never allow more than two lines + if (this.endsWith("\n\n")) return; + + // remove the last newline + if (removeLast && this.isLast("\n")) this.removeLast("\n"); + + this.removeLast(" "); + this._removeSpacesAfterLastNewline(); + this._push("\n"); + }; + + /** + * If buffer ends with a newline and some spaces after it, trim those spaces. + */ + + Buffer.prototype._removeSpacesAfterLastNewline = function _removeSpacesAfterLastNewline() { + var lastNewlineIndex = this.buf.lastIndexOf("\n"); + if (lastNewlineIndex === -1) { + return; + } + + var index = this.buf.length - 1; + while (index > lastNewlineIndex) { + if (this.buf[index] !== " ") { + break; + } + + index--; + } + + if (index === lastNewlineIndex) { + this.buf = this.buf.substring(0, index + 1); + } + }; + + /** + * Push a string to the buffer, maintaining indentation and newlines. + */ + + Buffer.prototype.push = function push(str, noIndent) { + if (!this.format.compact && this._indent && !noIndent && str !== "\n") { + // we have an indent level and we aren't pushing a newline + var indent = this.getIndent(); + + // replace all newlines with newlines with the indentation + str = str.replace(/\n/g, "\n" + indent); + + // we've got a newline before us so prepend on the indentation + if (this.isLast("\n")) this._push(indent); + } + + this._push(str); + }; + + /** + * Push a string to the buffer. + */ + + Buffer.prototype._push = function _push(str) { + // see startTerminatorless() instance method + var parenPushNewlineState = this.parenPushNewlineState; + if (parenPushNewlineState) { + for (var i = 0; i < str.length; i++) { + var cha = str[i]; + + // we can ignore spaces since they wont interupt a terminatorless separator + if (cha === " ") continue; + + this.parenPushNewlineState = null; + + if (cha === "\n" || cha === "/") { + // we're going to break this terminator expression so we need to add a parentheses + this._push("("); + this.indent(); + parenPushNewlineState.printed = true; + } + + break; + } + } + + // + this.position.push(str); + this.buf += str; + }; + + /** + * Test if the buffer ends with a string. + */ + + Buffer.prototype.endsWith = function endsWith(str) { + var buf = arguments.length <= 1 || arguments[1] === undefined ? this.buf : arguments[1]; + + if (str.length === 1) { + return buf[buf.length - 1] === str; + } else { + return buf.slice(-str.length) === str; + } + }; + + /** + * Test if a character is last in the buffer. + */ + + Buffer.prototype.isLast = function isLast(cha) { + if (this.format.compact) return false; + return this._isLast(cha); + }; + + Buffer.prototype._isLast = function _isLast(cha) { + var buf = this.buf; + var last = buf[buf.length - 1]; + + if (Array.isArray(cha)) { + return _lodashCollectionIncludes2["default"](cha, last); + } else { + return cha === last; + } + }; + + return Buffer; +})(); + +exports["default"] = Buffer; +module.exports = exports["default"]; +},{"446":446,"531":531,"535":535,"586":586,"608":608}],19:[function(_dereq_,module,exports){ +/** + * Print File.program + */ + +"use strict"; + +exports.__esModule = true; +exports.File = File; +exports.Program = Program; +exports.BlockStatement = BlockStatement; +exports.Noop = Noop; + +function File(node, print) { + print.plain(node.program); +} + +/** + * Print all nodes in a Program.body. + */ + +function Program(node, print) { + print.sequence(node.body); +} + +/** + * Print BlockStatement, collapses empty blocks, prints body. + */ + +function BlockStatement(node, print) { + this.push("{"); + if (node.body.length) { + this.newline(); + print.sequence(node.body, { indent: true }); + if (!this.format.retainLines) this.removeLast("\n"); + this.rightBrace(); + } else { + print.printInnerComments(); + this.push("}"); + } +} + +/** + * What is my purpose? + * Why am I here? + * Why are any of us here? + * Does any of this really matter? + */ + +function Noop() {} +},{}],20:[function(_dereq_,module,exports){ +/** + * Print ClassDeclaration, prints decorators, typeParameters, extends, implements, and body. + */ + +"use strict"; + +exports.__esModule = true; +exports.ClassDeclaration = ClassDeclaration; +exports.ClassBody = ClassBody; +exports.ClassProperty = ClassProperty; +exports.MethodDefinition = MethodDefinition; + +function ClassDeclaration(node, print) { + print.list(node.decorators, { separator: "" }); + this.push("class"); + + if (node.id) { + this.push(" "); + print.plain(node.id); + } + + print.plain(node.typeParameters); + + if (node.superClass) { + this.push(" extends "); + print.plain(node.superClass); + print.plain(node.superTypeParameters); + } + + if (node["implements"]) { + this.push(" implements "); + print.join(node["implements"], { separator: ", " }); + } + + this.space(); + print.plain(node.body); +} + +/** + * Alias ClassDeclaration printer as ClassExpression. + */ + +exports.ClassExpression = ClassDeclaration; + +/** + * Print ClassBody, collapses empty blocks, prints body. + */ + +function ClassBody(node, print) { + this.push("{"); + if (node.body.length === 0) { + print.printInnerComments(); + this.push("}"); + } else { + this.newline(); + + this.indent(); + print.sequence(node.body); + this.dedent(); + + this.rightBrace(); + } +} + +/** + * Print ClassProperty, prints decorators, static, key, typeAnnotation, and value. + * Also: semicolons, deal with it. + */ + +function ClassProperty(node, print) { + print.list(node.decorators, { separator: "" }); + + if (node["static"]) this.push("static "); + print.plain(node.key); + print.plain(node.typeAnnotation); + if (node.value) { + this.space(); + this.push("="); + this.space(); + print.plain(node.value); + } + this.semicolon(); +} + +/** + * Print MethodDefinition, prints decorations, static, and method. + */ + +function MethodDefinition(node, print) { + print.list(node.decorators, { separator: "" }); + + if (node["static"]) { + this.push("static "); + } + + this._method(node, print); +} +},{}],21:[function(_dereq_,module,exports){ +/** + * Prints ComprehensionBlock, prints left and right. + */ + +"use strict"; + +exports.__esModule = true; +exports.ComprehensionBlock = ComprehensionBlock; +exports.ComprehensionExpression = ComprehensionExpression; + +function ComprehensionBlock(node, print) { + this.keyword("for"); + this.push("("); + print.plain(node.left); + this.push(" of "); + print.plain(node.right); + this.push(")"); +} + +/** + * Prints ComprehensionExpression, prints blocks, filter, and body. Handles generators. + */ + +function ComprehensionExpression(node, print) { + this.push(node.generator ? "(" : "["); + + print.join(node.blocks, { separator: " " }); + this.space(); + + if (node.filter) { + this.keyword("if"); + this.push("("); + print.plain(node.filter); + this.push(")"); + this.space(); + } + + print.plain(node.body); + + this.push(node.generator ? ")" : "]"); +} +},{}],22:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +exports.UnaryExpression = UnaryExpression; +exports.DoExpression = DoExpression; +exports.ParenthesizedExpression = ParenthesizedExpression; +exports.UpdateExpression = UpdateExpression; +exports.ConditionalExpression = ConditionalExpression; +exports.NewExpression = NewExpression; +exports.SequenceExpression = SequenceExpression; +exports.ThisExpression = ThisExpression; +exports.Super = Super; +exports.Decorator = Decorator; +exports.CallExpression = CallExpression; +exports.EmptyStatement = EmptyStatement; +exports.ExpressionStatement = ExpressionStatement; +exports.AssignmentPattern = AssignmentPattern; +exports.AssignmentExpression = AssignmentExpression; +exports.BindExpression = BindExpression; +exports.MemberExpression = MemberExpression; +exports.MetaProperty = MetaProperty; +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } } + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _isInteger = _dereq_(434); + +var _isInteger2 = _interopRequireDefault(_isInteger); + +var _lodashLangIsNumber = _dereq_(535); + +var _lodashLangIsNumber2 = _interopRequireDefault(_lodashLangIsNumber); + +var _node = _dereq_(31); + +var _node2 = _interopRequireDefault(_node); + +var _types = _dereq_(179); + +var t = _interopRequireWildcard(_types); + +/** + * RegExp for testing scientific notation in literals. + */ + +var SCIENTIFIC_NOTATION = /e/i; +var ZERO_DECIMAL_INTEGER = /\.0+$/; + +/** + * RegExp for testing if a numeric literal is + * a BinaryIntegerLiteral, OctalIntegerLiteral or HexIntegerLiteral. + */ + +var NON_DECIMAL_NUMERIC_LITERAL = /^0(b|o|x)/i; + +/** + * Prints UnaryExpression, prints operator and argument. + */ + +function UnaryExpression(node, print) { + var needsSpace = /[a-z]$/.test(node.operator); + var arg = node.argument; + + if (t.isUpdateExpression(arg) || t.isUnaryExpression(arg)) { + needsSpace = true; + } + + if (t.isUnaryExpression(arg) && arg.operator === "!") { + needsSpace = false; + } + + this.push(node.operator); + if (needsSpace) this.push(" "); + print.plain(node.argument); +} + +/** + * Prints DoExpression, prints body. + */ + +function DoExpression(node, print) { + this.push("do"); + this.space(); + print.plain(node.body); +} + +/** + * Prints ParenthesizedExpression, prints expression. + */ + +function ParenthesizedExpression(node, print) { + this.push("("); + print.plain(node.expression); + this.push(")"); +} + +/** + * Prints UpdateExpression, prints operator and argument. + */ + +function UpdateExpression(node, print) { + if (node.prefix) { + this.push(node.operator); + print.plain(node.argument); + } else { + print.plain(node.argument); + this.push(node.operator); + } +} + +/** + * Prints ConditionalExpression, prints test, consequent, and alternate. + */ + +function ConditionalExpression(node, print) { + print.plain(node.test); + this.space(); + this.push("?"); + this.space(); + print.plain(node.consequent); + this.space(); + this.push(":"); + this.space(); + print.plain(node.alternate); +} + +/** + * Prints NewExpression, prints callee and arguments. + */ + +function NewExpression(node, print) { + this.push("new "); + print.plain(node.callee); + this.push("("); + print.list(node.arguments); + this.push(")"); +} + +/** + * Prints SequenceExpression.expressions. + */ + +function SequenceExpression(node, print) { + print.list(node.expressions); +} + +/** + * Prints ThisExpression. + */ + +function ThisExpression() { + this.push("this"); +} + +/** + * Prints Super. + */ + +function Super() { + this.push("super"); +} + +/** + * Prints Decorator, prints expression. + */ + +function Decorator(node, print) { + this.push("@"); + print.plain(node.expression); + this.newline(); +} + +/** + * Prints CallExpression, prints callee and arguments. + */ + +function CallExpression(node, print) { + print.plain(node.callee); + + this.push("("); + + var isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact; + + var separator; + if (isPrettyCall) { + separator = ",\n"; + this.newline(); + this.indent(); + } + + print.list(node.arguments, { separator: separator }); + + if (isPrettyCall) { + this.newline(); + this.dedent(); + } + + this.push(")"); +} + +/** + * Builds yield or await expression printer. + * Prints delegate, all, and argument. + */ + +var buildYieldAwait = function buildYieldAwait(keyword) { + return function (node, print) { + this.push(keyword); + + if (node.delegate || node.all) { + this.push("*"); + } + + if (node.argument) { + this.push(" "); + var terminatorState = this.startTerminatorless(); + print.plain(node.argument); + this.endTerminatorless(terminatorState); + } + }; +}; + +/** + * Create YieldExpression and AwaitExpression printers. + */ + +var YieldExpression = buildYieldAwait("yield"); +exports.YieldExpression = YieldExpression; +var AwaitExpression = buildYieldAwait("await"); + +exports.AwaitExpression = AwaitExpression; +/** + * Prints EmptyStatement. + */ + +function EmptyStatement() { + this.semicolon(); +} + +/** + * Prints ExpressionStatement, prints expression. + */ + +function ExpressionStatement(node, print) { + print.plain(node.expression); + this.semicolon(); +} + +/** + * Prints AssignmentPattern, prints left and right. + */ + +function AssignmentPattern(node, print) { + print.plain(node.left); + this.push(" = "); + print.plain(node.right); +} + +/** + * Prints AssignmentExpression, prints left, operator, and right. + */ + +function AssignmentExpression(node, print, parent) { + // Somewhere inside a for statement `init` node but doesn't usually + // needs a paren except for `in` expressions: `for (a in b ? a : b;;)` + var parens = this._inForStatementInit && node.operator === "in" && !_node2["default"].needsParens(node, parent); + + if (parens) { + this.push("("); + } + + // todo: add cases where the spaces can be dropped when in compact mode + print.plain(node.left); + + var spaces = node.operator === "in" || node.operator === "instanceof"; + spaces = true; // todo: https://github.com/babel/babel/issues/1835 + this.space(spaces); + + this.push(node.operator); + + if (!spaces) { + // space is mandatory to avoid outputting regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new Error('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var plType + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + plType = stateChar + patternListStack.push({ + type: plType, + start: i - 1, + reStart: re.length + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + re += ')' + var pl = patternListStack.pop() + plType = pl.type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case '!': + negativeLists.push(pl) + re += ')[^/]*?)' + pl.reEnd = re.length + break + case '?': + case '+': + case '*': + re += plType + break + case '@': break // the default anyway + } + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + var regExp = new RegExp('^' + re + '$', flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"220":220,"9":9}],556:[function(_dereq_,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} options + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options){ + options = options || {}; + if ('string' == typeof val) return parse(val); + return options.long + ? long(val) + : short(val); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = '' + str; + if (str.length > 10000) return; + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); + if (!match) return; + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function short(ms) { + if (ms >= d) return Math.round(ms / d) + 'd'; + if (ms >= h) return Math.round(ms / h) + 'h'; + if (ms >= m) return Math.round(ms / m) + 'm'; + if (ms >= s) return Math.round(ms / s) + 's'; + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function long(ms) { + return plural(ms, d, 'day') + || plural(ms, h, 'hour') + || plural(ms, m, 'minute') + || plural(ms, s, 'second') + || ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) return; + if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; + return Math.ceil(ms / n) + ' ' + name + 's'; +} + +},{}],557:[function(_dereq_,module,exports){ +'use strict'; +module.exports = Number.isNaN || function (x) { + return x !== x; +}; + +},{}],558:[function(_dereq_,module,exports){ +'use strict'; +var fs = _dereq_(3) + +module.exports = function (pth, cb) { + var fn = typeof fs.access === 'function' ? fs.access : fs.stat; + + fn(pth, function (err) { + cb(null, !err); + }); +}; + +module.exports.sync = function (pth) { + var fn = typeof fs.accessSync === 'function' ? fs.accessSync : fs.statSync; + + try { + fn(pth); + return true; + } catch (err) { + return false; + } +}; + +},{"3":3}],559:[function(_dereq_,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +}; + +function win32(path) { + // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = !!device && device.charAt(1) !== ':'; + + // UNC paths are always absolute + return !!result[2] || isUnc; +}; + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,_dereq_(10)) +},{"10":10}],560:[function(_dereq_,module,exports){ +"use strict"; + +var originalObject = Object; +var originalDefProp = Object.defineProperty; +var originalCreate = Object.create; + +function defProp(obj, name, value) { + if (originalDefProp) try { + originalDefProp.call(originalObject, obj, name, { value: value }); + } catch (definePropertyIsBrokenInIE8) { + obj[name] = value; + } else { + obj[name] = value; + } +} + +// For functions that will be invoked using .call or .apply, we need to +// define those methods on the function objects themselves, rather than +// inheriting them from Function.prototype, so that a malicious or clumsy +// third party cannot interfere with the functionality of this module by +// redefining Function.prototype.call or .apply. +function makeSafeToCall(fun) { + if (fun) { + defProp(fun, "call", fun.call); + defProp(fun, "apply", fun.apply); + } + return fun; +} + +makeSafeToCall(originalDefProp); +makeSafeToCall(originalCreate); + +var hasOwn = makeSafeToCall(Object.prototype.hasOwnProperty); +var numToStr = makeSafeToCall(Number.prototype.toString); +var strSlice = makeSafeToCall(String.prototype.slice); + +var cloner = function(){}; +function create(prototype) { + if (originalCreate) { + return originalCreate.call(originalObject, prototype); + } + cloner.prototype = prototype || null; + return new cloner; +} + +var rand = Math.random; +var uniqueKeys = create(null); + +function makeUniqueKey() { + // Collisions are highly unlikely, but this module is in the business of + // making guarantees rather than safe bets. + do var uniqueKey = internString(strSlice.call(numToStr.call(rand(), 36), 2)); + while (hasOwn.call(uniqueKeys, uniqueKey)); + return uniqueKeys[uniqueKey] = uniqueKey; +} + +function internString(str) { + var obj = {}; + obj[str] = true; + return Object.keys(obj)[0]; +} + +// External users might find this function useful, but it is not necessary +// for the typical use of this module. +defProp(exports, "makeUniqueKey", makeUniqueKey); + +// Object.getOwnPropertyNames is the only way to enumerate non-enumerable +// properties, so if we wrap it to ignore our secret keys, there should be +// no way (except guessing) to access those properties. +var originalGetOPNs = Object.getOwnPropertyNames; +Object.getOwnPropertyNames = function getOwnPropertyNames(object) { + for (var names = originalGetOPNs(object), + src = 0, + dst = 0, + len = names.length; + src < len; + ++src) { + if (!hasOwn.call(uniqueKeys, names[src])) { + if (src > dst) { + names[dst] = names[src]; + } + ++dst; + } + } + names.length = dst; + return names; +}; + +function defaultCreatorFn(object) { + return create(null); +} + +function makeAccessor(secretCreatorFn) { + var brand = makeUniqueKey(); + var passkey = create(null); + + secretCreatorFn = secretCreatorFn || defaultCreatorFn; + + function register(object) { + var secret; // Created lazily. + + function vault(key, forget) { + // Only code that has access to the passkey can retrieve (or forget) + // the secret object. + if (key === passkey) { + return forget + ? secret = null + : secret || (secret = secretCreatorFn(object)); + } + } + + defProp(object, brand, vault); + } + + function accessor(object) { + if (!hasOwn.call(object, brand)) + register(object); + return object[brand](passkey); + } + + accessor.forget = function(object) { + if (hasOwn.call(object, brand)) + object[brand](passkey, true); + }; + + return accessor; +} + +defProp(exports, "makeAccessor", makeAccessor); + +},{}],561:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var types = _dereq_(569); +var n = types.namedTypes; +var isArray = types.builtInTypes.array; +var isObject = types.builtInTypes.object; +var linesModule = _dereq_(563); +var fromString = linesModule.fromString; +var Lines = linesModule.Lines; +var concat = linesModule.concat; +var util = _dereq_(570); +var comparePos = util.comparePos; +var childNodesCacheKey = _dereq_(560).makeUniqueKey(); + +// TODO Move a non-caching implementation of this function into ast-types, +// and implement a caching wrapper function here. +function getSortedChildNodes(node, resultArray) { + if (!node) { + return; + } + + // The .loc checks below are sensitive to some of the problems that + // are fixed by this utility function. Specifically, if it decides to + // set node.loc to null, indicating that the node's .loc information + // is unreliable, then we don't want to add node to the resultArray. + util.fixFaultyLocations(node); + + if (resultArray) { + if (n.Node.check(node) && + n.SourceLocation.check(node.loc)) { + // This reverse insertion sort almost always takes constant + // time because we almost always (maybe always?) append the + // nodes in order anyway. + for (var i = resultArray.length - 1; i >= 0; --i) { + if (comparePos(resultArray[i].loc.end, + node.loc.start) <= 0) { + break; + } + } + resultArray.splice(i + 1, 0, node); + return; + } + } else if (node[childNodesCacheKey]) { + return node[childNodesCacheKey]; + } + + var names; + if (isArray.check(node)) { + names = Object.keys(node); + } else if (isObject.check(node)) { + names = types.getFieldNames(node); + } else { + return; + } + + if (!resultArray) { + Object.defineProperty(node, childNodesCacheKey, { + value: resultArray = [], + enumerable: false + }); + } + + for (var i = 0, nameCount = names.length; i < nameCount; ++i) { + getSortedChildNodes(node[names[i]], resultArray); + } + + return resultArray; +} + +// As efficiently as possible, decorate the comment object with +// .precedingNode, .enclosingNode, and/or .followingNode properties, at +// least one of which is guaranteed to be defined. +function decorateComment(node, comment) { + var childNodes = getSortedChildNodes(node); + + // Time to dust off the old binary search robes and wizard hat. + var left = 0, right = childNodes.length; + while (left < right) { + var middle = (left + right) >> 1; + var child = childNodes[middle]; + + if (comparePos(child.loc.start, comment.loc.start) <= 0 && + comparePos(comment.loc.end, child.loc.end) <= 0) { + // The comment is completely contained by this child node. + decorateComment(comment.enclosingNode = child, comment); + return; // Abandon the binary search at this level. + } + + if (comparePos(child.loc.end, comment.loc.start) <= 0) { + // This child node falls completely before the comment. + // Because we will never consider this node or any nodes + // before it again, this node must be the closest preceding + // node we have encountered so far. + var precedingNode = child; + left = middle + 1; + continue; + } + + if (comparePos(comment.loc.end, child.loc.start) <= 0) { + // This child node falls completely after the comment. + // Because we will never consider this node or any nodes after + // it again, this node must be the closest following node we + // have encountered so far. + var followingNode = child; + right = middle; + continue; + } + + throw new Error("Comment location overlaps with node location"); + } + + if (precedingNode) { + comment.precedingNode = precedingNode; + } + + if (followingNode) { + comment.followingNode = followingNode; + } +} + +exports.attach = function(comments, ast, lines) { + if (!isArray.check(comments)) { + return; + } + + var tiesToBreak = []; + + comments.forEach(function(comment) { + comment.loc.lines = lines; + decorateComment(ast, comment); + + var pn = comment.precedingNode; + var en = comment.enclosingNode; + var fn = comment.followingNode; + + if (pn && fn) { + var tieCount = tiesToBreak.length; + if (tieCount > 0) { + var lastTie = tiesToBreak[tieCount - 1]; + + assert.strictEqual( + lastTie.precedingNode === comment.precedingNode, + lastTie.followingNode === comment.followingNode + ); + + if (lastTie.followingNode !== comment.followingNode) { + breakTies(tiesToBreak, lines); + } + } + + tiesToBreak.push(comment); + + } else if (pn) { + // No contest: we have a trailing comment. + breakTies(tiesToBreak, lines); + addTrailingComment(pn, comment); + + } else if (fn) { + // No contest: we have a leading comment. + breakTies(tiesToBreak, lines); + addLeadingComment(fn, comment); + + } else if (en) { + // The enclosing node has no child nodes at all, so what we + // have here is a dangling comment, e.g. [/* crickets */]. + breakTies(tiesToBreak, lines); + addDanglingComment(en, comment); + + } else { + throw new Error("AST contains no nodes at all?"); + } + }); + + breakTies(tiesToBreak, lines); + + comments.forEach(function(comment) { + // These node references were useful for breaking ties, but we + // don't need them anymore, and they create cycles in the AST that + // may lead to infinite recursion if we don't delete them here. + delete comment.precedingNode; + delete comment.enclosingNode; + delete comment.followingNode; + }); +}; + +function breakTies(tiesToBreak, lines) { + var tieCount = tiesToBreak.length; + if (tieCount === 0) { + return; + } + + var pn = tiesToBreak[0].precedingNode; + var fn = tiesToBreak[0].followingNode; + var gapEndPos = fn.loc.start; + + // Iterate backwards through tiesToBreak, examining the gaps + // between the tied comments. In order to qualify as leading, a + // comment must be separated from fn by an unbroken series of + // whitespace-only gaps (or other comments). + for (var indexOfFirstLeadingComment = tieCount; + indexOfFirstLeadingComment > 0; + --indexOfFirstLeadingComment) { + var comment = tiesToBreak[indexOfFirstLeadingComment - 1]; + assert.strictEqual(comment.precedingNode, pn); + assert.strictEqual(comment.followingNode, fn); + + var gap = lines.sliceString(comment.loc.end, gapEndPos); + if (/\S/.test(gap)) { + // The gap string contained something other than whitespace. + break; + } + + gapEndPos = comment.loc.start; + } + + while (indexOfFirstLeadingComment <= tieCount && + (comment = tiesToBreak[indexOfFirstLeadingComment]) && + // If the comment is a //-style comment and indented more + // deeply than the node itself, reconsider it as trailing. + comment.type === "Line" && + comment.loc.start.column > fn.loc.start.column) { + ++indexOfFirstLeadingComment; + } + + tiesToBreak.forEach(function(comment, i) { + if (i < indexOfFirstLeadingComment) { + addTrailingComment(pn, comment); + } else { + addLeadingComment(fn, comment); + } + }); + + tiesToBreak.length = 0; +} + +function addCommentHelper(node, comment) { + var comments = node.comments || (node.comments = []); + comments.push(comment); +} + +function addLeadingComment(node, comment) { + comment.leading = true; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addDanglingComment(node, comment) { + comment.leading = false; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addTrailingComment(node, comment) { + comment.leading = false; + comment.trailing = true; + addCommentHelper(node, comment); +} + +function printLeadingComment(commentPath, print) { + var comment = commentPath.getValue(); + n.Comment.assert(comment); + + var loc = comment.loc; + var lines = loc && loc.lines; + var parts = [print(commentPath)]; + + if (comment.trailing) { + // When we print trailing comments as leading comments, we don't + // want to bring any trailing spaces along. + parts.push("\n"); + + } else if (lines instanceof Lines) { + var trailingSpace = lines.slice( + loc.end, + lines.skipSpaces(loc.end) + ); + + if (trailingSpace.length === 1) { + // If the trailing space contains no newlines, then we want to + // preserve it exactly as we found it. + parts.push(trailingSpace); + } else { + // If the trailing space contains newlines, then replace it + // with just that many newlines, with all other spaces removed. + parts.push(new Array(trailingSpace.length).join("\n")); + } + + } else { + parts.push("\n"); + } + + return concat(parts); +} + +function printTrailingComment(commentPath, print) { + var comment = commentPath.getValue(commentPath); + n.Comment.assert(comment); + + var loc = comment.loc; + var lines = loc && loc.lines; + var parts = []; + + if (lines instanceof Lines) { + var fromPos = lines.skipSpaces(loc.start, true) || lines.firstPos(); + var leadingSpace = lines.slice(fromPos, loc.start); + + if (leadingSpace.length === 1) { + // If the leading space contains no newlines, then we want to + // preserve it exactly as we found it. + parts.push(leadingSpace); + } else { + // If the leading space contains newlines, then replace it + // with just that many newlines, sans all other spaces. + parts.push(new Array(leadingSpace.length).join("\n")); + } + } + + parts.push(print(commentPath)); + + return concat(parts); +} + +exports.printComments = function(path, print) { + var value = path.getValue(); + var innerLines = print(path); + var comments = n.Node.check(value) && + types.getFieldValue(value, "comments"); + + if (!comments || comments.length === 0) { + return innerLines; + } + + var leadingParts = []; + var trailingParts = [innerLines]; + + path.each(function(commentPath) { + var comment = commentPath.getValue(); + var leading = types.getFieldValue(comment, "leading"); + var trailing = types.getFieldValue(comment, "trailing"); + + if (leading || (trailing && comment.type !== "Block")) { + leadingParts.push(printLeadingComment(commentPath, print)); + } else if (trailing) { + assert.strictEqual(comment.type, "Block"); + trailingParts.push(printTrailingComment(commentPath, print)); + } + }, "comments"); + + leadingParts.push.apply(leadingParts, trailingParts); + return concat(leadingParts); +}; + +},{"1":1,"560":560,"563":563,"569":569,"570":570}],562:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var types = _dereq_(569); +var n = types.namedTypes; +var Node = n.Node; +var isArray = types.builtInTypes.array; +var isNumber = types.builtInTypes.number; + +function FastPath(value) { + assert.ok(this instanceof FastPath); + this.stack = [value]; +} + +var FPp = FastPath.prototype; +module.exports = FastPath; + +// Static convenience function for coercing a value to a FastPath. +FastPath.from = function(obj) { + if (obj instanceof FastPath) { + // Return a defensive copy of any existing FastPath instances. + return obj.copy(); + } + + if (obj instanceof types.NodePath) { + // For backwards compatibility, unroll NodePath instances into + // lightweight FastPath [..., name, value] stacks. + var copy = Object.create(FastPath.prototype); + var stack = [obj.value]; + for (var pp; (pp = obj.parentPath); obj = pp) + stack.push(obj.name, pp.value); + copy.stack = stack.reverse(); + return copy; + } + + // Otherwise use obj as the value of the new FastPath instance. + return new FastPath(obj); +}; + +FPp.copy = function copy() { + var copy = Object.create(FastPath.prototype); + copy.stack = this.stack.slice(0); + return copy; +}; + +// The name of the current property is always the penultimate element of +// this.stack, and always a String. +FPp.getName = function getName() { + var s = this.stack; + var len = s.length; + if (len > 1) { + return s[len - 2]; + } + // Since the name is always a string, null is a safe sentinel value to + // return if we do not know the name of the (root) value. + return null; +}; + +// The value of the current property is always the final element of +// this.stack. +FPp.getValue = function getValue() { + var s = this.stack; + return s[s.length - 1]; +}; + +function getNodeHelper(path, count) { + var s = path.stack; + + for (var i = s.length - 1; i >= 0; i -= 2) { + var value = s[i]; + if (n.Node.check(value) && --count < 0) { + return value; + } + } + + return null; +} + +FPp.getNode = function getNode(count) { + return getNodeHelper(this, ~~count); +}; + +FPp.getParentNode = function getParentNode(count) { + return getNodeHelper(this, ~~count + 1); +}; + +// The length of the stack can be either even or odd, depending on whether +// or not we have a name for the root value. The difference between the +// index of the root value and the index of the final value is always +// even, though, which allows us to return the root value in constant time +// (i.e. without iterating backwards through the stack). +FPp.getRootValue = function getRootValue() { + var s = this.stack; + if (s.length % 2 === 0) { + return s[1]; + } + return s[0]; +}; + +// Temporarily push properties named by string arguments given after the +// callback function onto this.stack, then call the callback with a +// reference to this (modified) FastPath object. Note that the stack will +// be restored to its original state after the callback is finished, so it +// is probably a mistake to retain a reference to the path. +FPp.call = function call(callback/*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + var result = callback(this); + s.length = origLen; + return result; +}; + +// Similar to FastPath.prototype.call, except that the value obtained by +// accessing this.getValue()[name1][name2]... should be array-like. The +// callback will be called with a reference to this path object for each +// element of the array. +FPp.each = function each(callback/*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + for (var i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + // If the callback needs to know the value of i, call + // path.getName(), assuming path is the parameter name. + callback(this); + s.length -= 2; + } + } + + s.length = origLen; +}; + +// Similar to FastPath.prototype.each, except that the results of the +// callback function invocations are stored in an array and returned at +// the end of the iteration. +FPp.map = function map(callback/*, name1, name2, ... */) { + var s = this.stack; + var origLen = s.length; + var value = s[origLen - 1]; + var argc = arguments.length; + + for (var i = 1; i < argc; ++i) { + var name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + var result = new Array(value.length); + + for (var i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + result[i] = callback(this, i); + s.length -= 2; + } + } + + s.length = origLen; + + return result; +}; + +// Inspired by require("ast-types").NodePath.prototype.needsParens, but +// more efficient because we're iterating backwards through a stack. +FPp.needsParens = function(assumeExpressionContext) { + var parent = this.getParentNode(); + if (!parent) { + return false; + } + + var name = this.getName(); + var node = this.getNode(); + + // If the value of this path is some child of a Node and not a Node + // itself, then it doesn't need parentheses. Only Node objects (in + // fact, only Expression nodes) need parentheses. + if (this.getValue() !== node) { + return false; + } + + // Only expressions need parentheses. + if (!n.Expression.check(node)) { + return false; + } + + // Identifiers never need parentheses. + if (node.type === "Identifier") { + return false; + } + + if (parent.type === "ParenthesizedExpression") { + return false; + } + + switch (node.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return parent.type === "MemberExpression" + && name === "object" + && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": + switch (parent.type) { + case "CallExpression": + return name === "callee" + && parent.callee === node; + + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + return true; + + case "MemberExpression": + return name === "object" + && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": + var po = parent.operator; + var pp = PRECEDENCE[po]; + var no = node.operator; + var np = PRECEDENCE[no]; + + if (pp > np) { + return true; + } + + if (pp === np && name === "right") { + assert.strictEqual(parent.right, node); + return true; + } + + default: + return false; + } + + case "SequenceExpression": + switch (parent.type) { + case "ForStatement": + // Although parentheses wouldn't hurt around sequence + // expressions in the head of for loops, traditional style + // dictates that e.g. i++, j++ should not be wrapped with + // parentheses. + return false; + + case "ExpressionStatement": + return name !== "expression"; + + default: + // Otherwise err on the side of overparenthesization, adding + // explicit exceptions above if this proves overzealous. + return true; + } + + case "YieldExpression": + switch (parent.type) { + case "BinaryExpression": + case "LogicalExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "CallExpression": + case "MemberExpression": + case "NewExpression": + case "ConditionalExpression": + case "YieldExpression": + return true; + + default: + return false; + } + + case "Literal": + return parent.type === "MemberExpression" + && isNumber.check(node.value) + && name === "object" + && parent.object === node; + + case "AssignmentExpression": + case "ConditionalExpression": + switch (parent.type) { + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + return true; + + case "CallExpression": + return name === "callee" + && parent.callee === node; + + case "ConditionalExpression": + return name === "test" + && parent.test === node; + + case "MemberExpression": + return name === "object" + && parent.object === node; + + default: + return false; + } + + case "ArrowFunctionExpression": + return isBinary(parent); + + case "ObjectExpression": + if (parent.type === "ArrowFunctionExpression" && + name === "body") { + return true; + } + + default: + if (parent.type === "NewExpression" && + name === "callee" && + parent.callee === node) { + return containsCallExpression(node); + } + } + + if (assumeExpressionContext !== true && + !this.canBeFirstInStatement() && + this.firstInStatement()) + return true; + + return false; +}; + +function isBinary(node) { + return n.BinaryExpression.check(node) + || n.LogicalExpression.check(node); +} + +function isUnaryLike(node) { + return n.UnaryExpression.check(node) + // I considered making SpreadElement and SpreadProperty subtypes + // of UnaryExpression, but they're not really Expression nodes. + || (n.SpreadElement && n.SpreadElement.check(node)) + || (n.SpreadProperty && n.SpreadProperty.check(node)); +} + +var PRECEDENCE = {}; +[["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%"] +].forEach(function(tier, i) { + tier.forEach(function(op) { + PRECEDENCE[op] = i; + }); +}); + +function containsCallExpression(node) { + if (n.CallExpression.check(node)) { + return true; + } + + if (isArray.check(node)) { + return node.some(containsCallExpression); + } + + if (n.Node.check(node)) { + return types.someField(node, function(name, child) { + return containsCallExpression(child); + }); + } + + return false; +} + +FPp.canBeFirstInStatement = function() { + var node = this.getNode(); + return !n.FunctionExpression.check(node) + && !n.ObjectExpression.check(node); +}; + +FPp.firstInStatement = function() { + var s = this.stack; + var parentName, parent; + var childName, child; + + for (var i = s.length - 1; i >= 0; i -= 2) { + if (n.Node.check(s[i])) { + childName = parentName; + child = parent; + parentName = s[i - 1]; + parent = s[i]; + } + + if (!parent || !child) { + continue; + } + + if (n.BlockStatement.check(parent) && + parentName === "body" && + childName === 0) { + assert.strictEqual(parent.body[0], child); + return true; + } + + if (n.ExpressionStatement.check(parent) && + childName === "expression") { + assert.strictEqual(parent.expression, child); + return true; + } + + if (n.SequenceExpression.check(parent) && + parentName === "expressions" && + childName === 0) { + assert.strictEqual(parent.expressions[0], child); + continue; + } + + if (n.CallExpression.check(parent) && + childName === "callee") { + assert.strictEqual(parent.callee, child); + continue; + } + + if (n.MemberExpression.check(parent) && + childName === "object") { + assert.strictEqual(parent.object, child); + continue; + } + + if (n.ConditionalExpression.check(parent) && + childName === "test") { + assert.strictEqual(parent.test, child); + continue; + } + + if (isBinary(parent) && + childName === "left") { + assert.strictEqual(parent.left, child); + continue; + } + + if (n.UnaryExpression.check(parent) && + !parent.prefix && + childName === "argument") { + assert.strictEqual(parent.argument, child); + continue; + } + + return false; + } + + return true; +}; + +},{"1":1,"569":569}],563:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var sourceMap = _dereq_(601); +var normalizeOptions = _dereq_(565).normalize; +var secretKey = _dereq_(560).makeUniqueKey(); +var types = _dereq_(569); +var isString = types.builtInTypes.string; +var comparePos = _dereq_(570).comparePos; +var Mapping = _dereq_(564); + +// Goals: +// 1. Minimize new string creation. +// 2. Keep (de)identation O(lines) time. +// 3. Permit negative indentations. +// 4. Enforce immutability. +// 5. No newline characters. + +function getSecret(lines) { + return lines[secretKey]; +} + +function Lines(infos, sourceFileName) { + assert.ok(this instanceof Lines); + assert.ok(infos.length > 0); + + if (sourceFileName) { + isString.assert(sourceFileName); + } else { + sourceFileName = null; + } + + Object.defineProperty(this, secretKey, { + value: { + infos: infos, + mappings: [], + name: sourceFileName, + cachedSourceMap: null + } + }); + + if (sourceFileName) { + getSecret(this).mappings.push(new Mapping(this, { + start: this.firstPos(), + end: this.lastPos() + })); + } +} + +// Exposed for instanceof checks. The fromString function should be used +// to create new Lines objects. +exports.Lines = Lines; +var Lp = Lines.prototype; + +// These properties used to be assigned to each new object in the Lines +// constructor, but we can more efficiently stuff them into the secret and +// let these lazy accessors compute their values on-the-fly. +Object.defineProperties(Lp, { + length: { + get: function() { + return getSecret(this).infos.length; + } + }, + + name: { + get: function() { + return getSecret(this).name; + } + } +}); + +function copyLineInfo(info) { + return { + line: info.line, + indent: info.indent, + sliceStart: info.sliceStart, + sliceEnd: info.sliceEnd + }; +} + +var fromStringCache = {}; +var hasOwn = fromStringCache.hasOwnProperty; +var maxCacheKeyLen = 10; + +function countSpaces(spaces, tabWidth) { + var count = 0; + var len = spaces.length; + + for (var i = 0; i < len; ++i) { + switch (spaces.charCodeAt(i)) { + case 9: // '\t' + assert.strictEqual(typeof tabWidth, "number"); + assert.ok(tabWidth > 0); + + var next = Math.ceil(count / tabWidth) * tabWidth; + if (next === count) { + count += tabWidth; + } else { + count = next; + } + + break; + + case 11: // '\v' + case 12: // '\f' + case 13: // '\r' + case 0xfeff: // zero-width non-breaking space + // These characters contribute nothing to indentation. + break; + + case 32: // ' ' + default: // Treat all other whitespace like ' '. + count += 1; + break; + } + } + + return count; +} +exports.countSpaces = countSpaces; + +var leadingSpaceExp = /^\s*/; + +// As specified here: http://www.ecma-international.org/ecma-262/6.0/#sec-line-terminators +var lineTerminatorSeqExp = + /\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/; + +/** + * @param {Object} options - Options object that configures printing. + */ +function fromString(string, options) { + if (string instanceof Lines) + return string; + + string += ""; + + var tabWidth = options && options.tabWidth; + var tabless = string.indexOf("\t") < 0; + var cacheable = !options && tabless && (string.length <= maxCacheKeyLen); + + assert.ok(tabWidth || tabless, "No tab width specified but encountered tabs in string\n" + string); + + if (cacheable && hasOwn.call(fromStringCache, string)) + return fromStringCache[string]; + + var lines = new Lines(string.split(lineTerminatorSeqExp).map(function(line) { + var spaces = leadingSpaceExp.exec(line)[0]; + return { + line: line, + indent: countSpaces(spaces, tabWidth), + sliceStart: spaces.length, + sliceEnd: line.length + }; + }), normalizeOptions(options).sourceFileName); + + if (cacheable) + fromStringCache[string] = lines; + + return lines; +} +exports.fromString = fromString; + +function isOnlyWhitespace(string) { + return !/\S/.test(string); +} + +Lp.toString = function(options) { + return this.sliceString(this.firstPos(), this.lastPos(), options); +}; + +Lp.getSourceMap = function(sourceMapName, sourceRoot) { + if (!sourceMapName) { + // Although we could make up a name or generate an anonymous + // source map, instead we assume that any consumer who does not + // provide a name does not actually want a source map. + return null; + } + + var targetLines = this; + + function updateJSON(json) { + json = json || {}; + + isString.assert(sourceMapName); + json.file = sourceMapName; + + if (sourceRoot) { + isString.assert(sourceRoot); + json.sourceRoot = sourceRoot; + } + + return json; + } + + var secret = getSecret(targetLines); + if (secret.cachedSourceMap) { + // Since Lines objects are immutable, we can reuse any source map + // that was previously generated. Nevertheless, we return a new + // JSON object here to protect the cached source map from outside + // modification. + return updateJSON(secret.cachedSourceMap.toJSON()); + } + + var smg = new sourceMap.SourceMapGenerator(updateJSON()); + var sourcesToContents = {}; + + secret.mappings.forEach(function(mapping) { + var sourceCursor = mapping.sourceLines.skipSpaces( + mapping.sourceLoc.start + ) || mapping.sourceLines.lastPos(); + + var targetCursor = targetLines.skipSpaces( + mapping.targetLoc.start + ) || targetLines.lastPos(); + + while (comparePos(sourceCursor, mapping.sourceLoc.end) < 0 && + comparePos(targetCursor, mapping.targetLoc.end) < 0) { + + var sourceChar = mapping.sourceLines.charAt(sourceCursor); + var targetChar = targetLines.charAt(targetCursor); + assert.strictEqual(sourceChar, targetChar); + + var sourceName = mapping.sourceLines.name; + + // Add mappings one character at a time for maximum resolution. + smg.addMapping({ + source: sourceName, + original: { line: sourceCursor.line, + column: sourceCursor.column }, + generated: { line: targetCursor.line, + column: targetCursor.column } + }); + + if (!hasOwn.call(sourcesToContents, sourceName)) { + var sourceContent = mapping.sourceLines.toString(); + smg.setSourceContent(sourceName, sourceContent); + sourcesToContents[sourceName] = sourceContent; + } + + targetLines.nextPos(targetCursor, true); + mapping.sourceLines.nextPos(sourceCursor, true); + } + }); + + secret.cachedSourceMap = smg; + + return smg.toJSON(); +}; + +Lp.bootstrapCharAt = function(pos) { + assert.strictEqual(typeof pos, "object"); + assert.strictEqual(typeof pos.line, "number"); + assert.strictEqual(typeof pos.column, "number"); + + var line = pos.line, + column = pos.column, + strings = this.toString().split(lineTerminatorSeqExp), + string = strings[line - 1]; + + if (typeof string === "undefined") + return ""; + + if (column === string.length && + line < strings.length) + return "\n"; + + if (column >= string.length) + return ""; + + return string.charAt(column); +}; + +Lp.charAt = function(pos) { + assert.strictEqual(typeof pos, "object"); + assert.strictEqual(typeof pos.line, "number"); + assert.strictEqual(typeof pos.column, "number"); + + var line = pos.line, + column = pos.column, + secret = getSecret(this), + infos = secret.infos, + info = infos[line - 1], + c = column; + + if (typeof info === "undefined" || c < 0) + return ""; + + var indent = this.getIndentAt(line); + if (c < indent) + return " "; + + c += info.sliceStart - indent; + + if (c === info.sliceEnd && + line < this.length) + return "\n"; + + if (c >= info.sliceEnd) + return ""; + + return info.line.charAt(c); +}; + +Lp.stripMargin = function(width, skipFirstLine) { + if (width === 0) + return this; + + assert.ok(width > 0, "negative margin: " + width); + + if (skipFirstLine && this.length === 1) + return this; + + var secret = getSecret(this); + + var lines = new Lines(secret.infos.map(function(info, i) { + if (info.line && (i > 0 || !skipFirstLine)) { + info = copyLineInfo(info); + info.indent = Math.max(0, info.indent - width); + } + return info; + })); + + if (secret.mappings.length > 0) { + var newMappings = getSecret(lines).mappings; + assert.strictEqual(newMappings.length, 0); + secret.mappings.forEach(function(mapping) { + newMappings.push(mapping.indent(width, skipFirstLine, true)); + }); + } + + return lines; +}; + +Lp.indent = function(by) { + if (by === 0) + return this; + + var secret = getSecret(this); + + var lines = new Lines(secret.infos.map(function(info) { + if (info.line) { + info = copyLineInfo(info); + info.indent += by; + } + return info + })); + + if (secret.mappings.length > 0) { + var newMappings = getSecret(lines).mappings; + assert.strictEqual(newMappings.length, 0); + secret.mappings.forEach(function(mapping) { + newMappings.push(mapping.indent(by)); + }); + } + + return lines; +}; + +Lp.indentTail = function(by) { + if (by === 0) + return this; + + if (this.length < 2) + return this; + + var secret = getSecret(this); + + var lines = new Lines(secret.infos.map(function(info, i) { + if (i > 0 && info.line) { + info = copyLineInfo(info); + info.indent += by; + } + + return info; + })); + + if (secret.mappings.length > 0) { + var newMappings = getSecret(lines).mappings; + assert.strictEqual(newMappings.length, 0); + secret.mappings.forEach(function(mapping) { + newMappings.push(mapping.indent(by, true)); + }); + } + + return lines; +}; + +Lp.getIndentAt = function(line) { + assert.ok(line >= 1, "no line " + line + " (line numbers start from 1)"); + var secret = getSecret(this), + info = secret.infos[line - 1]; + return Math.max(info.indent, 0); +}; + +Lp.guessTabWidth = function() { + var secret = getSecret(this); + if (hasOwn.call(secret, "cachedTabWidth")) { + return secret.cachedTabWidth; + } + + var counts = []; // Sparse array. + var lastIndent = 0; + + for (var line = 1, last = this.length; line <= last; ++line) { + var info = secret.infos[line - 1]; + var sliced = info.line.slice(info.sliceStart, info.sliceEnd); + + // Whitespace-only lines don't tell us much about the likely tab + // width of this code. + if (isOnlyWhitespace(sliced)) { + continue; + } + + var diff = Math.abs(info.indent - lastIndent); + counts[diff] = ~~counts[diff] + 1; + lastIndent = info.indent; + } + + var maxCount = -1; + var result = 2; + + for (var tabWidth = 1; + tabWidth < counts.length; + tabWidth += 1) { + if (hasOwn.call(counts, tabWidth) && + counts[tabWidth] > maxCount) { + maxCount = counts[tabWidth]; + result = tabWidth; + } + } + + return secret.cachedTabWidth = result; +}; + +Lp.isOnlyWhitespace = function() { + return isOnlyWhitespace(this.toString()); +}; + +Lp.isPrecededOnlyByWhitespace = function(pos) { + var secret = getSecret(this); + var info = secret.infos[pos.line - 1]; + var indent = Math.max(info.indent, 0); + + var diff = pos.column - indent; + if (diff <= 0) { + // If pos.column does not exceed the indentation amount, then + // there must be only whitespace before it. + return true; + } + + var start = info.sliceStart; + var end = Math.min(start + diff, info.sliceEnd); + var prefix = info.line.slice(start, end); + + return isOnlyWhitespace(prefix); +}; + +Lp.getLineLength = function(line) { + var secret = getSecret(this), + info = secret.infos[line - 1]; + return this.getIndentAt(line) + info.sliceEnd - info.sliceStart; +}; + +Lp.nextPos = function(pos, skipSpaces) { + var l = Math.max(pos.line, 0), + c = Math.max(pos.column, 0); + + if (c < this.getLineLength(l)) { + pos.column += 1; + + return skipSpaces + ? !!this.skipSpaces(pos, false, true) + : true; + } + + if (l < this.length) { + pos.line += 1; + pos.column = 0; + + return skipSpaces + ? !!this.skipSpaces(pos, false, true) + : true; + } + + return false; +}; + +Lp.prevPos = function(pos, skipSpaces) { + var l = pos.line, + c = pos.column; + + if (c < 1) { + l -= 1; + + if (l < 1) + return false; + + c = this.getLineLength(l); + + } else { + c = Math.min(c - 1, this.getLineLength(l)); + } + + pos.line = l; + pos.column = c; + + return skipSpaces + ? !!this.skipSpaces(pos, true, true) + : true; +}; + +Lp.firstPos = function() { + // Trivial, but provided for completeness. + return { line: 1, column: 0 }; +}; + +Lp.lastPos = function() { + return { + line: this.length, + column: this.getLineLength(this.length) + }; +}; + +Lp.skipSpaces = function(pos, backward, modifyInPlace) { + if (pos) { + pos = modifyInPlace ? pos : { + line: pos.line, + column: pos.column + }; + } else if (backward) { + pos = this.lastPos(); + } else { + pos = this.firstPos(); + } + + if (backward) { + while (this.prevPos(pos)) { + if (!isOnlyWhitespace(this.charAt(pos)) && + this.nextPos(pos)) { + return pos; + } + } + + return null; + + } else { + while (isOnlyWhitespace(this.charAt(pos))) { + if (!this.nextPos(pos)) { + return null; + } + } + + return pos; + } +}; + +Lp.trimLeft = function() { + var pos = this.skipSpaces(this.firstPos(), false, true); + return pos ? this.slice(pos) : emptyLines; +}; + +Lp.trimRight = function() { + var pos = this.skipSpaces(this.lastPos(), true, true); + return pos ? this.slice(this.firstPos(), pos) : emptyLines; +}; + +Lp.trim = function() { + var start = this.skipSpaces(this.firstPos(), false, true); + if (start === null) + return emptyLines; + + var end = this.skipSpaces(this.lastPos(), true, true); + assert.notStrictEqual(end, null); + + return this.slice(start, end); +}; + +Lp.eachPos = function(callback, startPos, skipSpaces) { + var pos = this.firstPos(); + + if (startPos) { + pos.line = startPos.line, + pos.column = startPos.column + } + + if (skipSpaces && !this.skipSpaces(pos, false, true)) { + return; // Encountered nothing but spaces. + } + + do callback.call(this, pos); + while (this.nextPos(pos, skipSpaces)); +}; + +Lp.bootstrapSlice = function(start, end) { + var strings = this.toString().split( + lineTerminatorSeqExp + ).slice( + start.line - 1, + end.line + ); + + strings.push(strings.pop().slice(0, end.column)); + strings[0] = strings[0].slice(start.column); + + return fromString(strings.join("\n")); +}; + +Lp.slice = function(start, end) { + if (!end) { + if (!start) { + // The client seems to want a copy of this Lines object, but + // Lines objects are immutable, so it's perfectly adequate to + // return the same object. + return this; + } + + // Slice to the end if no end position was provided. + end = this.lastPos(); + } + + var secret = getSecret(this); + var sliced = secret.infos.slice(start.line - 1, end.line); + + if (start.line === end.line) { + sliced[0] = sliceInfo(sliced[0], start.column, end.column); + } else { + assert.ok(start.line < end.line); + sliced[0] = sliceInfo(sliced[0], start.column); + sliced.push(sliceInfo(sliced.pop(), 0, end.column)); + } + + var lines = new Lines(sliced); + + if (secret.mappings.length > 0) { + var newMappings = getSecret(lines).mappings; + assert.strictEqual(newMappings.length, 0); + secret.mappings.forEach(function(mapping) { + var sliced = mapping.slice(this, start, end); + if (sliced) { + newMappings.push(sliced); + } + }, this); + } + + return lines; +}; + +function sliceInfo(info, startCol, endCol) { + var sliceStart = info.sliceStart; + var sliceEnd = info.sliceEnd; + var indent = Math.max(info.indent, 0); + var lineLength = indent + sliceEnd - sliceStart; + + if (typeof endCol === "undefined") { + endCol = lineLength; + } + + startCol = Math.max(startCol, 0); + endCol = Math.min(endCol, lineLength); + endCol = Math.max(endCol, startCol); + + if (endCol < indent) { + indent = endCol; + sliceEnd = sliceStart; + } else { + sliceEnd -= lineLength - endCol; + } + + lineLength = endCol; + lineLength -= startCol; + + if (startCol < indent) { + indent -= startCol; + } else { + startCol -= indent; + indent = 0; + sliceStart += startCol; + } + + assert.ok(indent >= 0); + assert.ok(sliceStart <= sliceEnd); + assert.strictEqual(lineLength, indent + sliceEnd - sliceStart); + + if (info.indent === indent && + info.sliceStart === sliceStart && + info.sliceEnd === sliceEnd) { + return info; + } + + return { + line: info.line, + indent: indent, + sliceStart: sliceStart, + sliceEnd: sliceEnd + }; +} + +Lp.bootstrapSliceString = function(start, end, options) { + return this.slice(start, end).toString(options); +}; + +Lp.sliceString = function(start, end, options) { + if (!end) { + if (!start) { + // The client seems to want a copy of this Lines object, but + // Lines objects are immutable, so it's perfectly adequate to + // return the same object. + return this; + } + + // Slice to the end if no end position was provided. + end = this.lastPos(); + } + + options = normalizeOptions(options); + + var infos = getSecret(this).infos; + var parts = []; + var tabWidth = options.tabWidth; + + for (var line = start.line; line <= end.line; ++line) { + var info = infos[line - 1]; + + if (line === start.line) { + if (line === end.line) { + info = sliceInfo(info, start.column, end.column); + } else { + info = sliceInfo(info, start.column); + } + } else if (line === end.line) { + info = sliceInfo(info, 0, end.column); + } + + var indent = Math.max(info.indent, 0); + + var before = info.line.slice(0, info.sliceStart); + if (options.reuseWhitespace && + isOnlyWhitespace(before) && + countSpaces(before, options.tabWidth) === indent) { + // Reuse original spaces if the indentation is correct. + parts.push(info.line.slice(0, info.sliceEnd)); + continue; + } + + var tabs = 0; + var spaces = indent; + + if (options.useTabs) { + tabs = Math.floor(indent / tabWidth); + spaces -= tabs * tabWidth; + } + + var result = ""; + + if (tabs > 0) { + result += new Array(tabs + 1).join("\t"); + } + + if (spaces > 0) { + result += new Array(spaces + 1).join(" "); + } + + result += info.line.slice(info.sliceStart, info.sliceEnd); + + parts.push(result); + } + + return parts.join(options.lineTerminator); +}; + +Lp.isEmpty = function() { + return this.length < 2 && this.getLineLength(1) < 1; +}; + +Lp.join = function(elements) { + var separator = this; + var separatorSecret = getSecret(separator); + var infos = []; + var mappings = []; + var prevInfo; + + function appendSecret(secret) { + if (secret === null) + return; + + if (prevInfo) { + var info = secret.infos[0]; + var indent = new Array(info.indent + 1).join(" "); + var prevLine = infos.length; + var prevColumn = Math.max(prevInfo.indent, 0) + + prevInfo.sliceEnd - prevInfo.sliceStart; + + prevInfo.line = prevInfo.line.slice( + 0, prevInfo.sliceEnd) + indent + info.line.slice( + info.sliceStart, info.sliceEnd); + + prevInfo.sliceEnd = prevInfo.line.length; + + if (secret.mappings.length > 0) { + secret.mappings.forEach(function(mapping) { + mappings.push(mapping.add(prevLine, prevColumn)); + }); + } + + } else if (secret.mappings.length > 0) { + mappings.push.apply(mappings, secret.mappings); + } + + secret.infos.forEach(function(info, i) { + if (!prevInfo || i > 0) { + prevInfo = copyLineInfo(info); + infos.push(prevInfo); + } + }); + } + + function appendWithSeparator(secret, i) { + if (i > 0) + appendSecret(separatorSecret); + appendSecret(secret); + } + + elements.map(function(elem) { + var lines = fromString(elem); + if (lines.isEmpty()) + return null; + return getSecret(lines); + }).forEach(separator.isEmpty() + ? appendSecret + : appendWithSeparator); + + if (infos.length < 1) + return emptyLines; + + var lines = new Lines(infos); + + getSecret(lines).mappings = mappings; + + return lines; +}; + +exports.concat = function(elements) { + return emptyLines.join(elements); +}; + +Lp.concat = function(other) { + var args = arguments, + list = [this]; + list.push.apply(list, args); + assert.strictEqual(list.length, args.length + 1); + return emptyLines.join(list); +}; + +// The emptyLines object needs to be created all the way down here so that +// Lines.prototype will be fully populated. +var emptyLines = fromString(""); + +},{"1":1,"560":560,"564":564,"565":565,"569":569,"570":570,"601":601}],564:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var types = _dereq_(569); +var isString = types.builtInTypes.string; +var isNumber = types.builtInTypes.number; +var SourceLocation = types.namedTypes.SourceLocation; +var Position = types.namedTypes.Position; +var linesModule = _dereq_(563); +var comparePos = _dereq_(570).comparePos; + +function Mapping(sourceLines, sourceLoc, targetLoc) { + assert.ok(this instanceof Mapping); + assert.ok(sourceLines instanceof linesModule.Lines); + SourceLocation.assert(sourceLoc); + + if (targetLoc) { + // In certain cases it's possible for targetLoc.{start,end}.column + // values to be negative, which technically makes them no longer + // valid SourceLocation nodes, so we need to be more forgiving. + assert.ok( + isNumber.check(targetLoc.start.line) && + isNumber.check(targetLoc.start.column) && + isNumber.check(targetLoc.end.line) && + isNumber.check(targetLoc.end.column) + ); + } else { + // Assume identity mapping if no targetLoc specified. + targetLoc = sourceLoc; + } + + Object.defineProperties(this, { + sourceLines: { value: sourceLines }, + sourceLoc: { value: sourceLoc }, + targetLoc: { value: targetLoc } + }); +} + +var Mp = Mapping.prototype; +module.exports = Mapping; + +Mp.slice = function(lines, start, end) { + assert.ok(lines instanceof linesModule.Lines); + Position.assert(start); + + if (end) { + Position.assert(end); + } else { + end = lines.lastPos(); + } + + var sourceLines = this.sourceLines; + var sourceLoc = this.sourceLoc; + var targetLoc = this.targetLoc; + + function skip(name) { + var sourceFromPos = sourceLoc[name]; + var targetFromPos = targetLoc[name]; + var targetToPos = start; + + if (name === "end") { + targetToPos = end; + } else { + assert.strictEqual(name, "start"); + } + + return skipChars( + sourceLines, sourceFromPos, + lines, targetFromPos, targetToPos + ); + } + + if (comparePos(start, targetLoc.start) <= 0) { + if (comparePos(targetLoc.end, end) <= 0) { + targetLoc = { + start: subtractPos(targetLoc.start, start.line, start.column), + end: subtractPos(targetLoc.end, start.line, start.column) + }; + + // The sourceLoc can stay the same because the contents of the + // targetLoc have not changed. + + } else if (comparePos(end, targetLoc.start) <= 0) { + return null; + + } else { + sourceLoc = { + start: sourceLoc.start, + end: skip("end") + }; + + targetLoc = { + start: subtractPos(targetLoc.start, start.line, start.column), + end: subtractPos(end, start.line, start.column) + }; + } + + } else { + if (comparePos(targetLoc.end, start) <= 0) { + return null; + } + + if (comparePos(targetLoc.end, end) <= 0) { + sourceLoc = { + start: skip("start"), + end: sourceLoc.end + }; + + targetLoc = { + // Same as subtractPos(start, start.line, start.column): + start: { line: 1, column: 0 }, + end: subtractPos(targetLoc.end, start.line, start.column) + }; + + } else { + sourceLoc = { + start: skip("start"), + end: skip("end") + }; + + targetLoc = { + // Same as subtractPos(start, start.line, start.column): + start: { line: 1, column: 0 }, + end: subtractPos(end, start.line, start.column) + }; + } + } + + return new Mapping(this.sourceLines, sourceLoc, targetLoc); +}; + +Mp.add = function(line, column) { + return new Mapping(this.sourceLines, this.sourceLoc, { + start: addPos(this.targetLoc.start, line, column), + end: addPos(this.targetLoc.end, line, column) + }); +}; + +function addPos(toPos, line, column) { + return { + line: toPos.line + line - 1, + column: (toPos.line === 1) + ? toPos.column + column + : toPos.column + }; +} + +Mp.subtract = function(line, column) { + return new Mapping(this.sourceLines, this.sourceLoc, { + start: subtractPos(this.targetLoc.start, line, column), + end: subtractPos(this.targetLoc.end, line, column) + }); +}; + +function subtractPos(fromPos, line, column) { + return { + line: fromPos.line - line + 1, + column: (fromPos.line === line) + ? fromPos.column - column + : fromPos.column + }; +} + +Mp.indent = function(by, skipFirstLine, noNegativeColumns) { + if (by === 0) { + return this; + } + + var targetLoc = this.targetLoc; + var startLine = targetLoc.start.line; + var endLine = targetLoc.end.line; + + if (skipFirstLine && startLine === 1 && endLine === 1) { + return this; + } + + targetLoc = { + start: targetLoc.start, + end: targetLoc.end + }; + + if (!skipFirstLine || startLine > 1) { + var startColumn = targetLoc.start.column + by; + targetLoc.start = { + line: startLine, + column: noNegativeColumns + ? Math.max(0, startColumn) + : startColumn + }; + } + + if (!skipFirstLine || endLine > 1) { + var endColumn = targetLoc.end.column + by; + targetLoc.end = { + line: endLine, + column: noNegativeColumns + ? Math.max(0, endColumn) + : endColumn + }; + } + + return new Mapping(this.sourceLines, this.sourceLoc, targetLoc); +}; + +function skipChars( + sourceLines, sourceFromPos, + targetLines, targetFromPos, targetToPos +) { + assert.ok(sourceLines instanceof linesModule.Lines); + assert.ok(targetLines instanceof linesModule.Lines); + Position.assert(sourceFromPos); + Position.assert(targetFromPos); + Position.assert(targetToPos); + + var targetComparison = comparePos(targetFromPos, targetToPos); + if (targetComparison === 0) { + // Trivial case: no characters to skip. + return sourceFromPos; + } + + if (targetComparison < 0) { + // Skipping forward. + + var sourceCursor = sourceLines.skipSpaces(sourceFromPos); + var targetCursor = targetLines.skipSpaces(targetFromPos); + + var lineDiff = targetToPos.line - targetCursor.line; + sourceCursor.line += lineDiff; + targetCursor.line += lineDiff; + + if (lineDiff > 0) { + // If jumping to later lines, reset columns to the beginnings + // of those lines. + sourceCursor.column = 0; + targetCursor.column = 0; + } else { + assert.strictEqual(lineDiff, 0); + } + + while (comparePos(targetCursor, targetToPos) < 0 && + targetLines.nextPos(targetCursor, true)) { + assert.ok(sourceLines.nextPos(sourceCursor, true)); + assert.strictEqual( + sourceLines.charAt(sourceCursor), + targetLines.charAt(targetCursor) + ); + } + + } else { + // Skipping backward. + + var sourceCursor = sourceLines.skipSpaces(sourceFromPos, true); + var targetCursor = targetLines.skipSpaces(targetFromPos, true); + + var lineDiff = targetToPos.line - targetCursor.line; + sourceCursor.line += lineDiff; + targetCursor.line += lineDiff; + + if (lineDiff < 0) { + // If jumping to earlier lines, reset columns to the ends of + // those lines. + sourceCursor.column = sourceLines.getLineLength(sourceCursor.line); + targetCursor.column = targetLines.getLineLength(targetCursor.line); + } else { + assert.strictEqual(lineDiff, 0); + } + + while (comparePos(targetToPos, targetCursor) < 0 && + targetLines.prevPos(targetCursor, true)) { + assert.ok(sourceLines.prevPos(sourceCursor, true)); + assert.strictEqual( + sourceLines.charAt(sourceCursor), + targetLines.charAt(targetCursor) + ); + } + } + + return sourceCursor; +} + +},{"1":1,"563":563,"569":569,"570":570}],565:[function(_dereq_,module,exports){ +var defaults = { + // If you want to use a different branch of esprima, or any other + // module that supports a .parse function, pass that module object to + // recast.parse as options.esprima. + esprima: _dereq_(3), + + // Number of spaces the pretty-printer should use per tab for + // indentation. If you do not pass this option explicitly, it will be + // (quite reliably!) inferred from the original code. + tabWidth: 4, + + // If you really want the pretty-printer to use tabs instead of + // spaces, make this option true. + useTabs: false, + + // The reprinting code leaves leading whitespace untouched unless it + // has to reindent a line, or you pass false for this option. + reuseWhitespace: true, + + // Override this option to use a different line terminator, e.g. \r\n. + lineTerminator: _dereq_(8).EOL, + + // Some of the pretty-printer code (such as that for printing function + // parameter lists) makes a valiant attempt to prevent really long + // lines. You can adjust the limit by changing this option; however, + // there is no guarantee that line length will fit inside this limit. + wrapColumn: 74, // Aspirational for now. + + // Pass a string as options.sourceFileName to recast.parse to tell the + // reprinter to keep track of reused code so that it can construct a + // source map automatically. + sourceFileName: null, + + // Pass a string as options.sourceMapName to recast.print, and + // (provided you passed options.sourceFileName earlier) the + // PrintResult of recast.print will have a .map property for the + // generated source map. + sourceMapName: null, + + // If provided, this option will be passed along to the source map + // generator as a root directory for relative source file paths. + sourceRoot: null, + + // If you provide a source map that was generated from a previous call + // to recast.print as options.inputSourceMap, the old source map will + // be composed with the new source map. + inputSourceMap: null, + + // If you want esprima to generate .range information (recast only + // uses .loc internally), pass true for this option. + range: false, + + // If you want esprima not to throw exceptions when it encounters + // non-fatal errors, keep this option true. + tolerant: true, + + // If you want to override the quotes used in string literals, specify + // either "single", "double", or "auto" here ("auto" will select the one + // which results in the shorter literal) + // Otherwise, the input marks will be preserved + quote: null, + + // If you want to print trailing commas in object literals, + // array expressions, functions calls and function definitions pass true + // for this option. + trailingComma: false, +}, hasOwn = defaults.hasOwnProperty; + +// Copy options and fill in default values. +exports.normalize = function(options) { + options = options || defaults; + + function get(key) { + return hasOwn.call(options, key) + ? options[key] + : defaults[key]; + } + + return { + tabWidth: +get("tabWidth"), + useTabs: !!get("useTabs"), + reuseWhitespace: !!get("reuseWhitespace"), + lineTerminator: get("lineTerminator"), + wrapColumn: Math.max(get("wrapColumn"), 0), + sourceFileName: get("sourceFileName"), + sourceMapName: get("sourceMapName"), + sourceRoot: get("sourceRoot"), + inputSourceMap: get("inputSourceMap"), + esprima: get("esprima"), + range: get("range"), + tolerant: get("tolerant"), + quote: get("quote"), + trailingComma: get("trailingComma"), + }; +}; + +},{"3":3,"8":8}],566:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var types = _dereq_(569); +var n = types.namedTypes; +var b = types.builders; +var isObject = types.builtInTypes.object; +var isArray = types.builtInTypes.array; +var isFunction = types.builtInTypes.function; +var Patcher = _dereq_(567).Patcher; +var normalizeOptions = _dereq_(565).normalize; +var fromString = _dereq_(563).fromString; +var attachComments = _dereq_(561).attach; +var util = _dereq_(570); + +exports.parse = function parse(source, options) { + options = normalizeOptions(options); + + var lines = fromString(source, options); + + var sourceWithoutTabs = lines.toString({ + tabWidth: options.tabWidth, + reuseWhitespace: false, + useTabs: false + }); + + var comments = []; + var program = options.esprima.parse(sourceWithoutTabs, { + loc: true, + locations: true, + range: options.range, + comment: true, + onComment: comments, + tolerant: options.tolerant, + ecmaVersion: 6, + sourceType: 'module' + }); + + program.loc = program.loc || { + start: lines.firstPos(), + end: lines.lastPos() + }; + + program.loc.lines = lines; + program.loc.indent = 0; + + // Expand the Program node's .loc to include all comments, since + // typically its .loc.start and .loc.end will coincide with those of + // the first and last statements, respectively, excluding any comments + // that fall outside that region. + var trueProgramLoc = util.getTrueLoc(program, lines); + program.loc.start = trueProgramLoc.start; + program.loc.end = trueProgramLoc.end; + + if (program.comments) { + comments = program.comments; + delete program.comments; + } + + // In order to ensure we reprint leading and trailing program + // comments, wrap the original Program node with a File node. + var file = b.file(program); + file.loc = { + lines: lines, + indent: 0, + start: lines.firstPos(), + end: lines.lastPos() + }; + + // Passing file.program here instead of just file means that initial + // comments will be attached to program.body[0] instead of program. + attachComments( + comments, + program.body.length ? file.program : file, + lines + ); + + // Return a copy of the original AST so that any changes made may be + // compared to the original. + return new TreeCopier(lines).copy(file); +}; + +function TreeCopier(lines) { + assert.ok(this instanceof TreeCopier); + this.lines = lines; + this.indent = 0; +} + +var TCp = TreeCopier.prototype; + +TCp.copy = function(node) { + if (isArray.check(node)) { + return node.map(this.copy, this); + } + + if (!isObject.check(node)) { + return node; + } + + util.fixFaultyLocations(node); + + var copy = Object.create(Object.getPrototypeOf(node), { + original: { // Provide a link from the copy to the original. + value: node, + configurable: false, + enumerable: false, + writable: true + } + }); + + var loc = node.loc; + var oldIndent = this.indent; + var newIndent = oldIndent; + + if (loc) { + // When node is a comment, we set node.loc.indent to + // node.loc.start.column so that, when/if we print the comment by + // itself, we can strip that much whitespace from the left margin + // of the comment. This only really matters for multiline Block + // comments, but it doesn't hurt for Line comments. + if (node.type === "Block" || node.type === "Line" || + this.lines.isPrecededOnlyByWhitespace(loc.start)) { + newIndent = this.indent = loc.start.column; + } + + loc.lines = this.lines; + loc.indent = newIndent; + } + + var keys = Object.keys(node); + var keyCount = keys.length; + for (var i = 0; i < keyCount; ++i) { + var key = keys[i]; + if (key === "loc") { + copy[key] = node[key]; + } else { + copy[key] = this.copy(node[key]); + } + } + + this.indent = oldIndent; + + return copy; +}; + +},{"1":1,"561":561,"563":563,"565":565,"567":567,"569":569,"570":570}],567:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var linesModule = _dereq_(563); +var types = _dereq_(569); +var getFieldValue = types.getFieldValue; +var Printable = types.namedTypes.Printable; +var Expression = types.namedTypes.Expression; +var SourceLocation = types.namedTypes.SourceLocation; +var util = _dereq_(570); +var comparePos = util.comparePos; +var FastPath = _dereq_(562); +var isObject = types.builtInTypes.object; +var isArray = types.builtInTypes.array; +var isString = types.builtInTypes.string; +var riskyAdjoiningCharExp = /[0-9a-z_$]/i; + +function Patcher(lines) { + assert.ok(this instanceof Patcher); + assert.ok(lines instanceof linesModule.Lines); + + var self = this, + replacements = []; + + self.replace = function(loc, lines) { + if (isString.check(lines)) + lines = linesModule.fromString(lines); + + replacements.push({ + lines: lines, + start: loc.start, + end: loc.end + }); + }; + + self.get = function(loc) { + // If no location is provided, return the complete Lines object. + loc = loc || { + start: { line: 1, column: 0 }, + end: { line: lines.length, + column: lines.getLineLength(lines.length) } + }; + + var sliceFrom = loc.start, + toConcat = []; + + function pushSlice(from, to) { + assert.ok(comparePos(from, to) <= 0); + toConcat.push(lines.slice(from, to)); + } + + replacements.sort(function(a, b) { + return comparePos(a.start, b.start); + }).forEach(function(rep) { + if (comparePos(sliceFrom, rep.start) > 0) { + // Ignore nested replacement ranges. + } else { + pushSlice(sliceFrom, rep.start); + toConcat.push(rep.lines); + sliceFrom = rep.end; + } + }); + + pushSlice(sliceFrom, loc.end); + + return linesModule.concat(toConcat); + }; +} +exports.Patcher = Patcher; + +var Pp = Patcher.prototype; + +Pp.tryToReprintComments = function(newNode, oldNode, print) { + var patcher = this; + + if (!newNode.comments && + !oldNode.comments) { + // We were (vacuously) able to reprint all the comments! + return true; + } + + var newPath = FastPath.from(newNode); + var oldPath = FastPath.from(oldNode); + + newPath.stack.push("comments", getSurroundingComments(newNode)); + oldPath.stack.push("comments", getSurroundingComments(oldNode)); + + var reprints = []; + var ableToReprintComments = + findArrayReprints(newPath, oldPath, reprints); + + // No need to pop anything from newPath.stack or oldPath.stack, since + // newPath and oldPath are fresh local variables. + + if (ableToReprintComments && reprints.length > 0) { + reprints.forEach(function(reprint) { + var oldComment = reprint.oldPath.getValue(); + assert.ok(oldComment.leading || oldComment.trailing); + patcher.replace( + oldComment.loc, + // Comments can't have .comments, so it doesn't matter + // whether we print with comments or without. + print(reprint.newPath).indentTail(oldComment.loc.indent) + ); + }); + } + + return ableToReprintComments; +}; + +// Get all comments that are either leading or trailing, ignoring any +// comments that occur inside node.loc. Returns an empty array for nodes +// with no leading or trailing comments. +function getSurroundingComments(node) { + var result = []; + if (node.comments && + node.comments.length > 0) { + node.comments.forEach(function(comment) { + if (comment.leading || comment.trailing) { + result.push(comment); + } + }); + } + return result; +} + +Pp.deleteComments = function(node) { + if (!node.comments) { + return; + } + + var patcher = this; + + node.comments.forEach(function(comment) { + if (comment.leading) { + // Delete leading comments along with any trailing whitespace + // they might have. + patcher.replace({ + start: comment.loc.start, + end: node.loc.lines.skipSpaces( + comment.loc.end, false, false) + }, ""); + + } else if (comment.trailing) { + // Delete trailing comments along with any leading whitespace + // they might have. + patcher.replace({ + start: node.loc.lines.skipSpaces( + comment.loc.start, true, false), + end: comment.loc.end + }, ""); + } + }); +}; + +exports.getReprinter = function(path) { + assert.ok(path instanceof FastPath); + + // Make sure that this path refers specifically to a Node, rather than + // some non-Node subproperty of a Node. + var node = path.getValue(); + if (!Printable.check(node)) + return; + + var orig = node.original; + var origLoc = orig && orig.loc; + var lines = origLoc && origLoc.lines; + var reprints = []; + + if (!lines || !findReprints(path, reprints)) + return; + + return function(print) { + var patcher = new Patcher(lines); + + reprints.forEach(function(reprint) { + var newNode = reprint.newPath.getValue(); + var oldNode = reprint.oldPath.getValue(); + + SourceLocation.assert(oldNode.loc, true); + + var needToPrintNewPathWithComments = + !patcher.tryToReprintComments(newNode, oldNode, print) + + if (needToPrintNewPathWithComments) { + // Since we were not able to preserve all leading/trailing + // comments, we delete oldNode's comments, print newPath + // with comments, and then patch the resulting lines where + // oldNode used to be. + patcher.deleteComments(oldNode); + } + + var pos = util.copyPos(oldNode.loc.start); + var needsLeadingSpace = lines.prevPos(pos) && + riskyAdjoiningCharExp.test(lines.charAt(pos)); + + var newLines = print( + reprint.newPath, + needToPrintNewPathWithComments + ).indentTail(oldNode.loc.indent); + + var needsTrailingSpace = + riskyAdjoiningCharExp.test(lines.charAt(oldNode.loc.end)); + + // If we try to replace the argument of a ReturnStatement like + // return"asdf" with e.g. a literal null expression, we run + // the risk of ending up with returnnull, so we need to add an + // extra leading space in situations where that might + // happen. Likewise for "asdf"in obj. See #170. + if (needsLeadingSpace || needsTrailingSpace) { + var newParts = []; + needsLeadingSpace && newParts.push(" "); + newParts.push(newLines); + needsTrailingSpace && newParts.push(" "); + newLines = linesModule.concat(newParts); + } + + patcher.replace(oldNode.loc, newLines); + }); + + // Recall that origLoc is the .loc of an ancestor node that is + // guaranteed to contain all the reprinted nodes and comments. + return patcher.get(origLoc).indentTail(-orig.loc.indent); + }; +}; + +function findReprints(newPath, reprints) { + var newNode = newPath.getValue(); + Printable.assert(newNode); + + var oldNode = newNode.original; + Printable.assert(oldNode); + + assert.deepEqual(reprints, []); + + if (newNode.type !== oldNode.type) { + return false; + } + + var oldPath = new FastPath(oldNode); + var canReprint = findChildReprints(newPath, oldPath, reprints); + + if (!canReprint) { + // Make absolutely sure the calling code does not attempt to reprint + // any nodes. + reprints.length = 0; + } + + return canReprint; +} + +function findAnyReprints(newPath, oldPath, reprints) { + var newNode = newPath.getValue(); + var oldNode = oldPath.getValue(); + + if (newNode === oldNode) + return true; + + if (isArray.check(newNode)) + return findArrayReprints(newPath, oldPath, reprints); + + if (isObject.check(newNode)) + return findObjectReprints(newPath, oldPath, reprints); + + return false; +} + +function findArrayReprints(newPath, oldPath, reprints) { + var newNode = newPath.getValue(); + var oldNode = oldPath.getValue(); + isArray.assert(newNode); + var len = newNode.length; + + if (!(isArray.check(oldNode) && + oldNode.length === len)) + return false; + + for (var i = 0; i < len; ++i) { + newPath.stack.push(i, newNode[i]); + oldPath.stack.push(i, oldNode[i]); + var canReprint = findAnyReprints(newPath, oldPath, reprints); + newPath.stack.length -= 2; + oldPath.stack.length -= 2; + if (!canReprint) { + return false; + } + } + + return true; +} + +function findObjectReprints(newPath, oldPath, reprints) { + var newNode = newPath.getValue(); + isObject.assert(newNode); + + if (newNode.original === null) { + // If newNode.original node was set to null, reprint the node. + return false; + } + + var oldNode = oldPath.getValue(); + if (!isObject.check(oldNode)) + return false; + + if (Printable.check(newNode)) { + if (!Printable.check(oldNode)) { + return false; + } + + // Here we need to decide whether the reprinted code for newNode + // is appropriate for patching into the location of oldNode. + + if (newNode.type === oldNode.type) { + var childReprints = []; + + if (findChildReprints(newPath, oldPath, childReprints)) { + reprints.push.apply(reprints, childReprints); + } else if (oldNode.loc) { + // If we have no .loc information for oldNode, then we + // won't be able to reprint it. + reprints.push({ + oldPath: oldPath.copy(), + newPath: newPath.copy() + }); + } else { + return false; + } + + return true; + } + + if (Expression.check(newNode) && + Expression.check(oldNode) && + // If we have no .loc information for oldNode, then we won't + // be able to reprint it. + oldNode.loc) { + + // If both nodes are subtypes of Expression, then we should be + // able to fill the location occupied by the old node with + // code printed for the new node with no ill consequences. + reprints.push({ + oldPath: oldPath.copy(), + newPath: newPath.copy() + }); + + return true; + } + + // The nodes have different types, and at least one of the types + // is not a subtype of the Expression type, so we cannot safely + // assume the nodes are syntactically interchangeable. + return false; + } + + return findChildReprints(newPath, oldPath, reprints); +} + +// This object is reused in hasOpeningParen and hasClosingParen to avoid +// having to allocate a temporary object. +var reusablePos = { line: 1, column: 0 }; +var nonSpaceExp = /\S/; + +function hasOpeningParen(oldPath) { + var oldNode = oldPath.getValue(); + var loc = oldNode.loc; + var lines = loc && loc.lines; + + if (lines) { + var pos = reusablePos; + pos.line = loc.start.line; + pos.column = loc.start.column; + + while (lines.prevPos(pos)) { + var ch = lines.charAt(pos); + + if (ch === "(") { + // If we found an opening parenthesis but it occurred before + // the start of the original subtree for this reprinting, then + // we must not return true for hasOpeningParen(oldPath). + return comparePos(oldPath.getRootValue().loc.start, pos) <= 0; + } + + if (nonSpaceExp.test(ch)) { + return false; + } + } + } + + return false; +} + +function hasClosingParen(oldPath) { + var oldNode = oldPath.getValue(); + var loc = oldNode.loc; + var lines = loc && loc.lines; + + if (lines) { + var pos = reusablePos; + pos.line = loc.end.line; + pos.column = loc.end.column; + + do { + var ch = lines.charAt(pos); + + if (ch === ")") { + // If we found a closing parenthesis but it occurred after the + // end of the original subtree for this reprinting, then we + // must not return true for hasClosingParen(oldPath). + return comparePos(pos, oldPath.getRootValue().loc.end) <= 0; + } + + if (nonSpaceExp.test(ch)) { + return false; + } + + } while (lines.nextPos(pos)); + } + + return false; +} + +function hasParens(oldPath) { + // This logic can technically be fooled if the node has parentheses + // but there are comments intervening between the parentheses and the + // node. In such cases the node will be harmlessly wrapped in an + // additional layer of parentheses. + return hasOpeningParen(oldPath) && hasClosingParen(oldPath); +} + +function findChildReprints(newPath, oldPath, reprints) { + var newNode = newPath.getValue(); + var oldNode = oldPath.getValue(); + + isObject.assert(newNode); + isObject.assert(oldNode); + + if (newNode.original === null) { + // If newNode.original node was set to null, reprint the node. + return false; + } + + // If this type of node cannot come lexically first in its enclosing + // statement (e.g. a function expression or object literal), and it + // seems to be doing so, then the only way we can ignore this problem + // and save ourselves from falling back to the pretty printer is if an + // opening parenthesis happens to precede the node. For example, + // (function(){ ... }()); does not need to be reprinted, even though + // the FunctionExpression comes lexically first in the enclosing + // ExpressionStatement and fails the hasParens test, because the + // parent CallExpression passes the hasParens test. If we relied on + // the path.needsParens() && !hasParens(oldNode) check below, the + // absence of a closing parenthesis after the FunctionExpression would + // trigger pretty-printing unnecessarily. + if (!newPath.canBeFirstInStatement() && + newPath.firstInStatement() && + !hasOpeningParen(oldPath)) + return false; + + // If this node needs parentheses and will not be wrapped with + // parentheses when reprinted, then return false to skip reprinting + // and let it be printed generically. + if (newPath.needsParens(true) && !hasParens(oldPath)) { + return false; + } + + for (var k in util.getUnionOfKeys(newNode, oldNode)) { + if (k === "loc") + continue; + + newPath.stack.push(k, types.getFieldValue(newNode, k)); + oldPath.stack.push(k, types.getFieldValue(oldNode, k)); + var canReprint = findAnyReprints(newPath, oldPath, reprints); + newPath.stack.length -= 2; + oldPath.stack.length -= 2; + + if (!canReprint) { + return false; + } + } + + return true; +} + +},{"1":1,"562":562,"563":563,"569":569,"570":570}],568:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var sourceMap = _dereq_(601); +var printComments = _dereq_(561).printComments; +var linesModule = _dereq_(563); +var fromString = linesModule.fromString; +var concat = linesModule.concat; +var normalizeOptions = _dereq_(565).normalize; +var getReprinter = _dereq_(567).getReprinter; +var types = _dereq_(569); +var namedTypes = types.namedTypes; +var isString = types.builtInTypes.string; +var isObject = types.builtInTypes.object; +var FastPath = _dereq_(562); +var util = _dereq_(570); + +function PrintResult(code, sourceMap) { + assert.ok(this instanceof PrintResult); + + isString.assert(code); + this.code = code; + + if (sourceMap) { + isObject.assert(sourceMap); + this.map = sourceMap; + } +} + +var PRp = PrintResult.prototype; +var warnedAboutToString = false; + +PRp.toString = function() { + if (!warnedAboutToString) { + console.warn( + "Deprecation warning: recast.print now returns an object with " + + "a .code property. You appear to be treating the object as a " + + "string, which might still work but is strongly discouraged." + ); + + warnedAboutToString = true; + } + + return this.code; +}; + +var emptyPrintResult = new PrintResult(""); + +function Printer(originalOptions) { + assert.ok(this instanceof Printer); + + var explicitTabWidth = originalOptions && originalOptions.tabWidth; + var options = normalizeOptions(originalOptions); + assert.notStrictEqual(options, originalOptions); + + // It's common for client code to pass the same options into both + // recast.parse and recast.print, but the Printer doesn't need (and + // can be confused by) options.sourceFileName, so we null it out. + options.sourceFileName = null; + + function printWithComments(path) { + assert.ok(path instanceof FastPath); + return printComments(path, print); + } + + function print(path, includeComments) { + if (includeComments) + return printWithComments(path); + + assert.ok(path instanceof FastPath); + + if (!explicitTabWidth) { + var oldTabWidth = options.tabWidth; + var loc = path.getNode().loc; + if (loc && loc.lines && loc.lines.guessTabWidth) { + options.tabWidth = loc.lines.guessTabWidth(); + var lines = maybeReprint(path); + options.tabWidth = oldTabWidth; + return lines; + } + } + + return maybeReprint(path); + } + + function maybeReprint(path) { + var reprinter = getReprinter(path); + if (reprinter) + return maybeAddParens(path, reprinter(print)); + return printRootGenerically(path); + } + + // Print the root node generically, but then resume reprinting its + // children non-generically. + function printRootGenerically(path) { + return genericPrint(path, options, printWithComments); + } + + // Print the entire AST generically. + function printGenerically(path) { + return genericPrint(path, options, printGenerically); + } + + this.print = function(ast) { + if (!ast) { + return emptyPrintResult; + } + + var lines = print(FastPath.from(ast), true); + + return new PrintResult( + lines.toString(options), + util.composeSourceMaps( + options.inputSourceMap, + lines.getSourceMap( + options.sourceMapName, + options.sourceRoot + ) + ) + ); + }; + + this.printGenerically = function(ast) { + if (!ast) { + return emptyPrintResult; + } + + var path = FastPath.from(ast); + var oldReuseWhitespace = options.reuseWhitespace; + + // Do not reuse whitespace (or anything else, for that matter) + // when printing generically. + options.reuseWhitespace = false; + + // TODO Allow printing of comments? + var pr = new PrintResult(printGenerically(path).toString(options)); + options.reuseWhitespace = oldReuseWhitespace; + return pr; + }; +} + +exports.Printer = Printer; + +function maybeAddParens(path, lines) { + return path.needsParens() ? concat(["(", lines, ")"]) : lines; +} + +function genericPrint(path, options, printPath) { + assert.ok(path instanceof FastPath); + return maybeAddParens(path, genericPrintNoParens(path, options, printPath)); +} + +function genericPrintNoParens(path, options, print) { + var n = path.getValue(); + + if (!n) { + return fromString(""); + } + + if (typeof n === "string") { + return fromString(n, options); + } + + namedTypes.Printable.assert(n); + + switch (n.type) { + case "File": + return path.call(print, "program"); + + case "Program": + return path.call(function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, "body"); + + case "Noop": // Babel extension. + case "EmptyStatement": + return fromString(""); + + case "ExpressionStatement": + return concat([path.call(print, "expression"), ";"]); + + case "ParenthesizedExpression": // Babel extension. + return concat(["(", path.call(print, "expression"), ")"]); + + case "BinaryExpression": + case "LogicalExpression": + case "AssignmentExpression": + return fromString(" ").join([ + path.call(print, "left"), + n.operator, + path.call(print, "right") + ]); + + case "AssignmentPattern": + return concat([ + path.call(print, "left"), + "=", + path.call(print, "right") + ]); + + case "MemberExpression": + var parts = [path.call(print, "object")]; + + var property = path.call(print, "property"); + if (n.computed) { + parts.push("[", property, "]"); + } else { + parts.push(".", property); + } + + return concat(parts); + + case "MetaProperty": + return concat([ + path.call(print, "meta"), + ".", + path.call(print, "property") + ]); + + case "BindExpression": + var parts = []; + + if (n.object) { + parts.push(path.call(print, "object")); + } + + parts.push("::", path.call(print, "callee")); + + return concat(parts); + + case "Path": + return fromString(".").join(n.body); + + case "Identifier": + return concat([ + fromString(n.name, options), + path.call(print, "typeAnnotation") + ]); + + case "SpreadElement": + case "SpreadElementPattern": + case "SpreadProperty": + case "SpreadPropertyPattern": + case "RestElement": + return concat(["...", path.call(print, "argument")]); + + case "FunctionDeclaration": + case "FunctionExpression": + var parts = []; + + if (n.async) + parts.push("async "); + + parts.push("function"); + + if (n.generator) + parts.push("*"); + + if (n.id) { + parts.push( + " ", + path.call(print, "id"), + path.call(print, "typeParameters") + ); + } + + parts.push( + "(", + printFunctionParams(path, options, print), + ")", + path.call(print, "returnType"), + " ", + path.call(print, "body") + ); + + return concat(parts); + + case "ArrowFunctionExpression": + var parts = []; + + if (n.async) + parts.push("async "); + + if ( + n.params.length === 1 && + !n.rest && + n.params[0].type !== 'SpreadElementPattern' && + n.params[0].type !== 'RestElement' + ) { + parts.push(path.call(print, "params", 0)); + } else { + parts.push( + "(", + printFunctionParams(path, options, print), + ")" + ); + } + + parts.push(" => ", path.call(print, "body")); + + return concat(parts); + + case "MethodDefinition": + var parts = []; + + if (n.static) { + parts.push("static "); + } + + parts.push(printMethod(path, options, print)); + + return concat(parts); + + case "YieldExpression": + var parts = ["yield"]; + + if (n.delegate) + parts.push("*"); + + if (n.argument) + parts.push(" ", path.call(print, "argument")); + + return concat(parts); + + case "AwaitExpression": + var parts = ["await"]; + + if (n.all) + parts.push("*"); + + if (n.argument) + parts.push(" ", path.call(print, "argument")); + + return concat(parts); + + case "ModuleDeclaration": + var parts = ["module", path.call(print, "id")]; + + if (n.source) { + assert.ok(!n.body); + parts.push("from", path.call(print, "source")); + } else { + parts.push(path.call(print, "body")); + } + + return fromString(" ").join(parts); + + case "ImportSpecifier": + var parts = []; + + if (n.imported) { + parts.push(path.call(print, "imported")); + if (n.local && + n.local.name !== n.imported.name) { + parts.push(" as ", path.call(print, "local")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat(parts); + + case "ExportSpecifier": + var parts = []; + + if (n.local) { + parts.push(path.call(print, "local")); + if (n.exported && + n.exported.name !== n.local.name) { + parts.push(" as ", path.call(print, "exported")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat(parts); + + case "ExportBatchSpecifier": + return fromString("*"); + + case "ImportNamespaceSpecifier": + var parts = ["* as "]; + if (n.local) { + parts.push(path.call(print, "local")); + } else if (n.id) { + parts.push(path.call(print, "id")); + } + return concat(parts); + + case "ImportDefaultSpecifier": + if (n.local) { + return path.call(print, "local"); + } + return path.call(print, "id"); + + case "ExportDeclaration": + var parts = ["export"]; + + if (n["default"]) { + parts.push(" default"); + + } else if (n.specifiers && + n.specifiers.length > 0) { + + if (n.specifiers.length === 1 && + n.specifiers[0].type === "ExportBatchSpecifier") { + parts.push(" *"); + } else { + parts.push( + " { ", + fromString(", ").join(path.map(print, "specifiers")), + " }" + ); + } + + if (n.source) + parts.push(" from ", path.call(print, "source")); + + parts.push(";"); + + return concat(parts); + } + + if (n.declaration) { + var decLines = path.call(print, "declaration"); + parts.push(" ", decLines); + if (lastNonSpaceCharacter(decLines) !== ";") { + parts.push(";"); + } + } + + return concat(parts); + + case "ExportDefaultDeclaration": + return concat([ + "export default ", + path.call(print, "declaration") + ]); + + case "ExportNamedDeclaration": + var parts = ["export "]; + + if (n.declaration) { + parts.push(path.call(print, "declaration")); + } + + if (n.specifiers && + n.specifiers.length > 0) { + parts.push( + n.declaration ? ", {" : "{", + fromString(", ").join(path.map(print, "specifiers")), + "}" + ); + } + + if (n.source) { + parts.push(" from ", path.call(print, "source")); + } + + return concat(parts); + + case "ExportAllDeclaration": + var parts = ["export *"]; + + if (n.exported) { + parts.push(" as ", path.call(print, "exported")); + } + + return concat([ + " from ", + path.call(print, "source") + ]); + + case "ExportNamespaceSpecifier": + return concat(["* as ", path.call(print, "exported")]); + + case "ExportDefaultSpecifier": + return path.call(print, "exported"); + + case "ImportDeclaration": + var parts = ["import "]; + + if (n.importKind && n.importKind !== "value") { + parts.push(n.importKind + " "); + } + + if (n.specifiers && + n.specifiers.length > 0) { + + var foundImportSpecifier = false; + + path.each(function(specifierPath) { + var i = specifierPath.getName(); + if (i > 0) { + parts.push(", "); + } + + var value = specifierPath.getValue(); + + if (namedTypes.ImportDefaultSpecifier.check(value) || + namedTypes.ImportNamespaceSpecifier.check(value)) { + assert.strictEqual(foundImportSpecifier, false); + } else { + namedTypes.ImportSpecifier.assert(value); + if (!foundImportSpecifier) { + foundImportSpecifier = true; + parts.push("{"); + } + } + + parts.push(print(specifierPath)); + }, "specifiers"); + + if (foundImportSpecifier) { + parts.push("}"); + } + + parts.push(" from "); + } + + parts.push(path.call(print, "source"), ";"); + + return concat(parts); + + case "BlockStatement": + var naked = path.call(function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, "body"); + + if (naked.isEmpty()) { + return fromString("{}"); + } + + return concat([ + "{\n", + naked.indent(options.tabWidth), + "\n}" + ]); + + case "ReturnStatement": + var parts = ["return"]; + + if (n.argument) { + var argLines = path.call(print, "argument"); + if (argLines.length > 1 && + (namedTypes.XJSElement && + namedTypes.XJSElement.check(n.argument) || + namedTypes.JSXElement && + namedTypes.JSXElement.check(n.argument))) { + parts.push( + " (\n", + argLines.indent(options.tabWidth), + "\n)" + ); + } else { + parts.push(" ", argLines); + } + } + + parts.push(";"); + + return concat(parts); + + case "CallExpression": + return concat([ + path.call(print, "callee"), + printArgumentsList(path, options, print) + ]); + + case "ObjectExpression": + case "ObjectPattern": + case "ObjectTypeAnnotation": + var allowBreak = false; + var isTypeAnnotation = n.type === "ObjectTypeAnnotation"; + var separator = isTypeAnnotation ? ';' : ','; + var fields = []; + + if (isTypeAnnotation) { + fields.push("indexers", "callProperties"); + } + + fields.push("properties"); + + var len = 0; + fields.forEach(function(field) { + len += n[field].length; + }); + + var oneLine = (isTypeAnnotation && len === 1) || len === 0; + var parts = [oneLine ? "{" : "{\n"]; + + var i = 0; + fields.forEach(function(field) { + path.each(function(childPath) { + var lines = print(childPath); + + if (!oneLine) { + lines = lines.indent(options.tabWidth); + } + + var multiLine = !isTypeAnnotation && lines.length > 1; + if (multiLine && allowBreak) { + // Similar to the logic for BlockStatement. + parts.push("\n"); + } + + parts.push(lines); + + if (i < len - 1) { + // Add an extra line break if the previous object property + // had a multi-line value. + parts.push(separator + (multiLine ? "\n\n" : "\n")); + allowBreak = !multiLine; + } else if (len !== 1 && isTypeAnnotation) { + parts.push(separator); + } else if (options.trailingComma) { + parts.push(separator); + } + i++; + }, field); + }); + + parts.push(oneLine ? "}" : "\n}"); + + return concat(parts); + + case "PropertyPattern": + return concat([ + path.call(print, "key"), + ": ", + path.call(print, "pattern") + ]); + + case "Property": // Non-standard AST node type. + if (n.method || n.kind === "get" || n.kind === "set") { + return printMethod(path, options, print); + } + + var parts = []; + + if (n.decorators) { + path.each(function(decoratorPath) { + parts.push(print(decoratorPath), "\n"); + }, "decorators"); + } + + var key = path.call(print, "key"); + if (n.computed) { + parts.push("[", key, "]"); + } else { + parts.push(key); + } + + if (! n.shorthand) { + parts.push(": ", path.call(print, "value")); + } + + return concat(parts); + + case "Decorator": + return concat(["@", path.call(print, "expression")]); + + case "ArrayExpression": + case "ArrayPattern": + var elems = n.elements, + len = elems.length; + + var printed = path.map(print, "elements"); + var joined = fromString(", ").join(printed); + var oneLine = joined.getLineLength(1) <= options.wrapColumn; + var parts = [oneLine ? "[" : "[\n"]; + + path.each(function(elemPath) { + var i = elemPath.getName(); + var elem = elemPath.getValue(); + if (!elem) { + // If the array expression ends with a hole, that hole + // will be ignored by the interpreter, but if it ends with + // two (or more) holes, we need to write out two (or more) + // commas so that the resulting code is interpreted with + // both (all) of the holes. + parts.push(","); + } else { + var lines = printed[i]; + if (oneLine) { + if (i > 0) + parts.push(" "); + } else { + lines = lines.indent(options.tabWidth); + } + parts.push(lines); + if (i < len - 1 || (!oneLine && options.trailingComma)) + parts.push(","); + if (!oneLine) + parts.push("\n"); + } + }, "elements"); + + parts.push("]"); + + return concat(parts); + + case "SequenceExpression": + return fromString(", ").join(path.map(print, "expressions")); + + case "ThisExpression": + return fromString("this"); + + case "Super": + return fromString("super"); + + case "Literal": + if (typeof n.value !== "string") + return fromString(n.value, options); + + return fromString(nodeStr(n.value, options), options); + + case "ModuleSpecifier": + if (n.local) { + throw new Error( + "The ESTree ModuleSpecifier type should be abstract" + ); + } + + // The Esprima ModuleSpecifier type is just a string-valued + // Literal identifying the imported-from module. + return fromString(nodeStr(n.value, options), options); + + case "UnaryExpression": + var parts = [n.operator]; + if (/[a-z]$/.test(n.operator)) + parts.push(" "); + parts.push(path.call(print, "argument")); + return concat(parts); + + case "UpdateExpression": + var parts = [path.call(print, "argument"), n.operator]; + + if (n.prefix) + parts.reverse(); + + return concat(parts); + + case "ConditionalExpression": + return concat([ + "(", path.call(print, "test"), + " ? ", path.call(print, "consequent"), + " : ", path.call(print, "alternate"), ")" + ]); + + case "NewExpression": + var parts = ["new ", path.call(print, "callee")]; + var args = n.arguments; + if (args) { + parts.push(printArgumentsList(path, options, print)); + } + + return concat(parts); + + case "VariableDeclaration": + var parts = [n.kind, " "]; + var maxLen = 0; + var printed = path.map(function(childPath) { + var lines = print(childPath); + maxLen = Math.max(lines.length, maxLen); + return lines; + }, "declarations"); + + if (maxLen === 1) { + parts.push(fromString(", ").join(printed)); + } else if (printed.length > 1 ) { + parts.push( + fromString(",\n").join(printed) + .indentTail(n.kind.length + 1) + ); + } else { + parts.push(printed[0]); + } + + // We generally want to terminate all variable declarations with a + // semicolon, except when they are children of for loops. + var parentNode = path.getParentNode(); + if (!namedTypes.ForStatement.check(parentNode) && + !namedTypes.ForInStatement.check(parentNode) && + !(namedTypes.ForOfStatement && + namedTypes.ForOfStatement.check(parentNode))) { + parts.push(";"); + } + + return concat(parts); + + case "VariableDeclarator": + return n.init ? fromString(" = ").join([ + path.call(print, "id"), + path.call(print, "init") + ]) : path.call(print, "id"); + + case "WithStatement": + return concat([ + "with (", + path.call(print, "object"), + ") ", + path.call(print, "body") + ]); + + case "IfStatement": + var con = adjustClause(path.call(print, "consequent"), options), + parts = ["if (", path.call(print, "test"), ")", con]; + + if (n.alternate) + parts.push( + endsWithBrace(con) ? " else" : "\nelse", + adjustClause(path.call(print, "alternate"), options)); + + return concat(parts); + + case "ForStatement": + // TODO Get the for (;;) case right. + var init = path.call(print, "init"), + sep = init.length > 1 ? ";\n" : "; ", + forParen = "for (", + indented = fromString(sep).join([ + init, + path.call(print, "test"), + path.call(print, "update") + ]).indentTail(forParen.length), + head = concat([forParen, indented, ")"]), + clause = adjustClause(path.call(print, "body"), options), + parts = [head]; + + if (head.length > 1) { + parts.push("\n"); + clause = clause.trimLeft(); + } + + parts.push(clause); + + return concat(parts); + + case "WhileStatement": + return concat([ + "while (", + path.call(print, "test"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + + case "ForInStatement": + // Note: esprima can't actually parse "for each (". + return concat([ + n.each ? "for each (" : "for (", + path.call(print, "left"), + " in ", + path.call(print, "right"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + + case "ForOfStatement": + return concat([ + "for (", + path.call(print, "left"), + " of ", + path.call(print, "right"), + ")", + adjustClause(path.call(print, "body"), options) + ]); + + case "DoWhileStatement": + var doBody = concat([ + "do", + adjustClause(path.call(print, "body"), options) + ]), parts = [doBody]; + + if (endsWithBrace(doBody)) + parts.push(" while"); + else + parts.push("\nwhile"); + + parts.push(" (", path.call(print, "test"), ");"); + + return concat(parts); + + case "DoExpression": + var statements = path.call(function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, "body"); + + return concat([ + "do {\n", + statements.indent(options.tabWidth), + "\n}" + ]); + + case "BreakStatement": + var parts = ["break"]; + if (n.label) + parts.push(" ", path.call(print, "label")); + parts.push(";"); + return concat(parts); + + case "ContinueStatement": + var parts = ["continue"]; + if (n.label) + parts.push(" ", path.call(print, "label")); + parts.push(";"); + return concat(parts); + + case "LabeledStatement": + return concat([ + path.call(print, "label"), + ":\n", + path.call(print, "body") + ]); + + case "TryStatement": + var parts = [ + "try ", + path.call(print, "block") + ]; + + if (n.handler) { + parts.push(" ", path.call(print, "handler")); + } else if (n.handlers) { + path.each(function(handlerPath) { + parts.push(" ", print(handlerPath)); + }, "handlers"); + } + + if (n.finalizer) { + parts.push(" finally ", path.call(print, "finalizer")); + } + + return concat(parts); + + case "CatchClause": + var parts = ["catch (", path.call(print, "param")]; + + if (n.guard) + // Note: esprima does not recognize conditional catch clauses. + parts.push(" if ", path.call(print, "guard")); + + parts.push(") ", path.call(print, "body")); + + return concat(parts); + + case "ThrowStatement": + return concat(["throw ", path.call(print, "argument"), ";"]); + + case "SwitchStatement": + return concat([ + "switch (", + path.call(print, "discriminant"), + ") {\n", + fromString("\n").join(path.map(print, "cases")), + "\n}" + ]); + + // Note: ignoring n.lexical because it has no printing consequences. + + case "SwitchCase": + var parts = []; + + if (n.test) + parts.push("case ", path.call(print, "test"), ":"); + else + parts.push("default:"); + + if (n.consequent.length > 0) { + parts.push("\n", path.call(function(consequentPath) { + return printStatementSequence(consequentPath, options, print); + }, "consequent").indent(options.tabWidth)); + } + + return concat(parts); + + case "DebuggerStatement": + return fromString("debugger;"); + + // JSX extensions below. + + case "XJSAttribute": + case "JSXAttribute": + var parts = [path.call(print, "name")]; + if (n.value) + parts.push("=", path.call(print, "value")); + return concat(parts); + + case "XJSIdentifier": + case "JSXIdentifier": + return fromString(n.name, options); + + case "XJSNamespacedName": + case "JSXNamespacedName": + return fromString(":").join([ + path.call(print, "namespace"), + path.call(print, "name") + ]); + + case "XJSMemberExpression": + case "JSXMemberExpression": + return fromString(".").join([ + path.call(print, "object"), + path.call(print, "property") + ]); + + case "XJSSpreadAttribute": + case "JSXSpreadAttribute": + return concat(["{...", path.call(print, "argument"), "}"]); + + case "XJSExpressionContainer": + case "JSXExpressionContainer": + return concat(["{", path.call(print, "expression"), "}"]); + + case "XJSElement": + case "JSXElement": + var openingLines = path.call(print, "openingElement"); + + if (n.openingElement.selfClosing) { + assert.ok(!n.closingElement); + return openingLines; + } + + var childLines = concat( + path.map(function(childPath) { + var child = childPath.getValue(); + + if (namedTypes.Literal.check(child) && + typeof child.value === "string") { + if (/\S/.test(child.value)) { + return child.value.replace(/^\s+|\s+$/g, ""); + } else if (/\n/.test(child.value)) { + return "\n"; + } + } + + return print(childPath); + }, "children") + ).indentTail(options.tabWidth); + + var closingLines = path.call(print, "closingElement"); + + return concat([ + openingLines, + childLines, + closingLines + ]); + + case "XJSOpeningElement": + case "JSXOpeningElement": + var parts = ["<", path.call(print, "name")]; + var attrParts = []; + + path.each(function(attrPath) { + attrParts.push(" ", print(attrPath)); + }, "attributes"); + + var attrLines = concat(attrParts); + + var needLineWrap = ( + attrLines.length > 1 || + attrLines.getLineLength(1) > options.wrapColumn + ); + + if (needLineWrap) { + attrParts.forEach(function(part, i) { + if (part === " ") { + assert.strictEqual(i % 2, 0); + attrParts[i] = "\n"; + } + }); + + attrLines = concat(attrParts).indentTail(options.tabWidth); + } + + parts.push(attrLines, n.selfClosing ? " />" : ">"); + + return concat(parts); + + case "XJSClosingElement": + case "JSXClosingElement": + return concat([""]); + + case "XJSText": + case "JSXText": + return fromString(n.value, options); + + case "XJSEmptyExpression": + case "JSXEmptyExpression": + return fromString(""); + + case "TypeAnnotatedIdentifier": + return concat([ + path.call(print, "annotation"), + " ", + path.call(print, "identifier") + ]); + + case "ClassBody": + if (n.body.length === 0) { + return fromString("{}"); + } + + return concat([ + "{\n", + path.call(function(bodyPath) { + return printStatementSequence(bodyPath, options, print); + }, "body").indent(options.tabWidth), + "\n}" + ]); + + case "ClassPropertyDefinition": + var parts = ["static ", path.call(print, "definition")]; + if (!namedTypes.MethodDefinition.check(n.definition)) + parts.push(";"); + return concat(parts); + + case "ClassProperty": + var parts = []; + if (n.static) + parts.push("static "); + + parts.push(path.call(print, "key")); + if (n.typeAnnotation) + parts.push(path.call(print, "typeAnnotation")); + + if (n.value) + parts.push(" = ", path.call(print, "value")); + + parts.push(";"); + return concat(parts); + + case "ClassDeclaration": + case "ClassExpression": + var parts = ["class"]; + + if (n.id) { + parts.push( + " ", + path.call(print, "id"), + path.call(print, "typeParameters") + ); + } + + if (n.superClass) { + parts.push( + " extends ", + path.call(print, "superClass"), + path.call(print, "superTypeParameters") + ); + } + + if (n["implements"]) { + parts.push( + " implements ", + fromString(", ").join(path.map(print, "implements")) + ); + } + + parts.push(" ", path.call(print, "body")); + + return concat(parts); + + case "TemplateElement": + return fromString(n.value.raw, options); + + case "TemplateLiteral": + var expressions = path.map(print, "expressions"); + var parts = ["`"]; + + path.each(function(childPath) { + var i = childPath.getName(); + parts.push(print(childPath)); + if (i < expressions.length) { + parts.push("${", expressions[i], "}"); + } + }, "quasis"); + + parts.push("`"); + + return concat(parts); + + case "TaggedTemplateExpression": + return concat([ + path.call(print, "tag"), + path.call(print, "quasi") + ]); + + // These types are unprintable because they serve as abstract + // supertypes for other (printable) types. + case "Node": + case "Printable": + case "SourceLocation": + case "Position": + case "Statement": + case "Function": + case "Pattern": + case "Expression": + case "Declaration": + case "Specifier": + case "NamedSpecifier": + case "Comment": // Supertype of Block and Line. + case "MemberTypeAnnotation": // Flow + case "TupleTypeAnnotation": // Flow + case "Type": // Flow + throw new Error("unprintable type: " + JSON.stringify(n.type)); + + case "CommentBlock": // Babel block comment. + case "Block": // Esprima block comment. + return concat(["/*", fromString(n.value, options), "*/"]); + + case "CommentLine": // Babel line comment. + case "Line": // Esprima line comment. + return concat(["//", fromString(n.value, options)]); + + // Type Annotations for Facebook Flow, typically stripped out or + // transformed away before printing. + case "TypeAnnotation": + var parts = []; + + if (n.typeAnnotation) { + if (n.typeAnnotation.type !== "FunctionTypeAnnotation") { + parts.push(": "); + } + parts.push(path.call(print, "typeAnnotation")); + return concat(parts); + } + + return fromString(""); + + case "AnyTypeAnnotation": + return fromString("any", options); + + case "MixedTypeAnnotation": + return fromString("mixed", options); + + case "ArrayTypeAnnotation": + return concat([ + path.call(print, "elementType"), + "[]" + ]); + + case "BooleanTypeAnnotation": + return fromString("boolean", options); + + case "BooleanLiteralTypeAnnotation": + assert.strictEqual(typeof n.value, "boolean"); + return fromString("" + n.value, options); + + case "DeclareClass": + return concat([ + fromString("declare class ", options), + path.call(print, "id"), + " ", + path.call(print, "body"), + ]); + + case "DeclareFunction": + return concat([ + fromString("declare function ", options), + path.call(print, "id"), + ";" + ]); + + case "DeclareModule": + return concat([ + fromString("declare module ", options), + path.call(print, "id"), + " ", + path.call(print, "body"), + ]); + + case "DeclareVariable": + return concat([ + fromString("declare var ", options), + path.call(print, "id"), + ";" + ]); + + case "FunctionTypeAnnotation": + // FunctionTypeAnnotation is ambiguous: + // declare function(a: B): void; OR + // var A: (a: B) => void; + var parts = []; + var parent = path.getParentNode(0); + var isArrowFunctionTypeAnnotation = !( + namedTypes.ObjectTypeCallProperty.check(parent) || + namedTypes.DeclareFunction.check(path.getParentNode(2)) + ); + + var needsColon = + isArrowFunctionTypeAnnotation && + !namedTypes.FunctionTypeParam.check(parent); + + if (needsColon) { + parts.push(": "); + } + + parts.push( + "(", + fromString(", ").join(path.map(print, "params")), + ")" + ); + + // The returnType is not wrapped in a TypeAnnotation, so the colon + // needs to be added separately. + if (n.returnType) { + parts.push( + isArrowFunctionTypeAnnotation ? " => " : ": ", + path.call(print, "returnType") + ); + } + + return concat(parts); + + case "FunctionTypeParam": + return concat([ + path.call(print, "name"), + ": ", + path.call(print, "typeAnnotation"), + ]); + + case "GenericTypeAnnotation": + return concat([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + + case "InterfaceDeclaration": + var parts = [ + fromString("interface ", options), + path.call(print, "id"), + path.call(print, "typeParameters"), + " " + ]; + + if (n["extends"]) { + parts.push( + "extends ", + fromString(", ").join(path.map(print, "extends")) + ); + } + + parts.push(" ", path.call(print, "body")); + + return concat(parts); + + case "ClassImplements": + case "InterfaceExtends": + return concat([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + + case "IntersectionTypeAnnotation": + return fromString(" & ").join(path.map(print, "types")); + + case "NullableTypeAnnotation": + return concat([ + "?", + path.call(print, "typeAnnotation") + ]); + + case "NumberTypeAnnotation": + return fromString("number", options); + + case "ObjectTypeCallProperty": + return path.call(print, "value"); + + case "ObjectTypeIndexer": + return concat([ + "[", + path.call(print, "id"), + ": ", + path.call(print, "key"), + "]: ", + path.call(print, "value") + ]); + + case "ObjectTypeProperty": + return concat([ + path.call(print, "key"), + ": ", + path.call(print, "value") + ]); + + case "QualifiedTypeIdentifier": + return concat([ + path.call(print, "qualification"), + ".", + path.call(print, "id") + ]); + + case "StringLiteralTypeAnnotation": + return fromString(nodeStr(n.value, options), options); + + case "NumberLiteralTypeAnnotation": + assert.strictEqual(typeof n.value, "number"); + return fromString("" + n.value, options); + + case "StringTypeAnnotation": + return fromString("string", options); + + case "TypeAlias": + return concat([ + "type ", + path.call(print, "id"), + " = ", + path.call(print, "right"), + ";" + ]); + + case "TypeCastExpression": + return concat([ + "(", + path.call(print, "expression"), + path.call(print, "typeAnnotation"), + ")" + ]); + + case "TypeParameterDeclaration": + case "TypeParameterInstantiation": + return concat([ + "<", + fromString(", ").join(path.map(print, "params")), + ">" + ]); + + case "TypeofTypeAnnotation": + return concat([ + fromString("typeof ", options), + path.call(print, "argument") + ]); + + case "UnionTypeAnnotation": + return fromString(" | ").join(path.map(print, "types")); + + case "VoidTypeAnnotation": + return fromString("void", options); + + // Unhandled types below. If encountered, nodes of these types should + // be either left alone or desugared into AST types that are fully + // supported by the pretty-printer. + case "ClassHeritage": // TODO + case "ComprehensionBlock": // TODO + case "ComprehensionExpression": // TODO + case "Glob": // TODO + case "GeneratorExpression": // TODO + case "LetStatement": // TODO + case "LetExpression": // TODO + case "GraphExpression": // TODO + case "GraphIndexExpression": // TODO + + // XML types that nobody cares about or needs to print. + case "XMLDefaultDeclaration": + case "XMLAnyName": + case "XMLQualifiedIdentifier": + case "XMLFunctionQualifiedIdentifier": + case "XMLAttributeSelector": + case "XMLFilterExpression": + case "XML": + case "XMLElement": + case "XMLList": + case "XMLEscape": + case "XMLText": + case "XMLStartTag": + case "XMLEndTag": + case "XMLPointTag": + case "XMLName": + case "XMLAttribute": + case "XMLCdata": + case "XMLComment": + case "XMLProcessingInstruction": + default: + debugger; + throw new Error("unknown type: " + JSON.stringify(n.type)); + } + + return p; +} + +function printStatementSequence(path, options, print) { + var inClassBody = + namedTypes.ClassBody && + namedTypes.ClassBody.check(path.getParentNode()); + + var filtered = []; + var sawComment = false; + var sawStatement = false; + + path.each(function(stmtPath) { + var i = stmtPath.getName(); + var stmt = stmtPath.getValue(); + + // Just in case the AST has been modified to contain falsy + // "statements," it's safer simply to skip them. + if (!stmt) { + return; + } + + // Skip printing EmptyStatement nodes to avoid leaving stray + // semicolons lying around. + if (stmt.type === "EmptyStatement") { + return; + } + + if (namedTypes.Comment.check(stmt)) { + // The pretty printer allows a dangling Comment node to act as + // a Statement when the Comment can't be attached to any other + // non-Comment node in the tree. + sawComment = true; + } else if (!inClassBody) { + namedTypes.Statement.assert(stmt); + sawStatement = true; + } + + // We can't hang onto stmtPath outside of this function, because + // it's just a reference to a mutable FastPath object, so we have + // to go ahead and print it here. + filtered.push({ + node: stmt, + printed: print(stmtPath) + }); + }); + + if (sawComment) { + assert.strictEqual( + sawStatement, false, + "Comments may appear as statements in otherwise empty statement " + + "lists, but may not coexist with non-Comment nodes." + ); + } + + var prevTrailingSpace = null; + var len = filtered.length; + var parts = []; + + filtered.forEach(function(info, i) { + var printed = info.printed; + var stmt = info.node; + var multiLine = printed.length > 1; + var notFirst = i > 0; + var notLast = i < len - 1; + var leadingSpace; + var trailingSpace; + var lines = stmt && stmt.loc && stmt.loc.lines; + var trueLoc = lines && options.reuseWhitespace && + util.getTrueLoc(stmt, lines); + + if (notFirst) { + if (trueLoc) { + var beforeStart = lines.skipSpaces(trueLoc.start, true); + var beforeStartLine = beforeStart ? beforeStart.line : 1; + var leadingGap = trueLoc.start.line - beforeStartLine; + leadingSpace = Array(leadingGap + 1).join("\n"); + } else { + leadingSpace = multiLine ? "\n\n" : "\n"; + } + } else { + leadingSpace = ""; + } + + if (notLast) { + if (trueLoc) { + var afterEnd = lines.skipSpaces(trueLoc.end); + var afterEndLine = afterEnd ? afterEnd.line : lines.length; + var trailingGap = afterEndLine - trueLoc.end.line; + trailingSpace = Array(trailingGap + 1).join("\n"); + } else { + trailingSpace = multiLine ? "\n\n" : "\n"; + } + } else { + trailingSpace = ""; + } + + parts.push( + maxSpace(prevTrailingSpace, leadingSpace), + printed + ); + + if (notLast) { + prevTrailingSpace = trailingSpace; + } else if (trailingSpace) { + parts.push(trailingSpace); + } + }); + + return concat(parts); +} + +function maxSpace(s1, s2) { + if (!s1 && !s2) { + return fromString(""); + } + + if (!s1) { + return fromString(s2); + } + + if (!s2) { + return fromString(s1); + } + + var spaceLines1 = fromString(s1); + var spaceLines2 = fromString(s2); + + if (spaceLines2.length > spaceLines1.length) { + return spaceLines2; + } + + return spaceLines1; +} + +function printMethod(path, options, print) { + var node = path.getNode(); + var kind = node.kind; + var parts = []; + + namedTypes.FunctionExpression.assert(node.value); + + if (node.decorators) { + path.each(function(decoratorPath) { + parts.push(print(decoratorPath), "\n"); + }, "decorators"); + } + + if (node.value.async) { + parts.push("async "); + } + + if (!kind || kind === "init" || kind === "method" || kind === "constructor") { + if (node.value.generator) { + parts.push("*"); + } + } else { + assert.ok(kind === "get" || kind === "set"); + parts.push(kind, " "); + } + + var key = path.call(print, "key"); + if (node.computed) { + key = concat(["[", key, "]"]); + } + + parts.push( + key, + path.call(print, "value", "typeParameters"), + "(", + path.call(function(valuePath) { + return printFunctionParams(valuePath, options, print); + }, "value"), + ")", + path.call(print, "value", "returnType"), + " ", + path.call(print, "value", "body") + ); + + return concat(parts); +} + +function printArgumentsList(path, options, print) { + var printed = path.map(print, "arguments"); + + var joined = fromString(", ").join(printed); + if (joined.getLineLength(1) > options.wrapColumn) { + joined = fromString(",\n").join(printed); + return concat([ + "(\n", + joined.indent(options.tabWidth), + options.trailingComma ? ",\n)" : "\n)" + ]); + } + + return concat(["(", joined, ")"]); +} + +function printFunctionParams(path, options, print) { + var fun = path.getValue(); + namedTypes.Function.assert(fun); + + var printed = path.map(print, "params"); + + if (fun.defaults) { + path.each(function(defExprPath) { + var i = defExprPath.getName(); + var p = printed[i]; + if (p && defExprPath.getValue()) { + printed[i] = concat([p, "=", print(defExprPath)]); + } + }, "defaults"); + } + + if (fun.rest) { + printed.push(concat(["...", path.call(print, "rest")])); + } + + var joined = fromString(", ").join(printed); + if (joined.length > 1 || + joined.getLineLength(1) > options.wrapColumn) { + joined = fromString(",\n").join(printed); + if (options.trailingComma && !fun.rest) { + joined = concat([joined, ",\n"]); + } + return concat(["\n", joined.indent(options.tabWidth)]); + } + + return joined; +} + +function adjustClause(clause, options) { + if (clause.length > 1) + return concat([" ", clause]); + + return concat([ + "\n", + maybeAddSemicolon(clause).indent(options.tabWidth) + ]); +} + +function lastNonSpaceCharacter(lines) { + var pos = lines.lastPos(); + do { + var ch = lines.charAt(pos); + if (/\S/.test(ch)) + return ch; + } while (lines.prevPos(pos)); +} + +function endsWithBrace(lines) { + return lastNonSpaceCharacter(lines) === "}"; +} + +function swapQuotes(str) { + return str.replace(/['"]/g, function(m) { + return m === '"' ? '\'' : '"'; + }); +} + +function nodeStr(str, options) { + isString.assert(str); + switch (options.quote) { + case "auto": + var double = JSON.stringify(str); + var single = swapQuotes(JSON.stringify(swapQuotes(str))); + return double.length > single.length ? single : double; + case "single": + return swapQuotes(JSON.stringify(swapQuotes(str))); + case "double": + default: + return JSON.stringify(str); + } +} + +function maybeAddSemicolon(lines) { + var eoc = lastNonSpaceCharacter(lines); + if (!eoc || "\n};".indexOf(eoc) < 0) + return concat([lines, ";"]); + return lines; +} + +},{"1":1,"561":561,"562":562,"563":563,"565":565,"567":567,"569":569,"570":570,"601":601}],569:[function(_dereq_,module,exports){ +// This module was originally created so that Recast could add its own +// custom types to the AST type system (in particular, the File type), but +// those types are now incorporated into ast-types, so this module doesn't +// have much to do anymore. Still, it might prove useful in the future. +module.exports = _dereq_(202); + +},{"202":202}],570:[function(_dereq_,module,exports){ +var assert = _dereq_(1); +var types = _dereq_(569); +var getFieldValue = types.getFieldValue; +var n = types.namedTypes; +var sourceMap = _dereq_(601); +var SourceMapConsumer = sourceMap.SourceMapConsumer; +var SourceMapGenerator = sourceMap.SourceMapGenerator; +var hasOwn = Object.prototype.hasOwnProperty; + +function getUnionOfKeys() { + var result = {}; + var argc = arguments.length; + for (var i = 0; i < argc; ++i) { + var keys = Object.keys(arguments[i]); + var keyCount = keys.length; + for (var j = 0; j < keyCount; ++j) { + result[keys[j]] = true; + } + } + return result; +} +exports.getUnionOfKeys = getUnionOfKeys; + +function comparePos(pos1, pos2) { + return (pos1.line - pos2.line) || (pos1.column - pos2.column); +} +exports.comparePos = comparePos; + +function copyPos(pos) { + return { + line: pos.line, + column: pos.column + }; +} +exports.copyPos = copyPos; + +exports.composeSourceMaps = function(formerMap, latterMap) { + if (formerMap) { + if (!latterMap) { + return formerMap; + } + } else { + return latterMap || null; + } + + var smcFormer = new SourceMapConsumer(formerMap); + var smcLatter = new SourceMapConsumer(latterMap); + var smg = new SourceMapGenerator({ + file: latterMap.file, + sourceRoot: latterMap.sourceRoot + }); + + var sourcesToContents = {}; + + smcLatter.eachMapping(function(mapping) { + var origPos = smcFormer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + + var sourceName = origPos.source; + if (sourceName === null) { + return; + } + + smg.addMapping({ + source: sourceName, + original: copyPos(origPos), + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + }, + name: mapping.name + }); + + var sourceContent = smcFormer.sourceContentFor(sourceName); + if (sourceContent && !hasOwn.call(sourcesToContents, sourceName)) { + sourcesToContents[sourceName] = sourceContent; + smg.setSourceContent(sourceName, sourceContent); + } + }); + + return smg.toJSON(); +}; + +exports.getTrueLoc = function(node, lines) { + // It's possible that node is newly-created (not parsed by Esprima), + // in which case it probably won't have a .loc property (or an + // .original property for that matter). That's fine; we'll just + // pretty-print it as usual. + if (!node.loc) { + return null; + } + + var start = node.loc.start; + var end = node.loc.end; + + // If the node has any comments, their locations might contribute to + // the true start/end positions of the node. + if (node.comments) { + node.comments.forEach(function(comment) { + if (comment.loc) { + if (comparePos(comment.loc.start, start) < 0) { + start = comment.loc.start; + } + + if (comparePos(end, comment.loc.end) < 0) { + end = comment.loc.end; + } + } + }); + } + + return { + // Finally, trim any leading or trailing whitespace from the true + // location of the node. + start: lines.skipSpaces(start, false, false), + end: lines.skipSpaces(end, true, false) + }; +}; + +exports.fixFaultyLocations = function(node) { + if ((n.MethodDefinition && n.MethodDefinition.check(node)) || + (n.Property.check(node) && (node.method || node.shorthand))) { + // If the node is a MethodDefinition or a .method or .shorthand + // Property, then the location information stored in + // node.value.loc is very likely untrustworthy (just the {body} + // part of a method, or nothing in the case of shorthand + // properties), so we null out that information to prevent + // accidental reuse of bogus source code during reprinting. + node.value.loc = null; + + if (n.FunctionExpression.check(node.value)) { + // FunctionExpression method values should be anonymous, + // because their .id fields are ignored anyway. + node.value.id = null; + } + } + + var loc = node.loc; + if (loc) { + if (loc.start.line < 1) { + loc.start.line = 1; + } + + if (loc.end.line < 1) { + loc.end.line = 1; + } + } +}; + +},{"1":1,"569":569,"601":601}],571:[function(_dereq_,module,exports){ +(function (process){ +var types = _dereq_(569); +var parse = _dereq_(566).parse; +var Printer = _dereq_(568).Printer; + +function print(node, options) { + return new Printer(options).print(node); +} + +function prettyPrint(node, options) { + return new Printer(options).printGenerically(node); +} + +function run(transformer, options) { + return runFile(process.argv[2], transformer, options); +} + +function runFile(path, transformer, options) { + _dereq_(3).readFile(path, "utf-8", function(err, code) { + if (err) { + console.error(err); + return; + } + + runString(code, transformer, options); + }); +} + +function defaultWriteback(output) { + process.stdout.write(output); +} + +function runString(code, transformer, options) { + var writeback = options && options.writeback || defaultWriteback; + transformer(parse(code, options), function(node) { + writeback(print(node, options).code); + }); +} + +Object.defineProperties(exports, { + /** + * Parse a string of code into an augmented syntax tree suitable for + * arbitrary modification and reprinting. + */ + parse: { + enumerable: true, + value: parse + }, + + /** + * Traverse and potentially modify an abstract syntax tree using a + * convenient visitor syntax: + * + * recast.visit(ast, { + * names: [], + * visitIdentifier: function(path) { + * var node = path.value; + * this.visitor.names.push(node.name); + * this.traverse(path); + * } + * }); + */ + visit: { + enumerable: true, + value: types.visit + }, + + /** + * Reprint a modified syntax tree using as much of the original source + * code as possible. + */ + print: { + enumerable: true, + value: print + }, + + /** + * Print without attempting to reuse any original source code. + */ + prettyPrint: { + enumerable: false, + value: prettyPrint + }, + + /** + * Customized version of require("ast-types"). + */ + types: { + enumerable: false, + value: types + }, + + /** + * Convenient command-line interface (see e.g. example/add-braces). + */ + run: { + enumerable: false, + value: run + } +}); + +}).call(this,_dereq_(10)) +},{"10":10,"3":3,"566":566,"568":568,"569":569}],572:[function(_dereq_,module,exports){ +(function (global){ +/*! https://mths.be/regenerate v1.2.0 by @mathias | MIT license */ +;(function(root) { + + // Detect free variables `exports`. + var freeExports = typeof exports == 'object' && exports; + + // Detect free variable `module`. + var freeModule = typeof module == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root`. + var freeGlobal = typeof global == 'object' && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + var ERRORS = { + 'rangeOrder': 'A range\u2019s `stop` value must be greater than or equal ' + + 'to the `start` value.', + 'codePointRange': 'Invalid code point value. Code points range from ' + + 'U+000000 to U+10FFFF.' + }; + + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-pairs + var HIGH_SURROGATE_MIN = 0xD800; + var HIGH_SURROGATE_MAX = 0xDBFF; + var LOW_SURROGATE_MIN = 0xDC00; + var LOW_SURROGATE_MAX = 0xDFFF; + + // In Regenerate output, `\0` will never be preceded by `\` because we sort + // by code point value, so let’s keep this regular expression simple. + var regexNull = /\\x00([^0123456789]|$)/g; + + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + var extend = function(destination, source) { + var key; + for (key in source) { + if (hasOwnProperty.call(source, key)) { + destination[key] = source[key]; + } + } + return destination; + }; + + var forEach = function(array, callback) { + var index = -1; + var length = array.length; + while (++index < length) { + callback(array[index], index); + } + }; + + var toString = object.toString; + var isArray = function(value) { + return toString.call(value) == '[object Array]'; + }; + var isNumber = function(value) { + return typeof value == 'number' || + toString.call(value) == '[object Number]'; + }; + + // This assumes that `number` is a positive integer that `toString()`s nicely + // (which is the case for all code point values). + var zeroes = '0000'; + var pad = function(number, totalCharacters) { + var string = String(number); + return string.length < totalCharacters + ? (zeroes + string).slice(-totalCharacters) + : string; + }; + + var hex = function(number) { + return Number(number).toString(16).toUpperCase(); + }; + + var slice = [].slice; + + /*--------------------------------------------------------------------------*/ + + var dataFromCodePoints = function(codePoints) { + var index = -1; + var length = codePoints.length; + var max = length - 1; + var result = []; + var isStart = true; + var tmp; + var previous = 0; + while (++index < length) { + tmp = codePoints[index]; + if (isStart) { + result.push(tmp); + previous = tmp; + isStart = false; + } else { + if (tmp == previous + 1) { + if (index != max) { + previous = tmp; + continue; + } else { + isStart = true; + result.push(tmp + 1); + } + } else { + // End the previous range and start a new one. + result.push(previous + 1, tmp); + previous = tmp; + } + } + } + if (!isStart) { + result.push(tmp + 1); + } + return result; + }; + + var dataRemove = function(data, codePoint) { + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var length = data.length; + while (index < length) { + start = data[index]; + end = data[index + 1]; + if (codePoint >= start && codePoint < end) { + // Modify this pair. + if (codePoint == start) { + if (end == start + 1) { + // Just remove `start` and `end`. + data.splice(index, 2); + return data; + } else { + // Just replace `start` with a new value. + data[index] = codePoint + 1; + return data; + } + } else if (codePoint == end - 1) { + // Just replace `end` with a new value. + data[index + 1] = codePoint; + return data; + } else { + // Replace `[start, end]` with `[startA, endA, startB, endB]`. + data.splice(index, 2, start, codePoint, codePoint + 1, end); + return data; + } + } + index += 2; + } + return data; + }; + + var dataRemoveRange = function(data, rangeStart, rangeEnd) { + if (rangeEnd < rangeStart) { + throw Error(ERRORS.rangeOrder); + } + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + while (index < data.length) { + start = data[index]; + end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive. + + // Exit as soon as no more matching pairs can be found. + if (start > rangeEnd) { + return data; + } + + // Check if this range pair is equal to, or forms a subset of, the range + // to be removed. + // E.g. we have `[0, 11, 40, 51]` and want to remove 0-10 → `[40, 51]`. + // E.g. we have `[40, 51]` and want to remove 0-100 → `[]`. + if (rangeStart <= start && rangeEnd >= end) { + // Remove this pair. + data.splice(index, 2); + continue; + } + + // Check if both `rangeStart` and `rangeEnd` are within the bounds of + // this pair. + // E.g. we have `[0, 11]` and want to remove 4-6 → `[0, 4, 7, 11]`. + if (rangeStart >= start && rangeEnd < end) { + if (rangeStart == start) { + // Replace `[start, end]` with `[startB, endB]`. + data[index] = rangeEnd + 1; + data[index + 1] = end + 1; + return data; + } + // Replace `[start, end]` with `[startA, endA, startB, endB]`. + data.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1); + return data; + } + + // Check if only `rangeStart` is within the bounds of this pair. + // E.g. we have `[0, 11]` and want to remove 4-20 → `[0, 4]`. + if (rangeStart >= start && rangeStart <= end) { + // Replace `end` with `rangeStart`. + data[index + 1] = rangeStart; + // Note: we cannot `return` just yet, in case any following pairs still + // contain matching code points. + // E.g. we have `[0, 11, 14, 31]` and want to remove 4-20 + // → `[0, 4, 21, 31]`. + } + + // Check if only `rangeEnd` is within the bounds of this pair. + // E.g. we have `[14, 31]` and want to remove 4-20 → `[21, 31]`. + else if (rangeEnd >= start && rangeEnd <= end) { + // Just replace `start`. + data[index] = rangeEnd + 1; + return data; + } + + index += 2; + } + return data; + }; + + var dataAdd = function(data, codePoint) { + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var lastIndex = null; + var length = data.length; + if (codePoint < 0x0 || codePoint > 0x10FFFF) { + throw RangeError(ERRORS.codePointRange); + } + while (index < length) { + start = data[index]; + end = data[index + 1]; + + // Check if the code point is already in the set. + if (codePoint >= start && codePoint < end) { + return data; + } + + if (codePoint == start - 1) { + // Just replace `start` with a new value. + data[index] = codePoint; + return data; + } + + // At this point, if `start` is `greater` than `codePoint`, insert a new + // `[start, end]` pair before the current pair, or after the current pair + // if there is a known `lastIndex`. + if (start > codePoint) { + data.splice( + lastIndex != null ? lastIndex + 2 : 0, + 0, + codePoint, + codePoint + 1 + ); + return data; + } + + if (codePoint == end) { + // Check if adding this code point causes two separate ranges to become + // a single range, e.g. `dataAdd([0, 4, 5, 10], 4)` → `[0, 10]`. + if (codePoint + 1 == data[index + 2]) { + data.splice(index, 4, start, data[index + 3]); + return data; + } + // Else, just replace `end` with a new value. + data[index + 1] = codePoint + 1; + return data; + } + lastIndex = index; + index += 2; + } + // The loop has finished; add the new pair to the end of the data set. + data.push(codePoint, codePoint + 1); + return data; + }; + + var dataAddData = function(dataA, dataB) { + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var data = dataA.slice(); + var length = dataB.length; + while (index < length) { + start = dataB[index]; + end = dataB[index + 1] - 1; + if (start == end) { + data = dataAdd(data, start); + } else { + data = dataAddRange(data, start, end); + } + index += 2; + } + return data; + }; + + var dataRemoveData = function(dataA, dataB) { + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var data = dataA.slice(); + var length = dataB.length; + while (index < length) { + start = dataB[index]; + end = dataB[index + 1] - 1; + if (start == end) { + data = dataRemove(data, start); + } else { + data = dataRemoveRange(data, start, end); + } + index += 2; + } + return data; + }; + + var dataAddRange = function(data, rangeStart, rangeEnd) { + if (rangeEnd < rangeStart) { + throw Error(ERRORS.rangeOrder); + } + if ( + rangeStart < 0x0 || rangeStart > 0x10FFFF || + rangeEnd < 0x0 || rangeEnd > 0x10FFFF + ) { + throw RangeError(ERRORS.codePointRange); + } + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var added = false; + var length = data.length; + while (index < length) { + start = data[index]; + end = data[index + 1]; + + if (added) { + // The range has already been added to the set; at this point, we just + // need to get rid of the following ranges in case they overlap. + + // Check if this range can be combined with the previous range. + if (start == rangeEnd + 1) { + data.splice(index - 1, 2); + return data; + } + + // Exit as soon as no more possibly overlapping pairs can be found. + if (start > rangeEnd) { + return data; + } + + // E.g. `[0, 11, 12, 16]` and we’ve added 5-15, so we now have + // `[0, 16, 12, 16]`. Remove the `12,16` part, as it lies within the + // `0,16` range that was previously added. + if (start >= rangeStart && start <= rangeEnd) { + // `start` lies within the range that was previously added. + + if (end > rangeStart && end - 1 <= rangeEnd) { + // `end` lies within the range that was previously added as well, + // so remove this pair. + data.splice(index, 2); + index -= 2; + // Note: we cannot `return` just yet, as there may still be other + // overlapping pairs. + } else { + // `start` lies within the range that was previously added, but + // `end` doesn’t. E.g. `[0, 11, 12, 31]` and we’ve added 5-15, so + // now we have `[0, 16, 12, 31]`. This must be written as `[0, 31]`. + // Remove the previously added `end` and the current `start`. + data.splice(index - 1, 2); + index -= 2; + } + + // Note: we cannot return yet. + } + + } + + else if (start == rangeEnd + 1) { + data[index] = rangeStart; + return data; + } + + // Check if a new pair must be inserted *before* the current one. + else if (start > rangeEnd) { + data.splice(index, 0, rangeStart, rangeEnd + 1); + return data; + } + + else if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) { + // The new range lies entirely within an existing range pair. No action + // needed. + return data; + } + + else if ( + // E.g. `[0, 11]` and you add 5-15 → `[0, 16]`. + (rangeStart >= start && rangeStart < end) || + // E.g. `[0, 3]` and you add 3-6 → `[0, 7]`. + end == rangeStart + ) { + // Replace `end` with the new value. + data[index + 1] = rangeEnd + 1; + // Make sure the next range pair doesn’t overlap, e.g. `[0, 11, 12, 14]` + // and you add 5-15 → `[0, 16]`, i.e. remove the `12,14` part. + added = true; + // Note: we cannot `return` just yet. + } + + else if (rangeStart <= start && rangeEnd + 1 >= end) { + // The new range is a superset of the old range. + data[index] = rangeStart; + data[index + 1] = rangeEnd + 1; + added = true; + } + + index += 2; + } + // The loop has finished without doing anything; add the new pair to the end + // of the data set. + if (!added) { + data.push(rangeStart, rangeEnd + 1); + } + return data; + }; + + var dataContains = function(data, codePoint) { + var index = 0; + var length = data.length; + // Exit early if `codePoint` is not within `data`’s overall range. + var start = data[index]; + var end = data[length - 1]; + if (length >= 2) { + if (codePoint < start || codePoint > end) { + return false; + } + } + // Iterate over the data per `(start, end)` pair. + while (index < length) { + start = data[index]; + end = data[index + 1]; + if (codePoint >= start && codePoint < end) { + return true; + } + index += 2; + } + return false; + }; + + var dataIntersection = function(data, codePoints) { + var index = 0; + var length = codePoints.length; + var codePoint; + var result = []; + while (index < length) { + codePoint = codePoints[index]; + if (dataContains(data, codePoint)) { + result.push(codePoint); + } + ++index; + } + return dataFromCodePoints(result); + }; + + var dataIsEmpty = function(data) { + return !data.length; + }; + + var dataIsSingleton = function(data) { + // Check if the set only represents a single code point. + return data.length == 2 && data[0] + 1 == data[1]; + }; + + var dataToArray = function(data) { + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var result = []; + var length = data.length; + while (index < length) { + start = data[index]; + end = data[index + 1]; + while (start < end) { + result.push(start); + ++start; + } + index += 2; + } + return result; + }; + + /*--------------------------------------------------------------------------*/ + + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var floor = Math.floor; + var highSurrogate = function(codePoint) { + return parseInt( + floor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN, + 10 + ); + }; + + var lowSurrogate = function(codePoint) { + return parseInt( + (codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN, + 10 + ); + }; + + var stringFromCharCode = String.fromCharCode; + var codePointToString = function(codePoint) { + var string; + // https://mathiasbynens.be/notes/javascript-escapes#single + // Note: the `\b` escape sequence for U+0008 BACKSPACE in strings has a + // different meaning in regular expressions (word boundary), so it cannot + // be used here. + if (codePoint == 0x09) { + string = '\\t'; + } + // Note: IE < 9 treats `'\v'` as `'v'`, so avoid using it. + // else if (codePoint == 0x0B) { + // string = '\\v'; + // } + else if (codePoint == 0x0A) { + string = '\\n'; + } + else if (codePoint == 0x0C) { + string = '\\f'; + } + else if (codePoint == 0x0D) { + string = '\\r'; + } + else if (codePoint == 0x5C) { + string = '\\\\'; + } + else if ( + codePoint == 0x24 || + (codePoint >= 0x28 && codePoint <= 0x2B) || + codePoint == 0x2D || codePoint == 0x2E || codePoint == 0x3F || + (codePoint >= 0x5B && codePoint <= 0x5E) || + (codePoint >= 0x7B && codePoint <= 0x7D) + ) { + // The code point maps to an unsafe printable ASCII character; + // backslash-escape it. Here’s the list of those symbols: + // + // $()*+-.?[\]^{|} + // + // See #7 for more info. + string = '\\' + stringFromCharCode(codePoint); + } + else if (codePoint >= 0x20 && codePoint <= 0x7E) { + // The code point maps to one of these printable ASCII symbols + // (including the space character): + // + // !"#%&',/0123456789:;<=>@ABCDEFGHIJKLMNO + // PQRSTUVWXYZ_`abcdefghijklmnopqrstuvwxyz~ + // + // These can safely be used directly. + string = stringFromCharCode(codePoint); + } + else if (codePoint <= 0xFF) { + // https://mathiasbynens.be/notes/javascript-escapes#hexadecimal + string = '\\x' + pad(hex(codePoint), 2); + } + else { // `codePoint <= 0xFFFF` holds true. + // https://mathiasbynens.be/notes/javascript-escapes#unicode + string = '\\u' + pad(hex(codePoint), 4); + } + + // There’s no need to account for astral symbols / surrogate pairs here, + // since `codePointToString` is private and only used for BMP code points. + // But if that’s what you need, just add an `else` block with this code: + // + // string = '\\u' + pad(hex(highSurrogate(codePoint)), 4) + // + '\\u' + pad(hex(lowSurrogate(codePoint)), 4); + + return string; + }; + + var symbolToCodePoint = function(symbol) { + var length = symbol.length; + var first = symbol.charCodeAt(0); + var second; + if ( + first >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX && + length > 1 // There is a next code unit. + ) { + // `first` is a high surrogate, and there is a next character. Assume + // it’s a low surrogate (else it’s invalid usage of Regenerate anyway). + second = symbol.charCodeAt(1); + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - HIGH_SURROGATE_MIN) * 0x400 + + second - LOW_SURROGATE_MIN + 0x10000; + } + return first; + }; + + var createBMPCharacterClasses = function(data) { + // Iterate over the data per `(start, end)` pair. + var result = ''; + var index = 0; + var start; + var end; + var length = data.length; + if (dataIsSingleton(data)) { + return codePointToString(data[0]); + } + while (index < length) { + start = data[index]; + end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive. + if (start == end) { + result += codePointToString(start); + } else if (start + 1 == end) { + result += codePointToString(start) + codePointToString(end); + } else { + result += codePointToString(start) + '-' + codePointToString(end); + } + index += 2; + } + return '[' + result + ']'; + }; + + var splitAtBMP = function(data) { + // Iterate over the data per `(start, end)` pair. + var loneHighSurrogates = []; + var loneLowSurrogates = []; + var bmp = []; + var astral = []; + var index = 0; + var start; + var end; + var length = data.length; + while (index < length) { + start = data[index]; + end = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive. + + if (start < HIGH_SURROGATE_MIN) { + + // The range starts and ends before the high surrogate range. + // E.g. (0, 0x10). + if (end < HIGH_SURROGATE_MIN) { + bmp.push(start, end + 1); + } + + // The range starts before the high surrogate range and ends within it. + // E.g. (0, 0xD855). + if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) { + bmp.push(start, HIGH_SURROGATE_MIN); + loneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1); + } + + // The range starts before the high surrogate range and ends in the low + // surrogate range. E.g. (0, 0xDCFF). + if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) { + bmp.push(start, HIGH_SURROGATE_MIN); + loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1); + loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1); + } + + // The range starts before the high surrogate range and ends after the + // low surrogate range. E.g. (0, 0x10FFFF). + if (end > LOW_SURROGATE_MAX) { + bmp.push(start, HIGH_SURROGATE_MIN); + loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1); + loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1); + if (end <= 0xFFFF) { + bmp.push(LOW_SURROGATE_MAX + 1, end + 1); + } else { + bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1); + astral.push(0xFFFF + 1, end + 1); + } + } + + } else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) { + + // The range starts and ends in the high surrogate range. + // E.g. (0xD855, 0xD866). + if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) { + loneHighSurrogates.push(start, end + 1); + } + + // The range starts in the high surrogate range and ends in the low + // surrogate range. E.g. (0xD855, 0xDCFF). + if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) { + loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1); + loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1); + } + + // The range starts in the high surrogate range and ends after the low + // surrogate range. E.g. (0xD855, 0x10FFFF). + if (end > LOW_SURROGATE_MAX) { + loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1); + loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1); + if (end <= 0xFFFF) { + bmp.push(LOW_SURROGATE_MAX + 1, end + 1); + } else { + bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1); + astral.push(0xFFFF + 1, end + 1); + } + } + + } else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) { + + // The range starts and ends in the low surrogate range. + // E.g. (0xDCFF, 0xDDFF). + if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) { + loneLowSurrogates.push(start, end + 1); + } + + // The range starts in the low surrogate range and ends after the low + // surrogate range. E.g. (0xDCFF, 0x10FFFF). + if (end > LOW_SURROGATE_MAX) { + loneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1); + if (end <= 0xFFFF) { + bmp.push(LOW_SURROGATE_MAX + 1, end + 1); + } else { + bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1); + astral.push(0xFFFF + 1, end + 1); + } + } + + } else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) { + + // The range starts and ends after the low surrogate range. + // E.g. (0xFFAA, 0x10FFFF). + if (end <= 0xFFFF) { + bmp.push(start, end + 1); + } else { + bmp.push(start, 0xFFFF + 1); + astral.push(0xFFFF + 1, end + 1); + } + + } else { + + // The range starts and ends in the astral range. + astral.push(start, end + 1); + + } + + index += 2; + } + return { + 'loneHighSurrogates': loneHighSurrogates, + 'loneLowSurrogates': loneLowSurrogates, + 'bmp': bmp, + 'astral': astral + }; + }; + + var optimizeSurrogateMappings = function(surrogateMappings) { + var result = []; + var tmpLow = []; + var addLow = false; + var mapping; + var nextMapping; + var highSurrogates; + var lowSurrogates; + var nextHighSurrogates; + var nextLowSurrogates; + var index = -1; + var length = surrogateMappings.length; + while (++index < length) { + mapping = surrogateMappings[index]; + nextMapping = surrogateMappings[index + 1]; + if (!nextMapping) { + result.push(mapping); + continue; + } + highSurrogates = mapping[0]; + lowSurrogates = mapping[1]; + nextHighSurrogates = nextMapping[0]; + nextLowSurrogates = nextMapping[1]; + + // Check for identical high surrogate ranges. + tmpLow = lowSurrogates; + while ( + nextHighSurrogates && + highSurrogates[0] == nextHighSurrogates[0] && + highSurrogates[1] == nextHighSurrogates[1] + ) { + // Merge with the next item. + if (dataIsSingleton(nextLowSurrogates)) { + tmpLow = dataAdd(tmpLow, nextLowSurrogates[0]); + } else { + tmpLow = dataAddRange( + tmpLow, + nextLowSurrogates[0], + nextLowSurrogates[1] - 1 + ); + } + ++index; + mapping = surrogateMappings[index]; + highSurrogates = mapping[0]; + lowSurrogates = mapping[1]; + nextMapping = surrogateMappings[index + 1]; + nextHighSurrogates = nextMapping && nextMapping[0]; + nextLowSurrogates = nextMapping && nextMapping[1]; + addLow = true; + } + result.push([ + highSurrogates, + addLow ? tmpLow : lowSurrogates + ]); + addLow = false; + } + return optimizeByLowSurrogates(result); + }; + + var optimizeByLowSurrogates = function(surrogateMappings) { + if (surrogateMappings.length == 1) { + return surrogateMappings; + } + var index = -1; + var innerIndex = -1; + while (++index < surrogateMappings.length) { + var mapping = surrogateMappings[index]; + var lowSurrogates = mapping[1]; + var lowSurrogateStart = lowSurrogates[0]; + var lowSurrogateEnd = lowSurrogates[1]; + innerIndex = index; // Note: the loop starts at the next index. + while (++innerIndex < surrogateMappings.length) { + var otherMapping = surrogateMappings[innerIndex]; + var otherLowSurrogates = otherMapping[1]; + var otherLowSurrogateStart = otherLowSurrogates[0]; + var otherLowSurrogateEnd = otherLowSurrogates[1]; + if ( + lowSurrogateStart == otherLowSurrogateStart && + lowSurrogateEnd == otherLowSurrogateEnd + ) { + // Add the code points in the other item to this one. + if (dataIsSingleton(otherMapping[0])) { + mapping[0] = dataAdd(mapping[0], otherMapping[0][0]); + } else { + mapping[0] = dataAddRange( + mapping[0], + otherMapping[0][0], + otherMapping[0][1] - 1 + ); + } + // Remove the other, now redundant, item. + surrogateMappings.splice(innerIndex, 1); + --innerIndex; + } + } + } + return surrogateMappings; + }; + + var surrogateSet = function(data) { + // Exit early if `data` is an empty set. + if (!data.length) { + return []; + } + + // Iterate over the data per `(start, end)` pair. + var index = 0; + var start; + var end; + var startHigh; + var startLow; + var prevStartHigh = 0; + var prevEndHigh = 0; + var tmpLow = []; + var endHigh; + var endLow; + var surrogateMappings = []; + var length = data.length; + var dataHigh = []; + while (index < length) { + start = data[index]; + end = data[index + 1] - 1; + + startHigh = highSurrogate(start); + startLow = lowSurrogate(start); + endHigh = highSurrogate(end); + endLow = lowSurrogate(end); + + var startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN; + var endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX; + var complete = false; + + // Append the previous high-surrogate-to-low-surrogate mappings. + // Step 1: `(startHigh, startLow)` to `(startHigh, LOW_SURROGATE_MAX)`. + if ( + startHigh == endHigh || + startsWithLowestLowSurrogate && endsWithHighestLowSurrogate + ) { + surrogateMappings.push([ + [startHigh, endHigh + 1], + [startLow, endLow + 1] + ]); + complete = true; + } else { + surrogateMappings.push([ + [startHigh, startHigh + 1], + [startLow, LOW_SURROGATE_MAX + 1] + ]); + } + + // Step 2: `(startHigh + 1, LOW_SURROGATE_MIN)` to + // `(endHigh - 1, LOW_SURROGATE_MAX)`. + if (!complete && startHigh + 1 < endHigh) { + if (endsWithHighestLowSurrogate) { + // Combine step 2 and step 3. + surrogateMappings.push([ + [startHigh + 1, endHigh + 1], + [LOW_SURROGATE_MIN, endLow + 1] + ]); + complete = true; + } else { + surrogateMappings.push([ + [startHigh + 1, endHigh], + [LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1] + ]); + } + } + + // Step 3. `(endHigh, LOW_SURROGATE_MIN)` to `(endHigh, endLow)`. + if (!complete) { + surrogateMappings.push([ + [endHigh, endHigh + 1], + [LOW_SURROGATE_MIN, endLow + 1] + ]); + } + + prevStartHigh = startHigh; + prevEndHigh = endHigh; + + index += 2; + } + + // The format of `surrogateMappings` is as follows: + // + // [ surrogateMapping1, surrogateMapping2 ] + // + // i.e.: + // + // [ + // [ highSurrogates1, lowSurrogates1 ], + // [ highSurrogates2, lowSurrogates2 ] + // ] + return optimizeSurrogateMappings(surrogateMappings); + }; + + var createSurrogateCharacterClasses = function(surrogateMappings) { + var result = []; + forEach(surrogateMappings, function(surrogateMapping) { + var highSurrogates = surrogateMapping[0]; + var lowSurrogates = surrogateMapping[1]; + result.push( + createBMPCharacterClasses(highSurrogates) + + createBMPCharacterClasses(lowSurrogates) + ); + }); + return result.join('|'); + }; + + var createCharacterClassesFromData = function(data, bmpOnly) { + var result = []; + + var parts = splitAtBMP(data); + var loneHighSurrogates = parts.loneHighSurrogates; + var loneLowSurrogates = parts.loneLowSurrogates; + var bmp = parts.bmp; + var astral = parts.astral; + var hasAstral = !dataIsEmpty(parts.astral); + var hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates); + var hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates); + + var surrogateMappings = surrogateSet(astral); + + if (bmpOnly) { + bmp = dataAddData(bmp, loneHighSurrogates); + hasLoneHighSurrogates = false; + bmp = dataAddData(bmp, loneLowSurrogates); + hasLoneLowSurrogates = false; + } + + if (!dataIsEmpty(bmp)) { + // The data set contains BMP code points that are not high surrogates + // needed for astral code points in the set. + result.push(createBMPCharacterClasses(bmp)); + } + if (surrogateMappings.length) { + // The data set contains astral code points; append character classes + // based on their surrogate pairs. + result.push(createSurrogateCharacterClasses(surrogateMappings)); + } + // https://gist.github.com/mathiasbynens/bbe7f870208abcfec860 + if (hasLoneHighSurrogates) { + result.push( + createBMPCharacterClasses(loneHighSurrogates) + + // Make sure the high surrogates aren’t part of a surrogate pair. + '(?![\\uDC00-\\uDFFF])' + ); + } + if (hasLoneLowSurrogates) { + result.push( + // Make sure the low surrogates aren’t part of a surrogate pair. + '(?:[^\\uD800-\\uDBFF]|^)' + + createBMPCharacterClasses(loneLowSurrogates) + ); + } + return result.join('|'); + }; + + /*--------------------------------------------------------------------------*/ + + // `regenerate` can be used as a constructor (and new methods can be added to + // its prototype) but also as a regular function, the latter of which is the + // documented and most common usage. For that reason, it’s not capitalized. + var regenerate = function(value) { + if (arguments.length > 1) { + value = slice.call(arguments); + } + if (this instanceof regenerate) { + this.data = []; + return value ? this.add(value) : this; + } + return (new regenerate).add(value); + }; + + regenerate.version = '1.2.0'; + + var proto = regenerate.prototype; + extend(proto, { + 'add': function(value) { + var $this = this; + if (value == null) { + return $this; + } + if (value instanceof regenerate) { + // Allow passing other Regenerate instances. + $this.data = dataAddData($this.data, value.data); + return $this; + } + if (arguments.length > 1) { + value = slice.call(arguments); + } + if (isArray(value)) { + forEach(value, function(item) { + $this.add(item); + }); + return $this; + } + $this.data = dataAdd( + $this.data, + isNumber(value) ? value : symbolToCodePoint(value) + ); + return $this; + }, + 'remove': function(value) { + var $this = this; + if (value == null) { + return $this; + } + if (value instanceof regenerate) { + // Allow passing other Regenerate instances. + $this.data = dataRemoveData($this.data, value.data); + return $this; + } + if (arguments.length > 1) { + value = slice.call(arguments); + } + if (isArray(value)) { + forEach(value, function(item) { + $this.remove(item); + }); + return $this; + } + $this.data = dataRemove( + $this.data, + isNumber(value) ? value : symbolToCodePoint(value) + ); + return $this; + }, + 'addRange': function(start, end) { + var $this = this; + $this.data = dataAddRange($this.data, + isNumber(start) ? start : symbolToCodePoint(start), + isNumber(end) ? end : symbolToCodePoint(end) + ); + return $this; + }, + 'removeRange': function(start, end) { + var $this = this; + var startCodePoint = isNumber(start) ? start : symbolToCodePoint(start); + var endCodePoint = isNumber(end) ? end : symbolToCodePoint(end); + $this.data = dataRemoveRange( + $this.data, + startCodePoint, + endCodePoint + ); + return $this; + }, + 'intersection': function(argument) { + var $this = this; + // Allow passing other Regenerate instances. + // TODO: Optimize this by writing and using `dataIntersectionData()`. + var array = argument instanceof regenerate ? + dataToArray(argument.data) : + argument; + $this.data = dataIntersection($this.data, array); + return $this; + }, + 'contains': function(codePoint) { + return dataContains( + this.data, + isNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint) + ); + }, + 'clone': function() { + var set = new regenerate; + set.data = this.data.slice(0); + return set; + }, + 'toString': function(options) { + var result = createCharacterClassesFromData( + this.data, + options ? options.bmpOnly : false + ); + // Use `\0` instead of `\x00` where possible. + return result.replace(regexNull, '\\0$1'); + }, + 'toRegExp': function(flags) { + return RegExp(this.toString(), flags || ''); + }, + 'valueOf': function() { // Note: `valueOf` is aliased as `toArray`. + return dataToArray(this.data); + } + }); + + proto.toArray = proto.valueOf; + + // 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(function() { + return regenerate; + }); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = regenerate; + } else { // in Narwhal or RingoJS v0.7.0- + freeExports.regenerate = regenerate; + } + } else { // in Rhino or a web browser + root.regenerate = regenerate; + } + +}(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],573:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var types = _dereq_(571).types; +var isArray = types.builtInTypes.array; +var b = types.builders; +var n = types.namedTypes; +var leap = _dereq_(575); +var meta = _dereq_(576); +var util = _dereq_(577); +var runtimeProperty = util.runtimeProperty; +var hasOwn = Object.prototype.hasOwnProperty; + +function Emitter(contextId) { + assert.ok(this instanceof Emitter); + n.Identifier.assert(contextId); + + // Used to generate unique temporary names. + this.nextTempId = 0; + + Object.defineProperties(this, { + // In order to make sure the context object does not collide with + // anything in the local scope, we might have to rename it, so we + // refer to it symbolically instead of just assuming that it will be + // called "context". + contextId: { value: contextId }, + + // An append-only list of Statements that grows each time this.emit is + // called. + listing: { value: [] }, + + // A sparse array whose keys correspond to locations in this.listing + // that have been marked as branch/jump targets. + marked: { value: [true] }, + + // The last location will be marked when this.getDispatchLoop is + // called. + finalLoc: { value: loc() }, + + // A list of all leap.TryEntry statements emitted. + tryEntries: { value: [] } + }); + + // The .leapManager property needs to be defined by a separate + // defineProperties call so that .finalLoc will be visible to the + // leap.LeapManager constructor. + Object.defineProperties(this, { + // Each time we evaluate the body of a loop, we tell this.leapManager + // to enter a nested loop context that determines the meaning of break + // and continue statements therein. + leapManager: { value: new leap.LeapManager(this) } + }); +} + +var Ep = Emitter.prototype; +exports.Emitter = Emitter; + +// Offsets into this.listing that could be used as targets for branches or +// jumps are represented as numeric Literal nodes. This representation has +// the amazingly convenient benefit of allowing the exact value of the +// location to be determined at any time, even after generating code that +// refers to the location. +function loc() { + return b.literal(-1); +} + +// Sets the exact value of the given location to the offset of the next +// Statement emitted. +Ep.mark = function(loc) { + n.Literal.assert(loc); + var index = this.listing.length; + if (loc.value === -1) { + loc.value = index; + } else { + // Locations can be marked redundantly, but their values cannot change + // once set the first time. + assert.strictEqual(loc.value, index); + } + this.marked[index] = true; + return loc; +}; + +Ep.emit = function(node) { + if (n.Expression.check(node)) + node = b.expressionStatement(node); + n.Statement.assert(node); + this.listing.push(node); +}; + +// Shorthand for emitting assignment statements. This will come in handy +// for assignments to temporary variables. +Ep.emitAssign = function(lhs, rhs) { + this.emit(this.assign(lhs, rhs)); + return lhs; +}; + +// Shorthand for an assignment statement. +Ep.assign = function(lhs, rhs) { + return b.expressionStatement( + b.assignmentExpression("=", lhs, rhs)); +}; + +// Convenience function for generating expressions like context.next, +// context.sent, and context.rval. +Ep.contextProperty = function(name, computed) { + return b.memberExpression( + this.contextId, + computed ? b.literal(name) : b.identifier(name), + !!computed + ); +}; + +// Shorthand for setting context.rval and jumping to `context.stop()`. +Ep.stop = function(rval) { + if (rval) { + this.setReturnValue(rval); + } + + this.jump(this.finalLoc); +}; + +Ep.setReturnValue = function(valuePath) { + n.Expression.assert(valuePath.value); + + this.emitAssign( + this.contextProperty("rval"), + this.explodeExpression(valuePath) + ); +}; + +Ep.clearPendingException = function(tryLoc, assignee) { + n.Literal.assert(tryLoc); + + var catchCall = b.callExpression( + this.contextProperty("catch", true), + [tryLoc] + ); + + if (assignee) { + this.emitAssign(assignee, catchCall); + } else { + this.emit(catchCall); + } +}; + +// Emits code for an unconditional jump to the given location, even if the +// exact value of the location is not yet known. +Ep.jump = function(toLoc) { + this.emitAssign(this.contextProperty("next"), toLoc); + this.emit(b.breakStatement()); +}; + +// Conditional jump. +Ep.jumpIf = function(test, toLoc) { + n.Expression.assert(test); + n.Literal.assert(toLoc); + + this.emit(b.ifStatement( + test, + b.blockStatement([ + this.assign(this.contextProperty("next"), toLoc), + b.breakStatement() + ]) + )); +}; + +// Conditional jump, with the condition negated. +Ep.jumpIfNot = function(test, toLoc) { + n.Expression.assert(test); + n.Literal.assert(toLoc); + + var negatedTest; + if (n.UnaryExpression.check(test) && + test.operator === "!") { + // Avoid double negation. + negatedTest = test.argument; + } else { + negatedTest = b.unaryExpression("!", test); + } + + this.emit(b.ifStatement( + negatedTest, + b.blockStatement([ + this.assign(this.contextProperty("next"), toLoc), + b.breakStatement() + ]) + )); +}; + +// Returns a unique MemberExpression that can be used to store and +// retrieve temporary values. Since the object of the member expression is +// the context object, which is presumed to coexist peacefully with all +// other local variables, and since we just increment `nextTempId` +// monotonically, uniqueness is assured. +Ep.makeTempVar = function() { + return this.contextProperty("t" + this.nextTempId++); +}; + +Ep.getContextFunction = function(id) { + return b.functionExpression( + id || null/*Anonymous*/, + [this.contextId], + b.blockStatement([this.getDispatchLoop()]), + false, // Not a generator anymore! + false // Nor an expression. + ); +}; + +// Turns this.listing into a loop of the form +// +// while (1) switch (context.next) { +// case 0: +// ... +// case n: +// return context.stop(); +// } +// +// Each marked location in this.listing will correspond to one generated +// case statement. +Ep.getDispatchLoop = function() { + var self = this; + var cases = []; + var current; + + // If we encounter a break, continue, or return statement in a switch + // case, we can skip the rest of the statements until the next case. + var alreadyEnded = false; + + self.listing.forEach(function(stmt, i) { + if (self.marked.hasOwnProperty(i)) { + cases.push(b.switchCase( + b.literal(i), + current = [])); + alreadyEnded = false; + } + + if (!alreadyEnded) { + current.push(stmt); + if (isSwitchCaseEnder(stmt)) + alreadyEnded = true; + } + }); + + // Now that we know how many statements there will be in this.listing, + // we can finally resolve this.finalLoc.value. + this.finalLoc.value = this.listing.length; + + cases.push( + b.switchCase(this.finalLoc, [ + // Intentionally fall through to the "end" case... + ]), + + // So that the runtime can jump to the final location without having + // to know its offset, we provide the "end" case as a synonym. + b.switchCase(b.literal("end"), [ + // This will check/clear both context.thrown and context.rval. + b.returnStatement( + b.callExpression(this.contextProperty("stop"), []) + ) + ]) + ); + + return b.whileStatement( + b.literal(1), + b.switchStatement( + b.assignmentExpression( + "=", + this.contextProperty("prev"), + this.contextProperty("next") + ), + cases + ) + ); +}; + +// See comment above re: alreadyEnded. +function isSwitchCaseEnder(stmt) { + return n.BreakStatement.check(stmt) + || n.ContinueStatement.check(stmt) + || n.ReturnStatement.check(stmt) + || n.ThrowStatement.check(stmt); +} + +Ep.getTryLocsList = function() { + if (this.tryEntries.length === 0) { + // To avoid adding a needless [] to the majority of runtime.wrap + // argument lists, force the caller to handle this case specially. + return null; + } + + var lastLocValue = 0; + + return b.arrayExpression( + this.tryEntries.map(function(tryEntry) { + var thisLocValue = tryEntry.firstLoc.value; + assert.ok(thisLocValue >= lastLocValue, "try entries out of order"); + lastLocValue = thisLocValue; + + var ce = tryEntry.catchEntry; + var fe = tryEntry.finallyEntry; + + var locs = [ + tryEntry.firstLoc, + // The null here makes a hole in the array. + ce ? ce.firstLoc : null + ]; + + if (fe) { + locs[2] = fe.firstLoc; + locs[3] = fe.afterLoc; + } + + return b.arrayExpression(locs); + }) + ); +}; + +// All side effects must be realized in order. + +// If any subexpression harbors a leap, all subexpressions must be +// neutered of side effects. + +// No destructive modification of AST nodes. + +Ep.explode = function(path, ignoreResult) { + assert.ok(path instanceof types.NodePath); + + var node = path.value; + var self = this; + + n.Node.assert(node); + + if (n.Statement.check(node)) + return self.explodeStatement(path); + + if (n.Expression.check(node)) + return self.explodeExpression(path, ignoreResult); + + if (n.Declaration.check(node)) + throw getDeclError(node); + + switch (node.type) { + case "Program": + return path.get("body").map( + self.explodeStatement, + self + ); + + case "VariableDeclarator": + throw getDeclError(node); + + // These node types should be handled by their parent nodes + // (ObjectExpression, SwitchStatement, and TryStatement, respectively). + case "Property": + case "SwitchCase": + case "CatchClause": + throw new Error( + node.type + " nodes should be handled by their parents"); + + default: + throw new Error( + "unknown Node of type " + + JSON.stringify(node.type)); + } +}; + +function getDeclError(node) { + return new Error( + "all declarations should have been transformed into " + + "assignments before the Exploder began its work: " + + JSON.stringify(node)); +} + +Ep.explodeStatement = function(path, labelId) { + assert.ok(path instanceof types.NodePath); + + var stmt = path.value; + var self = this; + + n.Statement.assert(stmt); + + if (labelId) { + n.Identifier.assert(labelId); + } else { + labelId = null; + } + + // Explode BlockStatement nodes even if they do not contain a yield, + // because we don't want or need the curly braces. + if (n.BlockStatement.check(stmt)) { + return path.get("body").each( + self.explodeStatement, + self + ); + } + + if (!meta.containsLeap(stmt)) { + // Technically we should be able to avoid emitting the statement + // altogether if !meta.hasSideEffects(stmt), but that leads to + // confusing generated code (for instance, `while (true) {}` just + // disappears) and is probably a more appropriate job for a dedicated + // dead code elimination pass. + self.emit(stmt); + return; + } + + switch (stmt.type) { + case "ExpressionStatement": + self.explodeExpression(path.get("expression"), true); + break; + + case "LabeledStatement": + var after = loc(); + + // Did you know you can break from any labeled block statement or + // control structure? Well, you can! Note: when a labeled loop is + // encountered, the leap.LabeledEntry created here will immediately + // enclose a leap.LoopEntry on the leap manager's stack, and both + // entries will have the same label. Though this works just fine, it + // may seem a bit redundant. In theory, we could check here to + // determine if stmt knows how to handle its own label; for example, + // stmt happens to be a WhileStatement and so we know it's going to + // establish its own LoopEntry when we explode it (below). Then this + // LabeledEntry would be unnecessary. Alternatively, we might be + // tempted not to pass stmt.label down into self.explodeStatement, + // because we've handled the label here, but that's a mistake because + // labeled loops may contain labeled continue statements, which is not + // something we can handle in this generic case. All in all, I think a + // little redundancy greatly simplifies the logic of this case, since + // it's clear that we handle all possible LabeledStatements correctly + // here, regardless of whether they interact with the leap manager + // themselves. Also remember that labels and break/continue-to-label + // statements are rare, and all of this logic happens at transform + // time, so it has no additional runtime cost. + self.leapManager.withEntry( + new leap.LabeledEntry(after, stmt.label), + function() { + self.explodeStatement(path.get("body"), stmt.label); + } + ); + + self.mark(after); + + break; + + case "WhileStatement": + var before = loc(); + var after = loc(); + + self.mark(before); + self.jumpIfNot(self.explodeExpression(path.get("test")), after); + self.leapManager.withEntry( + new leap.LoopEntry(after, before, labelId), + function() { self.explodeStatement(path.get("body")); } + ); + self.jump(before); + self.mark(after); + + break; + + case "DoWhileStatement": + var first = loc(); + var test = loc(); + var after = loc(); + + self.mark(first); + self.leapManager.withEntry( + new leap.LoopEntry(after, test, labelId), + function() { self.explode(path.get("body")); } + ); + self.mark(test); + self.jumpIf(self.explodeExpression(path.get("test")), first); + self.mark(after); + + break; + + case "ForStatement": + var head = loc(); + var update = loc(); + var after = loc(); + + if (stmt.init) { + // We pass true here to indicate that if stmt.init is an expression + // then we do not care about its result. + self.explode(path.get("init"), true); + } + + self.mark(head); + + if (stmt.test) { + self.jumpIfNot(self.explodeExpression(path.get("test")), after); + } else { + // No test means continue unconditionally. + } + + self.leapManager.withEntry( + new leap.LoopEntry(after, update, labelId), + function() { self.explodeStatement(path.get("body")); } + ); + + self.mark(update); + + if (stmt.update) { + // We pass true here to indicate that if stmt.update is an + // expression then we do not care about its result. + self.explode(path.get("update"), true); + } + + self.jump(head); + + self.mark(after); + + break; + + case "ForInStatement": + var head = loc(); + var after = loc(); + + var keyIterNextFn = self.makeTempVar(); + self.emitAssign( + keyIterNextFn, + b.callExpression( + runtimeProperty("keys"), + [self.explodeExpression(path.get("right"))] + ) + ); + + self.mark(head); + + var keyInfoTmpVar = self.makeTempVar(); + self.jumpIf( + b.memberExpression( + b.assignmentExpression( + "=", + keyInfoTmpVar, + b.callExpression(keyIterNextFn, []) + ), + b.identifier("done"), + false + ), + after + ); + + self.emitAssign( + stmt.left, + b.memberExpression( + keyInfoTmpVar, + b.identifier("value"), + false + ) + ); + + self.leapManager.withEntry( + new leap.LoopEntry(after, head, labelId), + function() { self.explodeStatement(path.get("body")); } + ); + + self.jump(head); + + self.mark(after); + + break; + + case "BreakStatement": + self.emitAbruptCompletion({ + type: "break", + target: self.leapManager.getBreakLoc(stmt.label) + }); + + break; + + case "ContinueStatement": + self.emitAbruptCompletion({ + type: "continue", + target: self.leapManager.getContinueLoc(stmt.label) + }); + + break; + + case "SwitchStatement": + // Always save the discriminant into a temporary variable in case the + // test expressions overwrite values like context.sent. + var disc = self.emitAssign( + self.makeTempVar(), + self.explodeExpression(path.get("discriminant")) + ); + + var after = loc(); + var defaultLoc = loc(); + var condition = defaultLoc; + var caseLocs = []; + + // If there are no cases, .cases might be undefined. + var cases = stmt.cases || []; + + for (var i = cases.length - 1; i >= 0; --i) { + var c = cases[i]; + n.SwitchCase.assert(c); + + if (c.test) { + condition = b.conditionalExpression( + b.binaryExpression("===", disc, c.test), + caseLocs[i] = loc(), + condition + ); + } else { + caseLocs[i] = defaultLoc; + } + } + + self.jump(self.explodeExpression( + new types.NodePath(condition, path, "discriminant") + )); + + self.leapManager.withEntry( + new leap.SwitchEntry(after), + function() { + path.get("cases").each(function(casePath) { + var c = casePath.value; + var i = casePath.name; + + self.mark(caseLocs[i]); + + casePath.get("consequent").each( + self.explodeStatement, + self + ); + }); + } + ); + + self.mark(after); + if (defaultLoc.value === -1) { + self.mark(defaultLoc); + assert.strictEqual(after.value, defaultLoc.value); + } + + break; + + case "IfStatement": + var elseLoc = stmt.alternate && loc(); + var after = loc(); + + self.jumpIfNot( + self.explodeExpression(path.get("test")), + elseLoc || after + ); + + self.explodeStatement(path.get("consequent")); + + if (elseLoc) { + self.jump(after); + self.mark(elseLoc); + self.explodeStatement(path.get("alternate")); + } + + self.mark(after); + + break; + + case "ReturnStatement": + self.emitAbruptCompletion({ + type: "return", + value: self.explodeExpression(path.get("argument")) + }); + + break; + + case "WithStatement": + throw new Error( + node.type + " not supported in generator functions."); + + case "TryStatement": + var after = loc(); + + var handler = stmt.handler; + if (!handler && stmt.handlers) { + handler = stmt.handlers[0] || null; + } + + var catchLoc = handler && loc(); + var catchEntry = catchLoc && new leap.CatchEntry( + catchLoc, + handler.param + ); + + var finallyLoc = stmt.finalizer && loc(); + var finallyEntry = finallyLoc && + new leap.FinallyEntry(finallyLoc, after); + + var tryEntry = new leap.TryEntry( + self.getUnmarkedCurrentLoc(), + catchEntry, + finallyEntry + ); + + self.tryEntries.push(tryEntry); + self.updateContextPrevLoc(tryEntry.firstLoc); + + self.leapManager.withEntry(tryEntry, function() { + self.explodeStatement(path.get("block")); + + if (catchLoc) { + if (finallyLoc) { + // If we have both a catch block and a finally block, then + // because we emit the catch block first, we need to jump over + // it to the finally block. + self.jump(finallyLoc); + + } else { + // If there is no finally block, then we need to jump over the + // catch block to the fall-through location. + self.jump(after); + } + + self.updateContextPrevLoc(self.mark(catchLoc)); + + var bodyPath = path.get("handler", "body"); + var safeParam = self.makeTempVar(); + self.clearPendingException(tryEntry.firstLoc, safeParam); + + var catchScope = bodyPath.scope; + var catchParamName = handler.param.name; + n.CatchClause.assert(catchScope.node); + assert.strictEqual(catchScope.lookup(catchParamName), catchScope); + + types.visit(bodyPath, { + visitIdentifier: function(path) { + if (util.isReference(path, catchParamName) && + path.scope.lookup(catchParamName) === catchScope) { + return safeParam; + } + + this.traverse(path); + }, + + visitFunction: function(path) { + if (path.scope.declares(catchParamName)) { + // Don't descend into nested scopes that shadow the catch + // parameter with their own declarations. This isn't + // logically necessary because of the path.scope.lookup we + // do in visitIdentifier, but it saves time. + return false; + } + + this.traverse(path); + } + }); + + self.leapManager.withEntry(catchEntry, function() { + self.explodeStatement(bodyPath); + }); + } + + if (finallyLoc) { + self.updateContextPrevLoc(self.mark(finallyLoc)); + + self.leapManager.withEntry(finallyEntry, function() { + self.explodeStatement(path.get("finalizer")); + }); + + self.emit(b.returnStatement(b.callExpression( + self.contextProperty("finish"), + [finallyEntry.firstLoc] + ))); + } + }); + + self.mark(after); + + break; + + case "ThrowStatement": + self.emit(b.throwStatement( + self.explodeExpression(path.get("argument")) + )); + + break; + + default: + throw new Error( + "unknown Statement of type " + + JSON.stringify(stmt.type)); + } +}; + +Ep.emitAbruptCompletion = function(record) { + if (!isValidCompletion(record)) { + assert.ok( + false, + "invalid completion record: " + + JSON.stringify(record) + ); + } + + assert.notStrictEqual( + record.type, "normal", + "normal completions are not abrupt" + ); + + var abruptArgs = [b.literal(record.type)]; + + if (record.type === "break" || + record.type === "continue") { + n.Literal.assert(record.target); + abruptArgs[1] = record.target; + } else if (record.type === "return" || + record.type === "throw") { + if (record.value) { + n.Expression.assert(record.value); + abruptArgs[1] = record.value; + } + } + + this.emit( + b.returnStatement( + b.callExpression( + this.contextProperty("abrupt"), + abruptArgs + ) + ) + ); +}; + +function isValidCompletion(record) { + var type = record.type; + + if (type === "normal") { + return !hasOwn.call(record, "target"); + } + + if (type === "break" || + type === "continue") { + return !hasOwn.call(record, "value") + && n.Literal.check(record.target); + } + + if (type === "return" || + type === "throw") { + return hasOwn.call(record, "value") + && !hasOwn.call(record, "target"); + } + + return false; +} + + +// Not all offsets into emitter.listing are potential jump targets. For +// example, execution typically falls into the beginning of a try block +// without jumping directly there. This method returns the current offset +// without marking it, so that a switch case will not necessarily be +// generated for this offset (I say "not necessarily" because the same +// location might end up being marked in the process of emitting other +// statements). There's no logical harm in marking such locations as jump +// targets, but minimizing the number of switch cases keeps the generated +// code shorter. +Ep.getUnmarkedCurrentLoc = function() { + return b.literal(this.listing.length); +}; + +// The context.prev property takes the value of context.next whenever we +// evaluate the switch statement discriminant, which is generally good +// enough for tracking the last location we jumped to, but sometimes +// context.prev needs to be more precise, such as when we fall +// successfully out of a try block and into a finally block without +// jumping. This method exists to update context.prev to the freshest +// available location. If we were implementing a full interpreter, we +// would know the location of the current instruction with complete +// precision at all times, but we don't have that luxury here, as it would +// be costly and verbose to set context.prev before every statement. +Ep.updateContextPrevLoc = function(loc) { + if (loc) { + n.Literal.assert(loc); + + if (loc.value === -1) { + // If an uninitialized location literal was passed in, set its value + // to the current this.listing.length. + loc.value = this.listing.length; + } else { + // Otherwise assert that the location matches the current offset. + assert.strictEqual(loc.value, this.listing.length); + } + + } else { + loc = this.getUnmarkedCurrentLoc(); + } + + // Make sure context.prev is up to date in case we fell into this try + // statement without jumping to it. TODO Consider avoiding this + // assignment when we know control must have jumped here. + this.emitAssign(this.contextProperty("prev"), loc); +}; + +Ep.explodeExpression = function(path, ignoreResult) { + assert.ok(path instanceof types.NodePath); + + var expr = path.value; + if (expr) { + n.Expression.assert(expr); + } else { + return expr; + } + + var self = this; + var result; // Used optionally by several cases below. + + function finish(expr) { + n.Expression.assert(expr); + if (ignoreResult) { + self.emit(expr); + } else { + return expr; + } + } + + // If the expression does not contain a leap, then we either emit the + // expression as a standalone statement or return it whole. + if (!meta.containsLeap(expr)) { + return finish(expr); + } + + // If any child contains a leap (such as a yield or labeled continue or + // break statement), then any sibling subexpressions will almost + // certainly have to be exploded in order to maintain the order of their + // side effects relative to the leaping child(ren). + var hasLeapingChildren = meta.containsLeap.onlyChildren(expr); + + // In order to save the rest of explodeExpression from a combinatorial + // trainwreck of special cases, explodeViaTempVar is responsible for + // deciding when a subexpression needs to be "exploded," which is my + // very technical term for emitting the subexpression as an assignment + // to a temporary variable and the substituting the temporary variable + // for the original subexpression. Think of exploded view diagrams, not + // Michael Bay movies. The point of exploding subexpressions is to + // control the precise order in which the generated code realizes the + // side effects of those subexpressions. + function explodeViaTempVar(tempVar, childPath, ignoreChildResult) { + assert.ok(childPath instanceof types.NodePath); + + assert.ok( + !ignoreChildResult || !tempVar, + "Ignoring the result of a child expression but forcing it to " + + "be assigned to a temporary variable?" + ); + + var result = self.explodeExpression(childPath, ignoreChildResult); + + if (ignoreChildResult) { + // Side effects already emitted above. + + } else if (tempVar || (hasLeapingChildren && + !n.Literal.check(result))) { + // If tempVar was provided, then the result will always be assigned + // to it, even if the result does not otherwise need to be assigned + // to a temporary variable. When no tempVar is provided, we have + // the flexibility to decide whether a temporary variable is really + // necessary. Unfortunately, in general, a temporary variable is + // required whenever any child contains a yield expression, since it + // is difficult to prove (at all, let alone efficiently) whether + // this result would evaluate to the same value before and after the + // yield (see #206). One narrow case where we can prove it doesn't + // matter (and thus we do not need a temporary variable) is when the + // result in question is a Literal value. + result = self.emitAssign( + tempVar || self.makeTempVar(), + result + ); + } + return result; + } + + // If ignoreResult is true, then we must take full responsibility for + // emitting the expression with all its side effects, and we should not + // return a result. + + switch (expr.type) { + case "MemberExpression": + return finish(b.memberExpression( + self.explodeExpression(path.get("object")), + expr.computed + ? explodeViaTempVar(null, path.get("property")) + : expr.property, + expr.computed + )); + + case "CallExpression": + var calleePath = path.get("callee"); + var argsPath = path.get("arguments"); + + var newCallee; + var newArgs = []; + + var hasLeapingArgs = false; + argsPath.each(function(argPath) { + hasLeapingArgs = hasLeapingArgs || + meta.containsLeap(argPath.value); + }); + + if (n.MemberExpression.check(calleePath.value)) { + if (hasLeapingArgs) { + // If the arguments of the CallExpression contained any yield + // expressions, then we need to be sure to evaluate the callee + // before evaluating the arguments, but if the callee was a member + // expression, then we must be careful that the object of the + // member expression still gets bound to `this` for the call. + + var newObject = explodeViaTempVar( + // Assign the exploded callee.object expression to a temporary + // variable so that we can use it twice without reevaluating it. + self.makeTempVar(), + calleePath.get("object") + ); + + var newProperty = calleePath.value.computed + ? explodeViaTempVar(null, calleePath.get("property")) + : calleePath.value.property; + + newArgs.unshift(newObject); + + newCallee = b.memberExpression( + b.memberExpression( + newObject, + newProperty, + calleePath.value.computed + ), + b.identifier("call"), + false + ); + + } else { + newCallee = self.explodeExpression(calleePath); + } + + } else { + newCallee = self.explodeExpression(calleePath); + + if (n.MemberExpression.check(newCallee)) { + // If the callee was not previously a MemberExpression, then the + // CallExpression was "unqualified," meaning its `this` object + // should be the global object. If the exploded expression has + // become a MemberExpression (e.g. a context property, probably a + // temporary variable), then we need to force it to be unqualified + // by using the (0, object.property)(...) trick; otherwise, it + // will receive the object of the MemberExpression as its `this` + // object. + newCallee = b.sequenceExpression([ + b.literal(0), + newCallee + ]); + } + } + + argsPath.each(function(argPath) { + newArgs.push(explodeViaTempVar(null, argPath)); + }); + + return finish(b.callExpression( + newCallee, + newArgs + )); + + case "NewExpression": + return finish(b.newExpression( + explodeViaTempVar(null, path.get("callee")), + path.get("arguments").map(function(argPath) { + return explodeViaTempVar(null, argPath); + }) + )); + + case "ObjectExpression": + return finish(b.objectExpression( + path.get("properties").map(function(propPath) { + return b.property( + propPath.value.kind, + propPath.value.key, + explodeViaTempVar(null, propPath.get("value")) + ); + }) + )); + + case "ArrayExpression": + return finish(b.arrayExpression( + path.get("elements").map(function(elemPath) { + return explodeViaTempVar(null, elemPath); + }) + )); + + case "SequenceExpression": + var lastIndex = expr.expressions.length - 1; + + path.get("expressions").each(function(exprPath) { + if (exprPath.name === lastIndex) { + result = self.explodeExpression(exprPath, ignoreResult); + } else { + self.explodeExpression(exprPath, true); + } + }); + + return result; + + case "LogicalExpression": + var after = loc(); + + if (!ignoreResult) { + result = self.makeTempVar(); + } + + var left = explodeViaTempVar(result, path.get("left")); + + if (expr.operator === "&&") { + self.jumpIfNot(left, after); + } else { + assert.strictEqual(expr.operator, "||"); + self.jumpIf(left, after); + } + + explodeViaTempVar(result, path.get("right"), ignoreResult); + + self.mark(after); + + return result; + + case "ConditionalExpression": + var elseLoc = loc(); + var after = loc(); + var test = self.explodeExpression(path.get("test")); + + self.jumpIfNot(test, elseLoc); + + if (!ignoreResult) { + result = self.makeTempVar(); + } + + explodeViaTempVar(result, path.get("consequent"), ignoreResult); + self.jump(after); + + self.mark(elseLoc); + explodeViaTempVar(result, path.get("alternate"), ignoreResult); + + self.mark(after); + + return result; + + case "UnaryExpression": + return finish(b.unaryExpression( + expr.operator, + // Can't (and don't need to) break up the syntax of the argument. + // Think about delete a[b]. + self.explodeExpression(path.get("argument")), + !!expr.prefix + )); + + case "BinaryExpression": + return finish(b.binaryExpression( + expr.operator, + explodeViaTempVar(null, path.get("left")), + explodeViaTempVar(null, path.get("right")) + )); + + case "AssignmentExpression": + return finish(b.assignmentExpression( + expr.operator, + self.explodeExpression(path.get("left")), + self.explodeExpression(path.get("right")) + )); + + case "UpdateExpression": + return finish(b.updateExpression( + expr.operator, + self.explodeExpression(path.get("argument")), + expr.prefix + )); + + case "YieldExpression": + var after = loc(); + var arg = expr.argument && self.explodeExpression(path.get("argument")); + + if (arg && expr.delegate) { + var result = self.makeTempVar(); + + self.emit(b.returnStatement(b.callExpression( + self.contextProperty("delegateYield"), [ + arg, + b.literal(result.property.name), + after + ] + ))); + + self.mark(after); + + return result; + } + + self.emitAssign(self.contextProperty("next"), after); + self.emit(b.returnStatement(arg || null)); + self.mark(after); + + return self.contextProperty("sent"); + + default: + throw new Error( + "unknown Expression of type " + + JSON.stringify(expr.type)); + } +}; + +},{"1":1,"571":571,"575":575,"576":576,"577":577}],574:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var types = _dereq_(571).types; +var n = types.namedTypes; +var b = types.builders; +var hasOwn = Object.prototype.hasOwnProperty; + +// The hoist function takes a FunctionExpression or FunctionDeclaration +// and replaces any Declaration nodes in its body with assignments, then +// returns a VariableDeclaration containing just the names of the removed +// declarations. +exports.hoist = function(funPath) { + assert.ok(funPath instanceof types.NodePath); + n.Function.assert(funPath.value); + + var vars = {}; + + function varDeclToExpr(vdec, includeIdentifiers) { + n.VariableDeclaration.assert(vdec); + var exprs = []; + + vdec.declarations.forEach(function(dec) { + vars[dec.id.name] = dec.id; + + if (dec.init) { + exprs.push(b.assignmentExpression( + "=", dec.id, dec.init + )); + } else if (includeIdentifiers) { + exprs.push(dec.id); + } + }); + + if (exprs.length === 0) + return null; + + if (exprs.length === 1) + return exprs[0]; + + return b.sequenceExpression(exprs); + } + + types.visit(funPath.get("body"), { + visitVariableDeclaration: function(path) { + var expr = varDeclToExpr(path.value, false); + if (expr === null) { + path.replace(); + } else { + // We don't need to traverse this expression any further because + // there can't be any new declarations inside an expression. + return b.expressionStatement(expr); + } + + // Since the original node has been either removed or replaced, + // avoid traversing it any further. + return false; + }, + + visitForStatement: function(path) { + var init = path.value.init; + if (n.VariableDeclaration.check(init)) { + path.get("init").replace(varDeclToExpr(init, false)); + } + this.traverse(path); + }, + + visitForInStatement: function(path) { + var left = path.value.left; + if (n.VariableDeclaration.check(left)) { + path.get("left").replace(varDeclToExpr(left, true)); + } + this.traverse(path); + }, + + visitFunctionDeclaration: function(path) { + var node = path.value; + vars[node.id.name] = node.id; + + var parentNode = path.parent.node; + var assignment = b.expressionStatement( + b.assignmentExpression( + "=", + node.id, + b.functionExpression( + node.id, + node.params, + node.body, + node.generator, + node.expression + ) + ) + ); + + if (n.BlockStatement.check(path.parent.node)) { + // Insert the assignment form before the first statement in the + // enclosing block. + path.parent.get("body").unshift(assignment); + + // Remove the function declaration now that we've inserted the + // equivalent assignment form at the beginning of the block. + path.replace(); + + } else { + // If the parent node is not a block statement, then we can just + // replace the declaration with the equivalent assignment form + // without worrying about hoisting it. + path.replace(assignment); + } + + // Don't hoist variables out of inner functions. + return false; + }, + + visitFunctionExpression: function(path) { + // Don't descend into nested function expressions. + return false; + } + }); + + var paramNames = {}; + funPath.get("params").each(function(paramPath) { + var param = paramPath.value; + if (n.Identifier.check(param)) { + paramNames[param.name] = param; + } else { + // Variables declared by destructuring parameter patterns will be + // harmlessly re-declared. + } + }); + + var declarations = []; + + Object.keys(vars).forEach(function(name) { + if (!hasOwn.call(paramNames, name)) { + declarations.push(b.variableDeclarator(vars[name], null)); + } + }); + + if (declarations.length === 0) { + return null; // Be sure to handle this case! + } + + return b.variableDeclaration("var", declarations); +}; + +},{"1":1,"571":571}],575:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var types = _dereq_(571).types; +var n = types.namedTypes; +var b = types.builders; +var inherits = _dereq_(13).inherits; +var hasOwn = Object.prototype.hasOwnProperty; + +function Entry() { + assert.ok(this instanceof Entry); +} + +function FunctionEntry(returnLoc) { + Entry.call(this); + n.Literal.assert(returnLoc); + this.returnLoc = returnLoc; +} + +inherits(FunctionEntry, Entry); +exports.FunctionEntry = FunctionEntry; + +function LoopEntry(breakLoc, continueLoc, label) { + Entry.call(this); + + n.Literal.assert(breakLoc); + n.Literal.assert(continueLoc); + + if (label) { + n.Identifier.assert(label); + } else { + label = null; + } + + this.breakLoc = breakLoc; + this.continueLoc = continueLoc; + this.label = label; +} + +inherits(LoopEntry, Entry); +exports.LoopEntry = LoopEntry; + +function SwitchEntry(breakLoc) { + Entry.call(this); + n.Literal.assert(breakLoc); + this.breakLoc = breakLoc; +} + +inherits(SwitchEntry, Entry); +exports.SwitchEntry = SwitchEntry; + +function TryEntry(firstLoc, catchEntry, finallyEntry) { + Entry.call(this); + + n.Literal.assert(firstLoc); + + if (catchEntry) { + assert.ok(catchEntry instanceof CatchEntry); + } else { + catchEntry = null; + } + + if (finallyEntry) { + assert.ok(finallyEntry instanceof FinallyEntry); + } else { + finallyEntry = null; + } + + // Have to have one or the other (or both). + assert.ok(catchEntry || finallyEntry); + + this.firstLoc = firstLoc; + this.catchEntry = catchEntry; + this.finallyEntry = finallyEntry; +} + +inherits(TryEntry, Entry); +exports.TryEntry = TryEntry; + +function CatchEntry(firstLoc, paramId) { + Entry.call(this); + + n.Literal.assert(firstLoc); + n.Identifier.assert(paramId); + + this.firstLoc = firstLoc; + this.paramId = paramId; +} + +inherits(CatchEntry, Entry); +exports.CatchEntry = CatchEntry; + +function FinallyEntry(firstLoc, afterLoc) { + Entry.call(this); + n.Literal.assert(firstLoc); + n.Literal.assert(afterLoc); + this.firstLoc = firstLoc; + this.afterLoc = afterLoc; +} + +inherits(FinallyEntry, Entry); +exports.FinallyEntry = FinallyEntry; + +function LabeledEntry(breakLoc, label) { + Entry.call(this); + + n.Literal.assert(breakLoc); + n.Identifier.assert(label); + + this.breakLoc = breakLoc; + this.label = label; +} + +inherits(LabeledEntry, Entry); +exports.LabeledEntry = LabeledEntry; + +function LeapManager(emitter) { + assert.ok(this instanceof LeapManager); + + var Emitter = _dereq_(573).Emitter; + assert.ok(emitter instanceof Emitter); + + this.emitter = emitter; + this.entryStack = [new FunctionEntry(emitter.finalLoc)]; +} + +var LMp = LeapManager.prototype; +exports.LeapManager = LeapManager; + +LMp.withEntry = function(entry, callback) { + assert.ok(entry instanceof Entry); + this.entryStack.push(entry); + try { + callback.call(this.emitter); + } finally { + var popped = this.entryStack.pop(); + assert.strictEqual(popped, entry); + } +}; + +LMp._findLeapLocation = function(property, label) { + for (var i = this.entryStack.length - 1; i >= 0; --i) { + var entry = this.entryStack[i]; + var loc = entry[property]; + if (loc) { + if (label) { + if (entry.label && + entry.label.name === label.name) { + return loc; + } + } else if (entry instanceof LabeledEntry) { + // Ignore LabeledEntry entries unless we are actually breaking to + // a label. + } else { + return loc; + } + } + } + + return null; +}; + +LMp.getBreakLoc = function(label) { + return this._findLeapLocation("breakLoc", label); +}; + +LMp.getContinueLoc = function(label) { + return this._findLeapLocation("continueLoc", label); +}; + +},{"1":1,"13":13,"571":571,"573":573}],576:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var m = _dereq_(560).makeAccessor(); +var types = _dereq_(571).types; +var isArray = types.builtInTypes.array; +var n = types.namedTypes; +var hasOwn = Object.prototype.hasOwnProperty; + +function makePredicate(propertyName, knownTypes) { + function onlyChildren(node) { + n.Node.assert(node); + + // Assume no side effects until we find out otherwise. + var result = false; + + function check(child) { + if (result) { + // Do nothing. + } else if (isArray.check(child)) { + child.some(check); + } else if (n.Node.check(child)) { + assert.strictEqual(result, false); + result = predicate(child); + } + return result; + } + + types.eachField(node, function(name, child) { + check(child); + }); + + return result; + } + + function predicate(node) { + n.Node.assert(node); + + var meta = m(node); + if (hasOwn.call(meta, propertyName)) + return meta[propertyName]; + + // Certain types are "opaque," which means they have no side + // effects or leaps and we don't care about their subexpressions. + if (hasOwn.call(opaqueTypes, node.type)) + return meta[propertyName] = false; + + if (hasOwn.call(knownTypes, node.type)) + return meta[propertyName] = true; + + return meta[propertyName] = onlyChildren(node); + } + + predicate.onlyChildren = onlyChildren; + + return predicate; +} + +var opaqueTypes = { + FunctionExpression: true +}; + +// These types potentially have side effects regardless of what side +// effects their subexpressions have. +var sideEffectTypes = { + CallExpression: true, // Anything could happen! + ForInStatement: true, // Modifies the key variable. + UnaryExpression: true, // Think delete. + BinaryExpression: true, // Might invoke .toString() or .valueOf(). + AssignmentExpression: true, // Side-effecting by definition. + UpdateExpression: true, // Updates are essentially assignments. + NewExpression: true // Similar to CallExpression. +}; + +// These types are the direct cause of all leaps in control flow. +var leapTypes = { + YieldExpression: true, + BreakStatement: true, + ContinueStatement: true, + ReturnStatement: true, + ThrowStatement: true +}; + +// All leap types are also side effect types. +for (var type in leapTypes) { + if (hasOwn.call(leapTypes, type)) { + sideEffectTypes[type] = leapTypes[type]; + } +} + +exports.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes); +exports.containsLeap = makePredicate("containsLeap", leapTypes); + +},{"1":1,"560":560,"571":571}],577:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var types = _dereq_(571).types; +var n = types.namedTypes; +var b = types.builders; +var hasOwn = Object.prototype.hasOwnProperty; + +exports.defaults = function(obj) { + var len = arguments.length; + var extension; + + for (var i = 1; i < len; ++i) { + if ((extension = arguments[i])) { + for (var key in extension) { + if (hasOwn.call(extension, key) && !hasOwn.call(obj, key)) { + obj[key] = extension[key]; + } + } + } + } + + return obj; +}; + +exports.runtimeProperty = function(name) { + return b.memberExpression( + b.identifier("regeneratorRuntime"), + b.identifier(name), + false + ); +}; + +// Inspired by the isReference function from ast-util: +// https://github.com/eventualbuddha/ast-util/blob/9bf91c5ce8/lib/index.js#L466-L506 +exports.isReference = function(path, name) { + var node = path.value; + + if (!n.Identifier.check(node)) { + return false; + } + + if (name && node.name !== name) { + return false; + } + + var parent = path.parent.value; + + switch (parent.type) { + case "VariableDeclarator": + return path.name === "init"; + + case "MemberExpression": + return path.name === "object" || ( + parent.computed && path.name === "property" + ); + + case "FunctionExpression": + case "FunctionDeclaration": + case "ArrowFunctionExpression": + if (path.name === "id") { + return false; + } + + if (path.parentPath.name === "params" && + parent.params === path.parentPath.value && + parent.params[path.name] === node) { + return false; + } + + return true; + + case "ClassDeclaration": + case "ClassExpression": + return path.name !== "id"; + + case "CatchClause": + return path.name !== "param"; + + case "Property": + case "MethodDefinition": + return path.name !== "key"; + + case "ImportSpecifier": + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "LabeledStatement": + return false; + + default: + return true; + } +}; + +},{"1":1,"571":571}],578:[function(_dereq_,module,exports){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var fs = _dereq_(3); +var recast = _dereq_(571); +var types = recast.types; +var n = types.namedTypes; +var b = types.builders; +var isArray = types.builtInTypes.array; +var isObject = types.builtInTypes.object; +var NodePath = types.NodePath; +var hoist = _dereq_(574).hoist; +var Emitter = _dereq_(573).Emitter; +var util = _dereq_(577); +var runtimeProperty = util.runtimeProperty; +var getMarkInfo = _dereq_(560).makeAccessor(); + +exports.transform = function transform(node, options) { + options = options || {}; + + var path = node instanceof NodePath ? node : new NodePath(node); + visitor.visit(path, options); + node = path.value; + + if (options.includeRuntime === true || + (options.includeRuntime === 'if used' && visitor.wasChangeReported())) { + injectRuntime(n.File.check(node) ? node.program : node); + } + + options.madeChanges = visitor.wasChangeReported(); + + return node; +}; + +function injectRuntime(program) { + n.Program.assert(program); + + // Include the runtime by modifying the AST rather than by concatenating + // strings. This technique will allow for more accurate source mapping. + var runtimePath = _dereq_(579).runtime.path; + var runtime = fs.readFileSync(runtimePath, "utf8"); + var runtimeBody = recast.parse(runtime, { + sourceFileName: runtimePath + }).program.body; + + var body = program.body; + body.unshift.apply(body, runtimeBody); +} + +var visitor = types.PathVisitor.fromMethodsObject({ + reset: function(node, options) { + this.options = options; + }, + + visitFunction: function(path) { + // Calling this.traverse(path) first makes for a post-order traversal. + this.traverse(path); + + var node = path.value; + var shouldTransformAsync = node.async && !this.options.disableAsync; + + if (!node.generator && !shouldTransformAsync) { + return; + } + + this.reportChanged(); + + if (node.expression) { + // Transform expression lambdas into normal functions. + node.expression = false; + node.body = b.blockStatement([ + b.returnStatement(node.body) + ]); + } + + if (shouldTransformAsync) { + awaitVisitor.visit(path.get("body")); + } + + var outerBody = []; + var innerBody = []; + var bodyPath = path.get("body", "body"); + + bodyPath.each(function(childPath) { + var node = childPath.value; + if (node && node._blockHoist != null) { + outerBody.push(node); + } else { + innerBody.push(node); + } + }); + + if (outerBody.length > 0) { + // Only replace the inner body if we actually hoisted any statements + // to the outer body. + bodyPath.replace(innerBody); + } + + var outerFnExpr = getOuterFnExpr(path); + // Note that getOuterFnExpr has the side-effect of ensuring that the + // function has a name (so node.id will always be an Identifier), even + // if a temporary name has to be synthesized. + n.Identifier.assert(node.id); + var innerFnId = b.identifier(node.id.name + "$"); + var contextId = path.scope.declareTemporary("context$"); + var argsId = path.scope.declareTemporary("args$"); + + // Turn all declarations into vars, and replace the original + // declarations with equivalent assignment expressions. + var vars = hoist(path); + + var didRenameArguments = renameArguments(path, argsId); + if (didRenameArguments) { + vars = vars || b.variableDeclaration("var", []); + vars.declarations.push(b.variableDeclarator( + argsId, b.identifier("arguments") + )); + } + + var emitter = new Emitter(contextId); + emitter.explode(path.get("body")); + + if (vars && vars.declarations.length > 0) { + outerBody.push(vars); + } + + var wrapArgs = [ + emitter.getContextFunction(innerFnId), + // Async functions that are not generators don't care about the + // outer function because they don't need it to be marked and don't + // inherit from its .prototype. + node.generator ? outerFnExpr : b.literal(null), + b.thisExpression() + ]; + + var tryLocsList = emitter.getTryLocsList(); + if (tryLocsList) { + wrapArgs.push(tryLocsList); + } + + var wrapCall = b.callExpression( + runtimeProperty(shouldTransformAsync ? "async" : "wrap"), + wrapArgs + ); + + outerBody.push(b.returnStatement(wrapCall)); + node.body = b.blockStatement(outerBody); + + var wasGeneratorFunction = node.generator; + if (wasGeneratorFunction) { + node.generator = false; + } + + if (shouldTransformAsync) { + node.async = false; + } + + if (wasGeneratorFunction && + n.Expression.check(node)) { + return b.callExpression(runtimeProperty("mark"), [node]); + } + }, + + visitForOfStatement: function(path) { + this.traverse(path); + + var node = path.value; + var tempIterId = path.scope.declareTemporary("t$"); + var tempIterDecl = b.variableDeclarator( + tempIterId, + b.callExpression( + runtimeProperty("values"), + [node.right] + ) + ); + + var tempInfoId = path.scope.declareTemporary("t$"); + var tempInfoDecl = b.variableDeclarator(tempInfoId, null); + + var init = node.left; + var loopId; + if (n.VariableDeclaration.check(init)) { + loopId = init.declarations[0].id; + init.declarations.push(tempIterDecl, tempInfoDecl); + } else { + loopId = init; + init = b.variableDeclaration("var", [ + tempIterDecl, + tempInfoDecl + ]); + } + n.Identifier.assert(loopId); + + var loopIdAssignExprStmt = b.expressionStatement( + b.assignmentExpression( + "=", + loopId, + b.memberExpression( + tempInfoId, + b.identifier("value"), + false + ) + ) + ); + + if (n.BlockStatement.check(node.body)) { + node.body.body.unshift(loopIdAssignExprStmt); + } else { + node.body = b.blockStatement([ + loopIdAssignExprStmt, + node.body + ]); + } + + return b.forStatement( + init, + b.unaryExpression( + "!", + b.memberExpression( + b.assignmentExpression( + "=", + tempInfoId, + b.callExpression( + b.memberExpression( + tempIterId, + b.identifier("next"), + false + ), + [] + ) + ), + b.identifier("done"), + false + ) + ), + null, + node.body + ); + } +}); + +// Given a NodePath for a Function, return an Expression node that can be +// used to refer reliably to the function object from inside the function. +// This expression is essentially a replacement for arguments.callee, with +// the key advantage that it works in strict mode. +function getOuterFnExpr(funPath) { + var node = funPath.value; + n.Function.assert(node); + + if (node.generator && // Non-generator functions don't need to be marked. + n.FunctionDeclaration.check(node)) { + var pp = funPath.parent; + + while (pp && !(n.BlockStatement.check(pp.value) || + n.Program.check(pp.value))) { + pp = pp.parent; + } + + if (!pp) { + return node.id; + } + + var markDecl = getRuntimeMarkDecl(pp); + var markedArray = markDecl.declarations[0].id; + var funDeclIdArray = markDecl.declarations[0].init.callee.object; + n.ArrayExpression.assert(funDeclIdArray); + + var index = funDeclIdArray.elements.length; + funDeclIdArray.elements.push(node.id); + + return b.memberExpression( + markedArray, + b.literal(index), + true + ); + } + + return node.id || ( + node.id = funPath.scope.parent.declareTemporary("callee$") + ); +} + +function getRuntimeMarkDecl(blockPath) { + assert.ok(blockPath instanceof NodePath); + var block = blockPath.node; + isArray.assert(block.body); + + var info = getMarkInfo(block); + if (info.decl) { + return info.decl; + } + + info.decl = b.variableDeclaration("var", [ + b.variableDeclarator( + blockPath.scope.declareTemporary("marked"), + b.callExpression( + b.memberExpression( + b.arrayExpression([]), + b.identifier("map"), + false + ), + [runtimeProperty("mark")] + ) + ) + ]); + + for (var i = 0; i < block.body.length; ++i) { + if (!shouldNotHoistAbove(blockPath.get("body", i))) { + break; + } + } + + blockPath.get("body").insertAt(i, info.decl); + + return info.decl; +} + +function shouldNotHoistAbove(stmtPath) { + var value = stmtPath.value; + n.Statement.assert(value); + + // If the first statement is a "use strict" declaration, make sure to + // insert hoisted declarations afterwards. + return n.ExpressionStatement.check(value) && + n.Literal.check(value.expression) && + value.expression.value === "use strict"; +} + +function renameArguments(funcPath, argsId) { + assert.ok(funcPath instanceof types.NodePath); + var func = funcPath.value; + var didRenameArguments = false; + + recast.visit(funcPath, { + visitFunction: function(path) { + if (path.value === func) { + this.traverse(path); + } else { + return false; + } + }, + + visitIdentifier: function(path) { + if (path.value.name === "arguments" && + util.isReference(path)) { + path.replace(argsId); + didRenameArguments = true; + return false; + } + + this.traverse(path); + } + }); + + // If the traversal replaced any arguments references, then we need to + // alias the outer function's arguments binding (be it the implicit + // arguments object or some other parameter or variable) to the variable + // named by argsId. + return didRenameArguments; +} + +var awaitVisitor = types.PathVisitor.fromMethodsObject({ + visitFunction: function(path) { + return false; // Don't descend into nested function scopes. + }, + + visitAwaitExpression: function(path) { + // Convert await and await* expressions to yield expressions. + var argument = path.value.argument; + + // If the parser supports await* syntax using a boolean .all property + // (#171), desugar that syntax to yield Promise.all(argument). + if (path.value.all) { + argument = b.callExpression( + b.memberExpression( + b.identifier("Promise"), + b.identifier("all"), + false + ), + [argument] + ); + } + + // Transforming `await x` to `yield regeneratorRuntime.awrap(x)` + // causes the argument to be wrapped in such a way that the runtime + // can distinguish between awaited and merely yielded values. + return b.yieldExpression( + b.callExpression( + runtimeProperty("awrap"), + [argument] + ), + false + ); + } +}); + +},{"1":1,"3":3,"560":560,"571":571,"573":573,"574":574,"577":577,"579":579}],579:[function(_dereq_,module,exports){ +(function (__dirname){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +var assert = _dereq_(1); +var path = _dereq_(9); +var fs = _dereq_(3); +var through = _dereq_(3); +var transform = _dereq_(578).transform; +var utils = _dereq_(577); +var recast = _dereq_(571); +var types = recast.types; +var genOrAsyncFunExp = /\bfunction\s*\*|\basync\b/; +var blockBindingExp = /\b(let|const)\s+/; + +function exports(file, options) { + var data = []; + return through(write, end); + + function write(buf) { + data.push(buf); + } + + function end() { + this.queue(compile(data.join(""), options).code); + this.queue(null); + } +} + +// To get a writable stream for use as a browserify transform, call +// require("regenerator")(). +module.exports = exports; + +// To include the runtime globally in the current node process, call +// require("regenerator").runtime(). +function runtime() { + _dereq_(580); +} +exports.runtime = runtime; +runtime.path = path.join(__dirname, "runtime.js"); + +function compile(source, options) { + options = normalizeOptions(options); + + if (!genOrAsyncFunExp.test(source)) { + return { + // Shortcut: no generators or async functions to transform. + code: (options.includeRuntime === true ? fs.readFileSync( + path.join(__dirname, "runtime.js"), "utf-8" + ) + "\n" : "") + source + }; + } + + var recastOptions = getRecastOptions(options); + var ast = recast.parse(source, recastOptions); + var nodePath = new types.NodePath(ast); + var programPath = nodePath.get("program"); + + if (shouldVarify(source, options)) { + // Transpile let/const into var declarations. + varifyAst(programPath.node); + } + + transform(programPath, options); + + return recast.print(nodePath, recastOptions); +} + +function normalizeOptions(options) { + options = utils.defaults(options || {}, { + includeRuntime: false, + supportBlockBinding: true + }); + + if (!options.esprima) { + options.esprima = _dereq_(3); + } + + assert.ok( + /harmony/.test(options.esprima.version), + "Bad esprima version: " + options.esprima.version + ); + + return options; +} + +function getRecastOptions(options) { + var recastOptions = { + range: true + }; + + function copy(name) { + if (name in options) { + recastOptions[name] = options[name]; + } + } + + copy("esprima"); + copy("sourceFileName"); + copy("sourceMapName"); + copy("inputSourceMap"); + copy("sourceRoot"); + + return recastOptions; +} + +function shouldVarify(source, options) { + var supportBlockBinding = !!options.supportBlockBinding; + if (supportBlockBinding) { + if (!blockBindingExp.test(source)) { + supportBlockBinding = false; + } + } + + return supportBlockBinding; +} + +function varify(source, options) { + var recastOptions = getRecastOptions(normalizeOptions(options)); + var ast = recast.parse(source, recastOptions); + varifyAst(ast.program); + return recast.print(ast, recastOptions).code; +} + +function varifyAst(ast) { + types.namedTypes.Program.assert(ast); + + var defsResult = _dereq_(418)(ast, { + ast: true, + disallowUnknownReferences: false, + disallowDuplicated: false, + disallowVars: false, + loopClosures: "iife" + }); + + if (defsResult.errors) { + throw new Error(defsResult.errors.join("\n")) + } + + return ast; +} + +// Convenience for just translating let/const to var declarations. +exports.varify = varify; + +// Allow packages that depend on Regenerator to use the same copy of +// ast-types, in case multiple versions are installed by NPM. +exports.types = types; + +// Transforms a string of source code, returning the { code, map? } result +// from recast.print. +exports.compile = compile; + +// To modify an AST directly, call require("regenerator").transform(ast). +exports.transform = transform; + +}).call(this,"/node_modules/regenerator") +},{"1":1,"3":3,"418":418,"571":571,"577":577,"578":578,"580":580,"9":9}],580:[function(_dereq_,module,exports){ +(function (process,global){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +!(function(global) { + "use strict"; + + var hasOwn = Object.prototype.hasOwnProperty; + var undefined; // More compressible than void 0. + var iteratorSymbol = + typeof Symbol === "function" && Symbol.iterator || "@@iterator"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided, then outerFn.prototype instanceof Generator. + var generator = Object.create((outerFn || Generator).prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype; + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `value instanceof AwaitArgument` to determine if the yielded value is + // meant to be awaited. Some may consider the name of this method too + // cutesy, but they are curmudgeons. + runtime.awrap = function(arg) { + return new AwaitArgument(arg); + }; + + function AwaitArgument(arg) { + this.arg = arg; + } + + function AsyncIterator(generator) { + // This invoke function is written in a style that assumes some + // calling function (or Promise) will handle exceptions. + function invoke(method, arg) { + var result = generator[method](arg); + var value = result.value; + return value instanceof AwaitArgument + ? Promise.resolve(value.arg).then(invokeNext, invokeThrow) + : Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + return result; + }); + } + + if (typeof process === "object" && process.domain) { + invoke = process.domain.bind(invoke); + } + + var invokeNext = invoke.bind(generator, "next"); + var invokeThrow = invoke.bind(generator, "throw"); + var invokeReturn = invoke.bind(generator, "return"); + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return invoke(method, arg); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : new Promise(function (resolve) { + resolve(callInvokeWithMethodAndArg()); + }); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + while (true) { + var delegate = context.delegate; + if (delegate) { + if (method === "return" || + (method === "throw" && delegate.iterator[method] === undefined)) { + // A return or throw (when the delegate iterator has no throw + // method) always terminates the yield* loop. + context.delegate = null; + + // If the delegate iterator has a return method, give it a + // chance to clean up. + var returnMethod = delegate.iterator["return"]; + if (returnMethod) { + var record = tryCatch(returnMethod, delegate.iterator, arg); + if (record.type === "throw") { + // If the return method threw an exception, let that + // exception prevail over the original return or throw. + method = "throw"; + arg = record.arg; + continue; + } + } + + if (method === "return") { + // Continue with the outer return, now that the delegate + // iterator has been terminated. + continue; + } + } + + var record = tryCatch( + delegate.iterator[method], + delegate.iterator, + arg + ); + + if (record.type === "throw") { + context.delegate = null; + + // Like returning generator.throw(uncaught), but without the + // overhead of an extra function call. + method = "throw"; + arg = record.arg; + continue; + } + + // Delegate generator ran and handled its own exceptions so + // regardless of what the method was, we continue as if it is + // "next" with an undefined arg. + method = "next"; + arg = undefined; + + var info = record.arg; + if (info.done) { + context[delegate.resultName] = info.value; + context.next = delegate.nextLoc; + } else { + state = GenStateSuspendedYield; + return info; + } + + context.delegate = null; + } + + if (method === "next") { + if (state === GenStateSuspendedYield) { + context.sent = arg; + } else { + context.sent = undefined; + } + + } else if (method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw arg; + } + + if (context.dispatchException(arg)) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + method = "next"; + arg = undefined; + } + + } else if (method === "return") { + context.abrupt("return", arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + var info = { + value: record.arg, + done: context.done + }; + + if (record.arg === ContinueSentinel) { + if (context.delegate && method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + arg = undefined; + } + } else { + return info; + } + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(arg) call above. + method = "throw"; + arg = record.arg; + } + } + }; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + this.sent = undefined; + this.done = false; + this.delegate = null; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + return !!caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.next = finallyEntry.finallyLoc; + } else { + this.complete(record); + } + + return ContinueSentinel; + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = record.arg; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + return ContinueSentinel; + } + }; +})( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +); + +}).call(this,_dereq_(10),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"10":10}],581:[function(_dereq_,module,exports){ +// Generated by `/scripts/character-class-escape-sets.js`. Do not edit. +var regenerate = _dereq_(572); + +exports.REGULAR = { + 'd': regenerate() + .addRange(0x30, 0x39), + 'D': regenerate() + .addRange(0x0, 0x2F) + .addRange(0x3A, 0xFFFF), + 's': regenerate(0x20, 0xA0, 0x1680, 0x180E, 0x202F, 0x205F, 0x3000, 0xFEFF) + .addRange(0x9, 0xD) + .addRange(0x2000, 0x200A) + .addRange(0x2028, 0x2029), + 'S': regenerate() + .addRange(0x0, 0x8) + .addRange(0xE, 0x1F) + .addRange(0x21, 0x9F) + .addRange(0xA1, 0x167F) + .addRange(0x1681, 0x180D) + .addRange(0x180F, 0x1FFF) + .addRange(0x200B, 0x2027) + .addRange(0x202A, 0x202E) + .addRange(0x2030, 0x205E) + .addRange(0x2060, 0x2FFF) + .addRange(0x3001, 0xFEFE) + .addRange(0xFF00, 0xFFFF), + 'w': regenerate(0x5F) + .addRange(0x30, 0x39) + .addRange(0x41, 0x5A) + .addRange(0x61, 0x7A), + 'W': regenerate(0x60) + .addRange(0x0, 0x2F) + .addRange(0x3A, 0x40) + .addRange(0x5B, 0x5E) + .addRange(0x7B, 0xFFFF) +}; + +exports.UNICODE = { + 'd': regenerate() + .addRange(0x30, 0x39), + 'D': regenerate() + .addRange(0x0, 0x2F) + .addRange(0x3A, 0x10FFFF), + 's': regenerate(0x20, 0xA0, 0x1680, 0x180E, 0x202F, 0x205F, 0x3000, 0xFEFF) + .addRange(0x9, 0xD) + .addRange(0x2000, 0x200A) + .addRange(0x2028, 0x2029), + 'S': regenerate() + .addRange(0x0, 0x8) + .addRange(0xE, 0x1F) + .addRange(0x21, 0x9F) + .addRange(0xA1, 0x167F) + .addRange(0x1681, 0x180D) + .addRange(0x180F, 0x1FFF) + .addRange(0x200B, 0x2027) + .addRange(0x202A, 0x202E) + .addRange(0x2030, 0x205E) + .addRange(0x2060, 0x2FFF) + .addRange(0x3001, 0xFEFE) + .addRange(0xFF00, 0x10FFFF), + 'w': regenerate(0x5F) + .addRange(0x30, 0x39) + .addRange(0x41, 0x5A) + .addRange(0x61, 0x7A), + 'W': regenerate(0x60) + .addRange(0x0, 0x2F) + .addRange(0x3A, 0x40) + .addRange(0x5B, 0x5E) + .addRange(0x7B, 0x10FFFF) +}; + +exports.UNICODE_IGNORE_CASE = { + 'd': regenerate() + .addRange(0x30, 0x39), + 'D': regenerate() + .addRange(0x0, 0x2F) + .addRange(0x3A, 0x10FFFF), + 's': regenerate(0x20, 0xA0, 0x1680, 0x180E, 0x202F, 0x205F, 0x3000, 0xFEFF) + .addRange(0x9, 0xD) + .addRange(0x2000, 0x200A) + .addRange(0x2028, 0x2029), + 'S': regenerate() + .addRange(0x0, 0x8) + .addRange(0xE, 0x1F) + .addRange(0x21, 0x9F) + .addRange(0xA1, 0x167F) + .addRange(0x1681, 0x180D) + .addRange(0x180F, 0x1FFF) + .addRange(0x200B, 0x2027) + .addRange(0x202A, 0x202E) + .addRange(0x2030, 0x205E) + .addRange(0x2060, 0x2FFF) + .addRange(0x3001, 0xFEFE) + .addRange(0xFF00, 0x10FFFF), + 'w': regenerate(0x5F, 0x17F, 0x212A) + .addRange(0x30, 0x39) + .addRange(0x41, 0x5A) + .addRange(0x61, 0x7A), + 'W': regenerate(0x4B, 0x53, 0x60) + .addRange(0x0, 0x2F) + .addRange(0x3A, 0x40) + .addRange(0x5B, 0x5E) + .addRange(0x7B, 0x10FFFF) +}; + +},{"572":572}],582:[function(_dereq_,module,exports){ +module.exports={ + "75": 8490, + "83": 383, + "107": 8490, + "115": 383, + "181": 924, + "197": 8491, + "383": 83, + "452": 453, + "453": 452, + "455": 456, + "456": 455, + "458": 459, + "459": 458, + "497": 498, + "498": 497, + "837": 8126, + "914": 976, + "917": 1013, + "920": 1012, + "921": 8126, + "922": 1008, + "924": 181, + "928": 982, + "929": 1009, + "931": 962, + "934": 981, + "937": 8486, + "962": 931, + "976": 914, + "977": 1012, + "981": 934, + "982": 928, + "1008": 922, + "1009": 929, + "1012": [ + 920, + 977 + ], + "1013": 917, + "7776": 7835, + "7835": 7776, + "8126": [ + 837, + 921 + ], + "8486": 937, + "8490": 75, + "8491": 197, + "66560": 66600, + "66561": 66601, + "66562": 66602, + "66563": 66603, + "66564": 66604, + "66565": 66605, + "66566": 66606, + "66567": 66607, + "66568": 66608, + "66569": 66609, + "66570": 66610, + "66571": 66611, + "66572": 66612, + "66573": 66613, + "66574": 66614, + "66575": 66615, + "66576": 66616, + "66577": 66617, + "66578": 66618, + "66579": 66619, + "66580": 66620, + "66581": 66621, + "66582": 66622, + "66583": 66623, + "66584": 66624, + "66585": 66625, + "66586": 66626, + "66587": 66627, + "66588": 66628, + "66589": 66629, + "66590": 66630, + "66591": 66631, + "66592": 66632, + "66593": 66633, + "66594": 66634, + "66595": 66635, + "66596": 66636, + "66597": 66637, + "66598": 66638, + "66599": 66639, + "66600": 66560, + "66601": 66561, + "66602": 66562, + "66603": 66563, + "66604": 66564, + "66605": 66565, + "66606": 66566, + "66607": 66567, + "66608": 66568, + "66609": 66569, + "66610": 66570, + "66611": 66571, + "66612": 66572, + "66613": 66573, + "66614": 66574, + "66615": 66575, + "66616": 66576, + "66617": 66577, + "66618": 66578, + "66619": 66579, + "66620": 66580, + "66621": 66581, + "66622": 66582, + "66623": 66583, + "66624": 66584, + "66625": 66585, + "66626": 66586, + "66627": 66587, + "66628": 66588, + "66629": 66589, + "66630": 66590, + "66631": 66591, + "66632": 66592, + "66633": 66593, + "66634": 66594, + "66635": 66595, + "66636": 66596, + "66637": 66597, + "66638": 66598, + "66639": 66599, + "68736": 68800, + "68737": 68801, + "68738": 68802, + "68739": 68803, + "68740": 68804, + "68741": 68805, + "68742": 68806, + "68743": 68807, + "68744": 68808, + "68745": 68809, + "68746": 68810, + "68747": 68811, + "68748": 68812, + "68749": 68813, + "68750": 68814, + "68751": 68815, + "68752": 68816, + "68753": 68817, + "68754": 68818, + "68755": 68819, + "68756": 68820, + "68757": 68821, + "68758": 68822, + "68759": 68823, + "68760": 68824, + "68761": 68825, + "68762": 68826, + "68763": 68827, + "68764": 68828, + "68765": 68829, + "68766": 68830, + "68767": 68831, + "68768": 68832, + "68769": 68833, + "68770": 68834, + "68771": 68835, + "68772": 68836, + "68773": 68837, + "68774": 68838, + "68775": 68839, + "68776": 68840, + "68777": 68841, + "68778": 68842, + "68779": 68843, + "68780": 68844, + "68781": 68845, + "68782": 68846, + "68783": 68847, + "68784": 68848, + "68785": 68849, + "68786": 68850, + "68800": 68736, + "68801": 68737, + "68802": 68738, + "68803": 68739, + "68804": 68740, + "68805": 68741, + "68806": 68742, + "68807": 68743, + "68808": 68744, + "68809": 68745, + "68810": 68746, + "68811": 68747, + "68812": 68748, + "68813": 68749, + "68814": 68750, + "68815": 68751, + "68816": 68752, + "68817": 68753, + "68818": 68754, + "68819": 68755, + "68820": 68756, + "68821": 68757, + "68822": 68758, + "68823": 68759, + "68824": 68760, + "68825": 68761, + "68826": 68762, + "68827": 68763, + "68828": 68764, + "68829": 68765, + "68830": 68766, + "68831": 68767, + "68832": 68768, + "68833": 68769, + "68834": 68770, + "68835": 68771, + "68836": 68772, + "68837": 68773, + "68838": 68774, + "68839": 68775, + "68840": 68776, + "68841": 68777, + "68842": 68778, + "68843": 68779, + "68844": 68780, + "68845": 68781, + "68846": 68782, + "68847": 68783, + "68848": 68784, + "68849": 68785, + "68850": 68786, + "71840": 71872, + "71841": 71873, + "71842": 71874, + "71843": 71875, + "71844": 71876, + "71845": 71877, + "71846": 71878, + "71847": 71879, + "71848": 71880, + "71849": 71881, + "71850": 71882, + "71851": 71883, + "71852": 71884, + "71853": 71885, + "71854": 71886, + "71855": 71887, + "71856": 71888, + "71857": 71889, + "71858": 71890, + "71859": 71891, + "71860": 71892, + "71861": 71893, + "71862": 71894, + "71863": 71895, + "71864": 71896, + "71865": 71897, + "71866": 71898, + "71867": 71899, + "71868": 71900, + "71869": 71901, + "71870": 71902, + "71871": 71903, + "71872": 71840, + "71873": 71841, + "71874": 71842, + "71875": 71843, + "71876": 71844, + "71877": 71845, + "71878": 71846, + "71879": 71847, + "71880": 71848, + "71881": 71849, + "71882": 71850, + "71883": 71851, + "71884": 71852, + "71885": 71853, + "71886": 71854, + "71887": 71855, + "71888": 71856, + "71889": 71857, + "71890": 71858, + "71891": 71859, + "71892": 71860, + "71893": 71861, + "71894": 71862, + "71895": 71863, + "71896": 71864, + "71897": 71865, + "71898": 71866, + "71899": 71867, + "71900": 71868, + "71901": 71869, + "71902": 71870, + "71903": 71871 +} + +},{}],583:[function(_dereq_,module,exports){ +var generate = _dereq_(584).generate; +var parse = _dereq_(585).parse; +var regenerate = _dereq_(572); +var iuMappings = _dereq_(582); +var ESCAPE_SETS = _dereq_(581); + +function getCharacterClassEscapeSet(character) { + if (unicode) { + if (ignoreCase) { + return ESCAPE_SETS.UNICODE_IGNORE_CASE[character]; + } + return ESCAPE_SETS.UNICODE[character]; + } + return ESCAPE_SETS.REGULAR[character]; +} + +var object = {}; +var hasOwnProperty = object.hasOwnProperty; +function has(object, property) { + return hasOwnProperty.call(object, property); +} + +// Prepare a Regenerate set containing all code points, used for negative +// character classes (if any). +var UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF); +// Without the `u` flag, the range stops at 0xFFFF. +// https://mths.be/es6#sec-pattern-semantics +var BMP_SET = regenerate().addRange(0x0, 0xFFFF); + +// Prepare a Regenerate set containing all code points that are supposed to be +// matched by `/./u`. https://mths.be/es6#sec-atom +var DOT_SET_UNICODE = UNICODE_SET.clone() // all Unicode code points + .remove( + // minus `LineTerminator`s (https://mths.be/es6#sec-line-terminators): + 0x000A, // Line Feed + 0x000D, // Carriage Return + 0x2028, // Line Separator + 0x2029 // Paragraph Separator + ); +// Prepare a Regenerate set containing all code points that are supposed to be +// matched by `/./` (only BMP code points). +var DOT_SET = DOT_SET_UNICODE.clone() + .intersection(BMP_SET); + +// Add a range of code points + any case-folded code points in that range to a +// set. +regenerate.prototype.iuAddRange = function(min, max) { + var $this = this; + do { + var folded = caseFold(min); + if (folded) { + $this.add(folded); + } + } while (++min <= max); + return $this; +}; + +function assign(target, source) { + for (var key in source) { + // Note: `hasOwnProperty` is not needed here. + target[key] = source[key]; + } +} + +function update(item, pattern) { + // TODO: Test if memoizing `pattern` here is worth the effort. + if (!pattern) { + return; + } + var tree = parse(pattern, ''); + switch (tree.type) { + case 'characterClass': + case 'group': + case 'value': + // No wrapping needed. + break; + default: + // Wrap the pattern in a non-capturing group. + tree = wrap(tree, pattern); + } + assign(item, tree); +} + +function wrap(tree, pattern) { + // Wrap the pattern in a non-capturing group. + return { + 'type': 'group', + 'behavior': 'ignore', + 'body': [tree], + 'raw': '(?:' + pattern + ')' + }; +} + +function caseFold(codePoint) { + return has(iuMappings, codePoint) ? iuMappings[codePoint] : false; +} + +var ignoreCase = false; +var unicode = false; +function processCharacterClass(characterClassItem) { + var set = regenerate(); + var body = characterClassItem.body.forEach(function(item) { + switch (item.type) { + case 'value': + set.add(item.codePoint); + if (ignoreCase && unicode) { + var folded = caseFold(item.codePoint); + if (folded) { + set.add(folded); + } + } + break; + case 'characterClassRange': + var min = item.min.codePoint; + var max = item.max.codePoint; + set.addRange(min, max); + if (ignoreCase && unicode) { + set.iuAddRange(min, max); + } + break; + case 'characterClassEscape': + set.add(getCharacterClassEscapeSet(item.value)); + break; + // The `default` clause is only here as a safeguard; it should never be + // reached. Code coverage tools should ignore it. + /* istanbul ignore next */ + default: + throw Error('Unknown term type: ' + item.type); + } + }); + if (characterClassItem.negative) { + set = (unicode ? UNICODE_SET : BMP_SET).clone().remove(set); + } + update(characterClassItem, set.toString()); + return characterClassItem; +} + +function processTerm(item) { + switch (item.type) { + case 'dot': + update( + item, + (unicode ? DOT_SET_UNICODE : DOT_SET).toString() + ); + break; + case 'characterClass': + item = processCharacterClass(item); + break; + case 'characterClassEscape': + update( + item, + getCharacterClassEscapeSet(item.value).toString() + ); + break; + case 'alternative': + case 'disjunction': + case 'group': + case 'quantifier': + item.body = item.body.map(processTerm); + break; + case 'value': + var codePoint = item.codePoint; + var set = regenerate(codePoint); + if (ignoreCase && unicode) { + var folded = caseFold(codePoint); + if (folded) { + set.add(folded); + } + } + update(item, set.toString()); + break; + case 'anchor': + case 'empty': + case 'group': + case 'reference': + // Nothing to do here. + break; + // The `default` clause is only here as a safeguard; it should never be + // reached. Code coverage tools should ignore it. + /* istanbul ignore next */ + default: + throw Error('Unknown term type: ' + item.type); + } + return item; +}; + +module.exports = function(pattern, flags) { + var tree = parse(pattern, flags); + ignoreCase = flags ? flags.indexOf('i') > -1 : false; + unicode = flags ? flags.indexOf('u') > -1 : false; + assign(tree, processTerm(tree)); + return generate(tree); +}; + +},{"572":572,"581":581,"582":582,"584":584,"585":585}],584:[function(_dereq_,module,exports){ +(function (global){ +/*! + * RegJSGen + * Copyright 2014 Benjamin Tan + * Available under MIT license + */ +;(function() { + 'use strict'; + + /** Used to determine if values are of the language type `Object` */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used as a reference to the global object */ + var root = (objectTypes[typeof window] && window) || this; + + /** Backup possible global object */ + var oldRoot = root; + + /** Detect free variable `exports` */ + var freeExports = objectTypes[typeof exports] && exports; + + /** Detect free variable `module` */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global; + if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + /*! Based on https://mths.be/fromcodepoint v0.2.0 by @mathias */ + + var stringFromCharCode = String.fromCharCode; + var floor = Math.floor; + function fromCodePoint() { + var MAX_SIZE = 0x4000; + var codeUnits = []; + var highSurrogate; + var lowSurrogate; + var index = -1; + var length = arguments.length; + if (!length) { + return ''; + } + var result = ''; + while (++index < length) { + var codePoint = Number(arguments[index]); + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` + codePoint < 0 || // not a valid Unicode code point + codePoint > 0x10FFFF || // not a valid Unicode code point + floor(codePoint) != codePoint // not an integer + ) { + throw RangeError('Invalid code point: ' + codePoint); + } + if (codePoint <= 0xFFFF) { + // BMP code point + codeUnits.push(codePoint); + } else { + // Astral code point; split in surrogate halves + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000; + highSurrogate = (codePoint >> 10) + 0xD800; + lowSurrogate = (codePoint % 0x400) + 0xDC00; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 == length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + } + + function assertType(type, expected) { + if (expected.indexOf('|') == -1) { + if (type == expected) { + return; + } + + throw Error('Invalid node type: ' + type); + } + + expected = assertType.hasOwnProperty(expected) + ? assertType[expected] + : (assertType[expected] = RegExp('^(?:' + expected + ')$')); + + if (expected.test(type)) { + return; + } + + throw Error('Invalid node type: ' + type); + } + + /*--------------------------------------------------------------------------*/ + + function generate(node) { + var type = node.type; + + if (generate.hasOwnProperty(type) && typeof generate[type] == 'function') { + return generate[type](node); + } + + throw Error('Invalid node type: ' + type); + } + + /*--------------------------------------------------------------------------*/ + + function generateAlternative(node) { + assertType(node.type, 'alternative'); + + var terms = node.body, + length = terms ? terms.length : 0; + + if (length == 1) { + return generateTerm(terms[0]); + } else { + var i = -1, + result = ''; + + while (++i < length) { + result += generateTerm(terms[i]); + } + + return result; + } + } + + function generateAnchor(node) { + assertType(node.type, 'anchor'); + + switch (node.kind) { + case 'start': + return '^'; + case 'end': + return '$'; + case 'boundary': + return '\\b'; + case 'not-boundary': + return '\\B'; + default: + throw Error('Invalid assertion'); + } + } + + function generateAtom(node) { + assertType(node.type, 'anchor|characterClass|characterClassEscape|dot|group|reference|value'); + + return generate(node); + } + + function generateCharacterClass(node) { + assertType(node.type, 'characterClass'); + + var classRanges = node.body, + length = classRanges ? classRanges.length : 0; + + var i = -1, + result = '['; + + if (node.negative) { + result += '^'; + } + + while (++i < length) { + result += generateClassAtom(classRanges[i]); + } + + result += ']'; + + return result; + } + + function generateCharacterClassEscape(node) { + assertType(node.type, 'characterClassEscape'); + + return '\\' + node.value; + } + + function generateCharacterClassRange(node) { + assertType(node.type, 'characterClassRange'); + + var min = node.min, + max = node.max; + + if (min.type == 'characterClassRange' || max.type == 'characterClassRange') { + throw Error('Invalid character class range'); + } + + return generateClassAtom(min) + '-' + generateClassAtom(max); + } + + function generateClassAtom(node) { + assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value'); + + return generate(node); + } + + function generateDisjunction(node) { + assertType(node.type, 'disjunction'); + + var body = node.body, + length = body ? body.length : 0; + + if (length == 0) { + throw Error('No body'); + } else if (length == 1) { + return generate(body[0]); + } else { + var i = -1, + result = ''; + + while (++i < length) { + if (i != 0) { + result += '|'; + } + result += generate(body[i]); + } + + return result; + } + } + + function generateDot(node) { + assertType(node.type, 'dot'); + + return '.'; + } + + function generateGroup(node) { + assertType(node.type, 'group'); + + var result = '('; + + switch (node.behavior) { + case 'normal': + break; + case 'ignore': + result += '?:'; + break; + case 'lookahead': + result += '?='; + break; + case 'negativeLookahead': + result += '?!'; + break; + default: + throw Error('Invalid behaviour: ' + node.behaviour); + } + + var body = node.body, + length = body ? body.length : 0; + + if (length == 1) { + result += generate(body[0]); + } else { + var i = -1; + + while (++i < length) { + result += generate(body[i]); + } + } + + result += ')'; + + return result; + } + + function generateQuantifier(node) { + assertType(node.type, 'quantifier'); + + var quantifier = '', + min = node.min, + max = node.max; + + switch (max) { + case undefined: + case null: + switch (min) { + case 0: + quantifier = '*' + break; + case 1: + quantifier = '+'; + break; + default: + quantifier = '{' + min + ',}'; + break; + } + break; + default: + if (min == max) { + quantifier = '{' + min + '}'; + } + else if (min == 0 && max == 1) { + quantifier = '?'; + } else { + quantifier = '{' + min + ',' + max + '}'; + } + break; + } + + if (!node.greedy) { + quantifier += '?'; + } + + return generateAtom(node.body[0]) + quantifier; + } + + function generateReference(node) { + assertType(node.type, 'reference'); + + return '\\' + node.matchIndex; + } + + function generateTerm(node) { + assertType(node.type, 'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|value'); + + return generate(node); + } + + function generateValue(node) { + assertType(node.type, 'value'); + + var kind = node.kind, + codePoint = node.codePoint; + + switch (kind) { + case 'controlLetter': + return '\\c' + fromCodePoint(codePoint + 64); + case 'hexadecimalEscape': + return '\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2); + case 'identifier': + return '\\' + fromCodePoint(codePoint); + case 'null': + return '\\' + codePoint; + case 'octal': + return '\\' + codePoint.toString(8); + case 'singleEscape': + switch (codePoint) { + case 0x0008: + return '\\b'; + case 0x009: + return '\\t'; + case 0x00A: + return '\\n'; + case 0x00B: + return '\\v'; + case 0x00C: + return '\\f'; + case 0x00D: + return '\\r'; + default: + throw Error('Invalid codepoint: ' + codePoint); + } + case 'symbol': + return fromCodePoint(codePoint); + case 'unicodeEscape': + return '\\u' + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4); + case 'unicodeCodePointEscape': + return '\\u{' + codePoint.toString(16).toUpperCase() + '}'; + default: + throw Error('Unsupported node kind: ' + kind); + } + } + + /*--------------------------------------------------------------------------*/ + + generate.alternative = generateAlternative; + generate.anchor = generateAnchor; + generate.characterClass = generateCharacterClass; + generate.characterClassEscape = generateCharacterClassEscape; + generate.characterClassRange = generateCharacterClassRange; + generate.disjunction = generateDisjunction; + generate.dot = generateDot; + generate.group = generateGroup; + generate.quantifier = generateQuantifier; + generate.reference = generateReference; + generate.value = generateValue; + + /*--------------------------------------------------------------------------*/ + + // export regjsgen + // some AMD build optimizers, like r.js, check for condition patterns like the following: + if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + // define as an anonymous module so, through path mapping, it can be aliased + define(function() { + return { + 'generate': generate + }; + }); + } + // check for `exports` after `define` in case a build optimizer adds an `exports` object + else if (freeExports && freeModule) { + // in Narwhal, Node.js, Rhino -require, or RingoJS + freeExports.generate = generate; + } + // in a browser or Rhino + else { + root.regjsgen = { + 'generate': generate + }; + } +}.call(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],585:[function(_dereq_,module,exports){ +// regjsparser +// +// ================================================================== +// +// See ECMA-262 Standard: 15.10.1 +// +// NOTE: The ECMA-262 standard uses the term "Assertion" for /^/. Here the +// term "Anchor" is used. +// +// Pattern :: +// Disjunction +// +// Disjunction :: +// Alternative +// Alternative | Disjunction +// +// Alternative :: +// [empty] +// Alternative Term +// +// Term :: +// Anchor +// Atom +// Atom Quantifier +// +// Anchor :: +// ^ +// $ +// \ b +// \ B +// ( ? = Disjunction ) +// ( ? ! Disjunction ) +// +// Quantifier :: +// QuantifierPrefix +// QuantifierPrefix ? +// +// QuantifierPrefix :: +// * +// + +// ? +// { DecimalDigits } +// { DecimalDigits , } +// { DecimalDigits , DecimalDigits } +// +// Atom :: +// PatternCharacter +// . +// \ AtomEscape +// CharacterClass +// ( Disjunction ) +// ( ? : Disjunction ) +// +// PatternCharacter :: +// SourceCharacter but not any of: ^ $ \ . * + ? ( ) [ ] { } | +// +// AtomEscape :: +// DecimalEscape +// CharacterEscape +// CharacterClassEscape +// +// CharacterEscape[U] :: +// ControlEscape +// c ControlLetter +// HexEscapeSequence +// RegExpUnicodeEscapeSequence[?U] (ES6) +// IdentityEscape[?U] +// +// ControlEscape :: +// one of f n r t v +// ControlLetter :: +// one of +// a b c d e f g h i j k l m n o p q r s t u v w x y z +// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +// +// IdentityEscape :: +// SourceCharacter but not IdentifierPart +// +// +// +// DecimalEscape :: +// DecimalIntegerLiteral [lookahead ∉ DecimalDigit] +// +// CharacterClassEscape :: +// one of d D s S w W +// +// CharacterClass :: +// [ [lookahead ∉ {^}] ClassRanges ] +// [ ^ ClassRanges ] +// +// ClassRanges :: +// [empty] +// NonemptyClassRanges +// +// NonemptyClassRanges :: +// ClassAtom +// ClassAtom NonemptyClassRangesNoDash +// ClassAtom - ClassAtom ClassRanges +// +// NonemptyClassRangesNoDash :: +// ClassAtom +// ClassAtomNoDash NonemptyClassRangesNoDash +// ClassAtomNoDash - ClassAtom ClassRanges +// +// ClassAtom :: +// - +// ClassAtomNoDash +// +// ClassAtomNoDash :: +// SourceCharacter but not one of \ or ] or - +// \ ClassEscape +// +// ClassEscape :: +// DecimalEscape +// b +// CharacterEscape +// CharacterClassEscape + +(function() { + + function parse(str, flags) { + function addRaw(node) { + node.raw = str.substring(node.range[0], node.range[1]); + return node; + } + + function updateRawStart(node, start) { + node.range[0] = start; + return addRaw(node); + } + + function createAnchor(kind, rawLength) { + return addRaw({ + type: 'anchor', + kind: kind, + range: [ + pos - rawLength, + pos + ] + }); + } + + function createValue(kind, codePoint, from, to) { + return addRaw({ + type: 'value', + kind: kind, + codePoint: codePoint, + range: [from, to] + }); + } + + function createEscaped(kind, codePoint, value, fromOffset) { + fromOffset = fromOffset || 0; + return createValue(kind, codePoint, pos - (value.length + fromOffset), pos); + } + + function createCharacter(matches) { + var _char = matches[0]; + var first = _char.charCodeAt(0); + if (hasUnicodeFlag) { + var second; + if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) { + second = lookahead().charCodeAt(0); + if (second >= 0xDC00 && second <= 0xDFFF) { + // Unicode surrogate pair + pos++; + return createValue( + 'symbol', + (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000, + pos - 2, pos); + } + } + } + return createValue('symbol', first, pos - 1, pos); + } + + function createDisjunction(alternatives, from, to) { + return addRaw({ + type: 'disjunction', + body: alternatives, + range: [ + from, + to + ] + }); + } + + function createDot() { + return addRaw({ + type: 'dot', + range: [ + pos - 1, + pos + ] + }); + } + + function createCharacterClassEscape(value) { + return addRaw({ + type: 'characterClassEscape', + value: value, + range: [ + pos - 2, + pos + ] + }); + } + + function createReference(matchIndex) { + return addRaw({ + type: 'reference', + matchIndex: parseInt(matchIndex, 10), + range: [ + pos - 1 - matchIndex.length, + pos + ] + }); + } + + function createGroup(behavior, disjunction, from, to) { + return addRaw({ + type: 'group', + behavior: behavior, + body: disjunction, + range: [ + from, + to + ] + }); + } + + function createQuantifier(min, max, from, to) { + if (to == null) { + from = pos - 1; + to = pos; + } + + return addRaw({ + type: 'quantifier', + min: min, + max: max, + greedy: true, + body: null, // set later on + range: [ + from, + to + ] + }); + } + + function createAlternative(terms, from, to) { + return addRaw({ + type: 'alternative', + body: terms, + range: [ + from, + to + ] + }); + } + + function createCharacterClass(classRanges, negative, from, to) { + return addRaw({ + type: 'characterClass', + body: classRanges, + negative: negative, + range: [ + from, + to + ] + }); + } + + function createClassRange(min, max, from, to) { + // See 15.10.2.15: + if (min.codePoint > max.codePoint) { + bail('invalid range in character class', min.raw + '-' + max.raw, from, to); + } + + return addRaw({ + type: 'characterClassRange', + min: min, + max: max, + range: [ + from, + to + ] + }); + } + + function flattenBody(body) { + if (body.type === 'alternative') { + return body.body; + } else { + return [body]; + } + } + + function isEmpty(obj) { + return obj.type === 'empty'; + } + + function incr(amount) { + amount = (amount || 1); + var res = str.substring(pos, pos + amount); + pos += (amount || 1); + return res; + } + + function skip(value) { + if (!match(value)) { + bail('character', value); + } + } + + function match(value) { + if (str.indexOf(value, pos) === pos) { + return incr(value.length); + } + } + + function lookahead() { + return str[pos]; + } + + function current(value) { + return str.indexOf(value, pos) === pos; + } + + function next(value) { + return str[pos + 1] === value; + } + + function matchReg(regExp) { + var subStr = str.substring(pos); + var res = subStr.match(regExp); + if (res) { + res.range = []; + res.range[0] = pos; + incr(res[0].length); + res.range[1] = pos; + } + return res; + } + + function parseDisjunction() { + // Disjunction :: + // Alternative + // Alternative | Disjunction + var res = [], from = pos; + res.push(parseAlternative()); + + while (match('|')) { + res.push(parseAlternative()); + } + + if (res.length === 1) { + return res[0]; + } + + return createDisjunction(res, from, pos); + } + + function parseAlternative() { + var res = [], from = pos; + var term; + + // Alternative :: + // [empty] + // Alternative Term + while (term = parseTerm()) { + res.push(term); + } + + if (res.length === 1) { + return res[0]; + } + + return createAlternative(res, from, pos); + } + + function parseTerm() { + // Term :: + // Anchor + // Atom + // Atom Quantifier + + if (pos >= str.length || current('|') || current(')')) { + return null; /* Means: The term is empty */ + } + + var anchor = parseAnchor(); + + if (anchor) { + return anchor; + } + + var atom = parseAtom(); + if (!atom) { + bail('Expected atom'); + } + var quantifier = parseQuantifier() || false; + if (quantifier) { + quantifier.body = flattenBody(atom); + // The quantifier contains the atom. Therefore, the beginning of the + // quantifier range is given by the beginning of the atom. + updateRawStart(quantifier, atom.range[0]); + return quantifier; + } + return atom; + } + + function parseGroup(matchA, typeA, matchB, typeB) { + var type = null, from = pos; + + if (match(matchA)) { + type = typeA; + } else if (match(matchB)) { + type = typeB; + } else { + return false; + } + + var body = parseDisjunction(); + if (!body) { + bail('Expected disjunction'); + } + skip(')'); + var group = createGroup(type, flattenBody(body), from, pos); + + if (type == 'normal') { + // Keep track of the number of closed groups. This is required for + // parseDecimalEscape(). In case the string is parsed a second time the + // value already holds the total count and no incrementation is required. + if (firstIteration) { + closedCaptureCounter++; + } + } + return group; + } + + function parseAnchor() { + // Anchor :: + // ^ + // $ + // \ b + // \ B + // ( ? = Disjunction ) + // ( ? ! Disjunction ) + var res, from = pos; + + if (match('^')) { + return createAnchor('start', 1 /* rawLength */); + } else if (match('$')) { + return createAnchor('end', 1 /* rawLength */); + } else if (match('\\b')) { + return createAnchor('boundary', 2 /* rawLength */); + } else if (match('\\B')) { + return createAnchor('not-boundary', 2 /* rawLength */); + } else { + return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead'); + } + } + + function parseQuantifier() { + // Quantifier :: + // QuantifierPrefix + // QuantifierPrefix ? + // + // QuantifierPrefix :: + // * + // + + // ? + // { DecimalDigits } + // { DecimalDigits , } + // { DecimalDigits , DecimalDigits } + + var res, from = pos; + var quantifier; + var min, max; + + if (match('*')) { + quantifier = createQuantifier(0); + } + else if (match('+')) { + quantifier = createQuantifier(1); + } + else if (match('?')) { + quantifier = createQuantifier(0, 1); + } + else if (res = matchReg(/^\{([0-9]+)\}/)) { + min = parseInt(res[1], 10); + quantifier = createQuantifier(min, min, res.range[0], res.range[1]); + } + else if (res = matchReg(/^\{([0-9]+),\}/)) { + min = parseInt(res[1], 10); + quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]); + } + else if (res = matchReg(/^\{([0-9]+),([0-9]+)\}/)) { + min = parseInt(res[1], 10); + max = parseInt(res[2], 10); + if (min > max) { + bail('numbers out of order in {} quantifier', '', from, pos); + } + quantifier = createQuantifier(min, max, res.range[0], res.range[1]); + } + + if (quantifier) { + if (match('?')) { + quantifier.greedy = false; + quantifier.range[1] += 1; + } + } + + return quantifier; + } + + function parseAtom() { + // Atom :: + // PatternCharacter + // . + // \ AtomEscape + // CharacterClass + // ( Disjunction ) + // ( ? : Disjunction ) + + var res; + + // jviereck: allow ']', '}' here as well to be compatible with browser's + // implementations: ']'.match(/]/); + // if (res = matchReg(/^[^^$\\.*+?()[\]{}|]/)) { + if (res = matchReg(/^[^^$\\.*+?(){[|]/)) { + // PatternCharacter + return createCharacter(res); + } + else if (match('.')) { + // . + return createDot(); + } + else if (match('\\')) { + // \ AtomEscape + res = parseAtomEscape(); + if (!res) { + bail('atomEscape'); + } + return res; + } + else if (res = parseCharacterClass()) { + return res; + } + else { + // ( Disjunction ) + // ( ? : Disjunction ) + return parseGroup('(?:', 'ignore', '(', 'normal'); + } + } + + function parseUnicodeSurrogatePairEscape(firstEscape) { + if (hasUnicodeFlag) { + var first, second; + if (firstEscape.kind == 'unicodeEscape' && + (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF && + current('\\') && next('u') ) { + var prevPos = pos; + pos++; + var secondEscape = parseClassEscape(); + if (secondEscape.kind == 'unicodeEscape' && + (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) { + // Unicode surrogate pair + firstEscape.range[1] = secondEscape.range[1]; + firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + firstEscape.type = 'value'; + firstEscape.kind = 'unicodeCodePointEscape'; + addRaw(firstEscape); + } + else { + pos = prevPos; + } + } + } + return firstEscape; + } + + function parseClassEscape() { + return parseAtomEscape(true); + } + + function parseAtomEscape(insideCharacterClass) { + // AtomEscape :: + // DecimalEscape + // CharacterEscape + // CharacterClassEscape + + var res, from = pos; + + res = parseDecimalEscape(); + if (res) { + return res; + } + + // For ClassEscape + if (insideCharacterClass) { + if (match('b')) { + // 15.10.2.19 + // The production ClassEscape :: b evaluates by returning the + // CharSet containing the one character (Unicode value 0008). + return createEscaped('singleEscape', 0x0008, '\\b'); + } else if (match('B')) { + bail('\\B not possible inside of CharacterClass', '', from); + } + } + + res = parseCharacterEscape(); + + return res; + } + + + function parseDecimalEscape() { + // DecimalEscape :: + // DecimalIntegerLiteral [lookahead ∉ DecimalDigit] + // CharacterClassEscape :: one of d D s S w W + + var res, match; + + if (res = matchReg(/^(?!0)\d+/)) { + match = res[0]; + var refIdx = parseInt(res[0], 10); + if (refIdx <= closedCaptureCounter) { + // If the number is smaller than the normal-groups found so + // far, then it is a reference... + return createReference(res[0]); + } else { + // ... otherwise it needs to be interpreted as a octal (if the + // number is in an octal format). If it is NOT octal format, + // then the slash is ignored and the number is matched later + // as normal characters. + + // Recall the negative decision to decide if the input must be parsed + // a second time with the total normal-groups. + backrefDenied.push(refIdx); + + // Reset the position again, as maybe only parts of the previous + // matched numbers are actual octal numbers. E.g. in '019' only + // the '01' should be matched. + incr(-res[0].length); + if (res = matchReg(/^[0-7]{1,3}/)) { + return createEscaped('octal', parseInt(res[0], 8), res[0], 1); + } else { + // If we end up here, we have a case like /\91/. Then the + // first slash is to be ignored and the 9 & 1 to be treated + // like ordinary characters. Create a character for the + // first number only here - other number-characters + // (if available) will be matched later. + res = createCharacter(matchReg(/^[89]/)); + return updateRawStart(res, res.range[0] - 1); + } + } + } + // Only allow octal numbers in the following. All matched numbers start + // with a zero (if the do not, the previous if-branch is executed). + // If the number is not octal format and starts with zero (e.g. `091`) + // then only the zeros `0` is treated here and the `91` are ordinary + // characters. + // Example: + // /\091/.exec('\091')[0].length === 3 + else if (res = matchReg(/^[0-7]{1,3}/)) { + match = res[0]; + if (/^0{1,3}$/.test(match)) { + // If they are all zeros, then only take the first one. + return createEscaped('null', 0x0000, '0', match.length + 1); + } else { + return createEscaped('octal', parseInt(match, 8), match, 1); + } + } else if (res = matchReg(/^[dDsSwW]/)) { + return createCharacterClassEscape(res[0]); + } + return false; + } + + function parseCharacterEscape() { + // CharacterEscape :: + // ControlEscape + // c ControlLetter + // HexEscapeSequence + // UnicodeEscapeSequence + // IdentityEscape + + var res; + if (res = matchReg(/^[fnrtv]/)) { + // ControlEscape + var codePoint = 0; + switch (res[0]) { + case 't': codePoint = 0x009; break; + case 'n': codePoint = 0x00A; break; + case 'v': codePoint = 0x00B; break; + case 'f': codePoint = 0x00C; break; + case 'r': codePoint = 0x00D; break; + } + return createEscaped('singleEscape', codePoint, '\\' + res[0]); + } else if (res = matchReg(/^c([a-zA-Z])/)) { + // c ControlLetter + return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2); + } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) { + // HexEscapeSequence + return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2); + } else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) { + // UnicodeEscapeSequence + return parseUnicodeSurrogatePairEscape( + createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2) + ); + } else if (hasUnicodeFlag && (res = matchReg(/^u\{([0-9a-fA-F]+)\}/))) { + // RegExpUnicodeEscapeSequence (ES6 Unicode code point escape) + return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4); + } else { + // IdentityEscape + return parseIdentityEscape(); + } + } + + // Taken from the Esprima parser. + function isIdentifierPart(ch) { + // Generated by `tools/generate-identifier-regex.js`. + var NonAsciiIdentifierPart = new RegExp('[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]'); + + return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore) + (ch >= 65 && ch <= 90) || // A..Z + (ch >= 97 && ch <= 122) || // a..z + (ch >= 48 && ch <= 57) || // 0..9 + (ch === 92) || // \ (backslash) + ((ch >= 0x80) && NonAsciiIdentifierPart.test(String.fromCharCode(ch))); + } + + function parseIdentityEscape() { + // IdentityEscape :: + // SourceCharacter but not IdentifierPart + // + // + + var ZWJ = '\u200C'; + var ZWNJ = '\u200D'; + + var tmp; + + if (!isIdentifierPart(lookahead())) { + tmp = incr(); + return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1); + } + + if (match(ZWJ)) { + // + return createEscaped('identifier', 0x200C, ZWJ); + } else if (match(ZWNJ)) { + // + return createEscaped('identifier', 0x200D, ZWNJ); + } + + return null; + } + + function parseCharacterClass() { + // CharacterClass :: + // [ [lookahead ∉ {^}] ClassRanges ] + // [ ^ ClassRanges ] + + var res, from = pos; + if (res = matchReg(/^\[\^/)) { + res = parseClassRanges(); + skip(']'); + return createCharacterClass(res, true, from, pos); + } else if (match('[')) { + res = parseClassRanges(); + skip(']'); + return createCharacterClass(res, false, from, pos); + } + + return null; + } + + function parseClassRanges() { + // ClassRanges :: + // [empty] + // NonemptyClassRanges + + var res; + if (current(']')) { + // Empty array means nothing insinde of the ClassRange. + return []; + } else { + res = parseNonemptyClassRanges(); + if (!res) { + bail('nonEmptyClassRanges'); + } + return res; + } + } + + function parseHelperClassRanges(atom) { + var from, to, res; + if (current('-') && !next(']')) { + // ClassAtom - ClassAtom ClassRanges + skip('-'); + + res = parseClassAtom(); + if (!res) { + bail('classAtom'); + } + to = pos; + var classRanges = parseClassRanges(); + if (!classRanges) { + bail('classRanges'); + } + from = atom.range[0]; + if (classRanges.type === 'empty') { + return [createClassRange(atom, res, from, to)]; + } + return [createClassRange(atom, res, from, to)].concat(classRanges); + } + + res = parseNonemptyClassRangesNoDash(); + if (!res) { + bail('nonEmptyClassRangesNoDash'); + } + + return [atom].concat(res); + } + + function parseNonemptyClassRanges() { + // NonemptyClassRanges :: + // ClassAtom + // ClassAtom NonemptyClassRangesNoDash + // ClassAtom - ClassAtom ClassRanges + + var atom = parseClassAtom(); + if (!atom) { + bail('classAtom'); + } + + if (current(']')) { + // ClassAtom + return [atom]; + } + + // ClassAtom NonemptyClassRangesNoDash + // ClassAtom - ClassAtom ClassRanges + return parseHelperClassRanges(atom); + } + + function parseNonemptyClassRangesNoDash() { + // NonemptyClassRangesNoDash :: + // ClassAtom + // ClassAtomNoDash NonemptyClassRangesNoDash + // ClassAtomNoDash - ClassAtom ClassRanges + + var res = parseClassAtom(); + if (!res) { + bail('classAtom'); + } + if (current(']')) { + // ClassAtom + return res; + } + + // ClassAtomNoDash NonemptyClassRangesNoDash + // ClassAtomNoDash - ClassAtom ClassRanges + return parseHelperClassRanges(res); + } + + function parseClassAtom() { + // ClassAtom :: + // - + // ClassAtomNoDash + if (match('-')) { + return createCharacter('-'); + } else { + return parseClassAtomNoDash(); + } + } + + function parseClassAtomNoDash() { + // ClassAtomNoDash :: + // SourceCharacter but not one of \ or ] or - + // \ ClassEscape + + var res; + if (res = matchReg(/^[^\\\]-]/)) { + return createCharacter(res[0]); + } else if (match('\\')) { + res = parseClassEscape(); + if (!res) { + bail('classEscape'); + } + + return parseUnicodeSurrogatePairEscape(res); + } + } + + function bail(message, details, from, to) { + from = from == null ? pos : from; + to = to == null ? from : to; + + var contextStart = Math.max(0, from - 10); + var contextEnd = Math.min(to + 10, str.length); + + // Output a bit of context and a line pointing to where our error is. + // + // We are assuming that there are no actual newlines in the content as this is a regular expression. + var context = ' ' + str.substring(contextStart, contextEnd); + var pointer = ' ' + new Array(from - contextStart + 1).join(' ') + '^'; + + throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\n' + context + '\n' + pointer); + } + + var backrefDenied = []; + var closedCaptureCounter = 0; + var firstIteration = true; + var hasUnicodeFlag = (flags || "").indexOf("u") !== -1; + var pos = 0; + + // Convert the input to a string and treat the empty string special. + str = String(str); + if (str === '') { + str = '(?:)'; + } + + var result = parseDisjunction(); + + if (result.range[1] !== str.length) { + bail('Could not parse entire input - got stuck', '', result.range[1]); + } + + // The spec requires to interpret the `\2` in `/\2()()/` as backreference. + // As the parser collects the number of capture groups as the string is + // parsed it is impossible to make these decisions at the point when the + // `\2` is handled. In case the local decision turns out to be wrong after + // the parsing has finished, the input string is parsed a second time with + // the total number of capture groups set. + // + // SEE: https://github.com/jviereck/regjsparser/issues/70 + for (var i = 0; i < backrefDenied.length; i++) { + if (backrefDenied[i] <= closedCaptureCounter) { + // Parse the input a second time. + pos = 0; + firstIteration = false; + return parseDisjunction(); + } + } + + return result; + } + + var regjsparser = { + parse: parse + }; + + if (typeof module !== 'undefined' && module.exports) { + module.exports = regjsparser; + } else { + window.regjsparser = regjsparser; + } + +}()); + +},{}],586:[function(_dereq_,module,exports){ +'use strict'; +var isFinite = _dereq_(433); + +module.exports = function (str, n) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string as the first argument'); + } + + if (n < 0 || !isFinite(n)) { + throw new TypeError('Expected a finite positive number'); + } + + var ret = ''; + + do { + if (n & 1) { + ret += str; + } + + str += str; + } while (n = n >> 1); + + return ret; +}; + +},{"433":433}],587:[function(_dereq_,module,exports){ +'use strict'; +module.exports = /^#!.*/; + +},{}],588:[function(_dereq_,module,exports){ +// simple-fmt.js +// MIT licensed, see LICENSE file +// Copyright (c) 2013 Olov Lassus + +var fmt = (function() { + "use strict"; + + function fmt(str, var_args) { + var args = Array.prototype.slice.call(arguments, 1); + return str.replace(/\{(\d+)\}/g, function(s, match) { + return (match in args ? args[match] : s); + }); + } + + function obj(str, obj) { + return str.replace(/\{([_$a-zA-Z0-9][_$a-zA-Z0-9]*)\}/g, function(s, match) { + return (match in obj ? obj[match] : s); + }); + } + + function repeat(str, n) { + return (new Array(n + 1)).join(str); + } + + fmt.fmt = fmt; + fmt.obj = obj; + fmt.repeat = repeat; + return fmt; +})(); + +if (typeof module !== "undefined" && typeof module.exports !== "undefined") { + module.exports = fmt; +} + +},{}],589:[function(_dereq_,module,exports){ +// simple-is.js +// MIT licensed, see LICENSE file +// Copyright (c) 2013 Olov Lassus + +var is = (function() { + "use strict"; + + var hasOwnProperty = Object.prototype.hasOwnProperty; + var toString = Object.prototype.toString; + var _undefined = void 0; + + return { + nan: function(v) { + return v !== v; + }, + boolean: function(v) { + return typeof v === "boolean"; + }, + number: function(v) { + return typeof v === "number"; + }, + string: function(v) { + return typeof v === "string"; + }, + fn: function(v) { + return typeof v === "function"; + }, + object: function(v) { + return v !== null && typeof v === "object"; + }, + primitive: function(v) { + var t = typeof v; + return v === null || v === _undefined || + t === "boolean" || t === "number" || t === "string"; + }, + array: Array.isArray || function(v) { + return toString.call(v) === "[object Array]"; + }, + finitenumber: function(v) { + return typeof v === "number" && isFinite(v); + }, + someof: function(v, values) { + return values.indexOf(v) >= 0; + }, + noneof: function(v, values) { + return values.indexOf(v) === -1; + }, + own: function(obj, prop) { + return hasOwnProperty.call(obj, prop); + }, + }; +})(); + +if (typeof module !== "undefined" && typeof module.exports !== "undefined") { + module.exports = is; +} + +},{}],590:[function(_dereq_,module,exports){ +'use strict'; +module.exports = function (str) { + var isExtendedLengthPath = /^\\\\\?\\/.test(str); + var hasNonAscii = /[^\x00-\x80]+/.test(str); + + if (isExtendedLengthPath || hasNonAscii) { + return str; + } + + return str.replace(/\\/g, '/'); +}; + +},{}],591:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var util = _dereq_(600); + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = {}; + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = util.toSetString(aStr); + var isDuplicate = this._set.hasOwnProperty(sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + this._set[sStr] = idx; + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + var sStr = util.toSetString(aStr); + return this._set.hasOwnProperty(sStr); + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + var sStr = util.toSetString(aStr); + if (this._set.hasOwnProperty(sStr)) { + return this._set[sStr]; + } + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + exports.ArraySet = ArraySet; +} + +},{"600":600}],592:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. 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. + * * Neither the name of Google Inc. nor the names of its + * contributors may 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 + * OWNER 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. + */ +{ + var base64 = _dereq_(593); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; +} + +},{"593":593}],593:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; +} + +},{}],594:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; +} + +},{}],595:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var util = _dereq_(600); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + exports.MappingList = MappingList; +} + +},{"600":600}],596:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; +} + +},{}],597:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var util = _dereq_(600); + var binarySearch = _dereq_(594); + var ArraySet = _dereq_(591).ArraySet; + var base64VLQ = _dereq_(592); + var quickSort = _dereq_(596).quickSort; + + function SourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap) + : new BasicSourceMapConsumer(sourceMap); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap); + } + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + if (source != null && sourceRoot != null) { + source = util.join(sourceRoot, source); + } + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: Optional. the column number in the original source. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + if (this.sourceRoot != null) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + if (!this._sources.has(needle.source)) { + return []; + } + needle.source = this._sources.indexOf(needle.source); + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + exports.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The only parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + sources = sources + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names, true); + this._sources = ArraySet.fromArray(sources, true); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._sources.toArray().map(function (s) { + return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; + }, this); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + if (this.sourceRoot != null) { + source = util.join(this.sourceRoot, source); + } + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + if (this.sourceRoot != null) { + aSource = util.relative(this.sourceRoot, aSource); + } + + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + aSource)) { + return this.sourcesContent[this._sources.indexOf("/" + aSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + if (this.sourceRoot != null) { + source = util.relative(this.sourceRoot, source); + } + if (!this._sources.has(source)) { + return { + line: null, + column: null, + lastColumn: null + }; + } + source = this._sources.indexOf(source); + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The only parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map')) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if (section.consumer.sourceRoot !== null) { + source = util.join(section.consumer.sourceRoot, source); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; +} + +},{"591":591,"592":592,"594":594,"596":596,"600":600}],598:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var base64VLQ = _dereq_(592); + var util = _dereq_(600); + var ArraySet = _dereq_(591).ArraySet; + var MappingList = _dereq_(595).MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null && !this._sources.has(source)) { + this._sources.add(source); + } + + if (name != null && !this._names.has(name)) { + this._names.add(name); + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = {}; + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + result += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + result += ','; + } + } + + result += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + result += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + result += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + result += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + result += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, + key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + exports.SourceMapGenerator = SourceMapGenerator; +} + +},{"591":591,"592":592,"595":595,"600":600}],599:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + var SourceMapGenerator = _dereq_(598).SourceMapGenerator; + var util = _dereq_(600); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are removed from this array, by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var shiftNextLine = function() { + var lineContents = remainingLines.shift(); + // The last line of a file might not have a newline. + var newLine = remainingLines.shift() || ""; + return lineContents + newLine; + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[0]; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[0] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[0]; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[0] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLines.length > 0) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + exports.SourceNode = SourceNode; +} + +},{"598":598,"600":600}],600:[function(_dereq_,module,exports){ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +{ + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consequtive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + return '$' + aStr; + } + exports.toSetString = toSetString; + + function fromSetString(aStr) { + return aStr.substr(1); + } + exports.fromSetString = fromSetString; + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; +} + +},{}],601:[function(_dereq_,module,exports){ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = _dereq_(598).SourceMapGenerator; +exports.SourceMapConsumer = _dereq_(597).SourceMapConsumer; +exports.SourceNode = _dereq_(599).SourceNode; + +},{"597":597,"598":598,"599":599}],602:[function(_dereq_,module,exports){ +//! stable.js 0.1.5, https://github.com/Two-Screen/stable +//! © 2014 Angry Bytes and contributors. MIT licensed. + +(function() { + +// A stable array sort, because `Array#sort()` is not guaranteed stable. +// This is an implementation of merge sort, without recursion. + +var stable = function(arr, comp) { + return exec(arr.slice(), comp); +}; + +stable.inplace = function(arr, comp) { + var result = exec(arr, comp); + + // This simply copies back if the result isn't in the original array, + // which happens on an odd number of passes. + if (result !== arr) { + pass(result, null, arr.length, arr); + } + + return arr; +}; + +// Execute the sort using the input array and a second buffer as work space. +// Returns one of those two, containing the final result. +function exec(arr, comp) { + if (typeof(comp) !== 'function') { + comp = function(a, b) { + return String(a).localeCompare(b); + }; + } + + // Short-circuit when there's nothing to sort. + var len = arr.length; + if (len <= 1) { + return arr; + } + + // Rather than dividing input, simply iterate chunks of 1, 2, 4, 8, etc. + // Chunks are the size of the left or right hand in merge sort. + // Stop when the left-hand covers all of the array. + var buffer = new Array(len); + for (var chk = 1; chk < len; chk *= 2) { + pass(arr, comp, chk, buffer); + + var tmp = arr; + arr = buffer; + buffer = tmp; + } + + return arr; +} + +// Run a single pass with the given chunk size. +var pass = function(arr, comp, chk, result) { + var len = arr.length; + var i = 0; + // Step size / double chunk size. + var dbl = chk * 2; + // Bounds of the left and right chunks. + var l, r, e; + // Iterators over the left and right chunk. + var li, ri; + + // Iterate over pairs of chunks. + for (l = 0; l < len; l += dbl) { + r = l + chk; + e = r + chk; + if (r > len) r = len; + if (e > len) e = len; + + // Iterate both chunks in parallel. + li = l; + ri = r; + while (true) { + // Compare the chunks. + if (li < r && ri < e) { + // This works for a regular `sort()` compatible comparator, + // but also for a simple comparator like: `a > b` + if (comp(arr[li], arr[ri]) <= 0) { + result[i++] = arr[li++]; + } + else { + result[i++] = arr[ri++]; + } + } + // Nothing to compare, just flush what's left. + else if (li < r) { + result[i++] = arr[li++]; + } + else if (ri < e) { + result[i++] = arr[ri++]; + } + // Both iterators are at the chunk ends. + else { + break; + } + } + } +}; + +// Export using CommonJS or to the window. +if (typeof(module) !== 'undefined') { + module.exports = stable; +} +else { + window.stable = stable; +} + +})(); + +},{}],603:[function(_dereq_,module,exports){ +// stringmap.js +// MIT licensed, see LICENSE file +// Copyright (c) 2013 Olov Lassus + +var StringMap = (function() { + "use strict"; + + // to save us a few characters + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var create = (function() { + function hasOwnEnumerableProps(obj) { + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + return true; + } + } + return false; + } + // FF <= 3.6: + // o = {}; o.hasOwnProperty("__proto__" or "__count__" or "__parent__") => true + // o = {"__proto__": null}; Object.prototype.hasOwnProperty.call(o, "__proto__" or "__count__" or "__parent__") => false + function hasOwnPollutedProps(obj) { + return hasOwnProperty.call(obj, "__count__") || hasOwnProperty.call(obj, "__parent__"); + } + + var useObjectCreate = false; + if (typeof Object.create === "function") { + if (!hasOwnEnumerableProps(Object.create(null))) { + useObjectCreate = true; + } + } + if (useObjectCreate === false) { + if (hasOwnEnumerableProps({})) { + throw new Error("StringMap environment error 0, please file a bug at https://github.com/olov/stringmap/issues"); + } + } + // no throw yet means we can create objects without own enumerable props (safe-guard against VMs and shims) + + var o = (useObjectCreate ? Object.create(null) : {}); + var useProtoClear = false; + if (hasOwnPollutedProps(o)) { + o.__proto__ = null; + if (hasOwnEnumerableProps(o) || hasOwnPollutedProps(o)) { + throw new Error("StringMap environment error 1, please file a bug at https://github.com/olov/stringmap/issues"); + } + useProtoClear = true; + } + // no throw yet means we can create objects without own polluted props (safe-guard against VMs and shims) + + return function() { + var o = (useObjectCreate ? Object.create(null) : {}); + if (useProtoClear) { + o.__proto__ = null; + } + return o; + }; + })(); + + // stringmap ctor + function stringmap(optional_object) { + // use with or without new + if (!(this instanceof stringmap)) { + return new stringmap(optional_object); + } + this.obj = create(); + this.hasProto = false; // false (no __proto__ key) or true (has __proto__ key) + this.proto = undefined; // value for __proto__ key when hasProto is true, undefined otherwise + + if (optional_object) { + this.setMany(optional_object); + } + }; + + // primitive methods that deals with data representation + stringmap.prototype.has = function(key) { + // The type-check of key in has, get, set and delete is important because otherwise an object + // {toString: function() { return "__proto__"; }} can avoid the key === "__proto__" test. + // The alternative to type-checking would be to force string conversion, i.e. key = String(key); + if (typeof key !== "string") { + throw new Error("StringMap expected string key"); + } + return (key === "__proto__" ? + this.hasProto : + hasOwnProperty.call(this.obj, key)); + }; + + stringmap.prototype.get = function(key) { + if (typeof key !== "string") { + throw new Error("StringMap expected string key"); + } + return (key === "__proto__" ? + this.proto : + (hasOwnProperty.call(this.obj, key) ? this.obj[key] : undefined)); + }; + + stringmap.prototype.set = function(key, value) { + if (typeof key !== "string") { + throw new Error("StringMap expected string key"); + } + if (key === "__proto__") { + this.hasProto = true; + this.proto = value; + } else { + this.obj[key] = value; + } + }; + + stringmap.prototype.remove = function(key) { + if (typeof key !== "string") { + throw new Error("StringMap expected string key"); + } + var didExist = this.has(key); + if (key === "__proto__") { + this.hasProto = false; + this.proto = undefined; + } else { + delete this.obj[key]; + } + return didExist; + }; + + // alias remove to delete but beware: + // sm.delete("key"); // OK in ES5 and later + // sm['delete']("key"); // OK in all ES versions + // sm.remove("key"); // OK in all ES versions + stringmap.prototype['delete'] = stringmap.prototype.remove; + + stringmap.prototype.isEmpty = function() { + for (var key in this.obj) { + if (hasOwnProperty.call(this.obj, key)) { + return false; + } + } + return !this.hasProto; + }; + + stringmap.prototype.size = function() { + var len = 0; + for (var key in this.obj) { + if (hasOwnProperty.call(this.obj, key)) { + ++len; + } + } + return (this.hasProto ? len + 1 : len); + }; + + stringmap.prototype.keys = function() { + var keys = []; + for (var key in this.obj) { + if (hasOwnProperty.call(this.obj, key)) { + keys.push(key); + } + } + if (this.hasProto) { + keys.push("__proto__"); + } + return keys; + }; + + stringmap.prototype.values = function() { + var values = []; + for (var key in this.obj) { + if (hasOwnProperty.call(this.obj, key)) { + values.push(this.obj[key]); + } + } + if (this.hasProto) { + values.push(this.proto); + } + return values; + }; + + stringmap.prototype.items = function() { + var items = []; + for (var key in this.obj) { + if (hasOwnProperty.call(this.obj, key)) { + items.push([key, this.obj[key]]); + } + } + if (this.hasProto) { + items.push(["__proto__", this.proto]); + } + return items; + }; + + + // methods that rely on the above primitives + stringmap.prototype.setMany = function(object) { + if (object === null || (typeof object !== "object" && typeof object !== "function")) { + throw new Error("StringMap expected Object"); + } + for (var key in object) { + if (hasOwnProperty.call(object, key)) { + this.set(key, object[key]); + } + } + return this; + }; + + stringmap.prototype.merge = function(other) { + var keys = other.keys(); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + this.set(key, other.get(key)); + } + return this; + }; + + stringmap.prototype.map = function(fn) { + var keys = this.keys(); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + keys[i] = fn(this.get(key), key); // re-use keys array for results + } + return keys; + }; + + stringmap.prototype.forEach = function(fn) { + var keys = this.keys(); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + fn(this.get(key), key); + } + }; + + stringmap.prototype.clone = function() { + var other = stringmap(); + return other.merge(this); + }; + + stringmap.prototype.toString = function() { + var self = this; + return "{" + this.keys().map(function(key) { + return JSON.stringify(key) + ":" + JSON.stringify(self.get(key)); + }).join(",") + "}"; + }; + + return stringmap; +})(); + +if (typeof module !== "undefined" && typeof module.exports !== "undefined") { + module.exports = StringMap; +} + +},{}],604:[function(_dereq_,module,exports){ +// stringset.js +// MIT licensed, see LICENSE file +// Copyright (c) 2013 Olov Lassus + +var StringSet = (function() { + "use strict"; + + // to save us a few characters + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var create = (function() { + function hasOwnEnumerableProps(obj) { + for (var prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + return true; + } + } + return false; + } + + // FF <= 3.6: + // o = {}; o.hasOwnProperty("__proto__" or "__count__" or "__parent__") => true + // o = {"__proto__": null}; Object.prototype.hasOwnProperty.call(o, "__proto__" or "__count__" or "__parent__") => false + function hasOwnPollutedProps(obj) { + return hasOwnProperty.call(obj, "__count__") || hasOwnProperty.call(obj, "__parent__"); + } + + var useObjectCreate = false; + if (typeof Object.create === "function") { + if (!hasOwnEnumerableProps(Object.create(null))) { + useObjectCreate = true; + } + } + if (useObjectCreate === false) { + if (hasOwnEnumerableProps({})) { + throw new Error("StringSet environment error 0, please file a bug at https://github.com/olov/stringset/issues"); + } + } + // no throw yet means we can create objects without own enumerable props (safe-guard against VMs and shims) + + var o = (useObjectCreate ? Object.create(null) : {}); + var useProtoClear = false; + if (hasOwnPollutedProps(o)) { + o.__proto__ = null; + if (hasOwnEnumerableProps(o) || hasOwnPollutedProps(o)) { + throw new Error("StringSet environment error 1, please file a bug at https://github.com/olov/stringset/issues"); + } + useProtoClear = true; + } + // no throw yet means we can create objects without own polluted props (safe-guard against VMs and shims) + + return function() { + var o = (useObjectCreate ? Object.create(null) : {}); + if (useProtoClear) { + o.__proto__ = null; + } + return o; + }; + })(); + + // stringset ctor + function stringset(optional_array) { + // use with or without new + if (!(this instanceof stringset)) { + return new stringset(optional_array); + } + this.obj = create(); + this.hasProto = false; // false (no __proto__ item) or true (has __proto__ item) + + if (optional_array) { + this.addMany(optional_array); + } + }; + + // primitive methods that deals with data representation + stringset.prototype.has = function(item) { + // The type-check of item in has, get, set and delete is important because otherwise an object + // {toString: function() { return "__proto__"; }} can avoid the item === "__proto__" test. + // The alternative to type-checking would be to force string conversion, i.e. item = String(item); + if (typeof item !== "string") { + throw new Error("StringSet expected string item"); + } + return (item === "__proto__" ? + this.hasProto : + hasOwnProperty.call(this.obj, item)); + }; + + stringset.prototype.add = function(item) { + if (typeof item !== "string") { + throw new Error("StringSet expected string item"); + } + if (item === "__proto__") { + this.hasProto = true; + } else { + this.obj[item] = true; + } + }; + + stringset.prototype.remove = function(item) { + if (typeof item !== "string") { + throw new Error("StringSet expected string item"); + } + var didExist = this.has(item); + if (item === "__proto__") { + this.hasProto = false; + } else { + delete this.obj[item]; + } + return didExist; + }; + + // alias remove to delete but beware: + // ss.delete("key"); // OK in ES5 and later + // ss['delete']("key"); // OK in all ES versions + // ss.remove("key"); // OK in all ES versions + stringset.prototype['delete'] = stringset.prototype.remove; + + stringset.prototype.isEmpty = function() { + for (var item in this.obj) { + if (hasOwnProperty.call(this.obj, item)) { + return false; + } + } + return !this.hasProto; + }; + + stringset.prototype.size = function() { + var len = 0; + for (var item in this.obj) { + if (hasOwnProperty.call(this.obj, item)) { + ++len; + } + } + return (this.hasProto ? len + 1 : len); + }; + + stringset.prototype.items = function() { + var items = []; + for (var item in this.obj) { + if (hasOwnProperty.call(this.obj, item)) { + items.push(item); + } + } + if (this.hasProto) { + items.push("__proto__"); + } + return items; + }; + + + // methods that rely on the above primitives + stringset.prototype.addMany = function(items) { + if (!Array.isArray(items)) { + throw new Error("StringSet expected array"); + } + for (var i = 0; i < items.length; i++) { + this.add(items[i]); + } + return this; + }; + + stringset.prototype.merge = function(other) { + this.addMany(other.items()); + return this; + }; + + stringset.prototype.clone = function() { + var other = stringset(); + return other.merge(this); + }; + + stringset.prototype.toString = function() { + return "{" + this.items().map(JSON.stringify).join(",") + "}"; + }; + + return stringset; +})(); + +if (typeof module !== "undefined" && typeof module.exports !== "undefined") { + module.exports = StringSet; +} + +},{}],605:[function(_dereq_,module,exports){ +'use strict'; +var ansiRegex = _dereq_(184)(); + +module.exports = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; + +},{"184":184}],606:[function(_dereq_,module,exports){ +(function (process){ +'use strict'; +var argv = process.argv; + +var terminator = argv.indexOf('--'); +var hasFlag = function (flag) { + flag = '--' + flag; + var pos = argv.indexOf(flag); + return pos !== -1 && (terminator !== -1 ? pos < terminator : true); +}; + +module.exports = (function () { + if ('FORCE_COLOR' in process.env) { + return true; + } + + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return false; + } + + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); + +}).call(this,_dereq_(10)) +},{"10":10}],607:[function(_dereq_,module,exports){ +'use strict'; +module.exports = function toFastProperties(obj) { + function f() {} + f.prototype = obj; + new f(); + return; + eval(obj); +}; + +},{}],608:[function(_dereq_,module,exports){ +'use strict'; +module.exports = function (str) { + var tail = str.length; + + while (/[\s\uFEFF\u00A0]/.test(str[tail - 1])) { + tail--; + } + + return str.slice(0, tail); +}; + +},{}],609:[function(_dereq_,module,exports){ +(function (process){ +var Module = _dereq_(3); + +var resolve = module.exports = function (loc, _require) { + try { + return (_require || _dereq_).resolve(loc); + } catch (err) { + return null; + } +}; + +var relativeMod; + +resolve.relative = function (loc) { + // we're in the browser, probably + if (typeof Module === "object") return null; + + if (!relativeMod) { + relativeMod = new Module; + relativeMod.paths = Module._nodeModulePaths(process.cwd()); + } + + try { + return Module._resolveFilename(loc, relativeMod); + } catch (err) { + return null; + } +}; + +}).call(this,_dereq_(10)) +},{"10":10,"3":3}],610:[function(_dereq_,module,exports){ +module.exports={ + "name": "babel-core", + "version": "5.8.38", + "description": "A compiler for writing next generation JavaScript", + "author": "Sebastian McKenzie ", + "homepage": "https://babeljs.io/", + "license": "MIT", + "repository": "babel/babel", + "browser": { + "./lib/api/register/node.js": "./lib/api/register/browser.js" + }, + "keywords": [ + "6to5", + "babel", + "classes", + "const", + "es6", + "harmony", + "let", + "modules", + "transpile", + "transpiler", + "var" + ], + "scripts": { + "bench": "make bench", + "test": "make test" + }, + "dependencies": { + "babel-plugin-constant-folding": "^1.0.1", + "babel-plugin-dead-code-elimination": "^1.0.2", + "babel-plugin-eval": "^1.0.1", + "babel-plugin-inline-environment-variables": "^1.0.1", + "babel-plugin-jscript": "^1.0.4", + "babel-plugin-member-expression-literals": "^1.0.1", + "babel-plugin-property-literals": "^1.0.1", + "babel-plugin-proto-to-assign": "^1.0.3", + "babel-plugin-react-constant-elements": "^1.0.3", + "babel-plugin-react-display-name": "^1.0.3", + "babel-plugin-remove-console": "^1.0.1", + "babel-plugin-remove-debugger": "^1.0.1", + "babel-plugin-runtime": "^1.0.7", + "babel-plugin-undeclared-variables-check": "^1.0.2", + "babel-plugin-undefined-to-void": "^1.1.6", + "babylon": "^5.8.38", + "bluebird": "^2.9.33", + "chalk": "^1.0.0", + "convert-source-map": "^1.1.0", + "core-js": "^1.0.0", + "debug": "^2.1.1", + "detect-indent": "^3.0.0", + "esutils": "^2.0.0", + "fs-readdir-recursive": "^0.1.0", + "globals": "^6.4.0", + "home-or-tmp": "^1.0.0", + "is-integer": "^1.0.4", + "js-tokens": "1.0.1", + "json5": "^0.4.0", + "lodash": "^3.10.0", + "minimatch": "^2.0.3", + "output-file-sync": "^1.1.0", + "path-exists": "^1.0.0", + "path-is-absolute": "^1.0.0", + "private": "^0.1.6", + "regenerator": "0.8.40", + "regexpu": "^1.3.0", + "repeating": "^1.1.2", + "resolve": "^1.1.6", + "shebang-regex": "^1.0.0", + "slash": "^1.0.0", + "source-map": "^0.5.0", + "source-map-support": "^0.2.10", + "to-fast-properties": "^1.0.0", + "trim-right": "^1.0.0", + "try-resolve": "^1.0.0" + } +} +},{}],611:[function(_dereq_,module,exports){ +module.exports={"abstract-expression-call":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"PROPERTY"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"referenceGet"},"computed":false},"computed":true},"arguments":[{"type":"Identifier","name":"OBJECT"}]},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"OBJECT"}]}}]},"abstract-expression-delete":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"PROPERTY"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"referenceDelete"},"computed":false},"computed":true},"arguments":[{"type":"Identifier","name":"OBJECT"}]}}]},"abstract-expression-get":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"PROPERTY"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"referenceGet"},"computed":false},"computed":true},"arguments":[{"type":"Identifier","name":"OBJECT"}]}}]},"abstract-expression-set":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"PROPERTY"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"referenceSet"},"computed":false},"computed":true},"arguments":[{"type":"Identifier","name":"OBJECT"},{"type":"Identifier","name":"VALUE"}]}}]},"array-comprehension-container":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"KEY"},"init":{"type":"ArrayExpression","elements":[]}}],"kind":"var"},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"KEY"}}]},"parenthesizedExpression":true},"arguments":[]}}]},"array-from":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"from"},"computed":false},"arguments":[{"type":"Identifier","name":"VALUE"}]}}]},"array-push":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"KEY"},"property":{"type":"Identifier","name":"push"},"computed":false},"arguments":[{"type":"Identifier","name":"STATEMENT"}]}}]},"call":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"OBJECT"},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"CONTEXT"}]}}]},"class-decorator":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"CLASS_REF"},"right":{"type":"LogicalExpression","left":{"type":"CallExpression","callee":{"type":"Identifier","name":"DECORATOR"},"arguments":[{"type":"Identifier","name":"CLASS_REF"}]},"operator":"||","right":{"type":"Identifier","name":"CLASS_REF"}}}}]},"class-derived-default-constructor":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Super"},"arguments":[{"type":"SpreadElement","argument":{"type":"Identifier","name":"arguments"}}]}}]},"parenthesizedExpression":true}}]},"default-parameter-assign":{"type":"Program","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"VARIABLE_NAME"},"operator":"===","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"VARIABLE_NAME"},"right":{"type":"Identifier","name":"DEFAULT_VALUE"}}},"alternate":null}]},"default-parameter":{"type":"Program","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"VARIABLE_NAME"},"init":{"type":"ConditionalExpression","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARGUMENTS"},"property":{"type":"Identifier","name":"length"},"computed":false},"operator":"<=","right":{"type":"Identifier","name":"ARGUMENT_KEY"}},"operator":"||","right":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARGUMENTS"},"property":{"type":"Identifier","name":"ARGUMENT_KEY"},"computed":true},"operator":"===","right":{"type":"Identifier","name":"undefined"}}},"consequent":{"type":"Identifier","name":"DEFAULT_VALUE"},"alternate":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARGUMENTS"},"property":{"type":"Identifier","name":"ARGUMENT_KEY"},"computed":true}}}],"kind":"let"}]},"exports-assign":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"exports"},"property":{"type":"Identifier","name":"KEY"},"computed":false},"right":{"type":"Identifier","name":"VALUE"}}}]},"exports-default-assign":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"module"},"property":{"type":"Identifier","name":"exports"},"computed":false},"right":{"type":"Identifier","name":"VALUE"}}}]},"exports-from-assign":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"exports"},{"type":"Identifier","name":"ID"},{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"enumerable"},"value":{"type":"Literal","value":true},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"get"},"value":{"type":"FunctionExpression","id":{"type":"Identifier","name":"get"},"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"INIT"}}]}},"kind":"init"}]}]}}]},"exports-module-declaration-loose":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"exports"},"property":{"type":"Identifier","name":"__esModule"},"computed":false},"right":{"type":"Literal","value":true}}}]},"exports-module-declaration":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"exports"},{"type":"Literal","value":"__esModule"},{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"value"},"value":{"type":"Literal","value":true},"kind":"init"}]}]}}]},"for-of-array":{"type":"Program","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"KEY"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"KEY"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARR"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"KEY"}},"body":{"type":"ExpressionStatement","expression":{"type":"Identifier","name":"BODY"}}}]},"for-of-loose":{"type":"Program","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"LOOP_OBJECT"},"init":{"type":"Identifier","name":"OBJECT"}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"IS_ARRAY"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"isArray"},"computed":false},"arguments":[{"type":"Identifier","name":"LOOP_OBJECT"}]}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"INDEX"},"init":{"type":"Literal","value":0}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"LOOP_OBJECT"},"init":{"type":"ConditionalExpression","test":{"type":"Identifier","name":"IS_ARRAY"},"consequent":{"type":"Identifier","name":"LOOP_OBJECT"},"alternate":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"LOOP_OBJECT"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"computed":true},"arguments":[]}}}],"kind":"var"},"test":null,"update":null,"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ID"},"init":null}],"kind":"var"},{"type":"IfStatement","test":{"type":"Identifier","name":"IS_ARRAY"},"consequent":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"INDEX"},"operator":">=","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"LOOP_OBJECT"},"property":{"type":"Identifier","name":"length"},"computed":false}},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ID"},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"LOOP_OBJECT"},"property":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"INDEX"}},"computed":true}}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"INDEX"},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"LOOP_OBJECT"},"property":{"type":"Identifier","name":"next"},"computed":false},"arguments":[]}}},{"type":"IfStatement","test":{"type":"MemberExpression","object":{"type":"Identifier","name":"INDEX"},"property":{"type":"Identifier","name":"done"},"computed":false},"consequent":{"type":"BreakStatement","label":null},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ID"},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"INDEX"},"property":{"type":"Identifier","name":"value"},"computed":false}}}]}}]}}]},"for-of":{"type":"Program","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ITERATOR_COMPLETION"},"init":{"type":"Literal","value":true}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ITERATOR_HAD_ERROR_KEY"},"init":{"type":"Literal","value":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ITERATOR_ERROR_KEY"},"init":{"type":"Identifier","name":"undefined"}}],"kind":"var"},{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ITERATOR_KEY"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"OBJECT"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"computed":true},"arguments":[]}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"STEP_KEY"},"init":null}],"kind":"var"},"test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ITERATOR_COMPLETION"},"right":{"type":"MemberExpression","object":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"STEP_KEY"},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"ITERATOR_KEY"},"property":{"type":"Identifier","name":"next"},"computed":false},"arguments":[]},"parenthesizedExpression":true},"property":{"type":"Identifier","name":"done"},"computed":false},"parenthesizedExpression":true}},"update":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ITERATOR_COMPLETION"},"right":{"type":"Literal","value":true}},"body":{"type":"BlockStatement","body":[]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"err"},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ITERATOR_HAD_ERROR_KEY"},"right":{"type":"Literal","value":true}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"ITERATOR_ERROR_KEY"},"right":{"type":"Identifier","name":"err"}}}]}},"guardedHandlers":[],"finalizer":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"Identifier","name":"ITERATOR_COMPLETION"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"ITERATOR_KEY"},"property":{"type":"Literal","value":"return"},"computed":true}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"ITERATOR_KEY"},"property":{"type":"Literal","value":"return"},"computed":true},"arguments":[]}}]},"alternate":null}]},"handler":null,"guardedHandlers":[],"finalizer":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"Identifier","name":"ITERATOR_HAD_ERROR_KEY"},"consequent":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"Identifier","name":"ITERATOR_ERROR_KEY"}}]},"alternate":null}]}}]}}]},"helper-async-to-generator":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"fn"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"gen"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"fn"},"property":{"type":"Identifier","name":"apply"},"computed":false},"arguments":[{"type":"ThisExpression"},{"type":"Identifier","name":"arguments"}]}}],"kind":"var"},{"type":"ReturnStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"Promise"},"arguments":[{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"resolve"},{"type":"Identifier","name":"reject"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"callNext"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"step"},"property":{"type":"Identifier","name":"bind"},"computed":false},"arguments":[{"type":"Literal","value":null,"rawValue":null},{"type":"Literal","value":"next"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"callThrow"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"step"},"property":{"type":"Identifier","name":"bind"},"computed":false},"arguments":[{"type":"Literal","value":null,"rawValue":null},{"type":"Literal","value":"throw"}]}}],"kind":"var"},{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"step"},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"key"},{"type":"Identifier","name":"arg"}],"body":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"info"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"gen"},"property":{"type":"Identifier","name":"key"},"computed":true},"arguments":[{"type":"Identifier","name":"arg"}]}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"value"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"info"},"property":{"type":"Identifier","name":"value"},"computed":false}}],"kind":"var"}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"error"},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"reject"},"arguments":[{"type":"Identifier","name":"error"}]}},{"type":"ReturnStatement","argument":null}]}},"guardedHandlers":[],"finalizer":null},{"type":"IfStatement","test":{"type":"MemberExpression","object":{"type":"Identifier","name":"info"},"property":{"type":"Identifier","name":"done"},"computed":false},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"resolve"},"arguments":[{"type":"Identifier","name":"value"}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Promise"},"property":{"type":"Identifier","name":"resolve"},"computed":false},"arguments":[{"type":"Identifier","name":"value"}]},"property":{"type":"Identifier","name":"then"},"computed":false},"arguments":[{"type":"Identifier","name":"callNext"},{"type":"Identifier","name":"callThrow"}]}}]}}]}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"callNext"},"arguments":[]}}]}}]}}]}}}]},"parenthesizedExpression":true}}]},"helper-bind":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Function"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"bind"},"computed":false}}]},"helper-class-call-check":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"instance"},{"type":"Identifier","name":"Constructor"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"BinaryExpression","left":{"type":"Identifier","name":"instance"},"operator":"instanceof","right":{"type":"Identifier","name":"Constructor"},"parenthesizedExpression":true}},"consequent":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"Literal","value":"Cannot call a class as a function"}]}}]},"alternate":null}]},"parenthesizedExpression":true}}]},"helper-create-class":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"defineProperties"},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"props"}],"body":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"props"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"descriptor"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"props"},"property":{"type":"Identifier","name":"i"},"computed":true}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"enumerable"},"computed":false},"right":{"type":"LogicalExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"enumerable"},"computed":false},"operator":"||","right":{"type":"Literal","value":false}}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"configurable"},"computed":false},"right":{"type":"Literal","value":true}}},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Literal","value":"value"},"operator":"in","right":{"type":"Identifier","name":"descriptor"}},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"writable"},"computed":false},"right":{"type":"Literal","value":true}}},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"target"},{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"key"},"computed":false},{"type":"Identifier","name":"descriptor"}]}}]}}]}},{"type":"ReturnStatement","argument":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"Constructor"},{"type":"Identifier","name":"protoProps"},{"type":"Identifier","name":"staticProps"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"Identifier","name":"protoProps"},"consequent":{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"defineProperties"},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"Constructor"},"property":{"type":"Identifier","name":"prototype"},"computed":false},{"type":"Identifier","name":"protoProps"}]}},"alternate":null},{"type":"IfStatement","test":{"type":"Identifier","name":"staticProps"},"consequent":{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"defineProperties"},"arguments":[{"type":"Identifier","name":"Constructor"},{"type":"Identifier","name":"staticProps"}]}},"alternate":null},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"Constructor"}}]}}}]},"parenthesizedExpression":true},"arguments":[]}}]},"helper-create-decorated-class":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"defineProperties"},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"descriptors"},{"type":"Identifier","name":"initializers"}],"body":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptors"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"descriptor"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptors"},"property":{"type":"Identifier","name":"i"},"computed":true}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"decorators"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"decorators"},"computed":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"key"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"key"},"computed":false}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor","leadingComments":null},"property":{"type":"Identifier","name":"key"},"computed":false,"leadingComments":null},"leadingComments":null}},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"decorators"},"computed":false}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"enumerable"},"computed":false},"right":{"type":"LogicalExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"enumerable"},"computed":false},"operator":"||","right":{"type":"Literal","value":false}}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"configurable"},"computed":false},"right":{"type":"Literal","value":true}}},{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"Literal","value":"value"},"operator":"in","right":{"type":"Identifier","name":"descriptor"}},"operator":"||","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false}},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"writable"},"computed":false},"right":{"type":"Literal","value":true}}},"alternate":null},{"type":"IfStatement","test":{"type":"Identifier","name":"decorators"},"consequent":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"f"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"f"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"decorators"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"f"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"decorator"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"decorators"},"property":{"type":"Identifier","name":"f"},"computed":true}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"decorator"}},"operator":"===","right":{"type":"Literal","value":"function"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"descriptor"},"right":{"type":"LogicalExpression","left":{"type":"CallExpression","callee":{"type":"Identifier","name":"decorator"},"arguments":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptor"}]},"operator":"||","right":{"type":"Identifier","name":"descriptor"}}}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"BinaryExpression","left":{"type":"BinaryExpression","left":{"type":"BinaryExpression","left":{"type":"Literal","value":"The decorator for method "},"operator":"+","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"key"},"computed":false}},"operator":"+","right":{"type":"Literal","value":" is of the invalid type "}},"operator":"+","right":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"decorator"}}}]}}]}}]}},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false},"operator":"!==","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"initializers"},"property":{"type":"Identifier","name":"key"},"computed":true},"right":{"type":"Identifier","name":"descriptor"}}},{"type":"ContinueStatement","label":null}]},"alternate":null}]},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptor"}]}}]}}]}},{"type":"ReturnStatement","argument":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"Constructor"},{"type":"Identifier","name":"protoProps"},{"type":"Identifier","name":"staticProps"},{"type":"Identifier","name":"protoInitializers"},{"type":"Identifier","name":"staticInitializers"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"Identifier","name":"protoProps"},"consequent":{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"defineProperties"},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"Constructor"},"property":{"type":"Identifier","name":"prototype"},"computed":false},{"type":"Identifier","name":"protoProps"},{"type":"Identifier","name":"protoInitializers"}]}},"alternate":null},{"type":"IfStatement","test":{"type":"Identifier","name":"staticProps"},"consequent":{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"defineProperties"},"arguments":[{"type":"Identifier","name":"Constructor"},{"type":"Identifier","name":"staticProps"},{"type":"Identifier","name":"staticInitializers"}]}},"alternate":null},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"Constructor"}}]}}}]},"parenthesizedExpression":true},"arguments":[]}}]},"helper-create-decorated-object":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"descriptors"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"target"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptors"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"descriptor"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptors"},"property":{"type":"Identifier","name":"i"},"computed":true}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"decorators"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"decorators"},"computed":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"key"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"key"},"computed":false}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor","leadingComments":null},"property":{"type":"Identifier","name":"key"},"computed":false,"leadingComments":null},"leadingComments":null}},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"decorators"},"computed":false}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"enumerable"},"computed":false},"right":{"type":"Literal","value":true}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"configurable"},"computed":false},"right":{"type":"Literal","value":true}}},{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"Literal","value":"value"},"operator":"in","right":{"type":"Identifier","name":"descriptor"}},"operator":"||","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false}},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"writable"},"computed":false},"right":{"type":"Literal","value":true}}},"alternate":null},{"type":"IfStatement","test":{"type":"Identifier","name":"decorators"},"consequent":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"f"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"f"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"decorators"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"f"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"decorator"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"decorators"},"property":{"type":"Identifier","name":"f"},"computed":true}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"decorator"}},"operator":"===","right":{"type":"Literal","value":"function"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"descriptor"},"right":{"type":"LogicalExpression","left":{"type":"CallExpression","callee":{"type":"Identifier","name":"decorator"},"arguments":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptor"}]},"operator":"||","right":{"type":"Identifier","name":"descriptor"}}}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"BinaryExpression","left":{"type":"BinaryExpression","left":{"type":"BinaryExpression","left":{"type":"Literal","value":"The decorator for method "},"operator":"+","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"key"},"computed":false}},"operator":"+","right":{"type":"Literal","value":" is of the invalid type "}},"operator":"+","right":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"decorator"}}}]}}]}}]}}]},"alternate":null},{"type":"IfStatement","test":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"value"},"computed":false},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"target"}]}}}]},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptor"}]}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"target"}}]},"parenthesizedExpression":true}}]},"helper-default-props":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"defaultProps"},{"type":"Identifier","name":"props"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"Identifier","name":"defaultProps"},"consequent":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"propName"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"defaultProps"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"props"},"property":{"type":"Identifier","name":"propName"},"computed":true}},"operator":"===","right":{"type":"Literal","value":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"props"},"property":{"type":"Identifier","name":"propName"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"defaultProps"},"property":{"type":"Identifier","name":"propName"},"computed":true}}}]},"alternate":null}]}}]},"alternate":null},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"props"}}]},"parenthesizedExpression":true}}]},"helper-defaults":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"defaults"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"keys"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getOwnPropertyNames"},"computed":false},"arguments":[{"type":"Identifier","name":"defaults"}]}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"keys"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"key"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"keys"},"property":{"type":"Identifier","name":"i"},"computed":true}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"value"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getOwnPropertyDescriptor"},"computed":false},"arguments":[{"type":"Identifier","name":"defaults"},{"type":"Identifier","name":"key"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"LogicalExpression","left":{"type":"Identifier","name":"value"},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"value"},"property":{"type":"Identifier","name":"configurable"},"computed":false}},"operator":"&&","right":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"key"},"computed":true},"operator":"===","right":{"type":"Identifier","name":"undefined"}}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"value"}]}}]},"alternate":null}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"obj"}}]},"parenthesizedExpression":true}}]},"helper-define-decorated-property-descriptor":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptors"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_descriptor"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptors"},"property":{"type":"Identifier","name":"key"},"computed":true}}],"kind":"var"},{"type":"IfStatement","test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"Identifier","name":"_descriptor"}},"consequent":{"type":"ReturnStatement","argument":null,"leadingComments":null,"trailingComments":null},"alternate":null},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"descriptor","leadingComments":null},"init":{"type":"ObjectExpression","properties":[]},"leadingComments":null}],"kind":"var"},{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_key"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"_descriptor"},"body":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"_key"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"_descriptor"},"property":{"type":"Identifier","name":"_key"},"computed":true}},"trailingComments":null}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor","leadingComments":null},"property":{"type":"Identifier","name":"value"},"computed":false,"leadingComments":null},"right":{"type":"ConditionalExpression","test":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false},"consequent":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"descriptor"},"property":{"type":"Identifier","name":"initializer"},"computed":false},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"target"}]},"alternate":{"type":"Identifier","name":"undefined"}},"leadingComments":null}},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"target"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"descriptor"}]}}]},"parenthesizedExpression":true}}]},"helper-define-property":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"key"},{"type":"Identifier","name":"value"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"key","leadingComments":null},"operator":"in","right":{"type":"Identifier","name":"obj"},"leadingComments":null},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperty"},"computed":false},"arguments":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"key"},{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"value"},"value":{"type":"Identifier","name":"value"},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"enumerable"},"value":{"type":"Literal","value":true},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"configurable"},"value":{"type":"Literal","value":true},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"writable"},"value":{"type":"Literal","value":true},"kind":"init"}]}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"key"},"computed":true},"right":{"type":"Identifier","name":"value"}}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"obj"}}]},"parenthesizedExpression":true}}]},"helper-extends":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"LogicalExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"assign"},"computed":false},"operator":"||","right":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"target"}],"body":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":1}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"arguments"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"source"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"arguments"},"property":{"type":"Identifier","name":"i"},"computed":true}}],"kind":"var"},{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"key"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"source"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"hasOwnProperty"},"computed":false},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"source"},{"type":"Identifier","name":"key"}]},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"target"},"property":{"type":"Identifier","name":"key"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"source"},"property":{"type":"Identifier","name":"key"},"computed":true}}}]},"alternate":null}]}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"target"}}]}}}}]},"helper-get":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":{"type":"Identifier","name":"get"},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"object"},{"type":"Identifier","name":"property"},{"type":"Identifier","name":"receiver"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"object"},"operator":"===","right":{"type":"Literal","value":null,"rawValue":null}},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"object"},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"Function"},"property":{"type":"Identifier","name":"prototype"},"computed":false}}},"alternate":null},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"desc"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getOwnPropertyDescriptor"},"computed":false},"arguments":[{"type":"Identifier","name":"object"},{"type":"Identifier","name":"property"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"desc"},"operator":"===","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"parent"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getPrototypeOf"},"computed":false},"arguments":[{"type":"Identifier","name":"object"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"parent"},"operator":"===","right":{"type":"Literal","value":null,"rawValue":null}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"undefined"}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"Identifier","name":"get"},"arguments":[{"type":"Identifier","name":"parent"},{"type":"Identifier","name":"property"},{"type":"Identifier","name":"receiver"}]}}]}}]},"alternate":{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Literal","value":"value"},"operator":"in","right":{"type":"Identifier","name":"desc"}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"desc"},"property":{"type":"Identifier","name":"value"},"computed":false}}]},"alternate":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"getter"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"desc"},"property":{"type":"Identifier","name":"get"},"computed":false}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"getter"},"operator":"===","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"undefined"}}]},"alternate":null},{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"getter"},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"receiver"}]}}]}}}]},"parenthesizedExpression":true}}]},"helper-has-own":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"hasOwnProperty"},"computed":false}}]},"helper-inherits":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"subClass"},{"type":"Identifier","name":"superClass"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"superClass"}},"operator":"!==","right":{"type":"Literal","value":"function"}},"operator":"&&","right":{"type":"BinaryExpression","left":{"type":"Identifier","name":"superClass"},"operator":"!==","right":{"type":"Literal","value":null,"rawValue":null}}},"consequent":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"BinaryExpression","left":{"type":"Literal","value":"Super expression must either be null or a function, not "},"operator":"+","right":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"superClass"}}}]}}]},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"subClass"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"create"},"computed":false},"arguments":[{"type":"LogicalExpression","left":{"type":"Identifier","name":"superClass"},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"superClass"},"property":{"type":"Identifier","name":"prototype"},"computed":false}},{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"constructor"},"value":{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"value"},"value":{"type":"Identifier","name":"subClass"},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"enumerable"},"value":{"type":"Literal","value":false},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"writable"},"value":{"type":"Literal","value":true},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"configurable"},"value":{"type":"Literal","value":true},"kind":"init"}]},"kind":"init"}]}]}}},{"type":"IfStatement","test":{"type":"Identifier","name":"superClass"},"consequent":{"type":"ExpressionStatement","expression":{"type":"ConditionalExpression","test":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"setPrototypeOf"},"computed":false},"consequent":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"setPrototypeOf"},"computed":false},"arguments":[{"type":"Identifier","name":"subClass"},{"type":"Identifier","name":"superClass"}]},"alternate":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"subClass"},"property":{"type":"Identifier","name":"__proto__"},"computed":false},"right":{"type":"Identifier","name":"superClass"}}}},"alternate":null}]},"parenthesizedExpression":true}}]},"helper-instanceof":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"left"},{"type":"Identifier","name":"right"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"Identifier","name":"right"},"operator":"!=","right":{"type":"Literal","value":null,"rawValue":null}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"right"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"hasInstance"},"computed":false},"computed":true}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"right"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"hasInstance"},"computed":false},"computed":true},"arguments":[{"type":"Identifier","name":"left"}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"BinaryExpression","left":{"type":"Identifier","name":"left"},"operator":"instanceof","right":{"type":"Identifier","name":"right"}}}]}}]},"parenthesizedExpression":true}}]},"helper-interop-export-wildcard":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"defaults"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"newObj"},"init":{"type":"CallExpression","callee":{"type":"Identifier","name":"defaults"},"arguments":[{"type":"ObjectExpression","properties":[]},{"type":"Identifier","name":"obj"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"UnaryExpression","operator":"delete","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"newObj"},"property":{"type":"Literal","value":"default"},"computed":true}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"newObj"}}]},"parenthesizedExpression":true}}]},"helper-interop-require-default":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ConditionalExpression","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"obj"},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"__esModule"},"computed":false}},"consequent":{"type":"Identifier","name":"obj"},"alternate":{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Literal","value":"default"},"value":{"type":"Identifier","name":"obj"},"kind":"init"}]}}}]},"parenthesizedExpression":true}}]},"helper-interop-require-wildcard":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"obj"},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"__esModule"},"computed":false}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"obj"}}]},"alternate":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"newObj"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"obj"},"operator":"!=","right":{"type":"Literal","value":null,"rawValue":null}},"consequent":{"type":"BlockStatement","body":[{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"key"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"obj"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"hasOwnProperty"},"computed":false},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"key"}]},"consequent":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"newObj"},"property":{"type":"Identifier","name":"key"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"key"},"computed":true}}},"alternate":null}]}}]},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"newObj"},"property":{"type":"Literal","value":"default"},"computed":true},"right":{"type":"Identifier","name":"obj"}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"newObj"}}]}}]},"parenthesizedExpression":true}}]},"helper-interop-require":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ConditionalExpression","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"obj"},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"__esModule"},"computed":false}},"consequent":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Literal","value":"default"},"computed":true},"alternate":{"type":"Identifier","name":"obj"}}}]},"parenthesizedExpression":true}}]},"helper-new-arrow-check":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"innerThis"},{"type":"Identifier","name":"boundThis"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"innerThis"},"operator":"!==","right":{"type":"Identifier","name":"boundThis"}},"consequent":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"Literal","value":"Cannot instantiate an arrow function"}]}}]},"alternate":null}]},"parenthesizedExpression":true}}]},"helper-object-destructuring-empty":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"obj"},"operator":"==","right":{"type":"Literal","value":null,"rawValue":null}},"consequent":{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"Literal","value":"Cannot destructure undefined"}]}},"alternate":null}]},"parenthesizedExpression":true}}]},"helper-object-without-properties":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"keys"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"target"},"init":{"type":"ObjectExpression","properties":[]}}],"kind":"var"},{"type":"ForInStatement","left":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":null}],"kind":"var"},"right":{"type":"Identifier","name":"obj"},"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"keys"},"property":{"type":"Identifier","name":"indexOf"},"computed":false},"arguments":[{"type":"Identifier","name":"i"}]},"operator":">=","right":{"type":"Literal","value":0}},"consequent":{"type":"ContinueStatement","label":null},"alternate":null},{"type":"IfStatement","test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"hasOwnProperty"},"computed":false},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"obj"},{"type":"Identifier","name":"i"}]}},"consequent":{"type":"ContinueStatement","label":null},"alternate":null},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"target"},"property":{"type":"Identifier","name":"i"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"i"},"computed":true}}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"target"}}]},"parenthesizedExpression":true}}]},"helper-self-global":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"ConditionalExpression","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"global"}},"operator":"===","right":{"type":"Literal","value":"undefined"}},"consequent":{"type":"Identifier","name":"self"},"alternate":{"type":"Identifier","name":"global"}}}]},"helper-set":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":{"type":"Identifier","name":"set"},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"object"},{"type":"Identifier","name":"property"},{"type":"Identifier","name":"value"},{"type":"Identifier","name":"receiver"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"desc"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getOwnPropertyDescriptor"},"computed":false},"arguments":[{"type":"Identifier","name":"object"},{"type":"Identifier","name":"property"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"desc"},"operator":"===","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"parent"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"getPrototypeOf"},"computed":false},"arguments":[{"type":"Identifier","name":"object"}]}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"parent"},"operator":"!==","right":{"type":"Literal","value":null,"rawValue":null}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"set"},"arguments":[{"type":"Identifier","name":"parent"},{"type":"Identifier","name":"property"},{"type":"Identifier","name":"value"},{"type":"Identifier","name":"receiver"}]}}]},"alternate":null}]},"alternate":{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"Literal","value":"value"},"operator":"in","right":{"type":"Identifier","name":"desc"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"desc"},"property":{"type":"Identifier","name":"writable"},"computed":false}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"desc"},"property":{"type":"Identifier","name":"value"},"computed":false},"right":{"type":"Identifier","name":"value"}}}]},"alternate":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"setter"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"desc"},"property":{"type":"Identifier","name":"set"},"computed":false}}],"kind":"var"},{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"setter"},"operator":"!==","right":{"type":"Identifier","name":"undefined"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"setter"},"property":{"type":"Identifier","name":"call"},"computed":false},"arguments":[{"type":"Identifier","name":"receiver"},{"type":"Identifier","name":"value"}]}}]},"alternate":null}]}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"value"}}]},"parenthesizedExpression":true}}]},"helper-slice":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"MemberExpression","object":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"prototype"},"computed":false},"property":{"type":"Identifier","name":"slice"},"computed":false}}]},"helper-sliced-to-array-loose":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"arr"},{"type":"Identifier","name":"i"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"isArray"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"arr"}}]},"alternate":{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"operator":"in","right":{"type":"CallExpression","callee":{"type":"Identifier","name":"Object"},"arguments":[{"type":"Identifier","name":"arr"}]}},"consequent":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_arr"},"init":{"type":"ArrayExpression","elements":[]}}],"kind":"var"},{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_iterator"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"arr"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"computed":true},"arguments":[]}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_step"},"init":null}],"kind":"var"},"test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"MemberExpression","object":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_step"},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"_iterator"},"property":{"type":"Identifier","name":"next"},"computed":false},"arguments":[]},"parenthesizedExpression":true},"property":{"type":"Identifier","name":"done"},"computed":false}},"update":null,"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"_arr"},"property":{"type":"Identifier","name":"push"},"computed":false},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"_step"},"property":{"type":"Identifier","name":"value"},"computed":false}]}},{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"i"},"operator":"&&","right":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"_arr"},"property":{"type":"Identifier","name":"length"},"computed":false},"operator":"===","right":{"type":"Identifier","name":"i"}}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"_arr"}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"Literal","value":"Invalid attempt to destructure non-iterable instance"}]}}]}}}]},"parenthesizedExpression":true}}]},"helper-sliced-to-array":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"sliceIterator","leadingComments":null},"generator":false,"expression":false,"params":[{"type":"Identifier","name":"arr"},{"type":"Identifier","name":"i"}],"body":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_arr","leadingComments":null},"init":{"type":"ArrayExpression","elements":[]},"leadingComments":null}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_n"},"init":{"type":"Literal","value":true}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_d"},"init":{"type":"Literal","value":false}}],"kind":"var"},{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_e"},"init":{"type":"Identifier","name":"undefined"}}],"kind":"var"},{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_i"},"init":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"arr"},"property":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"computed":true},"arguments":[]}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"_s"},"init":null}],"kind":"var"},"test":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_n"},"right":{"type":"MemberExpression","object":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_s"},"right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"_i"},"property":{"type":"Identifier","name":"next"},"computed":false},"arguments":[]},"parenthesizedExpression":true},"property":{"type":"Identifier","name":"done"},"computed":false},"parenthesizedExpression":true}},"update":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_n"},"right":{"type":"Literal","value":true}},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"_arr"},"property":{"type":"Identifier","name":"push"},"computed":false},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"_s"},"property":{"type":"Identifier","name":"value"},"computed":false}]}},{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"i"},"operator":"&&","right":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"_arr"},"property":{"type":"Identifier","name":"length"},"computed":false},"operator":"===","right":{"type":"Identifier","name":"i"}}},"consequent":{"type":"BreakStatement","label":null},"alternate":null}]}}]},"handler":{"type":"CatchClause","param":{"type":"Identifier","name":"err"},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_d"},"right":{"type":"Literal","value":true}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"Identifier","name":"_e"},"right":{"type":"Identifier","name":"err"}}}]}},"guardedHandlers":[],"finalizer":{"type":"BlockStatement","body":[{"type":"TryStatement","block":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"UnaryExpression","operator":"!","prefix":true,"argument":{"type":"Identifier","name":"_n"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"_i"},"property":{"type":"Literal","value":"return"},"computed":true}},"consequent":{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"_i"},"property":{"type":"Literal","value":"return"},"computed":true},"arguments":[]}},"alternate":null}]},"handler":null,"guardedHandlers":[],"finalizer":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"Identifier","name":"_d"},"consequent":{"type":"ThrowStatement","argument":{"type":"Identifier","name":"_e"}},"alternate":null}]}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"_arr"}}]}},{"type":"ReturnStatement","argument":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"arr"},{"type":"Identifier","name":"i"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"isArray"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"arr"}}]},"alternate":{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Identifier","name":"iterator"},"computed":false},"operator":"in","right":{"type":"CallExpression","callee":{"type":"Identifier","name":"Object"},"arguments":[{"type":"Identifier","name":"arr"}]}},"consequent":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"Identifier","name":"sliceIterator"},"arguments":[{"type":"Identifier","name":"arr"},{"type":"Identifier","name":"i"}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"TypeError"},"arguments":[{"type":"Literal","value":"Invalid attempt to destructure non-iterable instance"}]}}]}}}]}}}]},"parenthesizedExpression":true},"arguments":[]}}]},"helper-tagged-template-literal-loose":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"strings"},{"type":"Identifier","name":"raw"}],"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"strings"},"property":{"type":"Identifier","name":"raw"},"computed":false},"right":{"type":"Identifier","name":"raw"}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"strings"}}]},"parenthesizedExpression":true}}]},"helper-tagged-template-literal":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"strings"},{"type":"Identifier","name":"raw"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"freeze"},"computed":false},"arguments":[{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"defineProperties"},"computed":false},"arguments":[{"type":"Identifier","name":"strings"},{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"raw"},"value":{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"value"},"value":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Object"},"property":{"type":"Identifier","name":"freeze"},"computed":false},"arguments":[{"type":"Identifier","name":"raw"}]},"kind":"init"}]},"kind":"init"}]}]}]}}]},"parenthesizedExpression":true}}]},"helper-temporal-assert-defined":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"val"},{"type":"Identifier","name":"name"},{"type":"Identifier","name":"undef"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"val"},"operator":"===","right":{"type":"Identifier","name":"undef"}},"consequent":{"type":"BlockStatement","body":[{"type":"ThrowStatement","argument":{"type":"NewExpression","callee":{"type":"Identifier","name":"ReferenceError"},"arguments":[{"type":"BinaryExpression","left":{"type":"Identifier","name":"name"},"operator":"+","right":{"type":"Literal","value":" is not defined - temporal dead zone"}}]}}]},"alternate":null},{"type":"ReturnStatement","argument":{"type":"Literal","value":true}}]},"parenthesizedExpression":true}}]},"helper-temporal-undefined":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"ObjectExpression","properties":[],"parenthesizedExpression":true}}]},"helper-to-array":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"arr"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ConditionalExpression","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"isArray"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]},"consequent":{"type":"Identifier","name":"arr"},"alternate":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"from"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]}}}]},"parenthesizedExpression":true}}]},"helper-to-consumable-array":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"arr"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"isArray"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]},"consequent":{"type":"BlockStatement","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"i"},"init":{"type":"Literal","value":0}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"arr2"},"init":{"type":"CallExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"arr"},"property":{"type":"Identifier","name":"length"},"computed":false}]}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"i"},"operator":"<","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"arr"},"property":{"type":"Identifier","name":"length"},"computed":false}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"i"}},"body":{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"arr2"},"property":{"type":"Identifier","name":"i"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"arr"},"property":{"type":"Identifier","name":"i"},"computed":true}}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"arr2"}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Array"},"property":{"type":"Identifier","name":"from"},"computed":false},"arguments":[{"type":"Identifier","name":"arr"}]}}]}}]},"parenthesizedExpression":true}}]},"helper-typeof-react-element":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"LogicalExpression","left":{"type":"LogicalExpression","left":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"Symbol"}},"operator":"===","right":{"type":"Literal","value":"function"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Literal","value":"for"},"computed":true}},"operator":"&&","right":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"Symbol"},"property":{"type":"Literal","value":"for"},"computed":true},"arguments":[{"type":"Literal","value":"react.element"}]}},"operator":"||","right":{"type":"Literal","value":60103}}}]},"helper-typeof":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"obj"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ConditionalExpression","test":{"type":"LogicalExpression","left":{"type":"Identifier","name":"obj"},"operator":"&&","right":{"type":"BinaryExpression","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"obj"},"property":{"type":"Identifier","name":"constructor"},"computed":false},"operator":"===","right":{"type":"Identifier","name":"Symbol"}}},"consequent":{"type":"Literal","value":"symbol"},"alternate":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"obj"}}}}]},"parenthesizedExpression":true}}]},"let-scoping-return":{"type":"Program","body":[{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"RETURN"}},"operator":"===","right":{"type":"Literal","value":"object"}},"consequent":{"type":"ReturnStatement","argument":{"type":"MemberExpression","object":{"type":"Identifier","name":"RETURN"},"property":{"type":"Identifier","name":"v"},"computed":false}},"alternate":null}]},"named-function":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"GET_OUTER_ID"},"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"Identifier","name":"FUNCTION_ID"}}]}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"FUNCTION"}}]},"parenthesizedExpression":true},"arguments":[]}}]},"property-method-assignment-wrapper-generator":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"FUNCTION_KEY"}],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"FUNCTION_ID"},"generator":true,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"YieldExpression","delegate":true,"argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_KEY"},"property":{"type":"Identifier","name":"apply"},"computed":false},"arguments":[{"type":"ThisExpression"},{"type":"Identifier","name":"arguments"}]}}}]}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_ID"},"property":{"type":"Identifier","name":"toString"},"computed":false},"right":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_KEY"},"property":{"type":"Identifier","name":"toString"},"computed":false},"arguments":[]}}]}}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"FUNCTION_ID"}}]},"parenthesizedExpression":true},"arguments":[{"type":"Identifier","name":"FUNCTION"}]}}]},"property-method-assignment-wrapper":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"FUNCTION_KEY"}],"body":{"type":"BlockStatement","body":[{"type":"FunctionDeclaration","id":{"type":"Identifier","name":"FUNCTION_ID"},"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_KEY"},"property":{"type":"Identifier","name":"apply"},"computed":false},"arguments":[{"type":"ThisExpression"},{"type":"Identifier","name":"arguments"}]}}]}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_ID"},"property":{"type":"Identifier","name":"toString"},"computed":false},"right":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"FUNCTION_KEY"},"property":{"type":"Identifier","name":"toString"},"computed":false},"arguments":[]}}]}}}},{"type":"ReturnStatement","argument":{"type":"Identifier","name":"FUNCTION_ID"}}]},"parenthesizedExpression":true},"arguments":[{"type":"Identifier","name":"FUNCTION"}]}}]},"prototype-identifier":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"MemberExpression","object":{"type":"Identifier","name":"CLASS_NAME"},"property":{"type":"Identifier","name":"prototype"},"computed":false}}]},"require-assign-key":{"type":"Program","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"VARIABLE_NAME"},"init":{"type":"MemberExpression","object":{"type":"CallExpression","callee":{"type":"Identifier","name":"require"},"arguments":[{"type":"Identifier","name":"MODULE_NAME"}]},"property":{"type":"Identifier","name":"KEY"},"computed":false}}],"kind":"var"}]},"require":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"require"},"arguments":[{"type":"Identifier","name":"MODULE_NAME"}]}}]},"rest":{"type":"Program","body":[{"type":"ForStatement","init":{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"LEN"},"init":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARGUMENTS"},"property":{"type":"Identifier","name":"length"},"computed":false}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"ARRAY"},"init":{"type":"CallExpression","callee":{"type":"Identifier","name":"Array"},"arguments":[{"type":"Identifier","name":"ARRAY_LEN"}]}},{"type":"VariableDeclarator","id":{"type":"Identifier","name":"KEY"},"init":{"type":"Identifier","name":"START"}}],"kind":"var"},"test":{"type":"BinaryExpression","left":{"type":"Identifier","name":"KEY"},"operator":"<","right":{"type":"Identifier","name":"LEN"}},"update":{"type":"UpdateExpression","operator":"++","prefix":false,"argument":{"type":"Identifier","name":"KEY"}},"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARRAY"},"property":{"type":"Identifier","name":"ARRAY_KEY"},"computed":true},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"ARGUMENTS"},"property":{"type":"Identifier","name":"KEY"},"computed":true}}}]}}]},"self-contained-helpers-head":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"exports"},"property":{"type":"Literal","value":"default"},"computed":true},"right":{"type":"Identifier","name":"HELPER"}}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"exports"},"property":{"type":"Identifier","name":"__esModule"},"computed":false},"right":{"type":"Literal","value":true}}}]},"system":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"MemberExpression","object":{"type":"Identifier","name":"System"},"property":{"type":"Identifier","name":"register"},"computed":false},"arguments":[{"type":"Identifier","name":"MODULE_NAME"},{"type":"Identifier","name":"MODULE_DEPENDENCIES"},{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"EXPORT_IDENTIFIER"}],"body":{"type":"BlockStatement","body":[{"type":"ReturnStatement","argument":{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"setters"},"value":{"type":"Identifier","name":"SETTERS"},"kind":"init"},{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"execute"},"value":{"type":"Identifier","name":"EXECUTE"},"kind":"init"}]}}]}}]}}]},"tail-call-body":{"type":"Program","body":[{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"AGAIN_ID"},"init":{"type":"Literal","value":true}}],"kind":"var"},{"type":"LabeledStatement","body":{"type":"WhileStatement","test":{"type":"Identifier","name":"AGAIN_ID"},"body":{"type":"ExpressionStatement","expression":{"type":"Identifier","name":"BLOCK"}}},"label":{"type":"Identifier","name":"FUNCTION_ID"}}]}]},"test-exports":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"exports"}},"operator":"!==","right":{"type":"Literal","value":"undefined"}}}]},"test-module":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"module"}},"operator":"!==","right":{"type":"Literal","value":"undefined"}}}]},"umd-commonjs-strict":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"root"},{"type":"Identifier","name":"factory"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"define"}},"operator":"===","right":{"type":"Literal","value":"function"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"define"},"property":{"type":"Identifier","name":"amd"},"computed":false}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"define"},"arguments":[{"type":"Identifier","name":"AMD_ARGUMENTS"},{"type":"Identifier","name":"factory"}]}}]},"alternate":{"type":"IfStatement","test":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"exports"}},"operator":"===","right":{"type":"Literal","value":"object"}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"factory"},"arguments":[{"type":"Identifier","name":"COMMON_ARGUMENTS"}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"factory"},"arguments":[{"type":"Identifier","name":"BROWSER_ARGUMENTS"}]}}]}}}]},"parenthesizedExpression":true},"arguments":[{"type":"Identifier","name":"UMD_ROOT"},{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"FACTORY_PARAMETERS"}],"body":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"Identifier","name":"FACTORY_BODY"}}]}}]}}]},"umd-runner-body":{"type":"Program","body":[{"type":"ExpressionStatement","expression":{"type":"FunctionExpression","id":null,"generator":false,"expression":false,"params":[{"type":"Identifier","name":"global"},{"type":"Identifier","name":"factory"}],"body":{"type":"BlockStatement","body":[{"type":"IfStatement","test":{"type":"LogicalExpression","left":{"type":"BinaryExpression","left":{"type":"UnaryExpression","operator":"typeof","prefix":true,"argument":{"type":"Identifier","name":"define"}},"operator":"===","right":{"type":"Literal","value":"function"}},"operator":"&&","right":{"type":"MemberExpression","object":{"type":"Identifier","name":"define"},"property":{"type":"Identifier","name":"amd"},"computed":false}},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"define"},"arguments":[{"type":"Identifier","name":"AMD_ARGUMENTS"},{"type":"Identifier","name":"factory"}]}}]},"alternate":{"type":"IfStatement","test":{"type":"Identifier","name":"COMMON_TEST"},"consequent":{"type":"BlockStatement","body":[{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"factory"},"arguments":[{"type":"Identifier","name":"COMMON_ARGUMENTS"}]}}]},"alternate":{"type":"BlockStatement","body":[{"type":"VariableDeclaration","declarations":[{"type":"VariableDeclarator","id":{"type":"Identifier","name":"mod"},"init":{"type":"ObjectExpression","properties":[{"type":"Property","method":false,"shorthand":false,"computed":false,"key":{"type":"Identifier","name":"exports"},"value":{"type":"ObjectExpression","properties":[]},"kind":"init"}]}}],"kind":"var"},{"type":"ExpressionStatement","expression":{"type":"CallExpression","callee":{"type":"Identifier","name":"factory"},"arguments":[{"type":"MemberExpression","object":{"type":"Identifier","name":"mod"},"property":{"type":"Identifier","name":"exports"},"computed":false},{"type":"Identifier","name":"BROWSER_ARGUMENTS"}]}},{"type":"ExpressionStatement","expression":{"type":"AssignmentExpression","operator":"=","left":{"type":"MemberExpression","object":{"type":"Identifier","name":"global"},"property":{"type":"Identifier","name":"GLOBAL_ARG"},"computed":false},"right":{"type":"MemberExpression","object":{"type":"Identifier","name":"mod"},"property":{"type":"Identifier","name":"exports"},"computed":false}}}]}}}]},"parenthesizedExpression":true}}]}} +},{}],612:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +exports.parse = parse; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _parser = _dereq_(616); + +var _parser2 = _interopRequireDefault(_parser); + +_dereq_(621); + +_dereq_(620); + +_dereq_(618); + +_dereq_(615); + +_dereq_(619); + +_dereq_(617); + +_dereq_(614); + +var _tokenizerTypes = _dereq_(628); + +_dereq_(626); + +_dereq_(625); + +var _pluginsFlow = _dereq_(622); + +var _pluginsFlow2 = _interopRequireDefault(_pluginsFlow); + +var _pluginsJsx = _dereq_(623); + +var _pluginsJsx2 = _interopRequireDefault(_pluginsJsx); + +_parser.plugins.flow = _pluginsFlow2["default"]; +_parser.plugins.jsx = _pluginsJsx2["default"]; + +function parse(input, options) { + return new _parser2["default"](options, input).parse(); +} + +exports.tokTypes = _tokenizerTypes.types; +},{"614":614,"615":615,"616":616,"617":617,"618":618,"619":619,"620":620,"621":621,"622":622,"623":623,"625":625,"626":626,"628":628}],613:[function(_dereq_,module,exports){ +// A second optional argument can be given to further configure +// the parser process. These options are recognized: + +"use strict"; + +exports.__esModule = true; +exports.getOptions = getOptions; +var defaultOptions = { + // Source type ("script" or "module") for different semantics + sourceType: "script", + // By default, reserved words are not enforced. Disable + // `allowReserved` to enforce them. When this option has the + // value "never", reserved words and keywords can also not be + // used as property names. + allowReserved: true, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program. + allowImportExportEverywhere: false, + plugins: {}, + // Babel-specific options + features: {}, + strictMode: null +}; + +exports.defaultOptions = defaultOptions; +// Interpret and default an options object + +function getOptions(opts) { + var options = {}; + for (var key in defaultOptions) { + options[key] = opts && key in opts ? opts[key] : defaultOptions[key]; + } + return options; +} +},{}],614:[function(_dereq_,module,exports){ +/** + * Based on the comment attachment algorithm used in espree and estraverse. + * + * 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. + * + * 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 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. + */ + +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +function last(stack) { + return stack[stack.length - 1]; +} + +var pp = _index2["default"].prototype; + +pp.addComment = function (comment) { + this.state.trailingComments.push(comment); + this.state.leadingComments.push(comment); +}; + +pp.processComment = function (node) { + if (node.type === "Program" && node.body.length > 0) return; + + var stack = this.state.commentStack; + + var lastChild, trailingComments, i; + + if (this.state.trailingComments.length > 0) { + // If the first comment in trailingComments comes after the + // current node, then we're good - all comments in the array will + // come after the node and so it's safe to add them as official + // trailingComments. + if (this.state.trailingComments[0].start >= node.end) { + trailingComments = this.state.trailingComments; + this.state.trailingComments = []; + } else { + // Otherwise, if the first comment doesn't come after the + // current node, that means we have a mix of leading and trailing + // comments in the array and that leadingComments contains the + // same items as trailingComments. Reset trailingComments to + // zero items and we'll handle this by evaluating leadingComments + // later. + this.state.trailingComments.length = 0; + } + } else { + var lastInStack = last(stack); + if (stack.length > 0 && lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) { + trailingComments = lastInStack.trailingComments; + lastInStack.trailingComments = null; + } + } + + // Eating the stack. + while (stack.length > 0 && last(stack).start >= node.start) { + lastChild = stack.pop(); + } + + if (lastChild) { + if (lastChild.leadingComments) { + if (lastChild !== node && last(lastChild.leadingComments).end <= node.start) { + node.leadingComments = lastChild.leadingComments; + lastChild.leadingComments = null; + } else { + // A leading comment for an anonymous class had been stolen by its first MethodDefinition, + // so this takes back the leading comment. + // See also: https://github.com/eslint/espree/issues/158 + for (i = lastChild.leadingComments.length - 2; i >= 0; --i) { + if (lastChild.leadingComments[i].end <= node.start) { + node.leadingComments = lastChild.leadingComments.splice(0, i + 1); + break; + } + } + } + } + } else if (this.state.leadingComments.length > 0) { + if (last(this.state.leadingComments).end <= node.start) { + node.leadingComments = this.state.leadingComments; + this.state.leadingComments = []; + } else { + // https://github.com/eslint/espree/issues/2 + // + // In special cases, such as return (without a value) and + // debugger, all comments will end up as leadingComments and + // will otherwise be eliminated. This step runs when the + // commentStack is empty and there are comments left + // in leadingComments. + // + // This loop figures out the stopping point between the actual + // leading and trailing comments by finding the location of the + // first comment that comes after the given node. + for (i = 0; i < this.state.leadingComments.length; i++) { + if (this.state.leadingComments[i].end > node.start) { + break; + } + } + + // Split the array based on the location of the first comment + // that comes after the node. Keep in mind that this could + // result in an empty array, and if so, the array must be + // deleted. + node.leadingComments = this.state.leadingComments.slice(0, i); + if (node.leadingComments.length === 0) { + node.leadingComments = null; + } + + // Similarly, trailing comments are attached later. The variable + // must be reset to null if there are no trailing comments. + trailingComments = this.state.leadingComments.slice(i); + if (trailingComments.length === 0) { + trailingComments = null; + } + } + } + + if (trailingComments) { + if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) { + node.innerComments = trailingComments; + } else { + node.trailingComments = trailingComments; + } + } + + stack.push(node); +}; +},{"616":616}],615:[function(_dereq_,module,exports){ +// A recursive descent parser operates by defining functions for all +// syntactic elements, and recursively calling those, each function +// advancing the input stream and returning an AST node. Precedence +// of constructs (for example, the fact that `!x[1]` means `!(x[1])` +// instead of `(!x)[1]` is handled by the fact that the parser +// function that parses unary prefix operators is called first, and +// in turn calls the function that parses `[]` subscripts — that +// way, it'll receive the node for `x[1]` already parsed, and wraps +// *that* in the unary operator node. +// +// Acorn uses an [operator precedence parser][opp] to handle binary +// operator precedence, because it is much more compact than using +// the technique outlined above, which uses different, nesting +// functions to specify precedence, for all of the ten binary +// precedence levels that JavaScript defines. +// +// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser + +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _tokenizerTypes = _dereq_(628); + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var _utilIdentifier = _dereq_(629); + +var pp = _index2["default"].prototype; + +// Check if property name clashes with already added. +// Object/class getters and setters are not allowed to clash — +// either with each other or with an init property — and in +// strict mode, init properties are also not allowed to be repeated. + +pp.checkPropClash = function (prop, propHash) { + if (prop.computed || prop.method || prop.shorthand) return; + + var key = prop.key, + name = undefined; + switch (key.type) { + case "Identifier": + name = key.name;break; + case "Literal": + name = String(key.value);break; + default: + return; + } + + var kind = prop.kind; + if (name === "__proto__" && kind === "init") { + if (propHash.proto) this.raise(key.start, "Redefinition of __proto__ property"); + propHash.proto = true; + } +}; + +// ### Expression parsing + +// These nest, from the most general expression type at the top to +// 'atomic', nondivisible expression types at the bottom. Most of +// the functions will simply let the function (s) below them parse, +// and, *if* the syntactic construct they handle is present, wrap +// the AST node that the inner parser gave them in another node. + +// Parse a full expression. The optional arguments are used to +// forbid the `in` operator (in for loops initalization expressions) +// and provide reference for storing '=' operator inside shorthand +// property assignment in contexts where both object expression +// and object pattern might appear (so it's possible to raise +// delayed syntax error at correct position). + +pp.parseExpression = function (noIn, refShorthandDefaultPos) { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos); + if (this.match(_tokenizerTypes.types.comma)) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(_tokenizerTypes.types.comma)) { + node.expressions.push(this.parseMaybeAssign(noIn, refShorthandDefaultPos)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; +}; + +// Parse an assignment expression. This includes applications of +// operators like `+=`. + +pp.parseMaybeAssign = function (noIn, refShorthandDefaultPos, afterLeftParse) { + if (this.match(_tokenizerTypes.types._yield) && this.state.inGenerator) { + return this.parseYield(); + } + + var failOnShorthandAssign = undefined; + if (!refShorthandDefaultPos) { + refShorthandDefaultPos = { start: 0 }; + failOnShorthandAssign = true; + } else { + failOnShorthandAssign = false; + } + var startPos = this.state.start, + startLoc = this.state.startLoc; + if (this.match(_tokenizerTypes.types.parenL) || this.match(_tokenizerTypes.types.name)) { + this.state.potentialArrowAt = this.state.start; + } + var left = this.parseMaybeConditional(noIn, refShorthandDefaultPos); + if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc); + if (this.state.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.state.value; + node.left = this.match(_tokenizerTypes.types.eq) ? this.toAssignable(left) : left; + refShorthandDefaultPos.start = 0; // reset because shorthand default was used correctly + this.checkLVal(left); + if (left.parenthesizedExpression) { + var errorMsg = undefined; + if (left.type === "ObjectPattern") { + errorMsg = "`({a}) = 0` use `({a} = 0)`"; + } else if (left.type === "ArrayPattern") { + errorMsg = "`([a]) = 0` use `([a] = 0)`"; + } + if (errorMsg) { + this.raise(left.start, "You're trying to assign to a parenthesized expression, eg. instead of " + errorMsg); + } + } + this.next(); + node.right = this.parseMaybeAssign(noIn); + return this.finishNode(node, "AssignmentExpression"); + } else if (failOnShorthandAssign && refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + return left; +}; + +// Parse a ternary conditional (`?:`) operator. + +pp.parseMaybeConditional = function (noIn, refShorthandDefaultPos) { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var expr = this.parseExprOps(noIn, refShorthandDefaultPos); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr; + if (this.eat(_tokenizerTypes.types.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(_tokenizerTypes.types.colon); + node.alternate = this.parseMaybeAssign(noIn); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; +}; + +// Start the precedence parser. + +pp.parseExprOps = function (noIn, refShorthandDefaultPos) { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var expr = this.parseMaybeUnary(refShorthandDefaultPos); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) { + return expr; + } else { + return this.parseExprOp(expr, startPos, startLoc, -1, noIn); + } +}; + +// Parse binary operators with the operator precedence parsing +// algorithm. `left` is the left-hand side of the operator. +// `minPrec` provides context that allows the function to stop and +// defer further parser to one of its callers when it encounters an +// operator that has a lower precedence than the set it is parsing. + +pp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) { + var prec = this.state.type.binop; + if (prec != null && (!noIn || !this.match(_tokenizerTypes.types._in))) { + if (prec > minPrec) { + var node = this.startNodeAt(leftStartPos, leftStartLoc); + node.left = left; + node.operator = this.state.value; + var op = this.state.type; + this.next(); + var startPos = this.state.start, + startLoc = this.state.startLoc; + node.right = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn); + this.finishNode(node, op === _tokenizerTypes.types.logicalOR || op === _tokenizerTypes.types.logicalAND ? "LogicalExpression" : "BinaryExpression"); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn); + } + } + return left; +}; + +// Parse unary operators, both prefix and postfix. + +pp.parseMaybeUnary = function (refShorthandDefaultPos) { + if (this.state.type.prefix) { + var node = this.startNode(), + update = this.match(_tokenizerTypes.types.incDec); + node.operator = this.state.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) this.unexpected(refShorthandDefaultPos.start); + if (update) { + this.checkLVal(node.argument); + } else if (this.strict && node.operator === "delete" && node.argument.type === "Identifier") { + this.raise(node.start, "Deleting local variable in strict mode"); + } + return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } + + var startPos = this.state.start, + startLoc = this.state.startLoc; + var expr = this.parseExprSubscripts(refShorthandDefaultPos); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr; + while (this.state.type.postfix && !this.canInsertSemicolon()) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.checkLVal(expr); + this.next(); + expr = this.finishNode(node, "UpdateExpression"); + } + return expr; +}; + +// Parse call, dot, and `[]`-subscript expressions. + +pp.parseExprSubscripts = function (refShorthandDefaultPos) { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var expr = this.parseExprAtom(refShorthandDefaultPos); + if (refShorthandDefaultPos && refShorthandDefaultPos.start) { + return expr; + } else { + return this.parseSubscripts(expr, startPos, startLoc); + } +}; + +pp.parseSubscripts = function (base, startPos, startLoc, noCalls) { + for (;;) { + if (!noCalls && this.eat(_tokenizerTypes.types.doubleColon)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.callee = this.parseNoCallExpr(); + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls); + } else if (this.eat(_tokenizerTypes.types.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = this.parseIdent(true); + node.computed = false; + base = this.finishNode(node, "MemberExpression"); + } else if (this.eat(_tokenizerTypes.types.bracketL)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = this.parseExpression(); + node.computed = true; + this.expect(_tokenizerTypes.types.bracketR); + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.match(_tokenizerTypes.types.parenL)) { + var possibleAsync = base.type === "Identifier" && base.name === "async" && !this.canInsertSemicolon(); + this.next(); + + var node = this.startNodeAt(startPos, startLoc); + node.callee = base; + node.arguments = this.parseExprList(_tokenizerTypes.types.parenR, this.options.features["es7.trailingFunctionCommas"]); + base = this.finishNode(node, "CallExpression"); + + if (possibleAsync && (this.match(_tokenizerTypes.types.colon) || this.match(_tokenizerTypes.types.arrow))) { + base = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node); + } else { + this.toReferencedList(node.arguments); + } + } else if (this.match(_tokenizerTypes.types.backQuote)) { + var node = this.startNodeAt(startPos, startLoc); + node.tag = base; + node.quasi = this.parseTemplate(); + base = this.finishNode(node, "TaggedTemplateExpression"); + } else { + return base; + } + } +}; + +pp.parseAsyncArrowFromCallExpression = function (node, call) { + if (!this.options.features["es7.asyncFunctions"]) this.unexpected(); + this.expect(_tokenizerTypes.types.arrow); + return this.parseArrowExpression(node, call.arguments, true); +}; + +// Parse a no-call expression (like argument of `new` or `::` operators). + +pp.parseNoCallExpr = function () { + var startPos = this.state.start, + startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); +}; + +// Parse an atomic expression — either a single token that is an +// expression, an expression started by a keyword like `function` or +// `new`, or an expression wrapped in punctuation like `()`, `[]`, +// or `{}`. + +pp.parseExprAtom = function (refShorthandDefaultPos) { + var node = undefined, + canBeArrow = this.state.potentialArrowAt === this.state.start; + switch (this.state.type) { + case _tokenizerTypes.types._super: + if (!this.state.inFunction) this.raise(this.state.start, "'super' outside of function or class"); + case _tokenizerTypes.types._this: + var type = this.match(_tokenizerTypes.types._this) ? "ThisExpression" : "Super"; + node = this.startNode(); + this.next(); + return this.finishNode(node, type); + + case _tokenizerTypes.types._yield: + if (this.state.inGenerator) this.unexpected(); + + case _tokenizerTypes.types._do: + if (this.options.features["es7.doExpressions"]) { + var _node = this.startNode(); + this.next(); + var oldInFunction = this.state.inFunction; + var oldLabels = this.state.labels; + this.state.labels = []; + this.state.inFunction = false; + _node.body = this.parseBlock(); + this.state.inFunction = oldInFunction; + this.state.labels = oldLabels; + return this.finishNode(_node, "DoExpression"); + } + + case _tokenizerTypes.types.name: + node = this.startNode(); + var id = this.parseIdent(true); + + if (this.options.features["es7.asyncFunctions"]) { + if (id.name === "await") { + if (this.inAsync) return this.parseAwait(node); + } else if (id.name === "async" && this.match(_tokenizerTypes.types._function) && !this.canInsertSemicolon()) { + this.next(); + return this.parseFunction(node, false, false, true); + } else if (canBeArrow && id.name === "async" && this.match(_tokenizerTypes.types.name)) { + var params = [this.parseIdent()]; + this.expect(_tokenizerTypes.types.arrow); + // var foo = bar => {}; + return this.parseArrowExpression(node, params, true); + } + } + + if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokenizerTypes.types.arrow)) { + return this.parseArrowExpression(node, [id]); + } + + return id; + + case _tokenizerTypes.types.regexp: + var value = this.state.value; + node = this.parseLiteral(value.value); + node.regex = { pattern: value.pattern, flags: value.flags }; + return node; + + case _tokenizerTypes.types.num:case _tokenizerTypes.types.string: + return this.parseLiteral(this.state.value); + + case _tokenizerTypes.types._null:case _tokenizerTypes.types._true:case _tokenizerTypes.types._false: + node = this.startNode(); + node.rawValue = node.value = this.match(_tokenizerTypes.types._null) ? null : this.match(_tokenizerTypes.types._true); + node.raw = this.state.type.keyword; + this.next(); + return this.finishNode(node, "Literal"); + + case _tokenizerTypes.types.parenL: + return this.parseParenAndDistinguishExpression(null, null, canBeArrow); + + case _tokenizerTypes.types.bracketL: + node = this.startNode(); + this.next(); + // check whether this is array comprehension or regular array + if (this.options.features["es7.comprehensions"] && this.match(_tokenizerTypes.types._for)) { + return this.parseComprehension(node, false); + } + node.elements = this.parseExprList(_tokenizerTypes.types.bracketR, true, true, refShorthandDefaultPos); + this.toReferencedList(node.elements); + return this.finishNode(node, "ArrayExpression"); + + case _tokenizerTypes.types.braceL: + return this.parseObj(false, refShorthandDefaultPos); + + case _tokenizerTypes.types._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, false); + + case _tokenizerTypes.types.at: + this.parseDecorators(); + + case _tokenizerTypes.types._class: + node = this.startNode(); + this.takeDecorators(node); + return this.parseClass(node, false); + + case _tokenizerTypes.types._new: + return this.parseNew(); + + case _tokenizerTypes.types.backQuote: + return this.parseTemplate(); + + case _tokenizerTypes.types.doubleColon: + node = this.startNode(); + this.next(); + node.object = null; + var callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + this.raise(callee.start, "Binding should be performed on object property."); + } + + default: + this.unexpected(); + } +}; + +pp.parseLiteral = function (value) { + var node = this.startNode(); + node.rawValue = node.value = value; + node.raw = this.input.slice(this.state.start, this.state.end); + this.next(); + return this.finishNode(node, "Literal"); +}; + +pp.parseParenExpression = function () { + this.expect(_tokenizerTypes.types.parenL); + var val = this.parseExpression(); + this.expect(_tokenizerTypes.types.parenR); + return val; +}; + +pp.parseParenAndDistinguishExpression = function (startPos, startLoc, canBeArrow, isAsync) { + startPos = startPos || this.state.start; + startLoc = startLoc || this.state.startLoc; + var val = undefined; + this.next(); + + if (this.options.features["es7.comprehensions"] && this.match(_tokenizerTypes.types._for)) { + return this.parseComprehension(this.startNodeAt(startPos, startLoc), true); + } + + var innerStartPos = this.state.start, + innerStartLoc = this.state.startLoc; + var exprList = [], + first = true; + var refShorthandDefaultPos = { start: 0 }, + spreadStart = undefined, + innerParenStart = undefined, + optionalCommaStart = undefined; + while (!this.match(_tokenizerTypes.types.parenR)) { + if (first) { + first = false; + } else { + this.expect(_tokenizerTypes.types.comma); + if (this.match(_tokenizerTypes.types.parenR) && this.options.features["es7.trailingFunctionCommas"]) { + optionalCommaStart = this.state.start; + break; + } + } + + if (this.match(_tokenizerTypes.types.ellipsis)) { + var spreadNodeStartPos = this.state.start, + spreadNodeStartLoc = this.state.startLoc; + spreadStart = this.state.start; + exprList.push(this.parseParenItem(this.parseRest(), spreadNodeStartLoc, spreadNodeStartPos)); + break; + } else { + if (this.match(_tokenizerTypes.types.parenL) && !innerParenStart) { + innerParenStart = this.state.start; + } + exprList.push(this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem)); + } + } + var innerEndPos = this.state.start; + var innerEndLoc = this.state.startLoc; + this.expect(_tokenizerTypes.types.parenR); + + if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokenizerTypes.types.arrow)) { + if (innerParenStart) this.unexpected(innerParenStart); + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, isAsync); + } + + if (!exprList.length) { + if (isAsync) { + return; + } else { + this.unexpected(this.state.lastTokStart); + } + } + if (optionalCommaStart) this.unexpected(optionalCommaStart); + if (spreadStart) this.unexpected(spreadStart); + if (refShorthandDefaultPos.start) this.unexpected(refShorthandDefaultPos.start); + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.toReferencedList(val.expressions); + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + + val.parenthesizedExpression = true; + return val; +}; + +pp.parseParenItem = function (node) { + return node; +}; + +// New's precedence is slightly tricky. It must allow its argument +// to be a `[]` or dot subscript expression, but not a call — at +// least, not without wrapping it in parentheses. Thus, it uses the + +pp.parseNew = function () { + var node = this.startNode(); + var meta = this.parseIdent(true); + + if (this.eat(_tokenizerTypes.types.dot)) { + node.meta = meta; + node.property = this.parseIdent(true); + + if (node.property.name !== "target") { + this.raise(node.property.start, "The only valid meta property for new is new.target"); + } + + return this.finishNode(node, "MetaProperty"); + } + + node.callee = this.parseNoCallExpr(); + + if (this.eat(_tokenizerTypes.types.parenL)) { + node.arguments = this.parseExprList(_tokenizerTypes.types.parenR, this.options.features["es7.trailingFunctionCommas"]); + this.toReferencedList(node.arguments); + } else { + node.arguments = []; + } + + return this.finishNode(node, "NewExpression"); +}; + +// Parse template expression. + +pp.parseTemplateElement = function () { + var elem = this.startNode(); + elem.value = { + raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"), + cooked: this.state.value + }; + this.next(); + elem.tail = this.match(_tokenizerTypes.types.backQuote); + return this.finishNode(elem, "TemplateElement"); +}; + +pp.parseTemplate = function () { + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement(); + node.quasis = [curElt]; + while (!curElt.tail) { + this.expect(_tokenizerTypes.types.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(_tokenizerTypes.types.braceR); + node.quasis.push(curElt = this.parseTemplateElement()); + } + this.next(); + return this.finishNode(node, "TemplateLiteral"); +}; + +// Parse an object literal or binding pattern. + +pp.parseObj = function (isPattern, refShorthandDefaultPos) { + var node = this.startNode(), + first = true, + propHash = Object.create(null); + node.properties = []; + var decorators = []; + this.next(); + while (!this.eat(_tokenizerTypes.types.braceR)) { + if (first) { + first = false; + } else { + this.expect(_tokenizerTypes.types.comma); + if (this.eat(_tokenizerTypes.types.braceR)) break; + } + + while (this.match(_tokenizerTypes.types.at)) { + decorators.push(this.parseDecorator()); + } + + var prop = this.startNode(), + isGenerator = false, + isAsync = false, + startPos = undefined, + startLoc = undefined; + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + if (this.options.features["es7.objectRestSpread"] && this.match(_tokenizerTypes.types.ellipsis)) { + prop = this.parseSpread(); + prop.type = "SpreadProperty"; + node.properties.push(prop); + continue; + } + prop.method = false; + prop.shorthand = false; + if (isPattern || refShorthandDefaultPos) { + startPos = this.state.start; + startLoc = this.state.startLoc; + } + if (!isPattern) { + isGenerator = this.eat(_tokenizerTypes.types.star); + } + if (!isPattern && this.options.features["es7.asyncFunctions"] && this.isContextual("async")) { + if (isGenerator) this.unexpected(); + var asyncId = this.parseIdent(); + if (this.match(_tokenizerTypes.types.colon) || this.match(_tokenizerTypes.types.parenL) || this.match(_tokenizerTypes.types.braceR)) { + prop.key = asyncId; + } else { + isAsync = true; + this.parsePropertyName(prop); + } + } else { + this.parsePropertyName(prop); + } + this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos); + this.checkPropClash(prop, propHash); + node.properties.push(this.finishNode(prop, "Property")); + } + if (decorators.length) { + this.raise(this.state.start, "You have trailing decorators with no property"); + } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression"); +}; + +pp.parseObjPropValue = function (prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos) { + if (this.eat(_tokenizerTypes.types.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refShorthandDefaultPos); + prop.kind = "init"; + } else if (this.match(_tokenizerTypes.types.parenL)) { + if (isPattern) this.unexpected(); + prop.kind = "init"; + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + } else if (!prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && !this.match(_tokenizerTypes.types.comma) && !this.match(_tokenizerTypes.types.braceR)) { + if (isGenerator || isAsync || isPattern) this.unexpected(); + prop.kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") this.raise(start, "getter should have no params");else this.raise(start, "setter should have exactly one param"); + } + } else if (!prop.computed && prop.key.type === "Identifier") { + prop.kind = "init"; + if (isPattern) { + if (this.isKeyword(prop.key.name) || this.strict && (_utilIdentifier.reservedWords.strictBind(prop.key.name) || _utilIdentifier.reservedWords.strict(prop.key.name)) || !this.options.allowReserved && this.isReservedWord(prop.key.name)) this.raise(prop.key.start, "Binding " + prop.key.name); + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone()); + } else if (this.match(_tokenizerTypes.types.eq) && refShorthandDefaultPos) { + if (!refShorthandDefaultPos.start) refShorthandDefaultPos.start = this.state.start; + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone()); + } else { + prop.value = prop.key.__clone(); + } + prop.shorthand = true; + } else { + this.unexpected(); + } +}; + +pp.parsePropertyName = function (prop) { + if (this.eat(_tokenizerTypes.types.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(_tokenizerTypes.types.bracketR); + return prop.key; + } else { + prop.computed = false; + return prop.key = this.match(_tokenizerTypes.types.num) || this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.parseIdent(true); + } +}; + +// Initialize empty function node. + +pp.initFunction = function (node, isAsync) { + node.id = null; + node.generator = false; + node.expression = false; + if (this.options.features["es7.asyncFunctions"]) { + node.async = !!isAsync; + } +}; + +// Parse object or class method. + +pp.parseMethod = function (isGenerator, isAsync) { + var node = this.startNode(); + this.initFunction(node, isAsync); + this.expect(_tokenizerTypes.types.parenL); + node.params = this.parseBindingList(_tokenizerTypes.types.parenR, false, this.options.features["es7.trailingFunctionCommas"]); + node.generator = isGenerator; + this.parseFunctionBody(node); + return this.finishNode(node, "FunctionExpression"); +}; + +// Parse arrow function expression with given parameters. + +pp.parseArrowExpression = function (node, params, isAsync) { + this.initFunction(node, isAsync); + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true); + return this.finishNode(node, "ArrowFunctionExpression"); +}; + +// Parse function body and check parameters. + +pp.parseFunctionBody = function (node, allowExpression) { + var isExpression = allowExpression && !this.match(_tokenizerTypes.types.braceL); + + var oldInAsync = this.inAsync; + this.inAsync = node.async; + if (isExpression) { + node.body = this.parseMaybeAssign(); + node.expression = true; + } else { + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldInFunc = this.state.inFunction, + oldInGen = this.state.inGenerator, + oldLabels = this.state.labels; + this.state.inFunction = true;this.state.inGenerator = node.generator;this.state.labels = []; + node.body = this.parseBlock(true); + node.expression = false; + this.state.inFunction = oldInFunc;this.state.inGenerator = oldInGen;this.state.labels = oldLabels; + } + this.inAsync = oldInAsync; + + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (this.strict || !isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) { + var nameHash = Object.create(null), + oldStrict = this.strict; + this.strict = true; + if (node.id) { + this.checkLVal(node.id, true); + } + var _arr = node.params; + for (var _i = 0; _i < _arr.length; _i++) { + var param = _arr[_i]; + this.checkLVal(param, true, nameHash); + } + this.strict = oldStrict; + } +}; + +// Parses a comma-separated list of expressions, and returns them as +// an array. `close` is the token type that ends the list, and +// `allowEmpty` can be turned on to allow subsequent commas with +// nothing in between them to be parsed as `null` (which is needed +// for array literals). + +pp.parseExprList = function (close, allowTrailingComma, allowEmpty, refShorthandDefaultPos) { + var elts = [], + first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(_tokenizerTypes.types.comma); + if (allowTrailingComma && this.eat(close)) break; + } + + elts.push(this.parseExprListItem(allowEmpty, refShorthandDefaultPos)); + } + return elts; +}; + +pp.parseExprListItem = function (allowEmpty, refShorthandDefaultPos) { + var elt = undefined; + if (allowEmpty && this.match(_tokenizerTypes.types.comma)) { + elt = null; + } else if (this.match(_tokenizerTypes.types.ellipsis)) { + elt = this.parseSpread(refShorthandDefaultPos); + } else { + elt = this.parseMaybeAssign(false, refShorthandDefaultPos); + } + return elt; +}; + +// Parse the next token as an identifier. If `liberal` is true (used +// when parsing properties), it will also convert keywords into +// identifiers. + +pp.parseIdent = function (liberal) { + var node = this.startNode(); + if (this.match(_tokenizerTypes.types.name)) { + if (!liberal && (!this.options.allowReserved && this.isReservedWord(this.state.value) || this.strict && _utilIdentifier.reservedWords.strict(this.state.value))) this.raise(this.state.start, "The keyword '" + this.state.value + "' is reserved"); + node.name = this.state.value; + } else if (liberal && this.state.type.keyword) { + node.name = this.state.type.keyword; + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "Identifier"); +}; + +// Parses await expression inside async function. + +pp.parseAwait = function (node) { + if (this.eat(_tokenizerTypes.types.semi) || this.canInsertSemicolon()) { + this.unexpected(); + } + node.all = this.eat(_tokenizerTypes.types.star); + node.argument = this.parseMaybeUnary(); + return this.finishNode(node, "AwaitExpression"); +}; + +// Parses yield expression inside generator. + +pp.parseYield = function () { + var node = this.startNode(); + this.next(); + if (this.match(_tokenizerTypes.types.semi) || this.canInsertSemicolon() || !this.match(_tokenizerTypes.types.star) && !this.state.type.startsExpr) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(_tokenizerTypes.types.star); + node.argument = this.parseMaybeAssign(); + } + return this.finishNode(node, "YieldExpression"); +}; + +// Parses array and generator comprehensions. + +pp.parseComprehension = function (node, isGenerator) { + node.blocks = []; + while (this.match(_tokenizerTypes.types._for)) { + var block = this.startNode(); + this.next(); + this.expect(_tokenizerTypes.types.parenL); + block.left = this.parseBindingAtom(); + this.checkLVal(block.left, true); + this.expectContextual("of"); + block.right = this.parseExpression(); + this.expect(_tokenizerTypes.types.parenR); + node.blocks.push(this.finishNode(block, "ComprehensionBlock")); + } + node.filter = this.eat(_tokenizerTypes.types._if) ? this.parseParenExpression() : null; + node.body = this.parseExpression(); + this.expect(isGenerator ? _tokenizerTypes.types.parenR : _tokenizerTypes.types.bracketR); + node.generator = isGenerator; + return this.finishNode(node, "ComprehensionExpression"); +}; +},{"616":616,"628":628,"629":629}],616:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// istanbul ignore next + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// istanbul ignore next + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var _utilIdentifier = _dereq_(629); + +var _options = _dereq_(613); + +var _tokenizer = _dereq_(626); + +var _tokenizer2 = _interopRequireDefault(_tokenizer); + +// Registered plugins + +var plugins = {}; + +exports.plugins = plugins; + +var Parser = (function (_Tokenizer) { + _inherits(Parser, _Tokenizer); + + function Parser(options, input) { + _classCallCheck(this, Parser); + + _Tokenizer.call(this, input); + + this.options = _options.getOptions(options); + this.isKeyword = _utilIdentifier.isKeyword; + this.isReservedWord = _utilIdentifier.reservedWords[6]; + this.input = input; + this.loadPlugins(this.options.plugins); + + // Figure out if it's a module code. + this.inModule = this.options.sourceType === "module"; + this.strict = this.options.strictMode === false ? false : this.inModule; + + // If enabled, skip leading hashbang line. + if (this.state.pos === 0 && this.input[0] === "#" && this.input[1] === "!") { + this.skipLineComment(2); + } + } + + Parser.prototype.extend = function extend(name, f) { + this[name] = f(this[name]); + }; + + Parser.prototype.loadPlugins = function loadPlugins(plugins) { + for (var _name in plugins) { + var plugin = exports.plugins[_name]; + if (!plugin) throw new Error("Plugin '" + _name + "' not found"); + plugin(this, plugins[_name]); + } + }; + + Parser.prototype.parse = function parse() { + var file = this.startNode(); + var program = this.startNode(); + this.nextToken(); + return this.parseTopLevel(file, program); + }; + + return Parser; +})(_tokenizer2["default"]); + +exports["default"] = Parser; +},{"613":613,"626":626,"629":629}],617:[function(_dereq_,module,exports){ +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _utilLocation = _dereq_(630); + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var pp = _index2["default"].prototype; + +// This function is used to raise exceptions on parse errors. It +// takes an offset integer (into the current `input`) to indicate +// the location of the error, attaches the position to the end +// of the error message, and then raises a `SyntaxError` with that +// message. + +pp.raise = function (pos, message) { + var loc = _utilLocation.getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + var err = new SyntaxError(message); + err.pos = pos; + err.loc = loc; + throw err; +}; +},{"616":616,"630":630}],618:[function(_dereq_,module,exports){ +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _tokenizerTypes = _dereq_(628); + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var _utilIdentifier = _dereq_(629); + +var pp = _index2["default"].prototype; + +// Convert existing expression atom to assignable pattern +// if possible. + +pp.toAssignable = function (node, isBinding) { + if (node) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + break; + + case "ObjectExpression": + node.type = "ObjectPattern"; + var _arr = node.properties; + for (var _i = 0; _i < _arr.length; _i++) { + var prop = _arr[_i]; + if (prop.type === "SpreadProperty") continue; + if (prop.kind !== "init") this.raise(prop.key.start, "Object pattern can't contain getter or setter"); + this.toAssignable(prop.value, isBinding); + } + break; + + case "ArrayExpression": + node.type = "ArrayPattern"; + this.toAssignableList(node.elements, isBinding); + break; + + case "AssignmentExpression": + if (node.operator === "=") { + node.type = "AssignmentPattern"; + delete node.operator; + } else { + this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); + } + break; + + case "MemberExpression": + if (!isBinding) break; + + default: + this.raise(node.start, "Assigning to rvalue"); + } + } + return node; +}; + +// Convert list of expression atoms to binding list. + +pp.toAssignableList = function (exprList, isBinding) { + var end = exprList.length; + if (end) { + var last = exprList[end - 1]; + if (last && last.type === "RestElement") { + --end; + } else if (last && last.type === "SpreadElement") { + last.type = "RestElement"; + var arg = last.argument; + this.toAssignable(arg, isBinding); + if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") { + this.unexpected(arg.start); + } + --end; + } + } + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) this.toAssignable(elt, isBinding); + } + return exprList; +}; + +// Convert list of expression atoms to a list of + +pp.toReferencedList = function (exprList) { + return exprList; +}; + +// Parses spread element. + +pp.parseSpread = function (refShorthandDefaultPos) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(refShorthandDefaultPos); + return this.finishNode(node, "SpreadElement"); +}; + +pp.parseRest = function () { + var node = this.startNode(); + this.next(); + node.argument = this.match(_tokenizerTypes.types.name) || this.match(_tokenizerTypes.types.bracketL) ? this.parseBindingAtom() : this.unexpected(); + return this.finishNode(node, "RestElement"); +}; + +// Parses lvalue (assignable) atom. + +pp.parseBindingAtom = function () { + switch (this.state.type) { + case _tokenizerTypes.types.name: + return this.parseIdent(); + + case _tokenizerTypes.types.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(_tokenizerTypes.types.bracketR, true, true); + return this.finishNode(node, "ArrayPattern"); + + case _tokenizerTypes.types.braceL: + return this.parseObj(true); + + default: + this.unexpected(); + } +}; + +pp.parseBindingList = function (close, allowEmpty, allowTrailingComma) { + var elts = [], + first = true; + while (!this.eat(close)) { + if (first) first = false;else this.expect(_tokenizerTypes.types.comma); + if (allowEmpty && this.match(_tokenizerTypes.types.comma)) { + elts.push(null); + } else if (allowTrailingComma && this.eat(close)) { + break; + } else if (this.match(_tokenizerTypes.types.ellipsis)) { + elts.push(this.parseAssignableListItemTypes(this.parseRest())); + this.expect(close); + break; + } else { + var left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left); + elts.push(this.parseMaybeDefault(null, null, left)); + } + } + return elts; +}; + +pp.parseAssignableListItemTypes = function (param) { + return param; +}; + +// Parses assignment pattern around given atom if possible. + +pp.parseMaybeDefault = function (startPos, startLoc, left) { + startLoc = startLoc || this.state.startLoc; + startPos = startPos || this.state.start; + left = left || this.parseBindingAtom(); + if (!this.eat(_tokenizerTypes.types.eq)) return left; + + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern"); +}; + +// Verify that a node is an lval — something that can be assigned +// to. + +pp.checkLVal = function (expr, isBinding, checkClashes) { + switch (expr.type) { + case "Identifier": + if (this.strict && (_utilIdentifier.reservedWords.strictBind(expr.name) || _utilIdentifier.reservedWords.strict(expr.name))) this.raise(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); + if (checkClashes) { + if (checkClashes[expr.name]) { + this.raise(expr.start, "Argument name clash in strict mode"); + } else { + checkClashes[expr.name] = true; + } + } + break; + + case "MemberExpression": + if (isBinding) this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression"); + break; + + case "ObjectPattern": + var _arr2 = expr.properties; + + for (var _i2 = 0; _i2 < _arr2.length; _i2++) { + var prop = _arr2[_i2]; + if (prop.type === "Property") prop = prop.value; + this.checkLVal(prop, isBinding, checkClashes); + } + break; + + case "ArrayPattern": + var _arr3 = expr.elements; + + for (var _i3 = 0; _i3 < _arr3.length; _i3++) { + var elem = _arr3[_i3]; + if (elem) this.checkLVal(elem, isBinding, checkClashes); + } + break; + + case "AssignmentPattern": + this.checkLVal(expr.left, isBinding, checkClashes); + break; + + case "SpreadProperty": + case "RestElement": + this.checkLVal(expr.argument, isBinding, checkClashes); + break; + + default: + this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue"); + } +}; +},{"616":616,"628":628,"629":629}],619:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// istanbul ignore next + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var _utilLocation = _dereq_(630); + +// Start an AST node, attaching a start offset. + +var pp = _index2["default"].prototype; + +var Node = (function () { + function Node(parser, pos, loc) { + _classCallCheck(this, Node); + + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new _utilLocation.SourceLocation(loc); + } + + Node.prototype.__clone = function __clone() { + var node2 = new Node(); + for (var key in this) node2[key] = this[key]; + return node2; + }; + + return Node; +})(); + +exports.Node = Node; + +pp.startNode = function () { + return new Node(this, this.state.start, this.state.startLoc); +}; + +pp.startNodeAt = function (pos, loc) { + return new Node(this, pos, loc); +}; + +function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + node.loc.end = loc; + this.processComment(node); + return node; +} + +// Finish an AST node, adding `type` and `end` properties. + +pp.finishNode = function (node, type) { + return finishNodeAt.call(this, node, type, this.state.lastTokEnd, this.state.lastTokEndLoc); +}; + +// Finish node at given position + +pp.finishNodeAt = function (node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc); +}; +},{"616":616,"630":630}],620:[function(_dereq_,module,exports){ +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _tokenizerTypes = _dereq_(628); + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var _utilWhitespace = _dereq_(631); + +var pp = _index2["default"].prototype; + +// ### Statement parsing + +// Parse a program. Initializes the parser, reads any number of +// statements, and wraps them in a Program node. Optionally takes a +// `program` argument. If present, the statements will be appended +// to its body instead of creating a new node. + +pp.parseTopLevel = function (file, program) { + program.sourceType = this.options.sourceType; + program.body = []; + + var first = true; + while (!this.match(_tokenizerTypes.types.eof)) { + var stmt = this.parseStatement(true, true); + program.body.push(stmt); + if (first) { + if (this.isUseStrict(stmt)) this.setStrict(true); + first = false; + } + } + this.next(); + + file.program = this.finishNode(program, "Program"); + file.comments = this.state.comments; + file.tokens = this.state.tokens; + + return this.finishNode(file, "File"); +}; + +var loopLabel = { kind: "loop" }, + switchLabel = { kind: "switch" }; + +// Parse a single statement. +// +// If expecting a statement and finding a slash operator, parse a +// regular expression literal. This is to handle cases like +// `if (foo) /blah/.exec(foo)`, where looking at the previous token +// does not help. + +pp.parseStatement = function (declaration, topLevel) { + if (this.match(_tokenizerTypes.types.at)) { + this.parseDecorators(true); + } + + var starttype = this.state.type, + node = this.startNode(); + + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. + + switch (starttype) { + case _tokenizerTypes.types._break:case _tokenizerTypes.types._continue: + return this.parseBreakContinueStatement(node, starttype.keyword); + case _tokenizerTypes.types._debugger: + return this.parseDebuggerStatement(node); + case _tokenizerTypes.types._do: + return this.parseDoStatement(node); + case _tokenizerTypes.types._for: + return this.parseForStatement(node); + case _tokenizerTypes.types._function: + if (!declaration) this.unexpected(); + return this.parseFunctionStatement(node); + + case _tokenizerTypes.types._class: + if (!declaration) this.unexpected(); + this.takeDecorators(node); + return this.parseClass(node, true); + + case _tokenizerTypes.types._if: + return this.parseIfStatement(node); + case _tokenizerTypes.types._return: + return this.parseReturnStatement(node); + case _tokenizerTypes.types._switch: + return this.parseSwitchStatement(node); + case _tokenizerTypes.types._throw: + return this.parseThrowStatement(node); + case _tokenizerTypes.types._try: + return this.parseTryStatement(node); + case _tokenizerTypes.types._let:case _tokenizerTypes.types._const: + if (!declaration) this.unexpected(); // NOTE: falls through to _var + case _tokenizerTypes.types._var: + return this.parseVarStatement(node, starttype); + case _tokenizerTypes.types._while: + return this.parseWhileStatement(node); + case _tokenizerTypes.types._with: + return this.parseWithStatement(node); + case _tokenizerTypes.types.braceL: + return this.parseBlock(); + case _tokenizerTypes.types.semi: + return this.parseEmptyStatement(node); + case _tokenizerTypes.types._export: + case _tokenizerTypes.types._import: + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) this.raise(this.state.start, "'import' and 'export' may only appear at the top level"); + + if (!this.inModule) this.raise(this.state.start, "'import' and 'export' may appear only with 'sourceType: module'"); + } + return starttype === _tokenizerTypes.types._import ? this.parseImport(node) : this.parseExport(node); + + case _tokenizerTypes.types.name: + if (this.options.features["es7.asyncFunctions"] && this.state.value === "async") { + // peek ahead and see if next token is a function + var state = this.state.clone(); + this.next(); + if (this.match(_tokenizerTypes.types._function) && !this.canInsertSemicolon()) { + this.expect(_tokenizerTypes.types._function); + return this.parseFunction(node, true, false, true); + } else { + this.state = state; + } + } + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + var maybeName = this.state.value, + expr = this.parseExpression(); + + if (starttype === _tokenizerTypes.types.name && expr.type === "Identifier" && this.eat(_tokenizerTypes.types.colon)) { + return this.parseLabeledStatement(node, maybeName, expr); + } else { + return this.parseExpressionStatement(node, expr); + } + } +}; + +pp.takeDecorators = function (node) { + if (this.state.decorators.length) { + node.decorators = this.state.decorators; + this.state.decorators = []; + } +}; + +pp.parseDecorators = function (allowExport) { + while (this.match(_tokenizerTypes.types.at)) { + this.state.decorators.push(this.parseDecorator()); + } + + if (allowExport && this.match(_tokenizerTypes.types._export)) { + return; + } + + if (!this.match(_tokenizerTypes.types._class)) { + this.raise(this.state.start, "Leading decorators must be attached to a class declaration"); + } +}; + +pp.parseDecorator = function () { + if (!this.options.features["es7.decorators"]) { + this.unexpected(); + } + var node = this.startNode(); + this.next(); + node.expression = this.parseMaybeAssign(); + return this.finishNode(node, "Decorator"); +}; + +pp.parseBreakContinueStatement = function (node, keyword) { + var isBreak = keyword === "break"; + this.next(); + + if (this.eat(_tokenizerTypes.types.semi) || this.canInsertSemicolon()) { + node.label = null; + } else if (!this.match(_tokenizerTypes.types.name)) { + this.unexpected(); + } else { + node.label = this.parseIdent(); + this.semicolon(); + } + + // Verify that there is an actual destination to break or + // continue to. + for (var i = 0; i < this.state.labels.length; ++i) { + var lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) break; + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) this.raise(node.start, "Unsyntactic " + keyword); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); +}; + +pp.parseDebuggerStatement = function (node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); +}; + +pp.parseDoStatement = function (node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.parseStatement(false); + this.state.labels.pop(); + this.expect(_tokenizerTypes.types._while); + node.test = this.parseParenExpression(); + this.eat(_tokenizerTypes.types.semi); + return this.finishNode(node, "DoWhileStatement"); +}; + +// Disambiguating between a `for` and a `for`/`in` or `for`/`of` +// loop is non-trivial. Basically, we have to parse the init `var` +// statement or expression, disallowing the `in` operator (see +// the second parameter to `parseExpression`), and then check +// whether the next token is `in` or `of`. When there is no init +// part (semicolon immediately after the opening parenthesis), it +// is a regular `for` loop. + +pp.parseForStatement = function (node) { + this.next(); + this.state.labels.push(loopLabel); + this.expect(_tokenizerTypes.types.parenL); + + if (this.match(_tokenizerTypes.types.semi)) { + return this.parseFor(node, null); + } + + if (this.match(_tokenizerTypes.types._var) || this.match(_tokenizerTypes.types._let) || this.match(_tokenizerTypes.types._const)) { + var _init = this.startNode(), + varKind = this.state.type; + this.next(); + this.parseVar(_init, true, varKind); + this.finishNode(_init, "VariableDeclaration"); + if ((this.match(_tokenizerTypes.types._in) || this.isContextual("of")) && _init.declarations.length === 1 && !(varKind !== _tokenizerTypes.types._var && _init.declarations[0].init)) return this.parseForIn(node, _init); + return this.parseFor(node, _init); + } + + var refShorthandDefaultPos = { start: 0 }; + var init = this.parseExpression(true, refShorthandDefaultPos); + if (this.match(_tokenizerTypes.types._in) || this.isContextual("of")) { + this.toAssignable(init); + this.checkLVal(init); + return this.parseForIn(node, init); + } else if (refShorthandDefaultPos.start) { + this.unexpected(refShorthandDefaultPos.start); + } + return this.parseFor(node, init); +}; + +pp.parseFunctionStatement = function (node) { + this.next(); + return this.parseFunction(node, true); +}; + +pp.parseIfStatement = function (node) { + this.next(); + node.test = this.parseParenExpression(); + node.consequent = this.parseStatement(false); + node.alternate = this.eat(_tokenizerTypes.types._else) ? this.parseStatement(false) : null; + return this.finishNode(node, "IfStatement"); +}; + +pp.parseReturnStatement = function (node) { + if (!this.state.inFunction && !this.options.allowReturnOutsideFunction) { + this.raise(this.state.start, "'return' outside of function"); + } + + this.next(); + + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. + + if (this.eat(_tokenizerTypes.types.semi) || this.canInsertSemicolon()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + + return this.finishNode(node, "ReturnStatement"); +}; + +pp.parseSwitchStatement = function (node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(_tokenizerTypes.types.braceL); + this.state.labels.push(switchLabel); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + for (var cur, sawDefault; !this.match(_tokenizerTypes.types.braceR);) { + if (this.match(_tokenizerTypes.types._case) || this.match(_tokenizerTypes.types._default)) { + var isCase = this.match(_tokenizerTypes.types._case); + if (cur) this.finishNode(cur, "SwitchCase"); + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) this.raise(this.state.lastTokStart, "Multiple default clauses"); + sawDefault = true; + cur.test = null; + } + this.expect(_tokenizerTypes.types.colon); + } else { + if (!cur) this.unexpected(); + cur.consequent.push(this.parseStatement(true)); + } + } + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); // Closing brace + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); +}; + +pp.parseThrowStatement = function (node) { + this.next(); + if (_utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) this.raise(this.state.lastTokEnd, "Illegal newline after throw"); + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); +}; + +// Reused empty array added for node fields that are always empty. + +var empty = []; + +pp.parseTryStatement = function (node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(_tokenizerTypes.types._catch)) { + var clause = this.startNode(); + this.next(); + this.expect(_tokenizerTypes.types.parenL); + clause.param = this.parseBindingAtom(); + this.checkLVal(clause.param, true); + this.expect(_tokenizerTypes.types.parenR); + clause.body = this.parseBlock(); + node.handler = this.finishNode(clause, "CatchClause"); + } + + node.guardedHandlers = empty; + node.finalizer = this.eat(_tokenizerTypes.types._finally) ? this.parseBlock() : null; + + if (!node.handler && !node.finalizer) { + this.raise(node.start, "Missing catch or finally clause"); + } + + return this.finishNode(node, "TryStatement"); +}; + +pp.parseVarStatement = function (node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); +}; + +pp.parseWhileStatement = function (node) { + this.next(); + node.test = this.parseParenExpression(); + this.state.labels.push(loopLabel); + node.body = this.parseStatement(false); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); +}; + +pp.parseWithStatement = function (node) { + if (this.strict) this.raise(this.state.start, "'with' in strict mode"); + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement(false); + return this.finishNode(node, "WithStatement"); +}; + +pp.parseEmptyStatement = function (node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); +}; + +pp.parseLabeledStatement = function (node, maybeName, expr) { + var _arr = this.state.labels; + + for (var _i = 0; _i < _arr.length; _i++) { + var label = _arr[_i]; + if (label.name === maybeName) { + this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } + } + + var kind = this.state.type.isLoop ? "loop" : this.match(_tokenizerTypes.types._switch) ? "switch" : null; + for (var i = this.state.labels.length - 1; i >= 0; i--) { + var label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.state.start; + label.kind = kind; + } else { + break; + } + } + + this.state.labels.push({ name: maybeName, kind: kind, statementStart: this.state.start }); + node.body = this.parseStatement(true); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); +}; + +pp.parseExpressionStatement = function (node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); +}; + +// Parse a semicolon-enclosed block of statements, handling `"use +// strict"` declarations when `allowStrict` is true (used for +// function bodies). + +pp.parseBlock = function (allowStrict) { + var node = this.startNode(), + first = true, + oldStrict = undefined; + node.body = []; + this.expect(_tokenizerTypes.types.braceL); + while (!this.eat(_tokenizerTypes.types.braceR)) { + var stmt = this.parseStatement(true); + node.body.push(stmt); + if (first && allowStrict && this.isUseStrict(stmt)) { + oldStrict = this.strict; + this.setStrict(this.strict = true); + } + first = false; + } + if (oldStrict === false) this.setStrict(false); + return this.finishNode(node, "BlockStatement"); +}; + +// Parse a regular `for` loop. The disambiguation code in +// `parseStatement` will already have parsed the init statement or +// expression. + +pp.parseFor = function (node, init) { + node.init = init; + this.expect(_tokenizerTypes.types.semi); + node.test = this.match(_tokenizerTypes.types.semi) ? null : this.parseExpression(); + this.expect(_tokenizerTypes.types.semi); + node.update = this.match(_tokenizerTypes.types.parenR) ? null : this.parseExpression(); + this.expect(_tokenizerTypes.types.parenR); + node.body = this.parseStatement(false); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); +}; + +// Parse a `for`/`in` and `for`/`of` loop, which are almost +// same from parser's perspective. + +pp.parseForIn = function (node, init) { + var type = this.match(_tokenizerTypes.types._in) ? "ForInStatement" : "ForOfStatement"; + this.next(); + node.left = init; + node.right = this.parseExpression(); + this.expect(_tokenizerTypes.types.parenR); + node.body = this.parseStatement(false); + this.state.labels.pop(); + return this.finishNode(node, type); +}; + +// Parse a list of variable declarations. + +pp.parseVar = function (node, isFor, kind) { + node.declarations = []; + node.kind = kind.keyword; + for (;;) { + var decl = this.startNode(); + this.parseVarHead(decl); + if (this.eat(_tokenizerTypes.types.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (kind === _tokenizerTypes.types._const && !(this.match(_tokenizerTypes.types._in) || this.isContextual("of"))) { + this.unexpected(); + } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(_tokenizerTypes.types._in) || this.isContextual("of")))) { + this.raise(this.state.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(_tokenizerTypes.types.comma)) break; + } + return node; +}; + +pp.parseVarHead = function (decl) { + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, true); +}; + +// Parse a function declaration or literal (depending on the +// `isStatement` parameter). + +pp.parseFunction = function (node, isStatement, allowExpressionBody, isAsync) { + this.initFunction(node, isAsync); + node.generator = this.eat(_tokenizerTypes.types.star); + + if (isStatement || this.match(_tokenizerTypes.types.name)) { + node.id = this.parseIdent(); + } + + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody); + return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression"); +}; + +pp.parseFunctionParams = function (node) { + this.expect(_tokenizerTypes.types.parenL); + node.params = this.parseBindingList(_tokenizerTypes.types.parenR, false, this.options.features["es7.trailingFunctionCommas"]); +}; + +// Parse a class declaration or literal (depending on the +// `isStatement` parameter). + +pp.parseClass = function (node, isStatement) { + this.next(); + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(_tokenizerTypes.types.braceL); + var decorators = []; + while (!this.eat(_tokenizerTypes.types.braceR)) { + if (this.eat(_tokenizerTypes.types.semi)) continue; + if (this.match(_tokenizerTypes.types.at)) { + decorators.push(this.parseDecorator()); + continue; + } + var method = this.startNode(); + if (decorators.length) { + method.decorators = decorators; + decorators = []; + } + var isMaybeStatic = this.match(_tokenizerTypes.types.name) && this.state.value === "static"; + var isGenerator = this.eat(_tokenizerTypes.types.star), + isAsync = false; + this.parsePropertyName(method); + method["static"] = isMaybeStatic && !this.match(_tokenizerTypes.types.parenL); + if (method["static"]) { + if (isGenerator) this.unexpected(); + isGenerator = this.eat(_tokenizerTypes.types.star); + this.parsePropertyName(method); + } + if (!isGenerator && method.key.type === "Identifier" && !method.computed && this.isClassProperty()) { + classBody.body.push(this.parseClassProperty(method)); + continue; + } + if (this.options.features["es7.asyncFunctions"] && !this.match(_tokenizerTypes.types.parenL) && !method.computed && method.key.type === "Identifier" && method.key.name === "async") { + isAsync = true; + this.parsePropertyName(method); + } + var isGetSet = false; + method.kind = "method"; + if (!method.computed) { + var key = method.key; + + if (!isAsync && !isGenerator && key.type === "Identifier" && !this.match(_tokenizerTypes.types.parenL) && (key.name === "get" || key.name === "set")) { + isGetSet = true; + method.kind = key.name; + key = this.parsePropertyName(method); + } + if (!method["static"] && (key.type === "Identifier" && key.name === "constructor" || key.type === "Literal" && key.value === "constructor")) { + if (hadConstructor) this.raise(key.start, "Duplicate constructor in the same class"); + if (isGetSet) this.raise(key.start, "Constructor can't have get/set modifier"); + if (isGenerator) this.raise(key.start, "Constructor can't be a generator"); + if (isAsync) this.raise(key.start, "Constructor can't be an async function"); + method.kind = "constructor"; + hadConstructor = true; + } + } + if (method.kind === "constructor" && method.decorators) { + this.raise(method.start, "You can't attach decorators to a class constructor"); + } + this.parseClassMethod(classBody, method, isGenerator, isAsync); + if (isGetSet) { + var paramCount = method.kind === "get" ? 0 : 1; + if (method.value.params.length !== paramCount) { + var start = method.value.start; + if (method.kind === "get") { + this.raise(start, "getter should have no params"); + } else { + this.raise(start, "setter should have exactly one param"); + } + } + } + } + + if (decorators.length) { + this.raise(this.state.start, "You have trailing decorators with no method"); + } + + node.body = this.finishNode(classBody, "ClassBody"); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); +}; + +pp.isClassProperty = function () { + return this.match(_tokenizerTypes.types.eq) || this.match(_tokenizerTypes.types.semi) || this.canInsertSemicolon(); +}; + +pp.parseClassProperty = function (node) { + if (this.match(_tokenizerTypes.types.eq)) { + if (!this.options.features["es7.classProperties"]) this.unexpected(); + this.next(); + node.value = this.parseMaybeAssign(); + } else { + node.value = null; + } + this.semicolon(); + return this.finishNode(node, "ClassProperty"); +}; + +pp.parseClassMethod = function (classBody, method, isGenerator, isAsync) { + method.value = this.parseMethod(isGenerator, isAsync); + classBody.body.push(this.finishNode(method, "MethodDefinition")); +}; + +pp.parseClassId = function (node, isStatement) { + node.id = this.match(_tokenizerTypes.types.name) ? this.parseIdent() : isStatement ? this.unexpected() : null; +}; + +pp.parseClassSuper = function (node) { + node.superClass = this.eat(_tokenizerTypes.types._extends) ? this.parseExprSubscripts() : null; +}; + +// Parses module export declaration. + +pp.parseExport = function (node) { + this.next(); + // export * from '...' + if (this.match(_tokenizerTypes.types.star)) { + var specifier = this.startNode(); + this.next(); + if (this.options.features["es7.exportExtensions"] && this.eatContextual("as")) { + specifier.exported = this.parseIdent(); + node.specifiers = [this.finishNode(specifier, "ExportNamespaceSpecifier")]; + this.parseExportSpecifiersMaybe(node); + this.parseExportFrom(node, true); + } else { + this.parseExportFrom(node, true); + return this.finishNode(node, "ExportAllDeclaration"); + } + } else if (this.options.features["es7.exportExtensions"] && this.isExportDefaultSpecifier()) { + var specifier = this.startNode(); + specifier.exported = this.parseIdent(true); + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + if (this.match(_tokenizerTypes.types.comma) && this.lookahead().type === _tokenizerTypes.types.star) { + this.expect(_tokenizerTypes.types.comma); + var _specifier = this.startNode(); + this.expect(_tokenizerTypes.types.star); + this.expectContextual("as"); + _specifier.exported = this.parseIdent(); + node.specifiers.push(this.finishNode(_specifier, "ExportNamespaceSpecifier")); + } else { + this.parseExportSpecifiersMaybe(node); + } + this.parseExportFrom(node, true); + } else if (this.eat(_tokenizerTypes.types._default)) { + // export default ... + var possibleDeclaration = this.match(_tokenizerTypes.types._function) || this.match(_tokenizerTypes.types._class); + var expr = this.parseMaybeAssign(); + var needsSemi = true; + if (possibleDeclaration) { + needsSemi = false; + if (expr.id) { + expr.type = expr.type === "FunctionExpression" ? "FunctionDeclaration" : "ClassDeclaration"; + } + } + node.declaration = expr; + if (needsSemi) this.semicolon(); + this.checkExport(node); + return this.finishNode(node, "ExportDefaultDeclaration"); + } else if (this.state.type.keyword || this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + node.declaration = this.parseExportDeclaration(node); + } else { + // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(); + this.parseExportFrom(node); + } + this.checkExport(node); + return this.finishNode(node, "ExportNamedDeclaration"); +}; + +pp.parseExportDeclaration = function () { + return this.parseStatement(true); +}; + +pp.isExportDefaultSpecifier = function () { + if (this.match(_tokenizerTypes.types.name)) { + return this.state.value !== "type" && this.state.value !== "async" && this.state.value !== "interface"; + } + + if (!this.match(_tokenizerTypes.types._default)) { + return false; + } + + var lookahead = this.lookahead(); + return lookahead.type === _tokenizerTypes.types.comma || lookahead.type === _tokenizerTypes.types.name && lookahead.value === "from"; +}; + +pp.parseExportSpecifiersMaybe = function (node) { + if (this.eat(_tokenizerTypes.types.comma)) { + node.specifiers = node.specifiers.concat(this.parseExportSpecifiers()); + } +}; + +pp.parseExportFrom = function (node, expect) { + if (this.eatContextual("from")) { + node.source = this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.unexpected(); + this.checkExport(node); + } else { + if (expect) { + this.unexpected(); + } else { + node.source = null; + } + } + + this.semicolon(); +}; + +pp.shouldParseExportDeclaration = function () { + return this.options.features["es7.asyncFunctions"] && this.isContextual("async"); +}; + +pp.checkExport = function (node) { + if (this.state.decorators.length) { + var isClass = node.declaration && (node.declaration.type === "ClassDeclaration" || node.declaration.type === "ClassExpression"); + if (!node.declaration || !isClass) { + this.raise(node.start, "You can only use decorators on an export when exporting a class"); + } + this.takeDecorators(node.declaration); + } +}; + +// Parses a comma-separated list of module exports. + +pp.parseExportSpecifiers = function () { + var nodes = [], + first = true; + // export { x, y as z } [from '...'] + this.expect(_tokenizerTypes.types.braceL); + + while (!this.eat(_tokenizerTypes.types.braceR)) { + if (first) { + first = false; + } else { + this.expect(_tokenizerTypes.types.comma); + if (this.eat(_tokenizerTypes.types.braceR)) break; + } + + var node = this.startNode(); + node.local = this.parseIdent(this.match(_tokenizerTypes.types._default)); + node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local.__clone(); + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + + return nodes; +}; + +// Parses import declaration. + +pp.parseImport = function (node) { + this.next(); + + // import '...' + if (this.match(_tokenizerTypes.types.string)) { + node.specifiers = []; + node.source = this.parseExprAtom(); + } else { + node.specifiers = []; + this.parseImportSpecifiers(node); + this.expectContextual("from"); + node.source = this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.unexpected(); + } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); +}; + +// Parses a comma-separated list of module imports. + +pp.parseImportSpecifiers = function (node) { + var first = true; + if (this.match(_tokenizerTypes.types.name)) { + // import defaultObj, { x, y as z } from '...' + var startPos = this.state.start, + startLoc = this.state.startLoc; + node.specifiers.push(this.parseImportSpecifierDefault(this.parseIdent(), startPos, startLoc)); + if (!this.eat(_tokenizerTypes.types.comma)) return; + } + + if (this.match(_tokenizerTypes.types.star)) { + var specifier = this.startNode(); + this.next(); + this.expectContextual("as"); + specifier.local = this.parseIdent(); + this.checkLVal(specifier.local, true); + node.specifiers.push(this.finishNode(specifier, "ImportNamespaceSpecifier")); + return; + } + + this.expect(_tokenizerTypes.types.braceL); + while (!this.eat(_tokenizerTypes.types.braceR)) { + if (first) { + first = false; + } else { + this.expect(_tokenizerTypes.types.comma); + if (this.eat(_tokenizerTypes.types.braceR)) break; + } + + var specifier = this.startNode(); + specifier.imported = this.parseIdent(true); + specifier.local = this.eatContextual("as") ? this.parseIdent() : specifier.imported.__clone(); + this.checkLVal(specifier.local, true); + node.specifiers.push(this.finishNode(specifier, "ImportSpecifier")); + } +}; + +pp.parseImportSpecifierDefault = function (id, startPos, startLoc) { + var node = this.startNodeAt(startPos, startLoc); + node.local = id; + this.checkLVal(node.local, true); + return this.finishNode(node, "ImportDefaultSpecifier"); +}; +},{"616":616,"628":628,"631":631}],621:[function(_dereq_,module,exports){ +"use strict"; + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _tokenizerTypes = _dereq_(628); + +var _index = _dereq_(616); + +var _index2 = _interopRequireDefault(_index); + +var _utilWhitespace = _dereq_(631); + +var pp = _index2["default"].prototype; + +// ## Parser utilities + +// Test whether a statement node is the string literal `"use strict"`. + +pp.isUseStrict = function (stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && stmt.expression.raw.slice(1, -1) === "use strict"; +}; + +// TODO + +pp.isRelational = function (op) { + return this.match(_tokenizerTypes.types.relational) && this.state.value === op; +}; + +// TODO + +pp.expectRelational = function (op) { + if (this.isRelational(op)) { + this.next(); + } else { + this.unexpected(); + } +}; + +// Tests whether parsed token is a contextual keyword. + +pp.isContextual = function (name) { + return this.match(_tokenizerTypes.types.name) && this.state.value === name; +}; + +// Consumes contextual keyword if possible. + +pp.eatContextual = function (name) { + return this.state.value === name && this.eat(_tokenizerTypes.types.name); +}; + +// Asserts that following token is given contextual keyword. + +pp.expectContextual = function (name) { + if (!this.eatContextual(name)) this.unexpected(); +}; + +// Test whether a semicolon can be inserted at the current position. + +pp.canInsertSemicolon = function () { + return this.match(_tokenizerTypes.types.eof) || this.match(_tokenizerTypes.types.braceR) || _utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)); +}; + +// Consume a semicolon, or, failing that, see if we are allowed to +// pretend that there is a semicolon at this position. + +pp.semicolon = function () { + if (!this.eat(_tokenizerTypes.types.semi) && !this.canInsertSemicolon()) this.unexpected(); +}; + +// Expect a token of a given type. If found, consume it, otherwise, +// raise an unexpected token error. + +pp.expect = function (type) { + return this.eat(type) || this.unexpected(); +}; + +// Raise an unexpected token error. + +pp.unexpected = function (pos) { + this.raise(pos != null ? pos : this.state.start, "Unexpected token"); +}; +},{"616":616,"628":628,"631":631}],622:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _tokenizerTypes = _dereq_(628); + +var _parser = _dereq_(616); + +var _parser2 = _interopRequireDefault(_parser); + +var pp = _parser2["default"].prototype; + +pp.flowParseTypeInitialiser = function (tok) { + var oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || _tokenizerTypes.types.colon); + var type = this.flowParseType(); + this.state.inType = oldInType; + return type; +}; + +pp.flowParseDeclareClass = function (node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); +}; + +pp.flowParseDeclareFunction = function (node) { + this.next(); + + var id = node.id = this.parseIdent(); + + var typeNode = this.startNode(); + var typeContainer = this.startNode(); + + if (this.isRelational("<")) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + + this.expect(_tokenizerTypes.types.parenL); + var tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + this.expect(_tokenizerTypes.types.parenR); + typeNode.returnType = this.flowParseTypeInitialiser(); + + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + + this.finishNode(id, id.type); + + this.semicolon(); + + return this.finishNode(node, "DeclareFunction"); +}; + +pp.flowParseDeclare = function (node) { + if (this.match(_tokenizerTypes.types._class)) { + return this.flowParseDeclareClass(node); + } else if (this.match(_tokenizerTypes.types._function)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(_tokenizerTypes.types._var)) { + return this.flowParseDeclareVariable(node); + } else if (this.isContextual("module")) { + return this.flowParseDeclareModule(node); + } else if (this.isContextual("type")) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual("interface")) { + return this.flowParseDeclareInterface(node); + } else { + this.unexpected(); + } +}; + +pp.flowParseDeclareVariable = function (node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); +}; + +pp.flowParseDeclareModule = function (node) { + this.next(); + + if (this.match(_tokenizerTypes.types.string)) { + node.id = this.parseExprAtom(); + } else { + node.id = this.parseIdent(); + } + + var bodyNode = node.body = this.startNode(); + var body = bodyNode.body = []; + this.expect(_tokenizerTypes.types.braceL); + while (!this.match(_tokenizerTypes.types.braceR)) { + var node2 = this.startNode(); + + // todo: declare check + this.next(); + + body.push(this.flowParseDeclare(node2)); + } + this.expect(_tokenizerTypes.types.braceR); + + this.finishNode(bodyNode, "BlockStatement"); + return this.finishNode(node, "DeclareModule"); +}; + +pp.flowParseDeclareTypeAlias = function (node) { + this.next(); + this.flowParseTypeAlias(node); + return this.finishNode(node, "DeclareTypeAlias"); +}; + +pp.flowParseDeclareInterface = function (node) { + this.next(); + this.flowParseInterfaceish(node); + return this.finishNode(node, "DeclareInterface"); +}; + +// Interfaces + +pp.flowParseInterfaceish = function (node, allowStatic) { + node.id = this.parseIdent(); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node["extends"] = []; + node.mixins = []; + + if (this.eat(_tokenizerTypes.types._extends)) { + do { + node["extends"].push(this.flowParseInterfaceExtends()); + } while (this.eat(_tokenizerTypes.types.comma)); + } + + if (this.isContextual("mixins")) { + this.next(); + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(_tokenizerTypes.types.comma)); + } + + node.body = this.flowParseObjectType(allowStatic); +}; + +pp.flowParseInterfaceExtends = function () { + var node = this.startNode(); + + node.id = this.parseIdent(); + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + + return this.finishNode(node, "InterfaceExtends"); +}; + +pp.flowParseInterface = function (node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); +}; + +// Type aliases + +pp.flowParseTypeAlias = function (node) { + node.id = this.parseIdent(); + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + + node.right = this.flowParseTypeInitialiser(_tokenizerTypes.types.eq); + this.semicolon(); + + return this.finishNode(node, "TypeAlias"); +}; + +// Type annotations + +pp.flowParseTypeParameterDeclaration = function () { + var node = this.startNode(); + node.params = []; + + this.expectRelational("<"); + while (!this.isRelational(">")) { + node.params.push(this.flowParseTypeAnnotatableIdentifier()); + if (!this.isRelational(">")) { + this.expect(_tokenizerTypes.types.comma); + } + } + this.expectRelational(">"); + + return this.finishNode(node, "TypeParameterDeclaration"); +}; + +pp.flowParseTypeParameterInstantiation = function () { + var node = this.startNode(), + oldInType = this.state.inType; + node.params = []; + + this.state.inType = true; + + this.expectRelational("<"); + while (!this.isRelational(">")) { + node.params.push(this.flowParseType()); + if (!this.isRelational(">")) { + this.expect(_tokenizerTypes.types.comma); + } + } + this.expectRelational(">"); + + this.state.inType = oldInType; + + return this.finishNode(node, "TypeParameterInstantiation"); +}; + +pp.flowParseObjectPropertyKey = function () { + return this.match(_tokenizerTypes.types.num) || this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.parseIdent(true); +}; + +pp.flowParseObjectTypeIndexer = function (node, isStatic) { + node["static"] = isStatic; + + this.expect(_tokenizerTypes.types.bracketL); + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + this.expect(_tokenizerTypes.types.bracketR); + node.value = this.flowParseTypeInitialiser(); + + this.flowObjectTypeSemicolon(); + return this.finishNode(node, "ObjectTypeIndexer"); +}; + +pp.flowParseObjectTypeMethodish = function (node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + + this.expect(_tokenizerTypes.types.parenL); + while (this.match(_tokenizerTypes.types.name)) { + node.params.push(this.flowParseFunctionTypeParam()); + if (!this.match(_tokenizerTypes.types.parenR)) { + this.expect(_tokenizerTypes.types.comma); + } + } + + if (this.eat(_tokenizerTypes.types.ellipsis)) { + node.rest = this.flowParseFunctionTypeParam(); + } + this.expect(_tokenizerTypes.types.parenR); + node.returnType = this.flowParseTypeInitialiser(); + + return this.finishNode(node, "FunctionTypeAnnotation"); +}; + +pp.flowParseObjectTypeMethod = function (startPos, startLoc, isStatic, key) { + var node = this.startNodeAt(startPos, startLoc); + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(startPos, startLoc)); + node["static"] = isStatic; + node.key = key; + node.optional = false; + this.flowObjectTypeSemicolon(); + return this.finishNode(node, "ObjectTypeProperty"); +}; + +pp.flowParseObjectTypeCallProperty = function (node, isStatic) { + var valueNode = this.startNode(); + node["static"] = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + this.flowObjectTypeSemicolon(); + return this.finishNode(node, "ObjectTypeCallProperty"); +}; + +pp.flowParseObjectType = function (allowStatic) { + var nodeStart = this.startNode(); + var node; + var propertyKey; + var isStatic; + + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + + this.expect(_tokenizerTypes.types.braceL); + + while (!this.match(_tokenizerTypes.types.braceR)) { + var optional = false; + var startPos = this.state.start, + startLoc = this.state.startLoc; + node = this.startNode(); + if (allowStatic && this.isContextual("static")) { + this.next(); + isStatic = true; + } + + if (this.match(_tokenizerTypes.types.bracketL)) { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic)); + } else if (this.match(_tokenizerTypes.types.parenL) || this.isRelational("<")) { + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, allowStatic)); + } else { + if (isStatic && this.match(_tokenizerTypes.types.colon)) { + propertyKey = this.parseIdent(); + } else { + propertyKey = this.flowParseObjectPropertyKey(); + } + if (this.isRelational("<") || this.match(_tokenizerTypes.types.parenL)) { + // This is a method property + nodeStart.properties.push(this.flowParseObjectTypeMethod(startPos, startLoc, isStatic, propertyKey)); + } else { + if (this.eat(_tokenizerTypes.types.question)) { + optional = true; + } + node.key = propertyKey; + node.value = this.flowParseTypeInitialiser(); + node.optional = optional; + node["static"] = isStatic; + this.flowObjectTypeSemicolon(); + nodeStart.properties.push(this.finishNode(node, "ObjectTypeProperty")); + } + } + } + + this.expect(_tokenizerTypes.types.braceR); + + return this.finishNode(nodeStart, "ObjectTypeAnnotation"); +}; + +pp.flowObjectTypeSemicolon = function () { + if (!this.eat(_tokenizerTypes.types.semi) && !this.eat(_tokenizerTypes.types.comma) && !this.match(_tokenizerTypes.types.braceR)) { + this.unexpected(); + } +}; + +pp.flowParseGenericType = function (startPos, startLoc, id) { + var node = this.startNodeAt(startPos, startLoc); + + node.typeParameters = null; + node.id = id; + + while (this.eat(_tokenizerTypes.types.dot)) { + var node2 = this.startNodeAt(startPos, startLoc); + node2.qualification = node.id; + node2.id = this.parseIdent(); + node.id = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + + return this.finishNode(node, "GenericTypeAnnotation"); +}; + +pp.flowParseTypeofType = function () { + var node = this.startNode(); + this.expect(_tokenizerTypes.types._typeof); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); +}; + +pp.flowParseTupleType = function () { + var node = this.startNode(); + node.types = []; + this.expect(_tokenizerTypes.types.bracketL); + // We allow trailing commas + while (this.state.pos < this.input.length && !this.match(_tokenizerTypes.types.bracketR)) { + node.types.push(this.flowParseType()); + if (this.match(_tokenizerTypes.types.bracketR)) break; + this.expect(_tokenizerTypes.types.comma); + } + this.expect(_tokenizerTypes.types.bracketR); + return this.finishNode(node, "TupleTypeAnnotation"); +}; + +pp.flowParseFunctionTypeParam = function () { + var optional = false; + var node = this.startNode(); + node.name = this.parseIdent(); + if (this.eat(_tokenizerTypes.types.question)) { + optional = true; + } + node.optional = optional; + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeParam"); +}; + +pp.flowParseFunctionTypeParams = function () { + var ret = { params: [], rest: null }; + while (this.match(_tokenizerTypes.types.name)) { + ret.params.push(this.flowParseFunctionTypeParam()); + if (!this.match(_tokenizerTypes.types.parenR)) { + this.expect(_tokenizerTypes.types.comma); + } + } + if (this.eat(_tokenizerTypes.types.ellipsis)) { + ret.rest = this.flowParseFunctionTypeParam(); + } + return ret; +}; + +pp.flowIdentToTypeAnnotation = function (startPos, startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + + case "void": + return this.finishNode(node, "VoidTypeAnnotation"); + + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + + default: + return this.flowParseGenericType(startPos, startLoc, id); + } +}; + +// The parsing of types roughly parallels the parsing of expressions, and +// primary types are kind of like primary expressions...they're the +// primitives with which other types are constructed. +pp.flowParsePrimaryType = function () { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var node = this.startNode(); + var tmp; + var type; + var isGroupedType = false; + + switch (this.state.type) { + case _tokenizerTypes.types.name: + return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdent()); + + case _tokenizerTypes.types.braceL: + return this.flowParseObjectType(); + + case _tokenizerTypes.types.bracketL: + return this.flowParseTupleType(); + + case _tokenizerTypes.types.relational: + if (this.state.value === "<") { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(_tokenizerTypes.types.parenL); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + this.expect(_tokenizerTypes.types.parenR); + + this.expect(_tokenizerTypes.types.arrow); + + node.returnType = this.flowParseType(); + + return this.finishNode(node, "FunctionTypeAnnotation"); + } + + case _tokenizerTypes.types.parenL: + this.next(); + + // Check to see if this is actually a grouped type + if (!this.match(_tokenizerTypes.types.parenR) && !this.match(_tokenizerTypes.types.ellipsis)) { + if (this.match(_tokenizerTypes.types.name)) { + var token = this.lookahead().type; + isGroupedType = token !== _tokenizerTypes.types.question && token !== _tokenizerTypes.types.colon; + } else { + isGroupedType = true; + } + } + + if (isGroupedType) { + type = this.flowParseType(); + this.expect(_tokenizerTypes.types.parenR); + + // If we see a => next then someone was probably confused about + // function types, so we can provide a better error message + if (this.eat(_tokenizerTypes.types.arrow)) { + this.raise(node, "Unexpected token =>. It looks like " + "you are trying to write a function type, but you ended up " + "writing a grouped type followed by an =>, which is a syntax " + "error. Remember, function type parameters are named so function " + "types look like (name1: type1, name2: type2) => returnType. You " + "probably wrote (type1) => returnType"); + } + + return type; + } + + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + + this.expect(_tokenizerTypes.types.parenR); + + this.expect(_tokenizerTypes.types.arrow); + + node.returnType = this.flowParseType(); + node.typeParameters = null; + + return this.finishNode(node, "FunctionTypeAnnotation"); + + case _tokenizerTypes.types.string: + node.rawValue = node.value = this.state.value; + node.raw = this.input.slice(this.state.start, this.state.end); + this.next(); + return this.finishNode(node, "StringLiteralTypeAnnotation"); + + case _tokenizerTypes.types._true:case _tokenizerTypes.types._false: + node.value = this.match(_tokenizerTypes.types._true); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + + case _tokenizerTypes.types.num: + node.rawValue = node.value = this.state.value; + node.raw = this.input.slice(this.state.start, this.state.end); + this.next(); + return this.finishNode(node, "NumberLiteralTypeAnnotation"); + + case _tokenizerTypes.types._null: + node.value = this.match(_tokenizerTypes.types._null); + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + + case _tokenizerTypes.types._this: + node.value = this.match(_tokenizerTypes.types._this); + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + + default: + if (this.state.type.keyword === "typeof") { + return this.flowParseTypeofType(); + } + } + + this.unexpected(); +}; + +pp.flowParsePostfixType = function () { + var node = this.startNode(); + var type = node.elementType = this.flowParsePrimaryType(); + if (this.match(_tokenizerTypes.types.bracketL)) { + this.expect(_tokenizerTypes.types.bracketL); + this.expect(_tokenizerTypes.types.bracketR); + return this.finishNode(node, "ArrayTypeAnnotation"); + } else { + return type; + } +}; + +pp.flowParsePrefixType = function () { + var node = this.startNode(); + if (this.eat(_tokenizerTypes.types.question)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } +}; + +pp.flowParseIntersectionType = function () { + var node = this.startNode(); + var type = this.flowParsePrefixType(); + node.types = [type]; + while (this.eat(_tokenizerTypes.types.bitwiseAND)) { + node.types.push(this.flowParsePrefixType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); +}; + +pp.flowParseUnionType = function () { + var node = this.startNode(); + var type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(_tokenizerTypes.types.bitwiseOR)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); +}; + +pp.flowParseType = function () { + var oldInType = this.state.inType; + this.state.inType = true; + var type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; +}; + +pp.flowParseTypeAnnotation = function () { + var node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); +}; + +pp.flowParseTypeAnnotatableIdentifier = function (requireTypeAnnotation, canBeOptionalParam) { + var ident = this.parseIdent(); + var isOptionalParam = false; + + if (canBeOptionalParam && this.eat(_tokenizerTypes.types.question)) { + this.expect(_tokenizerTypes.types.question); + isOptionalParam = true; + } + + if (requireTypeAnnotation || this.match(_tokenizerTypes.types.colon)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.finishNode(ident, ident.type); + } + + if (isOptionalParam) { + ident.optional = true; + this.finishNode(ident, ident.type); + } + + return ident; +}; + +exports["default"] = function (instance) { + // function name(): string {} + instance.extend("parseFunctionBody", function (inner) { + return function (node, allowExpression) { + if (this.match(_tokenizerTypes.types.colon) && !allowExpression) { + // if allowExpression is true then we're parsing an arrow function and if + // there's a return type then it's been handled elsewhere + node.returnType = this.flowParseTypeAnnotation(); + } + + return inner.call(this, node, allowExpression); + }; + }); + + instance.extend("parseStatement", function (inner) { + return function (declaration, topLevel) { + // strict mode handling of `interface` since it's a reserved word + if (this.strict && this.match(_tokenizerTypes.types.name) && this.state.value === "interface") { + var node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } else { + return inner.call(this, declaration, topLevel); + } + }; + }); + + instance.extend("parseExpressionStatement", function (inner) { + return function (node, expr) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(_tokenizerTypes.types._class) || this.match(_tokenizerTypes.types.name) || this.match(_tokenizerTypes.types._function) || this.match(_tokenizerTypes.types._var)) { + return this.flowParseDeclare(node); + } + } else if (this.match(_tokenizerTypes.types.name)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } + } + } + + return inner.call(this, node, expr); + }; + }); + + instance.extend("shouldParseExportDeclaration", function (inner) { + return function () { + return this.isContextual("type") || this.isContextual("interface") || inner.call(this); + }; + }); + + instance.extend("parseParenItem", function () { + return function (node, startLoc, startPos, forceArrow) { + if (this.match(_tokenizerTypes.types.colon)) { + var typeCastNode = this.startNodeAt(startLoc, startPos); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + + if (forceArrow && !this.match(_tokenizerTypes.types.arrow)) { + this.unexpected(); + } + + if (this.eat(_tokenizerTypes.types.arrow)) { + // ((lol): number => {}); + var func = this.parseArrowExpression(this.startNodeAt(startLoc, startPos), [node]); + func.returnType = typeCastNode.typeAnnotation; + return func; + } else { + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + } else { + return node; + } + }; + }); + + instance.extend("parseExport", function (inner) { + return function (node) { + node = inner.call(this, node); + if (node.type === "ExportNamedDeclaration") { + node.exportKind = node.exportKind || "value"; + } + return node; + }; + }); + + instance.extend("parseExportDeclaration", function (inner) { + return function (node) { + if (this.isContextual("type")) { + node.exportKind = "type"; + + var declarationNode = this.startNode(); + this.next(); + + if (this.match(_tokenizerTypes.types.braceL)) { + // export type { foo, bar }; + node.specifiers = this.parseExportSpecifiers(); + this.parseExportFrom(node); + return null; + } else { + // export type Foo = Bar; + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual("interface")) { + node.exportKind = "type"; + var _declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(_declarationNode); + } else { + return inner.call(this, node); + } + }; + }); + + instance.extend("parseClassId", function (inner) { + return function (node, isStatement) { + inner.call(this, node, isStatement); + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + }; + }); + + // don't consider `void` to be a keyword as then it'll use the void token type + // and set startExpr + instance.extend("isKeyword", function (inner) { + return function (name) { + if (this.state.inType && name === "void") { + return false; + } else { + return inner.call(this, name); + } + }; + }); + + instance.extend("readToken", function (inner) { + return function (code) { + if (this.state.inType && (code === 62 || code === 60)) { + return this.finishOp(_tokenizerTypes.types.relational, 1); + } else { + return inner.call(this, code); + } + }; + }); + + instance.extend("jsx_readToken", function (inner) { + return function () { + if (!this.state.inType) return inner.call(this); + }; + }); + + function typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + return node.expression; + } + + instance.extend("toAssignableList", function (inner) { + return function (exprList, isBinding) { + for (var i = 0; i < exprList.length; i++) { + var expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression") { + exprList[i] = typeCastToParameter(expr); + } + } + return inner.call(this, exprList, isBinding); + }; + }); + + instance.extend("toReferencedList", function () { + return function (exprList) { + for (var i = 0; i < exprList.length; i++) { + var expr = exprList[i]; + if (expr && expr._exprListItem && expr.type === "TypeCastExpression") { + this.raise(expr.start, "Unexpected type cast"); + } + } + + return exprList; + }; + }); + + instance.extend("parseExprListItem", function (inner) { + return function (allowEmpty, refShorthandDefaultPos) { + var container = this.startNode(); + var node = inner.call(this, allowEmpty, refShorthandDefaultPos); + if (this.match(_tokenizerTypes.types.colon)) { + container._exprListItem = true; + container.expression = node; + container.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(container, "TypeCastExpression"); + } else { + return node; + } + }; + }); + + instance.extend("parseClassProperty", function (inner) { + return function (node) { + if (this.match(_tokenizerTypes.types.colon)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return inner.call(this, node); + }; + }); + + instance.extend("isClassProperty", function (inner) { + return function () { + return this.match(_tokenizerTypes.types.colon) || inner.call(this); + }; + }); + + instance.extend("parseClassMethod", function () { + return function (classBody, method, isGenerator, isAsync) { + var typeParameters; + if (this.isRelational("<")) { + typeParameters = this.flowParseTypeParameterDeclaration(); + } + method.value = this.parseMethod(isGenerator, isAsync); + method.value.typeParameters = typeParameters; + classBody.body.push(this.finishNode(method, "MethodDefinition")); + }; + }); + + instance.extend("parseClassSuper", function (inner) { + return function (node, isStatement) { + inner.call(this, node, isStatement); + if (node.superClass && this.isRelational("<")) { + node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + } + if (this.isContextual("implements")) { + this.next(); + var implemented = node["implements"] = []; + do { + var _node = this.startNode(); + _node.id = this.parseIdent(); + if (this.isRelational("<")) { + _node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + _node.typeParameters = null; + } + implemented.push(this.finishNode(_node, "ClassImplements")); + } while (this.eat(_tokenizerTypes.types.comma)); + } + }; + }); + + instance.extend("parseObjPropValue", function (inner) { + return function (prop) { + var typeParameters; + + // method shorthand + if (this.isRelational("<")) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(_tokenizerTypes.types.parenL)) this.unexpected(); + } + + inner.apply(this, arguments); + + // add typeParameters if we found them + if (typeParameters) { + prop.value.typeParameters = typeParameters; + } + }; + }); + + instance.extend("parseAssignableListItemTypes", function () { + return function (param) { + if (this.eat(_tokenizerTypes.types.question)) { + param.optional = true; + } + if (this.match(_tokenizerTypes.types.colon)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } + this.finishNode(param, param.type); + return param; + }; + }); + + instance.extend("parseImportSpecifiers", function (inner) { + return function (node) { + node.importKind = "value"; + + var kind = this.match(_tokenizerTypes.types._typeof) ? "typeof" : this.isContextual("type") ? "type" : null; + if (kind) { + var lh = this.lookahead(); + if (lh.type === _tokenizerTypes.types.name && lh.value !== "from" || lh.type === _tokenizerTypes.types.braceL || lh.type === _tokenizerTypes.types.star) { + this.next(); + node.importKind = kind; + } + } + + inner.call(this, node); + }; + }); + + // function foo() {} + instance.extend("parseFunctionParams", function (inner) { + return function (node) { + if (this.isRelational("<")) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + inner.call(this, node); + }; + }); + + // var foo: string = bar + instance.extend("parseVarHead", function (inner) { + return function (decl) { + inner.call(this, decl); + if (this.match(_tokenizerTypes.types.colon)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.finishNode(decl.id, decl.id.type); + } + }; + }); + + // var foo = (async (): number => {}); + instance.extend("parseAsyncArrowFromCallExpression", function (inner) { + return function (node, call) { + if (this.match(_tokenizerTypes.types.colon)) { + node.returnType = this.flowParseTypeAnnotation(); + } + + return inner.call(this, node, call); + }; + }); + + instance.extend("parseParenAndDistinguishExpression", function (inner) { + return function (startPos, startLoc, canBeArrow, isAsync) { + startPos = startPos || this.state.start; + startLoc = startLoc || this.state.startLoc; + + if (this.lookahead().type === _tokenizerTypes.types.parenR) { + // var foo = (): number => {}; + this.expect(_tokenizerTypes.types.parenL); + this.expect(_tokenizerTypes.types.parenR); + + var node = this.startNodeAt(startPos, startLoc); + if (this.match(_tokenizerTypes.types.colon)) node.returnType = this.flowParseTypeAnnotation(); + this.expect(_tokenizerTypes.types.arrow); + return this.parseArrowExpression(node, [], isAsync); + } else { + // var foo = (foo): number => {}; + var node = inner.call(this, startPos, startLoc, canBeArrow, isAsync); + + if (this.match(_tokenizerTypes.types.colon)) { + var state = this.state.clone(); + try { + return this.parseParenItem(node, startPos, startLoc, true); + } catch (err) { + if (err instanceof SyntaxError) { + this.state = state; + return node; + } else { + throw err; + } + } + } else { + return node; + } + } + }; + }); +}; + +module.exports = exports["default"]; +},{"616":616,"628":628}],623:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _xhtml = _dereq_(624); + +var _xhtml2 = _interopRequireDefault(_xhtml); + +var _tokenizerTypes = _dereq_(628); + +var _tokenizerContext = _dereq_(625); + +var _parser = _dereq_(616); + +var _parser2 = _interopRequireDefault(_parser); + +var _utilIdentifier = _dereq_(629); + +var _utilWhitespace = _dereq_(631); + +var HEX_NUMBER = /^[\da-fA-F]+$/; +var DECIMAL_NUMBER = /^\d+$/; + +_tokenizerContext.types.j_oTag = new _tokenizerContext.TokContext("...", true, true); + +_tokenizerTypes.types.jsxName = new _tokenizerTypes.TokenType("jsxName"); +_tokenizerTypes.types.jsxText = new _tokenizerTypes.TokenType("jsxText", { beforeExpr: true }); +_tokenizerTypes.types.jsxTagStart = new _tokenizerTypes.TokenType("jsxTagStart"); +_tokenizerTypes.types.jsxTagEnd = new _tokenizerTypes.TokenType("jsxTagEnd"); + +_tokenizerTypes.types.jsxTagStart.updateContext = function () { + this.state.context.push(_tokenizerContext.types.j_expr); // treat as beginning of JSX expression + this.state.context.push(_tokenizerContext.types.j_oTag); // start opening tag context + this.state.exprAllowed = false; +}; + +_tokenizerTypes.types.jsxTagEnd.updateContext = function (prevType) { + var out = this.state.context.pop(); + if (out === _tokenizerContext.types.j_oTag && prevType === _tokenizerTypes.types.slash || out === _tokenizerContext.types.j_cTag) { + this.state.context.pop(); + this.state.exprAllowed = this.curContext() === _tokenizerContext.types.j_expr; + } else { + this.state.exprAllowed = true; + } +}; + +var pp = _parser2["default"].prototype; + +// Reads inline JSX contents token. + +pp.jsxReadToken = function () { + var out = "", + chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.input.length) { + this.raise(this.state.start, "Unterminated JSX contents"); + } + + var ch = this.input.charCodeAt(this.state.pos); + + switch (ch) { + case 60: // "<" + case 123: + // "{" + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.exprAllowed) { + ++this.state.pos; + return this.finishToken(_tokenizerTypes.types.jsxTagStart); + } + return this.getTokenFromCode(ch); + } + out += this.input.slice(chunkStart, this.state.pos); + return this.finishToken(_tokenizerTypes.types.jsxText, out); + + case 38: + // "&" + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + + default: + if (_utilWhitespace.isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } +}; + +pp.jsxReadNewLine = function (normalizeCRLF) { + var ch = this.input.charCodeAt(this.state.pos); + var out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + + return out; +}; + +pp.jsxReadString = function (quote) { + var out = "", + chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.input.length) { + this.raise(this.state.start, "Unterminated string constant"); + } + + var ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + // "&" + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (_utilWhitespace.isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + return this.finishToken(_tokenizerTypes.types.string, out); +}; + +pp.jsxReadEntity = function () { + var str = "", + count = 0, + entity; + var ch = this.input[this.state.pos]; + + var startPos = ++this.state.pos; + while (this.state.pos < this.input.length && count++ < 10) { + ch = this.input[this.state.pos++]; + if (ch === ";") { + if (str[0] === "#") { + if (str[1] === "x") { + str = str.substr(2); + if (HEX_NUMBER.test(str)) entity = String.fromCharCode(parseInt(str, 16)); + } else { + str = str.substr(1); + if (DECIMAL_NUMBER.test(str)) entity = String.fromCharCode(parseInt(str, 10)); + } + } else { + entity = _xhtml2["default"][str]; + } + break; + } + str += ch; + } + if (!entity) { + this.state.pos = startPos; + return "&"; + } + return entity; +}; + +// Read a JSX identifier (valid tag or attribute name). +// +// Optimized version since JSX identifiers can"t contain +// escape characters and so can be read as single slice. +// Also assumes that first character was already checked +// by isIdentifierStart in readToken. + +pp.jsxReadWord = function () { + var ch, + start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (_utilIdentifier.isIdentifierChar(ch) || ch === 45); // "-" + return this.finishToken(_tokenizerTypes.types.jsxName, this.input.slice(start, this.state.pos)); +}; + +// Transforms JSX element name to string. + +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } +} + +// Parse next token as JSX identifier + +pp.jsxParseIdentifier = function () { + var node = this.startNode(); + if (this.match(_tokenizerTypes.types.jsxName)) { + node.name = this.state.value; + } else if (this.state.type.keyword) { + node.name = this.state.type.keyword; + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); +}; + +// Parse namespaced identifier. + +pp.jsxParseNamespacedName = function () { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var name = this.jsxParseIdentifier(); + if (!this.eat(_tokenizerTypes.types.colon)) return name; + + var node = this.startNodeAt(startPos, startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); +}; + +// Parses element name in any form - namespaced, member +// or single identifier. + +pp.jsxParseElementName = function () { + var startPos = this.state.start, + startLoc = this.state.startLoc; + var node = this.jsxParseNamespacedName(); + while (this.eat(_tokenizerTypes.types.dot)) { + var newNode = this.startNodeAt(startPos, startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; +}; + +// Parses any type of JSX attribute value. + +pp.jsxParseAttributeValue = function () { + var node; + switch (this.state.type) { + case _tokenizerTypes.types.braceL: + node = this.jsxParseExpressionContainer(); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(node.start, "JSX attributes must only be assigned a non-empty expression"); + } else { + return node; + } + + case _tokenizerTypes.types.jsxTagStart: + case _tokenizerTypes.types.string: + node = this.parseExprAtom(); + node.rawValue = null; + return node; + + default: + this.raise(this.state.start, "JSX value should be either an expression or a quoted JSX text"); + } +}; + +// JSXEmptyExpression is unique type since it doesn"t actually parse anything, +// and so it should start at the end of last read token (left brace) and finish +// at the beginning of the next one (right brace). + +pp.jsxParseEmptyExpression = function () { + var tmp = this.state.start; + this.state.start = this.state.lastTokEnd; + this.state.lastTokEnd = tmp; + + tmp = this.state.startLoc; + this.state.startLoc = this.state.lastTokEndLoc; + this.state.lastTokEndLoc = tmp; + + return this.finishNode(this.startNode(), "JSXEmptyExpression"); +}; + +// Parses JSX expression enclosed into curly brackets. + +pp.jsxParseExpressionContainer = function () { + var node = this.startNode(); + this.next(); + if (this.match(_tokenizerTypes.types.braceR)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + node.expression = this.parseExpression(); + } + this.expect(_tokenizerTypes.types.braceR); + return this.finishNode(node, "JSXExpressionContainer"); +}; + +// Parses following JSX attribute name-value pair. + +pp.jsxParseAttribute = function () { + var node = this.startNode(); + if (this.eat(_tokenizerTypes.types.braceL)) { + this.expect(_tokenizerTypes.types.ellipsis); + node.argument = this.parseMaybeAssign(); + this.expect(_tokenizerTypes.types.braceR); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(_tokenizerTypes.types.eq) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); +}; + +// Parses JSX opening tag starting after "<". + +pp.jsxParseOpeningElementAt = function (startPos, startLoc) { + var node = this.startNodeAt(startPos, startLoc); + node.attributes = []; + node.name = this.jsxParseElementName(); + while (!this.match(_tokenizerTypes.types.slash) && !this.match(_tokenizerTypes.types.jsxTagEnd)) { + node.attributes.push(this.jsxParseAttribute()); + } + node.selfClosing = this.eat(_tokenizerTypes.types.slash); + this.expect(_tokenizerTypes.types.jsxTagEnd); + return this.finishNode(node, "JSXOpeningElement"); +}; + +// Parses JSX closing tag starting after ""); + } + } + + node.openingElement = openingElement; + node.closingElement = closingElement; + node.children = children; + if (this.match(_tokenizerTypes.types.relational) && this.state.value === "<") { + this.raise(this.state.start, "Adjacent JSX elements must be wrapped in an enclosing tag"); + } + return this.finishNode(node, "JSXElement"); +}; + +// Parses entire JSX element from current position. + +pp.jsxParseElement = function () { + var startPos = this.state.start, + startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startPos, startLoc); +}; + +exports["default"] = function (instance) { + instance.extend("parseExprAtom", function (inner) { + return function (refShortHandDefaultPos) { + if (this.match(_tokenizerTypes.types.jsxText)) { + var node = this.parseLiteral(this.state.value); + // https://github.com/babel/babel/issues/2078 + node.rawValue = null; + return node; + } else if (this.match(_tokenizerTypes.types.jsxTagStart)) { + return this.jsxParseElement(); + } else { + return inner.call(this, refShortHandDefaultPos); + } + }; + }); + + instance.extend("readToken", function (inner) { + return function (code) { + var context = this.curContext(); + + if (context === _tokenizerContext.types.j_expr) { + return this.jsxReadToken(); + } + + if (context === _tokenizerContext.types.j_oTag || context === _tokenizerContext.types.j_cTag) { + if (_utilIdentifier.isIdentifierStart(code)) { + return this.jsxReadWord(); + } + + if (code === 62) { + ++this.state.pos; + return this.finishToken(_tokenizerTypes.types.jsxTagEnd); + } + + if ((code === 34 || code === 39) && context === _tokenizerContext.types.j_oTag) { + return this.jsxReadString(code); + } + } + + if (code === 60 && this.state.exprAllowed) { + ++this.state.pos; + return this.finishToken(_tokenizerTypes.types.jsxTagStart); + } + + return inner.call(this, code); + }; + }); + + instance.extend("updateContext", function (inner) { + return function (prevType) { + if (this.match(_tokenizerTypes.types.braceL)) { + var curContext = this.curContext(); + if (curContext === _tokenizerContext.types.j_oTag) { + this.state.context.push(_tokenizerContext.types.b_expr); + } else if (curContext === _tokenizerContext.types.j_expr) { + this.state.context.push(_tokenizerContext.types.b_tmpl); + } else { + inner.call(this, prevType); + } + this.state.exprAllowed = true; + } else if (this.match(_tokenizerTypes.types.slash) && prevType === _tokenizerTypes.types.jsxTagStart) { + this.state.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore + this.state.context.push(_tokenizerContext.types.j_cTag); // reconsider as closing tag context + this.state.exprAllowed = false; + } else { + return inner.call(this, prevType); + } + }; + }); +}; + +module.exports = exports["default"]; +},{"616":616,"624":624,"625":625,"628":628,"629":629,"631":631}],624:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +exports["default"] = { + quot: "\"", + amp: "&", + apos: "'", + lt: "<", + gt: ">", + nbsp: " ", + iexcl: "¡", + cent: "¢", + pound: "£", + curren: "¤", + yen: "¥", + brvbar: "¦", + sect: "§", + uml: "¨", + copy: "©", + ordf: "ª", + laquo: "«", + not: "¬", + shy: "­", + reg: "®", + macr: "¯", + deg: "°", + plusmn: "±", + sup2: "²", + sup3: "³", + acute: "´", + micro: "µ", + para: "¶", + middot: "·", + cedil: "¸", + sup1: "¹", + ordm: "º", + raquo: "»", + frac14: "¼", + frac12: "½", + frac34: "¾", + iquest: "¿", + Agrave: "À", + Aacute: "Á", + Acirc: "Â", + Atilde: "Ã", + Auml: "Ä", + Aring: "Å", + AElig: "Æ", + Ccedil: "Ç", + Egrave: "È", + Eacute: "É", + Ecirc: "Ê", + Euml: "Ë", + Igrave: "Ì", + Iacute: "Í", + Icirc: "Î", + Iuml: "Ï", + ETH: "Ð", + Ntilde: "Ñ", + Ograve: "Ò", + Oacute: "Ó", + Ocirc: "Ô", + Otilde: "Õ", + Ouml: "Ö", + times: "×", + Oslash: "Ø", + Ugrave: "Ù", + Uacute: "Ú", + Ucirc: "Û", + Uuml: "Ü", + Yacute: "Ý", + THORN: "Þ", + szlig: "ß", + agrave: "à", + aacute: "á", + acirc: "â", + atilde: "ã", + auml: "ä", + aring: "å", + aelig: "æ", + ccedil: "ç", + egrave: "è", + eacute: "é", + ecirc: "ê", + euml: "ë", + igrave: "ì", + iacute: "í", + icirc: "î", + iuml: "ï", + eth: "ð", + ntilde: "ñ", + ograve: "ò", + oacute: "ó", + ocirc: "ô", + otilde: "õ", + ouml: "ö", + divide: "÷", + oslash: "ø", + ugrave: "ù", + uacute: "ú", + ucirc: "û", + uuml: "ü", + yacute: "ý", + thorn: "þ", + yuml: "ÿ", + OElig: "Œ", + oelig: "œ", + Scaron: "Š", + scaron: "š", + Yuml: "Ÿ", + fnof: "ƒ", + circ: "ˆ", + tilde: "˜", + Alpha: "Α", + Beta: "Β", + Gamma: "Γ", + Delta: "Δ", + Epsilon: "Ε", + Zeta: "Ζ", + Eta: "Η", + Theta: "Θ", + Iota: "Ι", + Kappa: "Κ", + Lambda: "Λ", + Mu: "Μ", + Nu: "Ν", + Xi: "Ξ", + Omicron: "Ο", + Pi: "Π", + Rho: "Ρ", + Sigma: "Σ", + Tau: "Τ", + Upsilon: "Υ", + Phi: "Φ", + Chi: "Χ", + Psi: "Ψ", + Omega: "Ω", + alpha: "α", + beta: "β", + gamma: "γ", + delta: "δ", + epsilon: "ε", + zeta: "ζ", + eta: "η", + theta: "θ", + iota: "ι", + kappa: "κ", + lambda: "λ", + mu: "μ", + nu: "ν", + xi: "ξ", + omicron: "ο", + pi: "π", + rho: "ρ", + sigmaf: "ς", + sigma: "σ", + tau: "τ", + upsilon: "υ", + phi: "φ", + chi: "χ", + psi: "ψ", + omega: "ω", + thetasym: "ϑ", + upsih: "ϒ", + piv: "ϖ", + ensp: " ", + emsp: " ", + thinsp: " ", + zwnj: "‌", + zwj: "‍", + lrm: "‎", + rlm: "‏", + ndash: "–", + mdash: "—", + lsquo: "‘", + rsquo: "’", + sbquo: "‚", + ldquo: "“", + rdquo: "”", + bdquo: "„", + dagger: "†", + Dagger: "‡", + bull: "•", + hellip: "…", + permil: "‰", + prime: "′", + Prime: "″", + lsaquo: "‹", + rsaquo: "›", + oline: "‾", + frasl: "⁄", + euro: "€", + image: "ℑ", + weierp: "℘", + real: "ℜ", + trade: "™", + alefsym: "ℵ", + larr: "←", + uarr: "↑", + rarr: "→", + darr: "↓", + harr: "↔", + crarr: "↵", + lArr: "⇐", + uArr: "⇑", + rArr: "⇒", + dArr: "⇓", + hArr: "⇔", + forall: "∀", + part: "∂", + exist: "∃", + empty: "∅", + nabla: "∇", + isin: "∈", + notin: "∉", + ni: "∋", + prod: "∏", + sum: "∑", + minus: "−", + lowast: "∗", + radic: "√", + prop: "∝", + infin: "∞", + ang: "∠", + and: "∧", + or: "∨", + cap: "∩", + cup: "∪", + "int": "∫", + there4: "∴", + sim: "∼", + cong: "≅", + asymp: "≈", + ne: "≠", + equiv: "≡", + le: "≤", + ge: "≥", + sub: "⊂", + sup: "⊃", + nsub: "⊄", + sube: "⊆", + supe: "⊇", + oplus: "⊕", + otimes: "⊗", + perp: "⊥", + sdot: "⋅", + lceil: "⌈", + rceil: "⌉", + lfloor: "⌊", + rfloor: "⌋", + lang: "〈", + rang: "〉", + loz: "◊", + spades: "♠", + clubs: "♣", + hearts: "♥", + diams: "♦" +}; +module.exports = exports["default"]; +},{}],625:[function(_dereq_,module,exports){ +// The algorithm used to determine whether a regexp can appear at a +// given point in the program is loosely based on sweet.js' approach. +// See https://github.com/mozilla/sweet.js/wiki/design + +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var _types = _dereq_(628); + +var TokContext = function TokContext(token, isExpr, preserveSpace, override) { + _classCallCheck(this, TokContext); + + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; +}; + +exports.TokContext = TokContext; +var types = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", true), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { + return p.readTmplToken(); + }), + f_expr: new TokContext("function", true) +}; + +exports.types = types; +// Token-specific context update code + +_types.types.parenR.updateContext = _types.types.braceR.updateContext = function () { + if (this.state.context.length === 1) { + this.state.exprAllowed = true; + return; + } + + var out = this.state.context.pop(); + if (out === types.b_stat && this.curContext() === types.f_expr) { + this.state.context.pop(); + this.state.exprAllowed = false; + } else if (out === types.b_tmpl) { + this.state.exprAllowed = true; + } else { + this.state.exprAllowed = !out.isExpr; + } +}; + +_types.types.braceL.updateContext = function (prevType) { + this.state.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); + this.state.exprAllowed = true; +}; + +_types.types.dollarBraceL.updateContext = function () { + this.state.context.push(types.b_tmpl); + this.state.exprAllowed = true; +}; + +_types.types.parenL.updateContext = function (prevType) { + var statementParens = prevType === _types.types._if || prevType === _types.types._for || prevType === _types.types._with || prevType === _types.types._while; + this.state.context.push(statementParens ? types.p_stat : types.p_expr); + this.state.exprAllowed = true; +}; + +_types.types.incDec.updateContext = function () { + // tokExprAllowed stays unchanged +}; + +_types.types._function.updateContext = function () { + if (this.curContext() !== types.b_stat) { + this.state.context.push(types.f_expr); + } + + this.state.exprAllowed = false; +}; + +_types.types.backQuote.updateContext = function () { + if (this.curContext() === types.q_tmpl) { + this.state.context.pop(); + } else { + this.state.context.push(types.q_tmpl); + } + this.state.exprAllowed = false; +}; +},{"628":628}],626:[function(_dereq_,module,exports){ +"use strict"; + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// istanbul ignore next + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var _utilIdentifier = _dereq_(629); + +var _types = _dereq_(628); + +var _context = _dereq_(625); + +var _utilLocation = _dereq_(630); + +var _utilWhitespace = _dereq_(631); + +var _state = _dereq_(627); + +var _state2 = _interopRequireDefault(_state); + +// Object type used to represent tokens. Note that normally, tokens +// simply exist as properties on the parser object. This is only +// used for the onToken callback and the external tokenizer. + +var Token = function Token(state) { + _classCallCheck(this, Token); + + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new _utilLocation.SourceLocation(state.startLoc, state.endLoc); +} + +// ## Tokenizer + +// Are we running under Rhino? +/* global Packages */ +; + +exports.Token = Token; +var isRhino = typeof Packages === "object" && Object.prototype.toString.call(Packages) === "[object JavaPackage]"; + +// Parse a regular expression. Some context-awareness is necessary, +// since a '/' inside a '[]' set does not end the expression. + +function tryCreateRegexp(src, flags, throwErrorStart) { + try { + return new RegExp(src, flags); + } catch (e) { + if (throwErrorStart !== undefined) { + if (e instanceof SyntaxError) this.raise(throwErrorStart, "Error parsing regular expression: " + e.message); + this.raise(e); + } + } +} + +var regexpUnicodeSupport = !!tryCreateRegexp("￿", "u"); + +function codePointToString(code) { + // UTF-16 Decoding + if (code <= 0xFFFF) return String.fromCharCode(code); + return String.fromCharCode((code - 0x10000 >> 10) + 0xD800, (code - 0x10000 & 1023) + 0xDC00); +} + +var Tokenizer = (function () { + function Tokenizer(input) { + _classCallCheck(this, Tokenizer); + + this.state = new _state2["default"](); + this.state.init(input); + } + + // Move to the next token + + Tokenizer.prototype.next = function next() { + this.state.tokens.push(new Token(this.state)); + + this.state.lastTokEnd = this.state.end; + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + }; + + // TODO + + Tokenizer.prototype.eat = function eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + }; + + // TODO + + Tokenizer.prototype.match = function match(type) { + return this.state.type === type; + }; + + // TODO + + Tokenizer.prototype.lookahead = function lookahead() { + var old = this.state; + this.state = old.clone(); + this.next(); + var curr = this.state.clone(); + this.state = old; + return curr; + }; + + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + + Tokenizer.prototype.setStrict = function setStrict(strict) { + this.strict = strict; + if (!this.match(_types.types.num) && !this.match(_types.types.string)) return; + this.state.pos = this.state.start; + while (this.state.pos < this.state.lineStart) { + this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1; + --this.state.curLine; + } + this.nextToken(); + }; + + Tokenizer.prototype.curContext = function curContext() { + return this.state.context[this.state.context.length - 1]; + }; + + // Read a single token, updating the parser object's token-related + // properties. + + Tokenizer.prototype.nextToken = function nextToken() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) this.skipSpace(); + + this.state.start = this.state.pos; + this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.input.length) return this.finishToken(_types.types.eof); + + if (curContext.override) { + return curContext.override(this); + } else { + return this.readToken(this.fullCharCodeAtPos()); + } + }; + + Tokenizer.prototype.readToken = function readToken(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (_utilIdentifier.isIdentifierStart(code, true) || code === 92 /* '\' */) return this.readWord(); + + return this.getTokenFromCode(code); + }; + + Tokenizer.prototype.fullCharCodeAtPos = function fullCharCodeAtPos() { + var code = this.input.charCodeAt(this.state.pos); + if (code <= 0xd7ff || code >= 0xe000) return code; + + var next = this.input.charCodeAt(this.state.pos + 1); + return (code << 10) + next - 0x35fdc00; + }; + + Tokenizer.prototype.pushComment = function pushComment(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "CommentBlock" : "CommentLine", + value: text, + start: start, + end: end, + loc: new _utilLocation.SourceLocation(startLoc, endLoc), + range: [start, end] + }; + + this.state.tokens.push(comment); + this.state.comments.push(comment); + this.addComment(comment); + }; + + Tokenizer.prototype.skipBlockComment = function skipBlockComment() { + var startLoc = this.state.curPosition(); + var start = this.state.pos, + end = this.input.indexOf("*/", this.state.pos += 2); + if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment"); + + this.state.pos = end + 2; + _utilWhitespace.lineBreakG.lastIndex = start; + var match = undefined; + while ((match = _utilWhitespace.lineBreakG.exec(this.input)) && match.index < this.state.pos) { + ++this.state.curLine; + this.state.lineStart = match.index + match[0].length; + } + + this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition()); + }; + + Tokenizer.prototype.skipLineComment = function skipLineComment(startSkip) { + var start = this.state.pos; + var startLoc = this.state.curPosition(); + var ch = this.input.charCodeAt(this.state.pos += startSkip); + while (this.state.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { + ++this.state.pos; + ch = this.input.charCodeAt(this.state.pos); + } + + this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition()); + }; + + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. + + Tokenizer.prototype.skipSpace = function skipSpace() { + loop: while (this.state.pos < this.input.length) { + var ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32:case 160: + // ' ' + ++this.state.pos; + break; + + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + + case 10:case 8232:case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + + case 47: + // '/' + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + // '*' + this.skipBlockComment(); + break; + + case 47: + this.skipLineComment(2); + break; + + default: + break loop; + } + break; + + default: + if (ch > 8 && ch < 14 || ch >= 5760 && _utilWhitespace.nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.state.pos; + } else { + break loop; + } + } + } + }; + + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. + + Tokenizer.prototype.finishToken = function finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + var prevType = this.state.type; + this.state.type = type; + this.state.value = val; + + this.updateContext(prevType); + }; + + // ### Token reading + + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + + Tokenizer.prototype.readToken_dot = function readToken_dot() { + var next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + return this.readNumber(true); + } + + var next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 46 && next2 === 46) { + // 46 = dot '.' + this.state.pos += 3; + return this.finishToken(_types.types.ellipsis); + } else { + ++this.state.pos; + return this.finishToken(_types.types.dot); + } + }; + + Tokenizer.prototype.readToken_slash = function readToken_slash() { + // '/' + if (this.state.exprAllowed) { + ++this.state.pos; + return this.readRegexp(); + } + + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + return this.finishOp(_types.types.assign, 2); + } else { + return this.finishOp(_types.types.slash, 1); + } + }; + + Tokenizer.prototype.readToken_mult_modulo = function readToken_mult_modulo(code) { + // '%*' + var type = code === 42 ? _types.types.star : _types.types.modulo; + var width = 1; + var next = this.input.charCodeAt(this.state.pos + 1); + + if (next === 42 && this.options.features["es7.exponentiationOperator"]) { + // '*' + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = _types.types.exponent; + } + + if (next === 61) { + width++; + type = _types.types.assign; + } + + return this.finishOp(type, width); + }; + + Tokenizer.prototype.readToken_pipe_amp = function readToken_pipe_amp(code) { + // '|&' + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) return this.finishOp(code === 124 ? _types.types.logicalOR : _types.types.logicalAND, 2); + if (next === 61) return this.finishOp(_types.types.assign, 2); + return this.finishOp(code === 124 ? _types.types.bitwiseOR : _types.types.bitwiseAND, 1); + }; + + Tokenizer.prototype.readToken_caret = function readToken_caret() { + // '^' + var next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + return this.finishOp(_types.types.assign, 2); + } else { + return this.finishOp(_types.types.bitwiseXOR, 1); + } + }; + + Tokenizer.prototype.readToken_plus_min = function readToken_plus_min(code) { + // '+-' + var next = this.input.charCodeAt(this.state.pos + 1); + + if (next === code) { + if (next === 45 && this.input.charCodeAt(this.state.pos + 2) === 62 && _utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken(); + } + return this.finishOp(_types.types.incDec, 2); + } + + if (next === 61) { + return this.finishOp(_types.types.assign, 2); + } else { + return this.finishOp(_types.types.plusMin, 1); + } + }; + + Tokenizer.prototype.readToken_lt_gt = function readToken_lt_gt(code) { + // '<>' + var next = this.input.charCodeAt(this.state.pos + 1); + var size = 1; + + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.state.pos + size) === 61) return this.finishOp(_types.types.assign, size + 1); + return this.finishOp(_types.types.bitShift, size); + } + + if (next === 33 && code === 60 && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) { + if (this.inModule) this.unexpected(); + // `