aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/test')
-rw-r--r--node_modules/es5-ext/test/.eslintrc.json13
-rw-r--r--node_modules/es5-ext/test/__tad.js3
-rw-r--r--node_modules/es5-ext/test/array/#/@@iterator/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/@@iterator/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/@@iterator/shim.js9
-rw-r--r--node_modules/es5-ext/test/array/#/_compare-by-length.js7
-rw-r--r--node_modules/es5-ext/test/array/#/binary-search.js17
-rw-r--r--node_modules/es5-ext/test/array/#/clear.js7
-rw-r--r--node_modules/es5-ext/test/array/#/compact.js17
-rw-r--r--node_modules/es5-ext/test/array/#/concat/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/concat/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/concat/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/concat/shim.js26
-rw-r--r--node_modules/es5-ext/test/array/#/contains.js21
-rw-r--r--node_modules/es5-ext/test/array/#/copy-within/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/copy-within/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/copy-within/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/copy-within/shim.js29
-rw-r--r--node_modules/es5-ext/test/array/#/diff.js17
-rw-r--r--node_modules/es5-ext/test/array/#/e-index-of.js13
-rw-r--r--node_modules/es5-ext/test/array/#/e-last-index-of.js12
-rw-r--r--node_modules/es5-ext/test/array/#/entries/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/entries/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/entries/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/entries/shim.js9
-rw-r--r--node_modules/es5-ext/test/array/#/exclusion.js15
-rw-r--r--node_modules/es5-ext/test/array/#/fill/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/fill/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/fill/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/fill/shim.js18
-rw-r--r--node_modules/es5-ext/test/array/#/filter/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/filter/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/filter/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/filter/shim.js17
-rw-r--r--node_modules/es5-ext/test/array/#/find-index/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/find-index/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/find-index/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/find-index/shim.js17
-rw-r--r--node_modules/es5-ext/test/array/#/find/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/find/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/find/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/find/shim.js17
-rw-r--r--node_modules/es5-ext/test/array/#/first-index.js17
-rw-r--r--node_modules/es5-ext/test/array/#/first.js13
-rw-r--r--node_modules/es5-ext/test/array/#/flatten.js14
-rw-r--r--node_modules/es5-ext/test/array/#/for-each-right.js47
-rw-r--r--node_modules/es5-ext/test/array/#/group.js24
-rw-r--r--node_modules/es5-ext/test/array/#/indexes-of.js14
-rw-r--r--node_modules/es5-ext/test/array/#/intersection.js24
-rw-r--r--node_modules/es5-ext/test/array/#/is-copy.js13
-rw-r--r--node_modules/es5-ext/test/array/#/is-uniq.js11
-rw-r--r--node_modules/es5-ext/test/array/#/keys/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/keys/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/keys/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/keys/shim.js9
-rw-r--r--node_modules/es5-ext/test/array/#/last-index.js17
-rw-r--r--node_modules/es5-ext/test/array/#/last.js15
-rw-r--r--node_modules/es5-ext/test/array/#/map/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/map/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/map/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/map/shim.js19
-rw-r--r--node_modules/es5-ext/test/array/#/remove.js14
-rw-r--r--node_modules/es5-ext/test/array/#/separate.js15
-rw-r--r--node_modules/es5-ext/test/array/#/slice/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/slice/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/slice/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/slice/shim.js17
-rw-r--r--node_modules/es5-ext/test/array/#/some-right.js62
-rw-r--r--node_modules/es5-ext/test/array/#/splice/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/splice/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/splice/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/splice/shim.js19
-rw-r--r--node_modules/es5-ext/test/array/#/uniq.js14
-rw-r--r--node_modules/es5-ext/test/array/#/values/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/#/values/index.js3
-rw-r--r--node_modules/es5-ext/test/array/#/values/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/#/values/shim.js9
-rw-r--r--node_modules/es5-ext/test/array/__scopes.js11
-rw-r--r--node_modules/es5-ext/test/array/_is-extensible.js5
-rw-r--r--node_modules/es5-ext/test/array/_sub-array-dummy-safe.js7
-rw-r--r--node_modules/es5-ext/test/array/_sub-array-dummy.js7
-rw-r--r--node_modules/es5-ext/test/array/from/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/from/index.js3
-rw-r--r--node_modules/es5-ext/test/array/from/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/from/shim.js138
-rw-r--r--node_modules/es5-ext/test/array/generate.js10
-rw-r--r--node_modules/es5-ext/test/array/is-plain-array.js18
-rw-r--r--node_modules/es5-ext/test/array/of/implement.js7
-rw-r--r--node_modules/es5-ext/test/array/of/index.js3
-rw-r--r--node_modules/es5-ext/test/array/of/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/array/of/shim.js89
-rw-r--r--node_modules/es5-ext/test/array/to-array.js17
-rw-r--r--node_modules/es5-ext/test/array/valid-array.js30
-rw-r--r--node_modules/es5-ext/test/boolean/is-boolean.js12
-rw-r--r--node_modules/es5-ext/test/date/#/copy.js10
-rw-r--r--node_modules/es5-ext/test/date/#/days-in-month.js17
-rw-r--r--node_modules/es5-ext/test/date/#/floor-day.js6
-rw-r--r--node_modules/es5-ext/test/date/#/floor-month.js6
-rw-r--r--node_modules/es5-ext/test/date/#/floor-year.js6
-rw-r--r--node_modules/es5-ext/test/date/#/format.js6
-rw-r--r--node_modules/es5-ext/test/date/is-date.js10
-rw-r--r--node_modules/es5-ext/test/date/valid-date.js14
-rw-r--r--node_modules/es5-ext/test/error/#/throw.js10
-rw-r--r--node_modules/es5-ext/test/error/custom.js12
-rw-r--r--node_modules/es5-ext/test/error/is-error.js18
-rw-r--r--node_modules/es5-ext/test/error/valid-error.js9
-rw-r--r--node_modules/es5-ext/test/function/#/compose.js15
-rw-r--r--node_modules/es5-ext/test/function/#/copy.js22
-rw-r--r--node_modules/es5-ext/test/function/#/curry.js20
-rw-r--r--node_modules/es5-ext/test/function/#/lock.js7
-rw-r--r--node_modules/es5-ext/test/function/#/not.js11
-rw-r--r--node_modules/es5-ext/test/function/#/partial.js11
-rw-r--r--node_modules/es5-ext/test/function/#/spread.js10
-rw-r--r--node_modules/es5-ext/test/function/#/to-string-tokens.js33
-rw-r--r--node_modules/es5-ext/test/function/_define-length.js14
-rw-r--r--node_modules/es5-ext/test/function/constant.js7
-rw-r--r--node_modules/es5-ext/test/function/identity.js7
-rw-r--r--node_modules/es5-ext/test/function/invoke.js9
-rw-r--r--node_modules/es5-ext/test/function/is-arguments.js13
-rw-r--r--node_modules/es5-ext/test/function/is-function.js8
-rw-r--r--node_modules/es5-ext/test/function/noop.js5
-rw-r--r--node_modules/es5-ext/test/function/pluck.js7
-rw-r--r--node_modules/es5-ext/test/function/valid-function.js22
-rw-r--r--node_modules/es5-ext/test/global.js6
-rw-r--r--node_modules/es5-ext/test/iterable/for-each.js42
-rw-r--r--node_modules/es5-ext/test/iterable/is.js22
-rw-r--r--node_modules/es5-ext/test/iterable/validate-object.js34
-rw-r--r--node_modules/es5-ext/test/iterable/validate.js32
-rw-r--r--node_modules/es5-ext/test/json/safe-stringify.js26
-rw-r--r--node_modules/es5-ext/test/math/_pack-ieee754.js5
-rw-r--r--node_modules/es5-ext/test/math/_unpack-ieee754.js5
-rw-r--r--node_modules/es5-ext/test/math/acosh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/acosh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/acosh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/acosh/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/asinh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/asinh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/asinh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/asinh/shim.js10
-rw-r--r--node_modules/es5-ext/test/math/atanh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/atanh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/atanh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/atanh/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/cbrt/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/cbrt/index.js3
-rw-r--r--node_modules/es5-ext/test/math/cbrt/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/cbrt/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/clz32/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/clz32/index.js3
-rw-r--r--node_modules/es5-ext/test/math/clz32/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/clz32/shim.js12
-rw-r--r--node_modules/es5-ext/test/math/cosh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/cosh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/cosh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/cosh/shim.js13
-rw-r--r--node_modules/es5-ext/test/math/expm1/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/expm1/index.js3
-rw-r--r--node_modules/es5-ext/test/math/expm1/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/expm1/shim.js9
-rw-r--r--node_modules/es5-ext/test/math/fround/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/fround/index.js3
-rw-r--r--node_modules/es5-ext/test/math/fround/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/fround/shim.js9
-rw-r--r--node_modules/es5-ext/test/math/hypot/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/hypot/index.js3
-rw-r--r--node_modules/es5-ext/test/math/hypot/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/hypot/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/imul/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/imul/index.js3
-rw-r--r--node_modules/es5-ext/test/math/imul/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/imul/shim.js9
-rw-r--r--node_modules/es5-ext/test/math/log10/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/log10/index.js3
-rw-r--r--node_modules/es5-ext/test/math/log10/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/log10/shim.js10
-rw-r--r--node_modules/es5-ext/test/math/log1p/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/log1p/index.js3
-rw-r--r--node_modules/es5-ext/test/math/log1p/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/log1p/shim.js10
-rw-r--r--node_modules/es5-ext/test/math/log2/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/log2/index.js3
-rw-r--r--node_modules/es5-ext/test/math/log2/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/log2/shim.js10
-rw-r--r--node_modules/es5-ext/test/math/sign/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/sign/index.js3
-rw-r--r--node_modules/es5-ext/test/math/sign/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/sign/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/sinh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/sinh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/sinh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/sinh/shim.js13
-rw-r--r--node_modules/es5-ext/test/math/tanh/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/tanh/index.js3
-rw-r--r--node_modules/es5-ext/test/math/tanh/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/tanh/shim.js11
-rw-r--r--node_modules/es5-ext/test/math/trunc/implement.js7
-rw-r--r--node_modules/es5-ext/test/math/trunc/index.js3
-rw-r--r--node_modules/es5-ext/test/math/trunc/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/math/trunc/shim.js16
-rw-r--r--node_modules/es5-ext/test/number/#/pad.js7
-rw-r--r--node_modules/es5-ext/test/number/epsilon/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/epsilon/index.js5
-rw-r--r--node_modules/es5-ext/test/number/epsilon/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/is-finite/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/is-finite/index.js3
-rw-r--r--node_modules/es5-ext/test/number/is-finite/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/is-finite/shim.js8
-rw-r--r--node_modules/es5-ext/test/number/is-integer/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/is-integer/index.js3
-rw-r--r--node_modules/es5-ext/test/number/is-integer/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/is-integer/shim.js9
-rw-r--r--node_modules/es5-ext/test/number/is-nan/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/is-nan/index.js3
-rw-r--r--node_modules/es5-ext/test/number/is-nan/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/is-nan/shim.js7
-rw-r--r--node_modules/es5-ext/test/number/is-natural.js10
-rw-r--r--node_modules/es5-ext/test/number/is-number.js13
-rw-r--r--node_modules/es5-ext/test/number/is-safe-integer/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/is-safe-integer/index.js3
-rw-r--r--node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/is-safe-integer/shim.js11
-rw-r--r--node_modules/es5-ext/test/number/max-safe-integer/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/max-safe-integer/index.js5
-rw-r--r--node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/min-safe-integer/implement.js7
-rw-r--r--node_modules/es5-ext/test/number/min-safe-integer/index.js5
-rw-r--r--node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/number/to-integer.js10
-rw-r--r--node_modules/es5-ext/test/number/to-pos-integer.js10
-rw-r--r--node_modules/es5-ext/test/number/to-uint32.js8
-rw-r--r--node_modules/es5-ext/test/object/_iterate.js30
-rw-r--r--node_modules/es5-ext/test/object/assign/implement.js7
-rw-r--r--node_modules/es5-ext/test/object/assign/index.js3
-rw-r--r--node_modules/es5-ext/test/object/assign/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/object/assign/shim.js11
-rw-r--r--node_modules/es5-ext/test/object/clear.js13
-rw-r--r--node_modules/es5-ext/test/object/compact.js20
-rw-r--r--node_modules/es5-ext/test/object/compare.js13
-rw-r--r--node_modules/es5-ext/test/object/copy-deep.js31
-rw-r--r--node_modules/es5-ext/test/object/copy.js30
-rw-r--r--node_modules/es5-ext/test/object/count.js11
-rw-r--r--node_modules/es5-ext/test/object/create.js22
-rw-r--r--node_modules/es5-ext/test/object/ensure-finite-number.js54
-rw-r--r--node_modules/es5-ext/test/object/ensure-natural-number-value.js24
-rw-r--r--node_modules/es5-ext/test/object/ensure-natural-number.js22
-rw-r--r--node_modules/es5-ext/test/object/ensure-promise.js32
-rw-r--r--node_modules/es5-ext/test/object/eq.js12
-rw-r--r--node_modules/es5-ext/test/object/every.js21
-rw-r--r--node_modules/es5-ext/test/object/filter.js8
-rw-r--r--node_modules/es5-ext/test/object/find-key.js23
-rw-r--r--node_modules/es5-ext/test/object/find.js23
-rw-r--r--node_modules/es5-ext/test/object/first-key.js13
-rw-r--r--node_modules/es5-ext/test/object/flatten.js6
-rw-r--r--node_modules/es5-ext/test/object/for-each.js10
-rw-r--r--node_modules/es5-ext/test/object/get-property-names.js18
-rw-r--r--node_modules/es5-ext/test/object/is-array-like.js16
-rw-r--r--node_modules/es5-ext/test/object/is-callable.js8
-rw-r--r--node_modules/es5-ext/test/object/is-copy-deep.js46
-rw-r--r--node_modules/es5-ext/test/object/is-copy.js18
-rw-r--r--node_modules/es5-ext/test/object/is-empty.js6
-rw-r--r--node_modules/es5-ext/test/object/is-finite-number.js18
-rw-r--r--node_modules/es5-ext/test/object/is-number-value.js18
-rw-r--r--node_modules/es5-ext/test/object/is-object.js13
-rw-r--r--node_modules/es5-ext/test/object/is-plain-object.js18
-rw-r--r--node_modules/es5-ext/test/object/is-promise.js17
-rw-r--r--node_modules/es5-ext/test/object/is-value.js14
-rw-r--r--node_modules/es5-ext/test/object/is.js12
-rw-r--r--node_modules/es5-ext/test/object/key-of.js12
-rw-r--r--node_modules/es5-ext/test/object/keys/implement.js7
-rw-r--r--node_modules/es5-ext/test/object/keys/index.js3
-rw-r--r--node_modules/es5-ext/test/object/keys/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/object/keys/shim.js12
-rw-r--r--node_modules/es5-ext/test/object/map-keys.js7
-rw-r--r--node_modules/es5-ext/test/object/map.js9
-rw-r--r--node_modules/es5-ext/test/object/mixin-prototypes.js73
-rw-r--r--node_modules/es5-ext/test/object/mixin.js75
-rw-r--r--node_modules/es5-ext/test/object/normalize-options.js46
-rw-r--r--node_modules/es5-ext/test/object/primitive-set.js15
-rw-r--r--node_modules/es5-ext/test/object/safe-traverse.js15
-rw-r--r--node_modules/es5-ext/test/object/serialize.js45
-rw-r--r--node_modules/es5-ext/test/object/set-prototype-of/implement.js8
-rw-r--r--node_modules/es5-ext/test/object/set-prototype-of/index.js27
-rw-r--r--node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/object/set-prototype-of/shim.js27
-rw-r--r--node_modules/es5-ext/test/object/some.js23
-rw-r--r--node_modules/es5-ext/test/object/to-array.js15
-rw-r--r--node_modules/es5-ext/test/object/unserialize.js41
-rw-r--r--node_modules/es5-ext/test/object/valid-callable.js9
-rw-r--r--node_modules/es5-ext/test/object/valid-object.js25
-rw-r--r--node_modules/es5-ext/test/object/valid-value.js19
-rw-r--r--node_modules/es5-ext/test/object/validate-array-like-object.js29
-rw-r--r--node_modules/es5-ext/test/object/validate-array-like.js27
-rw-r--r--node_modules/es5-ext/test/object/validate-stringifiable-value.js22
-rw-r--r--node_modules/es5-ext/test/object/validate-stringifiable.js18
-rw-r--r--node_modules/es5-ext/test/optional-chaining.js17
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/index.js15
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/is-sticky.js13
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/is-unicode.js13
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/match/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/match/index.js3
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/match/shim.js8
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/replace/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/replace/index.js3
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/replace/shim.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/search/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/search/index.js3
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/search/shim.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/split/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/split/index.js3
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/split/shim.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/sticky/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/unicode/implement.js7
-rw-r--r--node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/reg-exp/escape.js6
-rw-r--r--node_modules/es5-ext/test/reg-exp/is-reg-exp.js12
-rw-r--r--node_modules/es5-ext/test/reg-exp/valid-reg-exp.js19
-rw-r--r--node_modules/es5-ext/test/safe-to-string.js19
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/shim.js9
-rw-r--r--node_modules/es5-ext/test/string/#/at.js132
-rw-r--r--node_modules/es5-ext/test/string/#/camel-to-hyphen.js7
-rw-r--r--node_modules/es5-ext/test/string/#/capitalize.js9
-rw-r--r--node_modules/es5-ext/test/string/#/case-insensitive-compare.js7
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/implement.js8
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/shim.js119
-rw-r--r--node_modules/es5-ext/test/string/#/contains/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/contains/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/contains/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/contains/shim.js14
-rw-r--r--node_modules/es5-ext/test/string/#/count.js14
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/shim.js16
-rw-r--r--node_modules/es5-ext/test/string/#/hyphen-to-camel.js7
-rw-r--r--node_modules/es5-ext/test/string/#/indent.js9
-rw-r--r--node_modules/es5-ext/test/string/#/last.js6
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/_data.js5
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/shim.js13
-rw-r--r--node_modules/es5-ext/test/string/#/pad.js24
-rw-r--r--node_modules/es5-ext/test/string/#/plain-replace-all.js11
-rw-r--r--node_modules/es5-ext/test/string/#/plain-replace.js7
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/shim.js11
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/shim.js14
-rw-r--r--node_modules/es5-ext/test/string/#/uncapitalize.js10
-rw-r--r--node_modules/es5-ext/test/string/format-method.js12
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/index.js3
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/shim.js73
-rw-r--r--node_modules/es5-ext/test/string/is-string.js11
-rw-r--r--node_modules/es5-ext/test/string/random-uniq.js14
-rw-r--r--node_modules/es5-ext/test/string/raw/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/raw/index.js3
-rw-r--r--node_modules/es5-ext/test/string/raw/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/raw/shim.js15
375 files changed, 4614 insertions, 0 deletions
diff --git a/node_modules/es5-ext/test/.eslintrc.json b/node_modules/es5-ext/test/.eslintrc.json
new file mode 100644
index 000000000..3e9128d4c
--- /dev/null
+++ b/node_modules/es5-ext/test/.eslintrc.json
@@ -0,0 +1,13 @@
+{
+ "globals": {
+ "Symbol": true
+ },
+ "rules": {
+ "consistent-this": "off",
+ "id-length": "off",
+ "no-empty-function": "off",
+ "no-new-wrappers": "off",
+ "no-prototype-builtins": "off",
+ "no-shadow": "off"
+ }
+}
diff --git a/node_modules/es5-ext/test/__tad.js b/node_modules/es5-ext/test/__tad.js
new file mode 100644
index 000000000..883c37928
--- /dev/null
+++ b/node_modules/es5-ext/test/__tad.js
@@ -0,0 +1,3 @@
+"use strict";
+
+exports.context = null;
diff --git a/node_modules/es5-ext/test/array/#/@@iterator/implement.js b/node_modules/es5-ext/test/array/#/@@iterator/implement.js
new file mode 100644
index 000000000..1a20aa82e
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/@@iterator/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/@@iterator/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/@@iterator/index.js b/node_modules/es5-ext/test/array/#/@@iterator/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/@@iterator/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js b/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/@@iterator/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/@@iterator/shim.js b/node_modules/es5-ext/test/array/#/@@iterator/shim.js
new file mode 100644
index 000000000..71b71d58a
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/@@iterator/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: "1", done: false });
+ a.deep(iterator.next(), { value: "2", done: false });
+ a.deep(iterator.next(), { value: "3", done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/node_modules/es5-ext/test/array/#/_compare-by-length.js b/node_modules/es5-ext/test/array/#/_compare-by-length.js
new file mode 100644
index 000000000..a53d8470f
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/_compare-by-length.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var arr = [4, 5, 6], obj1 = { length: 8 }, obj2 = {}, obj3 = { length: 1 };
+
+ a.deep([arr, obj1, obj2, obj3].sort(t), [obj2, obj3, arr, obj1]);
+};
diff --git a/node_modules/es5-ext/test/array/#/binary-search.js b/node_modules/es5-ext/test/array/#/binary-search.js
new file mode 100644
index 000000000..04dfaefa4
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/binary-search.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var compare = function (value) {
+ return this - value;
+};
+
+module.exports = function (t, a) {
+ var arr;
+ arr = [2, 5, 5, 8, 34, 67, 98, 345, 678];
+
+ // Highest, equal match
+ a(t.call(arr, compare.bind(1)), 0, "All higher");
+ a(t.call(arr, compare.bind(679)), arr.length - 1, "All lower");
+ a(t.call(arr, compare.bind(4)), 0, "Mid");
+ a(t.call(arr, compare.bind(5)), 2, "Match");
+ a(t.call(arr, compare.bind(6)), 2, "Above");
+};
diff --git a/node_modules/es5-ext/test/array/#/clear.js b/node_modules/es5-ext/test/array/#/clear.js
new file mode 100644
index 000000000..640cc1926
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/clear.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var arr = [1, 2, {}, 4];
+ a(t.call(arr), arr, "Returns same array");
+ a.deep(arr, [], "Empties array");
+};
diff --git a/node_modules/es5-ext/test/array/#/compact.js b/node_modules/es5-ext/test/array/#/compact.js
new file mode 100644
index 000000000..05160844e
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/compact.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "": function (t, a) {
+ var o, x, y, z;
+ o = {};
+ x = [0, 1, "", null, o, false, undefined, true];
+ y = x.slice(0);
+
+ a.not(z = t.call(x), x, "Returns different object");
+ a.deep(x, y, "Origin not changed");
+ a.deep(z, [0, 1, "", o, false, true], "Result");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/concat/implement.js b/node_modules/es5-ext/test/array/#/concat/implement.js
new file mode 100644
index 000000000..c4dc41fa7
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/concat/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/concat/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/concat/index.js b/node_modules/es5-ext/test/array/#/concat/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/concat/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/concat/is-implemented.js b/node_modules/es5-ext/test/array/#/concat/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/concat/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/concat/shim.js b/node_modules/es5-ext/test/array/#/concat/shim.js
new file mode 100644
index 000000000..30a9b0c62
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/concat/shim.js
@@ -0,0 +1,26 @@
+"use strict";
+
+var isConcatSpreadable = require("es6-symbol").isConcatSpreadable
+ , SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr = [1, 3, 45], x = {}, subArr, subArr2, result;
+
+ a.deep(t.call(arr, "2d", x, ["ere", "fe", x], false, null),
+ [1, 3, 45, "2d", x, "ere", "fe", x, false, null], "Plain array");
+
+ subArr = new SubArray("lol", "miszko");
+ subArr2 = new SubArray("elo", "fol");
+
+ result = t.call(subArr, "df", arr, "fef", subArr2, null);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, ["lol", "miszko", "df", 1, 3, 45, "fef", "elo", "fol", null],
+ "Spreable by default");
+
+ SubArray.prototype[isConcatSpreadable] = false;
+
+ result = t.call(subArr, "df", arr, "fef", subArr2, null);
+ a.deep(result, [subArr, "df", 1, 3, 45, "fef", subArr2, null], "Non spreadable");
+
+ delete SubArray.prototype[isConcatSpreadable];
+};
diff --git a/node_modules/es5-ext/test/array/#/contains.js b/node_modules/es5-ext/test/array/#/contains.js
new file mode 100644
index 000000000..fb0f96ce8
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/contains.js
@@ -0,0 +1,21 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this, this[1]), true, "Contains");
+ a(t.call(this, {}), false, "Does Not contain");
+ },
+ "": function (t, a) {
+ var o, x = {}, y = {};
+
+ o = [1, "raz", x];
+
+ a(t.call(o, 1), true, "First");
+ a(t.call(o, "1"), false, "Type coercion");
+ a(t.call(o, "raz"), true, "Primitive");
+ a(t.call(o, "foo"), false, "Primitive not found");
+ a(t.call(o, x), true, "Object found");
+ a(t.call(o, y), false, "Object not found");
+ a(t.call(o, 1, 1), false, "Position");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/copy-within/implement.js b/node_modules/es5-ext/test/array/#/copy-within/implement.js
new file mode 100644
index 000000000..87272ac0f
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/copy-within/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/copy-within/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/copy-within/index.js b/node_modules/es5-ext/test/array/#/copy-within/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/copy-within/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js b/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/copy-within/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/copy-within/shim.js b/node_modules/es5-ext/test/array/#/copy-within/shim.js
new file mode 100644
index 000000000..03a631fe2
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/copy-within/shim.js
@@ -0,0 +1,29 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var args, x;
+
+ a.h1("2 args");
+ x = [1, 2, 3, 4, 5];
+ t.call(x, 0, 3);
+ a.deep(x, [4, 5, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 3), [1, 4, 5, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 2), [1, 3, 4, 5, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 2, 2), [1, 2, 3, 4, 5]);
+
+ a.h1("3 args");
+ a.deep(t.call([1, 2, 3, 4, 5], 0, 3, 4), [4, 2, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 3, 4), [1, 4, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 1, 2, 4), [1, 3, 4, 4, 5]);
+
+ a.h1("Negative args");
+ a.deep(t.call([1, 2, 3, 4, 5], 0, -2), [4, 5, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], 0, -2, -1), [4, 2, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -2), [1, 3, 3, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3, -1), [1, 3, 4, 4, 5]);
+ a.deep(t.call([1, 2, 3, 4, 5], -4, -3), [1, 3, 4, 5, 5]);
+
+ a.h1("Array-likes");
+ args = { 0: 1, 1: 2, 2: 3, length: 3 };
+ a.deep(t.call(args, -2, 0), { 0: 1, 1: 1, 2: 2, length: 3 });
+};
diff --git a/node_modules/es5-ext/test/array/#/diff.js b/node_modules/es5-ext/test/array/#/diff.js
new file mode 100644
index 000000000..397c5ddfe
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/diff.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this), []);
+ },
+ "": function (t, a) {
+ var x = {}, y = {};
+
+ a.deep(t.call([1, "raz", x, 2, "trzy", y], [x, 2, "trzy"]), [1, "raz", y],
+ "Scope longer");
+ a.deep(t.call([1, "raz", x], [x, 2, "trzy", 1, y]), ["raz"],
+ "Arg longer");
+ a.deep(t.call([1, "raz", x], []), [1, "raz", x], "Empty arg");
+ a.deep(t.call([], [1, y, "sdfs"]), [], "Empty scope");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/e-index-of.js b/node_modules/es5-ext/test/array/#/e-index-of.js
new file mode 100644
index 000000000..1e42cbd73
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/e-index-of.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([3, "raz", {}, x, {}], x), 3, "Regular");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN), 2, "NaN");
+ a(t.call([3, "raz", 0, {}, -0], -0), 2, "-0");
+ a(t.call([3, "raz", -0, {}, 0], +0), 2, "+0");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, 3), 4, "fromIndex");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -1), 4, "fromIndex negative #1");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -2), 4, "fromIndex negative #2");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, -3), 2, "fromIndex negative #3");
+};
diff --git a/node_modules/es5-ext/test/array/#/e-last-index-of.js b/node_modules/es5-ext/test/array/#/e-last-index-of.js
new file mode 100644
index 000000000..2c7fff9fc
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/e-last-index-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([3, "raz", {}, x, {}, x], x), 5, "Regular");
+ a(t.call([3, "raz", NaN, {}, x], NaN), 2, "NaN");
+ a(t.call([3, "raz", 0, {}, -0], -0), 4, "-0");
+ a(t.call([3, "raz", -0, {}, 0], +0), 4, "+0");
+ a(t.call([3, "raz", NaN, {}, NaN], NaN, 3), 2, "fromIndex");
+ a(t.call([3, "raz", NaN, 2, NaN], NaN, -1), 4, "Negative fromIndex #1");
+ a(t.call([3, "raz", NaN, 2, NaN], NaN, -2), 2, "Negative fromIndex #2");
+};
diff --git a/node_modules/es5-ext/test/array/#/entries/implement.js b/node_modules/es5-ext/test/array/#/entries/implement.js
new file mode 100644
index 000000000..fa16930c3
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/entries/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/entries/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/entries/index.js b/node_modules/es5-ext/test/array/#/entries/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/entries/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/entries/is-implemented.js b/node_modules/es5-ext/test/array/#/entries/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/entries/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/entries/shim.js b/node_modules/es5-ext/test/array/#/entries/shim.js
new file mode 100644
index 000000000..87ac25a98
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/entries/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: [0, "1"], done: false });
+ a.deep(iterator.next(), { value: [1, "2"], done: false });
+ a.deep(iterator.next(), { value: [2, "3"], done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/node_modules/es5-ext/test/array/#/exclusion.js b/node_modules/es5-ext/test/array/#/exclusion.js
new file mode 100644
index 000000000..827c037a3
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/exclusion.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var x = {};
+ a.deep(t.call(this, this, [this[0], this[2], x]), [x]);
+ },
+ "": function (t, a) {
+ var x = {}, y = {};
+
+ a.deep(t.call([x, y]), [x, y], "No arguments");
+ a.deep(t.call([x, 1], [], []), [x, 1], "Empty arguments");
+ a.deep(t.call([1, "raz", x], [2, "raz", y], [2, "raz", x]), [1, y]);
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/fill/implement.js b/node_modules/es5-ext/test/array/#/fill/implement.js
new file mode 100644
index 000000000..fe806a6bf
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/fill/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/fill/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/fill/index.js b/node_modules/es5-ext/test/array/#/fill/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/fill/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/fill/is-implemented.js b/node_modules/es5-ext/test/array/#/fill/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/fill/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/fill/shim.js b/node_modules/es5-ext/test/array/#/fill/shim.js
new file mode 100644
index 000000000..c752e10b8
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/fill/shim.js
@@ -0,0 +1,18 @@
+// Taken from https://github.com/paulmillr/es6-shim/blob/master/test/array.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+
+ x = [1, 2, 3, 4, 5, 6];
+ a(t.call(x, -1), x, "Returns self object");
+ a.deep(x, [-1, -1, -1, -1, -1, -1], "Value");
+
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 3), [1, 2, 3, -1, -1, -1],
+ "Positive start");
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, -3), [1, 2, 3, -1, -1, -1],
+ "Negative start");
+ a.deep(t.call([1, 2, 3, 4, 5, 6], -1, 9), [1, 2, 3, 4, 5, 6],
+ "Large start");
+};
diff --git a/node_modules/es5-ext/test/array/#/filter/implement.js b/node_modules/es5-ext/test/array/#/filter/implement.js
new file mode 100644
index 000000000..cac92c83a
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/filter/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/filter/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/filter/index.js b/node_modules/es5-ext/test/array/#/filter/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/filter/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/filter/is-implemented.js b/node_modules/es5-ext/test/array/#/filter/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/filter/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/filter/shim.js b/node_modules/es5-ext/test/array/#/filter/shim.js
new file mode 100644
index 000000000..e20a6511f
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/filter/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, Boolean), ["foo", "2d", x], "Plain array");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, Boolean);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, ["foo", "2d", x], "Result of subclass");
+};
diff --git a/node_modules/es5-ext/test/array/#/find-index/implement.js b/node_modules/es5-ext/test/array/#/find-index/implement.js
new file mode 100644
index 000000000..341bedef4
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find-index/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/find-index/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/find-index/index.js b/node_modules/es5-ext/test/array/#/find-index/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find-index/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/find-index/is-implemented.js b/node_modules/es5-ext/test/array/#/find-index/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find-index/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/find-index/shim.js b/node_modules/es5-ext/test/array/#/find-index/shim.js
new file mode 100644
index 000000000..0a6fe1135
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find-index/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var count = 0, o = {}, self = Object(this);
+ a(t.call(self, function (value, i, scope) {
+ a(value, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ }, self), -1, "Falsy result");
+ a(count, 3);
+
+ count = -1;
+ a(t.call(this, function () {
+ return ++count ? o : null;
+ }, this), 1, "Truthy result");
+ a(count, 1);
+};
diff --git a/node_modules/es5-ext/test/array/#/find/implement.js b/node_modules/es5-ext/test/array/#/find/implement.js
new file mode 100644
index 000000000..9333b25fb
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/find/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/find/index.js b/node_modules/es5-ext/test/array/#/find/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/find/is-implemented.js b/node_modules/es5-ext/test/array/#/find/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/find/shim.js b/node_modules/es5-ext/test/array/#/find/shim.js
new file mode 100644
index 000000000..b8fd9f060
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/find/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var count = 0, o = {}, self = Object(this);
+ a(t.call(self, function (value, i, scope) {
+ a(value, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ }, self), undefined, "Falsy result");
+ a(count, 3);
+
+ count = -1;
+ a(t.call(this, function () {
+ return ++count ? o : null;
+ }, this), this[1], "Truthy result");
+ a(count, 1);
+};
diff --git a/node_modules/es5-ext/test/array/#/first-index.js b/node_modules/es5-ext/test/array/#/first-index.js
new file mode 100644
index 000000000..af3388b55
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/first-index.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t.call([]), null, "Empty");
+ a(t.call([null]), 0, "One value");
+ a(t.call([1, 2, 3]), 0, "Many values");
+ a(t.call(new Array(1000)), null, "Sparse empty");
+ x = [];
+ x[883] = undefined;
+ x[890] = null;
+ a(t.call(x), 883, "Manual sparse, distant value");
+ x = new Array(1000);
+ x[657] = undefined;
+ x[700] = null;
+ a(t.call(x), 657, "Sparse, distant value");
+};
diff --git a/node_modules/es5-ext/test/array/#/first.js b/node_modules/es5-ext/test/array/#/first.js
new file mode 100644
index 000000000..5e9c1ae84
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/first.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ a(t.call(this), this[0]);
+};
+exports[""] = function (t, a) {
+ var x;
+ a(t.call([]), undefined, "Empty");
+ a(t.call(new Array(234), undefined, "Sparse empty"));
+ x = new Array(2342);
+ x[434] = {};
+ a(t.call(x), x[434], "Sparse");
+};
diff --git a/node_modules/es5-ext/test/array/#/flatten.js b/node_modules/es5-ext/test/array/#/flatten.js
new file mode 100644
index 000000000..c1234c3ab
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/flatten.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var o = [1, 2, [3, 4, [5, 6], 7, 8], 9, 10, [11, 12, [13, 14]], 15];
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "Nested Arrays": function (t, a) {
+ var result = t.call(o);
+ a.not(o, result);
+ a.deep(result, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/for-each-right.js b/node_modules/es5-ext/test/array/#/for-each-right.js
new file mode 100644
index 000000000..109101f8b
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/for-each-right.js
@@ -0,0 +1,47 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, first, last, x, icount = this.length;
+ t.call(this, function (item, index, col) {
+ ++count;
+ if (!first) {
+ first = item;
+ }
+ last = item;
+ x = col;
+ a(index, --icount, "Index");
+ });
+ a(count, this.length, "Iterated");
+ a(first, this[this.length - 1], "First is last");
+ a(last, this[0], "Last is first");
+ a.deep(x, Object(this), "Collection as third argument"); // Jslint: skip
+ },
+ "": function (t, a) {
+ var x = {}, y, count;
+ t.call(
+ [1],
+ function () {
+ y = this;
+ },
+ x
+ );
+ a(y, x, "Scope");
+ y = 0;
+ t.call([3, 4, 4], function (a, i) {
+ y += i;
+ });
+ a(y, 3, "Indexes");
+
+ x = [1, 3];
+ x[5] = "x";
+ y = 0;
+ count = 0;
+ t.call(x, function (a, i) {
+ ++count;
+ y += i;
+ });
+ a(y, 6, "Misssing Indexes");
+ a(count, 3, "Misssing Indexes, count");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/group.js b/node_modules/es5-ext/test/array/#/group.js
new file mode 100644
index 000000000..12667de98
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/group.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, self;
+
+ self = Object(this);
+ a.deep(t.call(self, function (v, i, scope) {
+ a(v, this[i], "Value");
+ a(i, count++, "Index");
+ a(scope, this, "Scope");
+ return i;
+ }, self), { 0: [this[0]], 1: [this[1]], 2: [this[2]] });
+ },
+ "": function (t, a) {
+ var r;
+ r = t.call([2, 3, 3, 4, 5, 6, 7, 7, 23, 45, 34, 56],
+ function (v) {
+ return v % 2 ? "odd" : "even";
+ });
+ a.deep(r.odd, [3, 3, 5, 7, 7, 23, 45]);
+ a.deep(r.even, [2, 4, 6, 34, 56]);
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/indexes-of.js b/node_modules/es5-ext/test/array/#/indexes-of.js
new file mode 100644
index 000000000..1463417d4
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/indexes-of.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this[1]), [1]);
+ },
+ "": function (t, a) {
+ var x = {};
+ a.deep(t.call([1, 3, 5, 3, 5], 6), [], "No result");
+ a.deep(t.call([1, 3, 5, 1, 3, 5, 1], 1), [0, 3, 6], "Some results");
+ a.deep(t.call([], x), [], "Empty array");
+ a.deep(t.call([x, 3, {}, x, 3, 5, x], x), [0, 3, 6], "Search for object");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/intersection.js b/node_modules/es5-ext/test/array/#/intersection.js
new file mode 100644
index 000000000..bb1097d1e
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/intersection.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var toArray = require("../../../array/to-array");
+
+module.exports = {
+ "__generic": function (t, a) {
+ a.deep(t.call(this, this, this), toArray(this));
+ },
+ "": function (t, a) {
+ var x = {}, y = {}, p, r;
+ a.deep(t.call([], [2, 3, 4]), [], "Empty #1");
+ a.deep(t.call([2, 3, 4], []), [], "Empty #2");
+ a.deep(t.call([2, 3, x], [y, 5, 7]), [], "Different");
+ p = t.call([3, 5, "raz", {}, "dwa", x], [1, 3, "raz", "dwa", "trzy", x, {}],
+ [3, "raz", x, 65]);
+ r = [3, "raz", x];
+ p.sort();
+ r.sort();
+ a.deep(p, r, "Same parts");
+ a.deep(t.call(r, r), r, "Same");
+ a.deep(t.call([1, 2, x, 4, 5, y, 7], [7, y, 5, 4, x, 2, 1]),
+ [1, 2, x, 4, 5, y, 7], "Long reverse same");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/is-copy.js b/node_modules/es5-ext/test/array/#/is-copy.js
new file mode 100644
index 000000000..b090c2acd
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/is-copy.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([], []), true, "Empty");
+ a(t.call([], {}), true, "Empty lists");
+ a(t.call([1, x, "raz"], [1, x, "raz"]), true, "Same");
+ a(t.call([1, x, "raz"], { 0: 1, 1: x, 2: "raz", length: 3 }), true,
+ "Same lists");
+ a(t.call([1, x, "raz"], [x, 1, "raz"]), false, "Diff order");
+ a(t.call([1, x], [1, x, "raz"]), false, "Diff length #1");
+ a(t.call([1, x, "raz"], [1, x]), false, "Diff length #2");
+};
diff --git a/node_modules/es5-ext/test/array/#/is-uniq.js b/node_modules/es5-ext/test/array/#/is-uniq.js
new file mode 100644
index 000000000..ab531ac51
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/is-uniq.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t.call([]), true, "Empty");
+ a(t.call({}), true, "Empty lists");
+ a(t.call([1, x, "raz"]), true, "Uniq");
+ a(t.call([1, x, 1, "raz"]), false, "Not Uniq: primitive");
+ a(t.call([1, x, "1", "raz"]), true, "Uniq: primitive");
+ a(t.call([1, x, 1, {}, "raz"]), false, "Not Uniq: Obj");
+};
diff --git a/node_modules/es5-ext/test/array/#/keys/implement.js b/node_modules/es5-ext/test/array/#/keys/implement.js
new file mode 100644
index 000000000..cc1f9316a
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/keys/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/keys/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/keys/index.js b/node_modules/es5-ext/test/array/#/keys/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/keys/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/keys/is-implemented.js b/node_modules/es5-ext/test/array/#/keys/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/keys/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/keys/shim.js b/node_modules/es5-ext/test/array/#/keys/shim.js
new file mode 100644
index 000000000..9be9a8f09
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/keys/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: 0, done: false });
+ a.deep(iterator.next(), { value: 1, done: false });
+ a.deep(iterator.next(), { value: 2, done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/node_modules/es5-ext/test/array/#/last-index.js b/node_modules/es5-ext/test/array/#/last-index.js
new file mode 100644
index 000000000..e66d16f14
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/last-index.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t.call([]), null, "Empty");
+ a(t.call([null]), 0, "One value");
+ a(t.call([1, 2, 3]), 2, "Many values");
+ a(t.call(new Array(1000)), null, "Sparse empty");
+ x = [];
+ x[883] = null;
+ x[890] = undefined;
+ a(t.call(x), 890, "Manual sparse, distant value");
+ x = new Array(1000);
+ x[657] = null;
+ x[700] = undefined;
+ a(t.call(x), 700, "Sparse, distant value");
+};
diff --git a/node_modules/es5-ext/test/array/#/last.js b/node_modules/es5-ext/test/array/#/last.js
new file mode 100644
index 000000000..6ca5d0539
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/last.js
@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ a(t.call(this), this[this.length - 1]);
+};
+
+exports[""] = function (t, a) {
+ var x;
+ a(t.call([]), undefined, "Empty");
+ a(t.call(new Array(234), undefined, "Sparse empty"));
+ x = new Array(2342);
+ x[434] = {};
+ x[450] = {};
+ a(t.call(x), x[450], "Sparse");
+};
diff --git a/node_modules/es5-ext/test/array/#/map/implement.js b/node_modules/es5-ext/test/array/#/map/implement.js
new file mode 100644
index 000000000..26bb41158
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/map/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/map/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/map/index.js b/node_modules/es5-ext/test/array/#/map/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/map/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/map/is-implemented.js b/node_modules/es5-ext/test/array/#/map/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/map/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/map/shim.js b/node_modules/es5-ext/test/array/#/map/shim.js
new file mode 100644
index 000000000..02a5af250
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/map/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, Boolean), [true, false, false, true, false, true, false],
+ "Plain array");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, Boolean);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [true, false, false, true, false, true, false],
+ "Result of subclass");
+};
diff --git a/node_modules/es5-ext/test/array/#/remove.js b/node_modules/es5-ext/test/array/#/remove.js
new file mode 100644
index 000000000..d67457ea9
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/remove.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var y = {}, z = {}, x = [9, z, 5, y, "foo"];
+ t.call(x, y);
+ a.deep(x, [9, z, 5, "foo"]);
+ t.call(x, {});
+ a.deep(x, [9, z, 5, "foo"], "Not existing");
+ t.call(x, 5);
+ a.deep(x, [9, z, "foo"], "Primitive");
+ x = [9, z, 5, y, "foo"];
+ t.call(x, z, 5, "foo");
+ a.deep(x, [9, y], "More than one argument");
+};
diff --git a/node_modules/es5-ext/test/array/#/separate.js b/node_modules/es5-ext/test/array/#/separate.js
new file mode 100644
index 000000000..9792637f3
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/separate.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = [], y = {}, z = {};
+ a.deep(t.call(x, y), [], "Empty");
+ a.not(t.call(x), x, "Returns copy");
+ a.deep(t.call([1], y), [1], "One");
+ a.deep(t.call([1, "raz"], y), [1, y, "raz"], "One");
+ a.deep(t.call([1, "raz", x], y), [1, y, "raz", y, x], "More");
+ x = new Array(1000);
+ x[23] = 2;
+ x[3453] = "raz";
+ x[500] = z;
+ a.deep(t.call(x, y), [2, y, z, y, "raz"], "Sparse");
+};
diff --git a/node_modules/es5-ext/test/array/#/slice/implement.js b/node_modules/es5-ext/test/array/#/slice/implement.js
new file mode 100644
index 000000000..8c9b9be63
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/slice/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/slice/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/slice/index.js b/node_modules/es5-ext/test/array/#/slice/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/slice/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/slice/is-implemented.js b/node_modules/es5-ext/test/array/#/slice/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/slice/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/slice/shim.js b/node_modules/es5-ext/test/array/#/slice/shim.js
new file mode 100644
index 000000000..f09ad13cf
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/slice/shim.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, 2, 4), [0, "2d"], "Plain array: result");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, 2, 4);
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [0, "2d"], "Subclass: result");
+};
diff --git a/node_modules/es5-ext/test/array/#/some-right.js b/node_modules/es5-ext/test/array/#/some-right.js
new file mode 100644
index 000000000..1e0f407e6
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/some-right.js
@@ -0,0 +1,62 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ var count = 0, first, last, x, icount = this.length;
+ t.call(this, function (item, index, col) {
+ ++count;
+ if (!first) {
+ first = item;
+ }
+ last = item;
+ x = col;
+ a(index, --icount, "Index");
+ });
+ a(count, this.length, "Iterated");
+ a(first, this[this.length - 1], "First is last");
+ a(last, this[0], "Last is first");
+ a.deep(x, Object(this), "Collection as third argument"); // Jslint: skip
+ },
+ "": function (t, a) {
+ var x = {}, y, count;
+ t.call(
+ [1],
+ function () {
+ y = this;
+ },
+ x
+ );
+ a(y, x, "Scope");
+ y = 0;
+ t.call([3, 4, 4], function (a, i) {
+ y += i;
+ });
+ a(y, 3, "Indexes");
+
+ x = [1, 3];
+ x[5] = "x";
+ y = 0;
+ count = 0;
+ a(
+ t.call(x, function (a, i) {
+ ++count;
+ y += i;
+ }),
+ false,
+ "Return"
+ );
+ a(y, 6, "Misssing Indexes");
+ a(count, 3, "Misssing Indexes, count");
+
+ count = 0;
+ a(
+ t.call([-2, -3, -4, 2, -5], function (item) {
+ ++count;
+ return item > 0;
+ }),
+ true,
+ "Return"
+ );
+ a(count, 2, "Break after true is returned");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/splice/implement.js b/node_modules/es5-ext/test/array/#/splice/implement.js
new file mode 100644
index 000000000..f09257a43
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/splice/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/splice/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/splice/index.js b/node_modules/es5-ext/test/array/#/splice/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/splice/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/splice/is-implemented.js b/node_modules/es5-ext/test/array/#/splice/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/splice/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/splice/shim.js b/node_modules/es5-ext/test/array/#/splice/shim.js
new file mode 100644
index 000000000..480200784
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/splice/shim.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var SubArray = require("../../../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr, x = {}, subArr, result;
+
+ arr = ["foo", undefined, 0, "2d", false, x, null];
+
+ a.deep(t.call(arr, 2, 2, "bar"), [0, "2d"], "Plain array: result");
+ a.deep(arr, ["foo", undefined, "bar", false, x, null], "Plain array: change");
+
+ subArr = new SubArray("foo", undefined, 0, "2d", false, x, null);
+
+ result = t.call(subArr, 2, 2, "bar");
+ a(result instanceof SubArray, true, "Instance of subclass");
+ a.deep(result, [0, "2d"], "Subclass: result");
+ a.deep(subArr, ["foo", undefined, "bar", false, x, null], "Subclass: change");
+};
diff --git a/node_modules/es5-ext/test/array/#/uniq.js b/node_modules/es5-ext/test/array/#/uniq.js
new file mode 100644
index 000000000..c7223b26e
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = {
+ "__generic": function (t, a) {
+ a(t.call(this).length, 3);
+ },
+ "": function (t, a) {
+ var o, x = {}, y = {}, z = {}, w;
+ o = [1, 2, x, 3, 1, "raz", "1", y, x, "trzy", z, "raz"];
+
+ a.not(w = t.call(o), o, "Returns different object");
+ a.deep(w, [1, 2, x, 3, "raz", "1", y, "trzy", z], "Result");
+ }
+};
diff --git a/node_modules/es5-ext/test/array/#/values/implement.js b/node_modules/es5-ext/test/array/#/values/implement.js
new file mode 100644
index 000000000..4ba7613af
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/values/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../array/#/values/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/#/values/index.js b/node_modules/es5-ext/test/array/#/values/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/values/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/#/values/is-implemented.js b/node_modules/es5-ext/test/array/#/values/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/values/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/#/values/shim.js b/node_modules/es5-ext/test/array/#/values/shim.js
new file mode 100644
index 000000000..71b71d58a
--- /dev/null
+++ b/node_modules/es5-ext/test/array/#/values/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__generic = function (t, a) {
+ var iterator = t.call(this);
+ a.deep(iterator.next(), { value: "1", done: false });
+ a.deep(iterator.next(), { value: "2", done: false });
+ a.deep(iterator.next(), { value: "3", done: false });
+ a.deep(iterator.next(), { value: undefined, done: true });
+};
diff --git a/node_modules/es5-ext/test/array/__scopes.js b/node_modules/es5-ext/test/array/__scopes.js
new file mode 100644
index 000000000..bf47389f7
--- /dev/null
+++ b/node_modules/es5-ext/test/array/__scopes.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports.Array = ["1", "2", "3"];
+
+exports.Arguments = (function () {
+ return arguments;
+}("1", "2", "3"));
+
+exports.String = "123";
+
+exports.Object = { 0: "1", 1: "2", 2: "3", 3: "4", length: 3 };
diff --git a/node_modules/es5-ext/test/array/_is-extensible.js b/node_modules/es5-ext/test/array/_is-extensible.js
new file mode 100644
index 000000000..87881863b
--- /dev/null
+++ b/node_modules/es5-ext/test/array/_is-extensible.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js b/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js
new file mode 100644
index 000000000..6b42f4d15
--- /dev/null
+++ b/node_modules/es5-ext/test/array/_sub-array-dummy-safe.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (t) {
+ t(t === null || isArray(t.prototype), true);
+};
diff --git a/node_modules/es5-ext/test/array/_sub-array-dummy.js b/node_modules/es5-ext/test/array/_sub-array-dummy.js
new file mode 100644
index 000000000..6b42f4d15
--- /dev/null
+++ b/node_modules/es5-ext/test/array/_sub-array-dummy.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isArray = Array.isArray;
+
+module.exports = function (t) {
+ t(t === null || isArray(t.prototype), true);
+};
diff --git a/node_modules/es5-ext/test/array/from/implement.js b/node_modules/es5-ext/test/array/from/implement.js
new file mode 100644
index 000000000..2ed3788f9
--- /dev/null
+++ b/node_modules/es5-ext/test/array/from/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../array/from/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/from/index.js b/node_modules/es5-ext/test/array/from/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/from/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/from/is-implemented.js b/node_modules/es5-ext/test/array/from/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/from/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/from/shim.js b/node_modules/es5-ext/test/array/from/shim.js
new file mode 100644
index 000000000..17974c4be
--- /dev/null
+++ b/node_modules/es5-ext/test/array/from/shim.js
@@ -0,0 +1,138 @@
+// Some tests taken from: https://github.com/mathiasbynens/Array.from/blob/master/tests/tests.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var o = [1, 2, 3], MyType;
+ a.not(t(o), o, "Array");
+ a.deep(t(o), o, "Array: same content");
+ a.deep(t("12r3v"), ["1", "2", "r", "3", "v"], "String");
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3, o, "raz")
+ ),
+ [3, o, "raz"],
+ "Arguments"
+ );
+ a.deep(
+ t(
+ (function () {
+ return arguments;
+ })(3)
+ ),
+ [3],
+ "Arguments with one numeric value"
+ );
+
+ a.deep(t({ 0: "raz", 1: "dwa", length: 2 }), ["raz", "dwa"], "Other");
+
+ a.deep(
+ t(
+ o,
+ function (val) {
+ return (val + 2) * 10;
+ },
+ 10
+ ),
+ [30, 40, 50],
+ "Mapping"
+ );
+
+ a.throws(
+ function () {
+ t();
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.deep(t(3), [], "Primitive");
+
+ a(t.length, 1, "Length");
+ a.deep(t({ length: 0 }), [], "No values Array-like");
+ a.deep(t({ length: -1 }), [], "Invalid length Array-like");
+ a.deep(t({ length: -Infinity }), [], "Invalid length Array-like #2");
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.deep(t(false), [], "Boolean");
+ a.deep(t(-Infinity), [], "Inifity");
+ a.deep(t(-0), [], "-0");
+ a.deep(t(+0), [], "+0");
+ a.deep(t(1), [], "1");
+ a.deep(t(Number(Infinity)), [], "+Infinity");
+ a.deep(t({}), [], "Plain object");
+ a.deep(t({ length: 1 }), [undefined], "Sparse array-like");
+ a.deep(
+ t({ 0: "a", 1: "b", length: 2 }, function (x) {
+ return x + x;
+ }),
+ ["aa", "bb"],
+ "Map"
+ );
+ a.deep(
+ t(
+ { 0: "a", 1: "b", length: 2 },
+ function () {
+ return String(this);
+ },
+ undefined
+ ),
+ ["undefined", "undefined"],
+ "Map context"
+ );
+ a.deep(
+ t(
+ { 0: "a", 1: "b", length: 2 },
+ function () {
+ return String(this);
+ },
+ "x"
+ ),
+ ["x", "x"],
+ "Map primitive context"
+ );
+ a.throws(
+ function () {
+ t({}, "foo", "x");
+ },
+ TypeError,
+ "Non callable for map"
+ );
+
+ a.deep(t({ length: 1, 0: "a" }), ["a"], "Null context");
+
+ a(t({ __proto__: { 0: "abc", length: 1 } })[0], "abc", "Values on prototype");
+
+ a.throws(
+ function () {
+ t.call(function () {
+ return Object.freeze({});
+ }, {});
+ },
+ TypeError,
+ "Contructor producing freezed objects"
+ );
+
+ // Ensure no setters are called for the indexes
+ // Ensure no setters are called for the indexes
+ MyType = function () {};
+ Object.defineProperty(MyType.prototype, "0", {
+ set: function (x) {
+ throw new Error("Setter called: " + x);
+ }
+ });
+ a.deep(t.call(MyType, { 0: "abc", length: 1 }), { 0: "abc", length: 1 }, "Defined not set");
+};
diff --git a/node_modules/es5-ext/test/array/generate.js b/node_modules/es5-ext/test/array/generate.js
new file mode 100644
index 000000000..efd5f7c8c
--- /dev/null
+++ b/node_modules/es5-ext/test/array/generate.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+ a.deep(t(3), [undefined, undefined, undefined], "Just length");
+ a.deep(t(0, "x"), [], "No repeat");
+ a.deep(t(1, x, y), [x], "Arguments length larger than repeat number");
+ a.deep(t(3, x), [x, x, x], "Single argument");
+ a.deep(t(5, x, y), [x, y, x, y, x], "Many arguments");
+};
diff --git a/node_modules/es5-ext/test/array/is-plain-array.js b/node_modules/es5-ext/test/array/is-plain-array.js
new file mode 100644
index 000000000..2cfd50d3b
--- /dev/null
+++ b/node_modules/es5-ext/test/array/is-plain-array.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var SubArray = require("../../array/_sub-array-dummy-safe");
+
+module.exports = function (t, a) {
+ var arr = [1, 2, 3];
+ a(t(arr), true, "Array");
+ a(t(null), false, "Null");
+ a(t(), false, "Undefined");
+ a(t("234"), false, "String");
+ a(t(23), false, "Number");
+ a(t({}), false, "Plain object");
+ a(t({ length: 1, 0: "raz" }), false, "Array-like");
+ a(t(Object.create(arr)), false, "Array extension");
+ if (!SubArray) return;
+ a(t(new SubArray(23)), false, "Subclass instance");
+ a(t(Array.prototype), false, "Array.prototype");
+};
diff --git a/node_modules/es5-ext/test/array/of/implement.js b/node_modules/es5-ext/test/array/of/implement.js
new file mode 100644
index 000000000..0b1f5c8f8
--- /dev/null
+++ b/node_modules/es5-ext/test/array/of/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../array/of/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/array/of/index.js b/node_modules/es5-ext/test/array/of/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/of/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/array/of/is-implemented.js b/node_modules/es5-ext/test/array/of/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/array/of/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/array/of/shim.js b/node_modules/es5-ext/test/array/of/shim.js
new file mode 100644
index 000000000..7d18859af
--- /dev/null
+++ b/node_modules/es5-ext/test/array/of/shim.js
@@ -0,0 +1,89 @@
+/* eslint no-useless-call: "off" */
+// Most tests taken from https://github.com/mathiasbynens/Array.of/blob/master/tests/tests.js
+// Thanks @mathiasbynens
+
+"use strict";
+
+var defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+ var x = {}, testObject, MyType;
+
+ a.deep(t(), [], "No arguments");
+ a.deep(t(3), [3], "One numeric argument");
+ a.deep(t(3, "raz", null, x, undefined), [3, "raz", null, x, undefined], "Many arguments");
+
+ a(t.length, 0, "Length");
+
+ a.deep(t("abc"), ["abc"], "String");
+ a.deep(t(undefined), [undefined], "Undefined");
+ a.deep(t(null), [null], "Null");
+ a.deep(t(false), [false], "Boolean");
+ a.deep(t(-Infinity), [-Infinity], "Infinity");
+ a.deep(t(-0), [-0], "-0");
+ a.deep(t(+0), [+0], "+0");
+ a.deep(t(1), [1], "1");
+ a.deep(t(1, 2, 3), [1, 2, 3], "Numeric args");
+ a.deep(t(Number(Infinity)), [Number(Infinity)], "+Infinity");
+ a.deep(
+ t({ 0: "a", 1: "b", 2: "c", length: 3 }),
+ [{ 0: "a", 1: "b", 2: "c", length: 3 }],
+ "Array like"
+ );
+ a.deep(
+ t(undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)),
+ [undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)],
+ "Falsy arguments"
+ );
+
+ a.h1("Null context");
+ a.deep(t.call(null, "abc"), ["abc"], "String");
+ a.deep(t.call(null, undefined), [undefined], "Undefined");
+ a.deep(t.call(null, null), [null], "Null");
+ a.deep(t.call(null, false), [false], "Boolean");
+ a.deep(t.call(null, -Infinity), [-Infinity], "-Infinity");
+ a.deep(t.call(null, -0), [-0], "-0");
+ a.deep(t.call(null, +0), [+0], "+0");
+ a.deep(t.call(null, 1), [1], "1");
+ a.deep(t.call(null, 1, 2, 3), [1, 2, 3], "Numeric");
+ a.deep(t.call(null, Number(Infinity)), [Number(Infinity)], "+Infinity");
+ a.deep(
+ t.call(null, { 0: "a", 1: "b", 2: "c", length: 3 }),
+ [{ 0: "a", 1: "b", 2: "c", length: 3 }],
+ "Array-like"
+ );
+ a.deep(
+ t.call(null, undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)),
+ [undefined, null, false, -Infinity, -0, +0, 1, 2, Number(Infinity)],
+ "Falsy"
+ );
+
+ a.h1("Other constructor context");
+ a.deep(t.call(Object, 1, 2, 3), { 0: 1, 1: 2, 2: 3, length: 3 }, "Many arguments");
+
+ testObject = Object(3);
+ testObject[0] = 1;
+ testObject[1] = 2;
+ testObject[2] = 3;
+ testObject.length = 3;
+ a.deep(t.call(Object, 1, 2, 3), testObject, "Test object");
+ a(t.call(Object).length, 0, "No arguments");
+ a.throws(
+ function () {
+ t.call(function () {
+ return Object.freeze({});
+ });
+ },
+ TypeError,
+ "Frozen instance"
+ );
+
+ // Ensure no setters are called for the indexes
+ MyType = function () {};
+ defineProperty(MyType.prototype, "0", {
+ set: function (x) {
+ throw new Error("Setter called: " + x);
+ }
+ });
+ a.deep(t.call(MyType, "abc"), { 0: "abc", length: 1 }, "Define, not set");
+};
diff --git a/node_modules/es5-ext/test/array/to-array.js b/node_modules/es5-ext/test/array/to-array.js
new file mode 100644
index 000000000..4e93ad5db
--- /dev/null
+++ b/node_modules/es5-ext/test/array/to-array.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = [1, 2, 3];
+ a(t(o), o, "Array");
+ a.deep(t("12r3v"), ["1", "2", "r", "3", "v"], "String");
+ a.deep(t((function () {
+ return arguments;
+}(3, o, "raz"))),
+ [3, o, "raz"], "Arguments");
+ a.deep(t((function () {
+ return arguments;
+}(3))), [3],
+ "Arguments with one numeric value");
+
+ a.deep(t({ 0: "raz", 1: "dwa", length: 2 }), ["raz", "dwa"], "Other");
+};
diff --git a/node_modules/es5-ext/test/array/valid-array.js b/node_modules/es5-ext/test/array/valid-array.js
new file mode 100644
index 000000000..a3708b22d
--- /dev/null
+++ b/node_modules/es5-ext/test/array/valid-array.js
@@ -0,0 +1,30 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a.throws(function () {
+ t(0);
+}, TypeError, "Number");
+ a.throws(function () {
+ t(true);
+}, TypeError, "Boolean");
+ a.throws(function () {
+ t("raz");
+}, TypeError, "String");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a.throws(function () {
+ t({});
+}, TypeError, "Object");
+ a.throws(function () {
+ t({ length: 0 });
+}, TypeError, "Array-like");
+ a(t(x = []), x, "Array");
+};
diff --git a/node_modules/es5-ext/test/boolean/is-boolean.js b/node_modules/es5-ext/test/boolean/is-boolean.js
new file mode 100644
index 000000000..e36b3f34e
--- /dev/null
+++ b/node_modules/es5-ext/test/boolean/is-boolean.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Boolean(false)), true, "Boolean object");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+ a(t(/a/), false, "Regular expression");
+};
diff --git a/node_modules/es5-ext/test/date/#/copy.js b/node_modules/es5-ext/test/date/#/copy.js
new file mode 100644
index 000000000..27c996bba
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/copy.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = new Date(), o2;
+
+ o2 = t.call(o);
+ a.not(o, o2, "Different objects");
+ a.ok(o2 instanceof Date, "Instance of Date");
+ a(o.getTime(), o2.getTime(), "Same time");
+};
diff --git a/node_modules/es5-ext/test/date/#/days-in-month.js b/node_modules/es5-ext/test/date/#/days-in-month.js
new file mode 100644
index 000000000..ce2dd7754
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/days-in-month.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2001, 0, 1)), 31, "January");
+ a(t.call(new Date(2001, 1, 1)), 28, "February");
+ a(t.call(new Date(2000, 1, 1)), 29, "February (leap)");
+ a(t.call(new Date(2001, 2, 1)), 31, "March");
+ a(t.call(new Date(2001, 3, 1)), 30, "April");
+ a(t.call(new Date(2001, 4, 1)), 31, "May");
+ a(t.call(new Date(2001, 5, 1)), 30, "June");
+ a(t.call(new Date(2001, 6, 1)), 31, "July");
+ a(t.call(new Date(2001, 7, 1)), 31, "August");
+ a(t.call(new Date(2001, 8, 1)), 30, "September");
+ a(t.call(new Date(2001, 9, 1)), 31, "October");
+ a(t.call(new Date(2001, 10, 1)), 30, "November");
+ a(t.call(new Date(2001, 11, 1)), 31, "December");
+};
diff --git a/node_modules/es5-ext/test/date/#/floor-day.js b/node_modules/es5-ext/test/date/#/floor-day.js
new file mode 100644
index 000000000..fa929d683
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/floor-day.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 0, 1, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/node_modules/es5-ext/test/date/#/floor-month.js b/node_modules/es5-ext/test/date/#/floor-month.js
new file mode 100644
index 000000000..1df4ddbeb
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/floor-month.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 0, 15, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/node_modules/es5-ext/test/date/#/floor-year.js b/node_modules/es5-ext/test/date/#/floor-year.js
new file mode 100644
index 000000000..5b78b7dcf
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/floor-year.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(new Date(2000, 5, 13, 13, 32, 34, 234)).valueOf(),
+ new Date(2000, 0, 1).valueOf());
+};
diff --git a/node_modules/es5-ext/test/date/#/format.js b/node_modules/es5-ext/test/date/#/format.js
new file mode 100644
index 000000000..510b26b44
--- /dev/null
+++ b/node_modules/es5-ext/test/date/#/format.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var dt = new Date(2011, 2, 3, 3, 5, 5, 32);
+ a(t.call(dt, " %Y.%y.%m.%d.%H.%M.%S.%L "), " 2011.11.03.03.03.05.05.032 ");
+};
diff --git a/node_modules/es5-ext/test/date/is-date.js b/node_modules/es5-ext/test/date/is-date.js
new file mode 100644
index 000000000..90ae8ad70
--- /dev/null
+++ b/node_modules/es5-ext/test/date/is-date.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+};
diff --git a/node_modules/es5-ext/test/date/valid-date.js b/node_modules/es5-ext/test/date/valid-date.js
new file mode 100644
index 000000000..2856cb6a8
--- /dev/null
+++ b/node_modules/es5-ext/test/date/valid-date.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var d = new Date();
+ a(t(d), d, "Date");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t({ valueOf: function () {
+ return 20;
+} });
+ }, "Number object");
+};
diff --git a/node_modules/es5-ext/test/error/#/throw.js b/node_modules/es5-ext/test/error/#/throw.js
new file mode 100644
index 000000000..8c5d04eea
--- /dev/null
+++ b/node_modules/es5-ext/test/error/#/throw.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var e = new Error();
+ try {
+ t.call(e);
+ } catch (e2) {
+ a(e2, e);
+ }
+};
diff --git a/node_modules/es5-ext/test/error/custom.js b/node_modules/es5-ext/test/error/custom.js
new file mode 100644
index 000000000..ca35c7666
--- /dev/null
+++ b/node_modules/es5-ext/test/error/custom.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var T = t, err = new T("My Error", "MY_ERROR", { errno: 123 });
+ a(err instanceof Error, true, "Instance of error");
+ a(err.constructor, Error, "Constructor");
+ a(err.name, "Error", "Name");
+ a(String(err), "Error: My Error", "String representation");
+ a(err.code, "MY_ERROR", "Code");
+ a(err.errno, 123, "Errno");
+ a(typeof err.stack, "string", "Stack trace");
+};
diff --git a/node_modules/es5-ext/test/error/is-error.js b/node_modules/es5-ext/test/error/is-error.js
new file mode 100644
index 000000000..423c7359e
--- /dev/null
+++ b/node_modules/es5-ext/test/error/is-error.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), false, "Undefined");
+ a(t(1), false, "Primitive");
+ a(t({}), false, "Objectt");
+ a(t({ toString: function () {
+ return "[object Error]";
+} }), false,
+ "Fake error");
+ a(t(new Error()), true, "Error");
+ a(t(new EvalError()), true, "EvalError");
+ a(t(new RangeError()), true, "RangeError");
+ a(t(new ReferenceError()), true, "ReferenceError");
+ a(t(new SyntaxError()), true, "SyntaxError");
+ a(t(new TypeError()), true, "TypeError");
+ a(t(new URIError()), true, "URIError");
+};
diff --git a/node_modules/es5-ext/test/error/valid-error.js b/node_modules/es5-ext/test/error/valid-error.js
new file mode 100644
index 000000000..7d032bf23
--- /dev/null
+++ b/node_modules/es5-ext/test/error/valid-error.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var e = new Error();
+ a(t(e), e, "Error");
+ a.throws(function () {
+ t({});
+ }, "Other");
+};
diff --git a/node_modules/es5-ext/test/function/#/compose.js b/node_modules/es5-ext/test/function/#/compose.js
new file mode 100644
index 000000000..433f3b4b1
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/compose.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var f = function (a, b) {
+ return ["a", arguments.length, a, b];
+}
+ , g = function (a) {
+ return ["b", arguments.length].concat(a);
+}
+ , h = function (a) {
+ return ["c", arguments.length].concat(a);
+};
+
+module.exports = function (t, a) {
+ a.deep(t.call(h, g, f)(1, 2), ["c", 1, "b", 1, "a", 2, 1, 2]);
+};
diff --git a/node_modules/es5-ext/test/function/#/copy.js b/node_modules/es5-ext/test/function/#/copy.js
new file mode 100644
index 000000000..9948f1183
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/copy.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var foo = "raz", bar = "dwa";
+ // eslint-disable-next-line func-names
+ var fn = function marko (a, b) {
+ return this + a + b + foo + bar;
+ };
+ var result, o = {};
+
+ fn.prototype = o;
+
+ fn.foo = "raz";
+
+ result = t.call(fn);
+
+ a(result.length, fn.length, "Length");
+ a(result.name, fn.name, "Length");
+ a(result.call("marko", "el", "fe"), "markoelferazdwa", "Body");
+ a(result.prototype, fn.prototype, "Prototype");
+ a(result.foo, fn.foo, "Custom property");
+};
diff --git a/node_modules/es5-ext/test/function/#/curry.js b/node_modules/es5-ext/test/function/#/curry.js
new file mode 100644
index 000000000..c30313a0d
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/curry.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var toArray = require("../../../array/to-array")
+
+ , f = function () {
+ return toArray(arguments);
+};
+
+module.exports = function (t, a) {
+ var x, y = {}, z;
+ a.deep(t.call(f, 0, 1, 2)(3), [], "0 arguments");
+ x = t.call(f, 5, {});
+ a(x.length, 5, "Length #1");
+ z = x(1, 2);
+ a(z.length, 3, "Length #2");
+ z = z(3, 4);
+ a(z.length, 1, "Length #1");
+ a.deep(z(5, 6), [1, 2, 3, 4, 5], "Many arguments");
+ a.deep(x(8, 3)(y, 45)("raz", 6), [8, 3, y, 45, "raz"], "Many arguments #2");
+};
diff --git a/node_modules/es5-ext/test/function/#/lock.js b/node_modules/es5-ext/test/function/#/lock.js
new file mode 100644
index 000000000..08ea9505c
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/lock.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(function () {
+ return arguments.length;
+ })(1, 2, 3), 0);
+};
diff --git a/node_modules/es5-ext/test/function/#/not.js b/node_modules/es5-ext/test/function/#/not.js
new file mode 100644
index 000000000..64fff7150
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/not.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var identity = require("../../../function/identity")
+ , noop = require("../../../function/noop");
+
+module.exports = function (t, a) {
+ a(t.call(identity)(""), true, "Falsy");
+ a(t.call(noop)(), true, "Undefined");
+ a(t.call(identity)({}), false, "Any object");
+ a(t.call(identity)(true), false, "True");
+};
diff --git a/node_modules/es5-ext/test/function/#/partial.js b/node_modules/es5-ext/test/function/#/partial.js
new file mode 100644
index 000000000..7e9428fa9
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/partial.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var toArray = require("../../../array/to-array")
+
+ , f = function () {
+ return toArray(arguments);
+};
+
+module.exports = function (t, a) {
+ a.deep(t.call(f, 1)(2, 3), [1, 2, 3]);
+};
diff --git a/node_modules/es5-ext/test/function/#/spread.js b/node_modules/es5-ext/test/function/#/spread.js
new file mode 100644
index 000000000..d082fcabc
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/spread.js
@@ -0,0 +1,10 @@
+"use strict";
+
+var f = function (a, b) {
+ return this[a] + this[b];
+}
+ , o = { a: 3, b: 4 };
+
+module.exports = function (t, a) {
+ a(t.call(f).call(o, ["a", "b"]), 7);
+};
diff --git a/node_modules/es5-ext/test/function/#/to-string-tokens.js b/node_modules/es5-ext/test/function/#/to-string-tokens.js
new file mode 100644
index 000000000..0691cc394
--- /dev/null
+++ b/node_modules/es5-ext/test/function/#/to-string-tokens.js
@@ -0,0 +1,33 @@
+/* eslint no-eval: "off" */
+
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(
+ t.call(function (a, b) {
+ return this[a] + this[b];
+ }),
+ { args: "a, b", body: "\n\t\t\treturn this[a] + this[b];\n\t\t" }
+ );
+ a.deep(t.call(function () {}), { args: "", body: "" });
+ // eslint-disable-next-line no-unused-vars
+ a.deep(t.call(function (raz) {}), { args: "raz", body: "" });
+ a.deep(
+ t.call(function () {
+ Object();
+ }),
+ { args: "", body: "\n\t\t\tObject();\n\t\t" }
+ );
+
+ try {
+ eval("(() => {})");
+ } catch (e) {
+ // Non ES2015 env
+ return;
+ }
+
+ a.deep(t.call(eval("(() => {})")), { args: "", body: "" });
+ a.deep(t.call(eval("((elo) => foo)")), { args: "elo", body: "foo" });
+ a.deep(t.call(eval("(elo => foo)")), { args: "elo", body: "foo" });
+ a.deep(t.call(eval("((elo, bar) => foo())")), { args: "elo, bar", body: "foo()" });
+};
diff --git a/node_modules/es5-ext/test/function/_define-length.js b/node_modules/es5-ext/test/function/_define-length.js
new file mode 100644
index 000000000..324e273c0
--- /dev/null
+++ b/node_modules/es5-ext/test/function/_define-length.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var foo = "raz", bar = "dwa"
+ , fn = function (a, b) {
+ return this + a + b + foo + bar;
+}
+ , result;
+
+ result = t(fn, 3);
+ a(result.call("marko", "el", "fe"), "markoelferazdwa", "Content");
+ a(result.length, 3, "Length");
+ a(result.prototype, fn.prototype, "Prototype");
+};
diff --git a/node_modules/es5-ext/test/function/constant.js b/node_modules/es5-ext/test/function/constant.js
new file mode 100644
index 000000000..4ba2d8983
--- /dev/null
+++ b/node_modules/es5-ext/test/function/constant.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = {};
+
+module.exports = function (t, a) {
+ a(t(o)(), o);
+};
diff --git a/node_modules/es5-ext/test/function/identity.js b/node_modules/es5-ext/test/function/identity.js
new file mode 100644
index 000000000..a5b0b1bc9
--- /dev/null
+++ b/node_modules/es5-ext/test/function/identity.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = {};
+
+module.exports = function (t, a) {
+ a(t(o), o);
+};
diff --git a/node_modules/es5-ext/test/function/invoke.js b/node_modules/es5-ext/test/function/invoke.js
new file mode 100644
index 000000000..6268f47e9
--- /dev/null
+++ b/node_modules/es5-ext/test/function/invoke.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var constant = require("../../function/constant")
+
+ , o = { b: constant("c") };
+
+module.exports = function (t, a) {
+ a(t("b")(o), "c");
+};
diff --git a/node_modules/es5-ext/test/function/is-arguments.js b/node_modules/es5-ext/test/function/is-arguments.js
new file mode 100644
index 000000000..5bd54ac7e
--- /dev/null
+++ b/node_modules/es5-ext/test/function/is-arguments.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var args, dummy;
+ args = (function () {
+ return arguments;
+}());
+ dummy = { 0: 1, 1: 2 };
+ Object.defineProperty(dummy, "length", { value: 2 });
+ a(t(args), true, "Arguments");
+ a(t(dummy), false, "Dummy");
+ a(t([]), false, "Array");
+};
diff --git a/node_modules/es5-ext/test/function/is-function.js b/node_modules/es5-ext/test/function/is-function.js
new file mode 100644
index 000000000..fe8979851
--- /dev/null
+++ b/node_modules/es5-ext/test/function/is-function.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var o = { call: Function.prototype.call, apply: Function.prototype.apply };
+
+module.exports = function (t, a) {
+ a(t(function () {}), true, "Function is function");
+ a(t(o), false, "Plain object is not function");
+};
diff --git a/node_modules/es5-ext/test/function/noop.js b/node_modules/es5-ext/test/function/noop.js
new file mode 100644
index 000000000..34de85ab6
--- /dev/null
+++ b/node_modules/es5-ext/test/function/noop.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(1, 2, 3), "undefined");
+};
diff --git a/node_modules/es5-ext/test/function/pluck.js b/node_modules/es5-ext/test/function/pluck.js
new file mode 100644
index 000000000..f8954c59d
--- /dev/null
+++ b/node_modules/es5-ext/test/function/pluck.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var o = { foo: "bar" };
+
+module.exports = function (t, a) {
+ a(t("foo")(o), o.foo);
+};
diff --git a/node_modules/es5-ext/test/function/valid-function.js b/node_modules/es5-ext/test/function/valid-function.js
new file mode 100644
index 000000000..30c036084
--- /dev/null
+++ b/node_modules/es5-ext/test/function/valid-function.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var f = function () {};
+ a(t(f), f, "Function");
+ // eslint-disable-next-line no-new-func
+ f = new Function();
+ a(t(f), f, "Function");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t(/re/);
+ }, "RegExp");
+ a.throws(function () {
+ t({
+ call: function () {
+ return 20;
+ }
+ });
+ }, "Plain object");
+};
diff --git a/node_modules/es5-ext/test/global.js b/node_modules/es5-ext/test/global.js
new file mode 100644
index 000000000..554ad4ccd
--- /dev/null
+++ b/node_modules/es5-ext/test/global.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.ok(t && typeof t === "object");
+ a(typeof t.Array, "function");
+};
diff --git a/node_modules/es5-ext/test/iterable/for-each.js b/node_modules/es5-ext/test/iterable/for-each.js
new file mode 100644
index 000000000..d6c3872aa
--- /dev/null
+++ b/node_modules/es5-ext/test/iterable/for-each.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var ArrayIterator = require("es6-iterator/array")
+
+ , slice = Array.prototype.slice;
+
+module.exports = function (t, a) {
+ var i = 0, x = ["raz", "dwa", "trzy"], y = {};
+ t(x, function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
+ a(this, y, "Array: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t((function () {
+ return arguments;
+}("raz", "dwa", "trzy")), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
+ a(this, y, "Arguments: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t({ 0: "raz", 1: "dwa", 2: "trzy", length: 3 }, function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Array-like" + i + "#");
+ a(this, y, "Array-like: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(x = "foo", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Regular String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ x = ["r", "💩", "z"];
+ t("r💩z", function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
+ a(this, y, "Unicode String: context: " + i++ + "#");
+ }, y);
+ i = 0;
+ t(new ArrayIterator(x), function () {
+ a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
+ a(this, y, "Iterator: context: " + i++ + "#");
+ }, y);
+
+};
diff --git a/node_modules/es5-ext/test/iterable/is.js b/node_modules/es5-ext/test/iterable/is.js
new file mode 100644
index 000000000..8c3158b22
--- /dev/null
+++ b/node_modules/es5-ext/test/iterable/is.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a(t([]), true, "Array");
+ a(t(""), true, "String");
+ a(t((function () {
+ return arguments;
+}())), true, "Arguments");
+ a(t({ length: 0 }), true, "List object");
+ a(t(function () {}), false, "Function");
+ a(t({}), false, "Plain object");
+ a(t(/raz/), false, "Regexp");
+ a(t(), false, "No argument");
+ a(t(null), false, "Null");
+ a(t(undefined), false, "Undefined");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), true, "Iterable");
+};
diff --git a/node_modules/es5-ext/test/iterable/validate-object.js b/node_modules/es5-ext/test/iterable/validate-object.js
new file mode 100644
index 000000000..83a9ca15e
--- /dev/null
+++ b/node_modules/es5-ext/test/iterable/validate-object.js
@@ -0,0 +1,34 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "String");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), x, "Iterable");
+};
diff --git a/node_modules/es5-ext/test/iterable/validate.js b/node_modules/es5-ext/test/iterable/validate.js
new file mode 100644
index 000000000..61cab5d38
--- /dev/null
+++ b/node_modules/es5-ext/test/iterable/validate.js
@@ -0,0 +1,32 @@
+"use strict";
+
+var iteratorSymbol = require("es6-symbol").iterator;
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a(t(""), "", "''");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+ x = {};
+ x[iteratorSymbol] = function () {};
+ a(t(x), x, "Iterable");
+};
diff --git a/node_modules/es5-ext/test/json/safe-stringify.js b/node_modules/es5-ext/test/json/safe-stringify.js
new file mode 100644
index 000000000..2d13f3def
--- /dev/null
+++ b/node_modules/es5-ext/test/json/safe-stringify.js
@@ -0,0 +1,26 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({ foo: "bar" }), JSON.stringify({ foo: "bar" }));
+ a(t({ foo: { elo: 12 } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12,
+mel: {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ } } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12 },
+mel: {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ } }), "{\"foo\":{\"elo\":12}}");
+ a(t({ foo: { elo: 12 },
+mel: [
+"raz", {
+ toJSON: function () {
+ throw new Error("Nu nu!");
+}
+ }, 0, 2
+] }), "{\"foo\":{\"elo\":12},\"mel\":[\"raz\",0,2]}");
+};
diff --git a/node_modules/es5-ext/test/math/_pack-ieee754.js b/node_modules/es5-ext/test/math/_pack-ieee754.js
new file mode 100644
index 000000000..7e56f7f29
--- /dev/null
+++ b/node_modules/es5-ext/test/math/_pack-ieee754.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t(1.337, 8, 23), [63, 171, 34, 209]);
+};
diff --git a/node_modules/es5-ext/test/math/_unpack-ieee754.js b/node_modules/es5-ext/test/math/_unpack-ieee754.js
new file mode 100644
index 000000000..52730f389
--- /dev/null
+++ b/node_modules/es5-ext/test/math/_unpack-ieee754.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t([63, 171, 34, 209], 8, 23), 1.3370000123977661);
+};
diff --git a/node_modules/es5-ext/test/math/acosh/implement.js b/node_modules/es5-ext/test/math/acosh/implement.js
new file mode 100644
index 000000000..d7bcc28ae
--- /dev/null
+++ b/node_modules/es5-ext/test/math/acosh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/acosh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/acosh/index.js b/node_modules/es5-ext/test/math/acosh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/acosh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/acosh/is-implemented.js b/node_modules/es5-ext/test/math/acosh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/acosh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/acosh/shim.js b/node_modules/es5-ext/test/math/acosh/shim.js
new file mode 100644
index 000000000..17ac18193
--- /dev/null
+++ b/node_modules/es5-ext/test/math/acosh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-1), NaN, "Negative");
+ a(t(0), NaN, "Zero");
+ a(t(0.5), NaN, "Below 1");
+ a(t(1), 0, "1");
+ a(t(2), 1.3169578969248166, "Other");
+ a(t(Infinity), Infinity, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/math/asinh/implement.js b/node_modules/es5-ext/test/math/asinh/implement.js
new file mode 100644
index 000000000..ab4b96914
--- /dev/null
+++ b/node_modules/es5-ext/test/math/asinh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/asinh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/asinh/index.js b/node_modules/es5-ext/test/math/asinh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/asinh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/asinh/is-implemented.js b/node_modules/es5-ext/test/math/asinh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/asinh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/asinh/shim.js b/node_modules/es5-ext/test/math/asinh/shim.js
new file mode 100644
index 000000000..a4328d2e1
--- /dev/null
+++ b/node_modules/es5-ext/test/math/asinh/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(-2), -1.4436354751788103, "Negative");
+ a(t(2), 1.4436354751788103, "Positive");
+};
diff --git a/node_modules/es5-ext/test/math/atanh/implement.js b/node_modules/es5-ext/test/math/atanh/implement.js
new file mode 100644
index 000000000..bcd3bd875
--- /dev/null
+++ b/node_modules/es5-ext/test/math/atanh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/atanh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/atanh/index.js b/node_modules/es5-ext/test/math/atanh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/atanh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/atanh/is-implemented.js b/node_modules/es5-ext/test/math/atanh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/atanh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/atanh/shim.js b/node_modules/es5-ext/test/math/atanh/shim.js
new file mode 100644
index 000000000..f58709cc4
--- /dev/null
+++ b/node_modules/es5-ext/test/math/atanh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-2), NaN, "Less than -1");
+ a(t(2), NaN, "Greater than 1");
+ a(t(-1), -Infinity, "-1");
+ a(t(1), Infinity, "1");
+ a(t(0), 0, "Zero");
+ a(Math.round(t(0.5) * 1e15), 549306144334055, "Other");
+};
diff --git a/node_modules/es5-ext/test/math/cbrt/implement.js b/node_modules/es5-ext/test/math/cbrt/implement.js
new file mode 100644
index 000000000..132e9296d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cbrt/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/cbrt/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/cbrt/index.js b/node_modules/es5-ext/test/math/cbrt/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cbrt/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/cbrt/is-implemented.js b/node_modules/es5-ext/test/math/cbrt/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cbrt/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/cbrt/shim.js b/node_modules/es5-ext/test/math/cbrt/shim.js
new file mode 100644
index 000000000..fc1beee4c
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cbrt/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(-1), -1, "-1");
+ a(t(1), 1, "1");
+ a(t(2), 1.2599210498948732, "Ohter");
+};
diff --git a/node_modules/es5-ext/test/math/clz32/implement.js b/node_modules/es5-ext/test/math/clz32/implement.js
new file mode 100644
index 000000000..36f529f15
--- /dev/null
+++ b/node_modules/es5-ext/test/math/clz32/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/clz32/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/clz32/index.js b/node_modules/es5-ext/test/math/clz32/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/clz32/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/clz32/is-implemented.js b/node_modules/es5-ext/test/math/clz32/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/clz32/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/clz32/shim.js b/node_modules/es5-ext/test/math/clz32/shim.js
new file mode 100644
index 000000000..4d8dd2fa0
--- /dev/null
+++ b/node_modules/es5-ext/test/math/clz32/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(1), 31, "1");
+ a(t(1000), 22, "1000");
+ a(t(), 32, "No arguments");
+ a(t(Infinity), 32, "Infinity");
+ a(t(-Infinity), 32, "-Infinity");
+ a(t("foo"), 32, "String");
+ a(t(true), 31, "Boolean");
+ a(t(3.5), 30, "Float");
+};
diff --git a/node_modules/es5-ext/test/math/cosh/implement.js b/node_modules/es5-ext/test/math/cosh/implement.js
new file mode 100644
index 000000000..6ad42efb0
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cosh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/cosh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/cosh/index.js b/node_modules/es5-ext/test/math/cosh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cosh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/cosh/is-implemented.js b/node_modules/es5-ext/test/math/cosh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cosh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/cosh/shim.js b/node_modules/es5-ext/test/math/cosh/shim.js
new file mode 100644
index 000000000..0b917c706
--- /dev/null
+++ b/node_modules/es5-ext/test/math/cosh/shim.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 1, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), Infinity, "-Infinity");
+ a(t(1), 1.5430806348152437, "1");
+ a(t(Number.MAX_VALUE), Infinity);
+ a(t(-Number.MAX_VALUE), Infinity);
+ a(t(Number.MIN_VALUE), 1);
+ a(t(-Number.MIN_VALUE), 1);
+};
diff --git a/node_modules/es5-ext/test/math/expm1/implement.js b/node_modules/es5-ext/test/math/expm1/implement.js
new file mode 100644
index 000000000..7fb528a3e
--- /dev/null
+++ b/node_modules/es5-ext/test/math/expm1/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/expm1/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/expm1/index.js b/node_modules/es5-ext/test/math/expm1/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/expm1/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/expm1/is-implemented.js b/node_modules/es5-ext/test/math/expm1/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/expm1/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/expm1/shim.js b/node_modules/es5-ext/test/math/expm1/shim.js
new file mode 100644
index 000000000..cebb063c6
--- /dev/null
+++ b/node_modules/es5-ext/test/math/expm1/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -1, "-Infinity");
+ a(t(1).toFixed(15), "1.718281828459045", "1");
+};
diff --git a/node_modules/es5-ext/test/math/fround/implement.js b/node_modules/es5-ext/test/math/fround/implement.js
new file mode 100644
index 000000000..c7b9ad4a9
--- /dev/null
+++ b/node_modules/es5-ext/test/math/fround/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/fround/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/fround/index.js b/node_modules/es5-ext/test/math/fround/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/fround/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/fround/is-implemented.js b/node_modules/es5-ext/test/math/fround/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/fround/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/fround/shim.js b/node_modules/es5-ext/test/math/fround/shim.js
new file mode 100644
index 000000000..0525bfab9
--- /dev/null
+++ b/node_modules/es5-ext/test/math/fround/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(1.337), 1.3370000123977661, "1");
+};
diff --git a/node_modules/es5-ext/test/math/hypot/implement.js b/node_modules/es5-ext/test/math/hypot/implement.js
new file mode 100644
index 000000000..29c87fe93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/hypot/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/hypot/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/hypot/index.js b/node_modules/es5-ext/test/math/hypot/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/hypot/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/hypot/is-implemented.js b/node_modules/es5-ext/test/math/hypot/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/hypot/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/hypot/shim.js b/node_modules/es5-ext/test/math/hypot/shim.js
new file mode 100644
index 000000000..89e4657c1
--- /dev/null
+++ b/node_modules/es5-ext/test/math/hypot/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), 0, "No arguments");
+ a(t(0, -0, 0), 0, "Zeros");
+ a(t(4, NaN, Infinity), Infinity, "Infinity");
+ a(t(4, NaN, -Infinity), Infinity, "Infinity");
+ a(t(4, NaN, 34), NaN, "NaN");
+ a(t(3, 4), 5, "#1");
+ a(t(3, 4, 5), 7.0710678118654755, "#2");
+};
diff --git a/node_modules/es5-ext/test/math/imul/implement.js b/node_modules/es5-ext/test/math/imul/implement.js
new file mode 100644
index 000000000..b633a72b5
--- /dev/null
+++ b/node_modules/es5-ext/test/math/imul/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/imul/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/imul/index.js b/node_modules/es5-ext/test/math/imul/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/imul/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/imul/is-implemented.js b/node_modules/es5-ext/test/math/imul/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/imul/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/imul/shim.js b/node_modules/es5-ext/test/math/imul/shim.js
new file mode 100644
index 000000000..a8d4e9060
--- /dev/null
+++ b/node_modules/es5-ext/test/math/imul/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), 0, "No arguments");
+ a(t(0, 0), 0, "Zeros");
+ a(t(2, 4), 8, "#1");
+ a(t(-1, 8), -8, "#2");
+ a(t(0xfffffffe, 5), -10, "#3");
+};
diff --git a/node_modules/es5-ext/test/math/log10/implement.js b/node_modules/es5-ext/test/math/log10/implement.js
new file mode 100644
index 000000000..afc9dab17
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log10/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log10/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/log10/index.js b/node_modules/es5-ext/test/math/log10/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log10/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/log10/is-implemented.js b/node_modules/es5-ext/test/math/log10/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log10/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/log10/shim.js b/node_modules/es5-ext/test/math/log10/shim.js
new file mode 100644
index 000000000..d0696287f
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log10/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-0.5), NaN, "Less than 0");
+ a(t(0), -Infinity, "0");
+ a(t(1), 0, "1");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(2), 0.3010299956639812, "Other");
+};
diff --git a/node_modules/es5-ext/test/math/log1p/implement.js b/node_modules/es5-ext/test/math/log1p/implement.js
new file mode 100644
index 000000000..baa2ab159
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log1p/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log1p/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/log1p/index.js b/node_modules/es5-ext/test/math/log1p/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log1p/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/log1p/is-implemented.js b/node_modules/es5-ext/test/math/log1p/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log1p/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/log1p/shim.js b/node_modules/es5-ext/test/math/log1p/shim.js
new file mode 100644
index 000000000..66b400ccd
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log1p/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-1.5), NaN, "Less than -1");
+ a(t(-1), -Infinity, "-1");
+ a(t(0), 0, "0");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(1), 0.6931471805599453, "Other");
+};
diff --git a/node_modules/es5-ext/test/math/log2/implement.js b/node_modules/es5-ext/test/math/log2/implement.js
new file mode 100644
index 000000000..43bdf4360
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log2/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/log2/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/log2/index.js b/node_modules/es5-ext/test/math/log2/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log2/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/log2/is-implemented.js b/node_modules/es5-ext/test/math/log2/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log2/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/log2/shim.js b/node_modules/es5-ext/test/math/log2/shim.js
new file mode 100644
index 000000000..f587e3393
--- /dev/null
+++ b/node_modules/es5-ext/test/math/log2/shim.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(-0.5), NaN, "Less than 0");
+ a(t(0), -Infinity, "0");
+ a(t(1), 0, "1");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(3).toFixed(15), "1.584962500721156", "Other");
+};
diff --git a/node_modules/es5-ext/test/math/sign/implement.js b/node_modules/es5-ext/test/math/sign/implement.js
new file mode 100644
index 000000000..409beb1f5
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sign/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/sign/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/sign/index.js b/node_modules/es5-ext/test/math/sign/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sign/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/sign/is-implemented.js b/node_modules/es5-ext/test/math/sign/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sign/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/sign/shim.js b/node_modules/es5-ext/test/math/sign/shim.js
new file mode 100644
index 000000000..071ea07e1
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sign/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var is = require("../../../object/is");
+
+module.exports = function (t, a) {
+ a(is(t(0), +0), true, "+0");
+ a(is(t(-0), -0), true, "-0");
+ a(t({}), NaN, true, "NaN");
+ a(t(-234234234), -1, "Negative");
+ a(t(234234234), 1, "Positive");
+};
diff --git a/node_modules/es5-ext/test/math/sinh/implement.js b/node_modules/es5-ext/test/math/sinh/implement.js
new file mode 100644
index 000000000..ca4b5e7b5
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sinh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/sinh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/sinh/index.js b/node_modules/es5-ext/test/math/sinh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sinh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/sinh/is-implemented.js b/node_modules/es5-ext/test/math/sinh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sinh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/sinh/shim.js b/node_modules/es5-ext/test/math/sinh/shim.js
new file mode 100644
index 000000000..f168a7f71
--- /dev/null
+++ b/node_modules/es5-ext/test/math/sinh/shim.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(t(1), 1.1752011936438014, "1");
+ a(t(Number.MAX_VALUE), Infinity);
+ a(t(-Number.MAX_VALUE), -Infinity);
+ a(t(Number.MIN_VALUE), 5e-324);
+ a(t(-Number.MIN_VALUE), -5e-324);
+};
diff --git a/node_modules/es5-ext/test/math/tanh/implement.js b/node_modules/es5-ext/test/math/tanh/implement.js
new file mode 100644
index 000000000..8503711f4
--- /dev/null
+++ b/node_modules/es5-ext/test/math/tanh/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/tanh/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/tanh/index.js b/node_modules/es5-ext/test/math/tanh/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/tanh/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/tanh/is-implemented.js b/node_modules/es5-ext/test/math/tanh/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/tanh/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/tanh/shim.js b/node_modules/es5-ext/test/math/tanh/shim.js
new file mode 100644
index 000000000..5da3c0875
--- /dev/null
+++ b/node_modules/es5-ext/test/math/tanh/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), 1, "Infinity");
+ a(t(-Infinity), -1, "-Infinity");
+ a(t(1), 0.7615941559557649, "1");
+ a(t(Number.MAX_VALUE), 1);
+ a(t(-Number.MAX_VALUE), -1);
+};
diff --git a/node_modules/es5-ext/test/math/trunc/implement.js b/node_modules/es5-ext/test/math/trunc/implement.js
new file mode 100644
index 000000000..0d3374fc9
--- /dev/null
+++ b/node_modules/es5-ext/test/math/trunc/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../math/trunc/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/math/trunc/index.js b/node_modules/es5-ext/test/math/trunc/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/math/trunc/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/math/trunc/is-implemented.js b/node_modules/es5-ext/test/math/trunc/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/math/trunc/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/math/trunc/shim.js b/node_modules/es5-ext/test/math/trunc/shim.js
new file mode 100644
index 000000000..b80e86830
--- /dev/null
+++ b/node_modules/es5-ext/test/math/trunc/shim.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var is = require("../../../object/is");
+
+module.exports = function (t, a) {
+ a(t({}), NaN, "NaN");
+ a(t(0), 0, "Zero");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(-Infinity), -Infinity, "-Infinity");
+ a(is(t(0.234), 0), true, "0");
+ a(is(t(-0.234), -0), true, "-0");
+ a(t(13.7), 13, "Positive #1");
+ a(t(12.3), 12, "Positive #2");
+ a(t(-12.3), -12, "Negative #1");
+ a(t(-14.7), -14, "Negative #2");
+};
diff --git a/node_modules/es5-ext/test/number/#/pad.js b/node_modules/es5-ext/test/number/#/pad.js
new file mode 100644
index 000000000..cc8aa5e40
--- /dev/null
+++ b/node_modules/es5-ext/test/number/#/pad.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(78, 4), "0078");
+ a(t.call(65.12323, 4, 3), "0065.123", "Precision");
+ a(t.call(65, 4, 3), "0065.000", "Precision integer");
+};
diff --git a/node_modules/es5-ext/test/number/epsilon/implement.js b/node_modules/es5-ext/test/number/epsilon/implement.js
new file mode 100644
index 000000000..d387b7c1e
--- /dev/null
+++ b/node_modules/es5-ext/test/number/epsilon/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/epsilon/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/epsilon/index.js b/node_modules/es5-ext/test/number/epsilon/index.js
new file mode 100644
index 000000000..d20e5c3bc
--- /dev/null
+++ b/node_modules/es5-ext/test/number/epsilon/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/node_modules/es5-ext/test/number/epsilon/is-implemented.js b/node_modules/es5-ext/test/number/epsilon/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/epsilon/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/is-finite/implement.js b/node_modules/es5-ext/test/number/is-finite/implement.js
new file mode 100644
index 000000000..5300de627
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-finite/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-finite/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/is-finite/index.js b/node_modules/es5-ext/test/number/is-finite/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-finite/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/number/is-finite/is-implemented.js b/node_modules/es5-ext/test/number/is-finite/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-finite/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/is-finite/shim.js b/node_modules/es5-ext/test/number/is-finite/shim.js
new file mode 100644
index 000000000..8fa004fd4
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-finite/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/number/is-integer/implement.js b/node_modules/es5-ext/test/number/is-integer/implement.js
new file mode 100644
index 000000000..2290b2507
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/is-integer/index.js b/node_modules/es5-ext/test/number/is-integer/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/number/is-integer/is-implemented.js b/node_modules/es5-ext/test/number/is-integer/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/is-integer/shim.js b/node_modules/es5-ext/test/number/is-integer/shim.js
new file mode 100644
index 000000000..e367990bb
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-integer/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(2.34), false, "Float");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/number/is-nan/implement.js b/node_modules/es5-ext/test/number/is-nan/implement.js
new file mode 100644
index 000000000..10fa084ed
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-nan/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-nan/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/is-nan/index.js b/node_modules/es5-ext/test/number/is-nan/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-nan/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/number/is-nan/is-implemented.js b/node_modules/es5-ext/test/number/is-nan/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-nan/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/is-nan/shim.js b/node_modules/es5-ext/test/number/is-nan/shim.js
new file mode 100644
index 000000000..31810474e
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-nan/shim.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), false, "Number");
+ a(t({}), false, "Not numeric");
+ a(t(NaN), true, "NaN");
+};
diff --git a/node_modules/es5-ext/test/number/is-natural.js b/node_modules/es5-ext/test/number/is-natural.js
new file mode 100644
index 000000000..8fe4dcc46
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-natural.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(-2), false, "Negative");
+ a(t(2.34), false, "Float");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/number/is-number.js b/node_modules/es5-ext/test/number/is-number.js
new file mode 100644
index 000000000..9cd670c1b
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-number.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(0), true, "Zero");
+ a(t(NaN), true, "NaN");
+ a(t(Infinity), true, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), false, "Empty String");
+};
diff --git a/node_modules/es5-ext/test/number/is-safe-integer/implement.js b/node_modules/es5-ext/test/number/is-safe-integer/implement.js
new file mode 100644
index 000000000..96f634b16
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/is-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/is-safe-integer/index.js b/node_modules/es5-ext/test/number/is-safe-integer/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-safe-integer/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js b/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/is-safe-integer/shim.js b/node_modules/es5-ext/test/number/is-safe-integer/shim.js
new file mode 100644
index 000000000..a4ea6913c
--- /dev/null
+++ b/node_modules/es5-ext/test/number/is-safe-integer/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(2), true, "Number");
+ a(t(2.34), false, "Float");
+ a(t(Math.pow(2, 53)), false, "Too large");
+ a(t(Math.pow(2, 53) - 1), true, "Maximum");
+ a(t("23"), false, "Not numeric");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/number/max-safe-integer/implement.js b/node_modules/es5-ext/test/number/max-safe-integer/implement.js
new file mode 100644
index 000000000..1928f3410
--- /dev/null
+++ b/node_modules/es5-ext/test/number/max-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/max-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/max-safe-integer/index.js b/node_modules/es5-ext/test/number/max-safe-integer/index.js
new file mode 100644
index 000000000..d20e5c3bc
--- /dev/null
+++ b/node_modules/es5-ext/test/number/max-safe-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js b/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/max-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/min-safe-integer/implement.js b/node_modules/es5-ext/test/number/min-safe-integer/implement.js
new file mode 100644
index 000000000..f8b309a8c
--- /dev/null
+++ b/node_modules/es5-ext/test/number/min-safe-integer/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../number/min-safe-integer/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/number/min-safe-integer/index.js b/node_modules/es5-ext/test/number/min-safe-integer/index.js
new file mode 100644
index 000000000..d20e5c3bc
--- /dev/null
+++ b/node_modules/es5-ext/test/number/min-safe-integer/index.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t, "number");
+};
diff --git a/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js b/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/number/min-safe-integer/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/number/to-integer.js b/node_modules/es5-ext/test/number/to-integer.js
new file mode 100644
index 000000000..b7b975f56
--- /dev/null
+++ b/node_modules/es5-ext/test/number/to-integer.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "NaN");
+ a(t(20), 20, "Positive integer");
+ a(t("-20"), -20, "String negative integer");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(15.343), 15, "Float");
+ a(t(-15.343), -15, "Negative float");
+};
diff --git a/node_modules/es5-ext/test/number/to-pos-integer.js b/node_modules/es5-ext/test/number/to-pos-integer.js
new file mode 100644
index 000000000..27c7cdfae
--- /dev/null
+++ b/node_modules/es5-ext/test/number/to-pos-integer.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "NaN");
+ a(t(20), 20, "Positive integer");
+ a(t(-20), 0, "Negative integer");
+ a(t(Infinity), Infinity, "Infinity");
+ a(t(15.343), 15, "Float");
+ a(t(-15.343), 0, "Negative float");
+};
diff --git a/node_modules/es5-ext/test/number/to-uint32.js b/node_modules/es5-ext/test/number/to-uint32.js
new file mode 100644
index 000000000..7eea42f5f
--- /dev/null
+++ b/node_modules/es5-ext/test/number/to-uint32.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "Not numeric");
+ a(t(-4), 4294967292, "Negative");
+ a(t(133432), 133432, "Positive");
+ a(t(8589934592), 0, "Greater than maximum");
+};
diff --git a/node_modules/es5-ext/test/object/_iterate.js b/node_modules/es5-ext/test/object/_iterate.js
new file mode 100644
index 000000000..d7728f429
--- /dev/null
+++ b/node_modules/es5-ext/test/object/_iterate.js
@@ -0,0 +1,30 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { raz: 1, dwa: 2, trzy: 3 }
+ , o2 = {}, o3 = {}, arr, i = -1;
+
+ t = t("forEach");
+ t(o, function (value, name, self, index) {
+ o2[name] = value;
+ a(index, ++i, "Index");
+ a(self, o, "Self");
+ a(this, o3, "Scope");
+ }, o3);
+ a.deep(o2, o);
+
+ arr = [];
+ o2 = {};
+ i = -1;
+ t(o, function (value, name, self, index) {
+ arr.push(value);
+ o2[name] = value;
+ a(index, ++i, "Index");
+ a(self, o, "Self");
+ a(this, o3, "Scope");
+ }, o3, function (a, b) {
+ return o[b] - o[a];
+ });
+ a.deep(o2, o, "Sort by Values: Content");
+ a.deep(arr, [3, 2, 1], "Sort by Values: Order");
+};
diff --git a/node_modules/es5-ext/test/object/assign/implement.js b/node_modules/es5-ext/test/object/assign/implement.js
new file mode 100644
index 000000000..c3e0396ba
--- /dev/null
+++ b/node_modules/es5-ext/test/object/assign/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../object/assign/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/object/assign/index.js b/node_modules/es5-ext/test/object/assign/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/object/assign/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/object/assign/is-implemented.js b/node_modules/es5-ext/test/object/assign/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/object/assign/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/object/assign/shim.js b/node_modules/es5-ext/test/object/assign/shim.js
new file mode 100644
index 000000000..360749076
--- /dev/null
+++ b/node_modules/es5-ext/test/object/assign/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o1 = { a: 1, b: 2 }
+ , o2 = { b: 3, c: 4 };
+
+ a(t(o1, o2), o1, "Returns self");
+ a.deep(o1, { a: 1, b: 3, c: 4 }, "Single: content");
+
+ a.deep(t({}, o1, o2), { a: 1, b: 3, c: 4 }, "Multi argument");
+};
diff --git a/node_modules/es5-ext/test/object/clear.js b/node_modules/es5-ext/test/object/clear.js
new file mode 100644
index 000000000..5735e7967
--- /dev/null
+++ b/node_modules/es5-ext/test/object/clear.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var isEmpty = require("../../object/is-empty");
+
+module.exports = function (t, a) {
+ var x = {};
+ a(t(x), x, "Empty: Returns same object");
+ a(isEmpty(x), true, "Empty: Not changed");
+ x.foo = "raz";
+ x.bar = "dwa";
+ a(t(x), x, "Same object");
+ a(isEmpty(x), true, "Emptied");
+};
diff --git a/node_modules/es5-ext/test/object/compact.js b/node_modules/es5-ext/test/object/compact.js
new file mode 100644
index 000000000..353f6f327
--- /dev/null
+++ b/node_modules/es5-ext/test/object/compact.js
@@ -0,0 +1,20 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {}, z;
+ z = t(x);
+ a.not(z, x, "Returns different object");
+ a.deep(z, {}, "Empty on empty");
+
+ x = { foo: "bar",
+a: 0,
+b: false,
+c: "",
+d: "0",
+e: null,
+bar: y,
+ elo: undefined };
+ z = t(x);
+ a.deep(z, { foo: "bar", a: 0, b: false, c: "", d: "0", bar: y },
+ "Cleared null values");
+};
diff --git a/node_modules/es5-ext/test/object/compare.js b/node_modules/es5-ext/test/object/compare.js
new file mode 100644
index 000000000..23cc51160
--- /dev/null
+++ b/node_modules/es5-ext/test/object/compare.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var d = new Date();
+
+ a.ok(t(12, 3) > 0, "Numbers");
+ a.ok(t(2, 13) < 0, "Numbers #2");
+ a.ok(t("aaa", "aa") > 0, "Strings");
+ a.ok(t("aa", "ab") < 0, "Strings #2");
+ a(t("aa", "aa"), 0, "Strings same");
+ a(t(d, new Date(d.getTime())), 0, "Same date");
+ a.ok(t(d, new Date(d.getTime() + 1)) < 0, "Different date");
+};
diff --git a/node_modules/es5-ext/test/object/copy-deep.js b/node_modules/es5-ext/test/object/copy-deep.js
new file mode 100644
index 000000000..2dcbc3ab9
--- /dev/null
+++ b/node_modules/es5-ext/test/object/copy-deep.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+ var o = { 1: "raz", 2: "dwa", 3: "trzy" }
+ , no = t(o);
+
+ a.not(no, o, "Return different object");
+ a(stringify(no), stringify(o), "Match properties and values");
+
+ o = { foo: "bar",
+raz: { dwa: "dwa",
+ trzy: { cztery: "pięć", sześć: "siedem" },
+osiem: {},
+ dziewięć: function () { } },
+ dziesięć: 10,
+jedenaście: ["raz", ["dwa", "trzy", { elo: "true" }]] };
+ o.raz.rec = o;
+
+ no = t(o);
+ a.not(o.raz, no.raz, "Deep");
+ a.not(o.raz.trzy, no.raz.trzy, "Deep #2");
+ a(stringify(o.raz.trzy), stringify(no.raz.trzy), "Deep content");
+ a(no.raz.rec, no, "Recursive");
+ a.not(o.raz.osiem, no.raz.osiem, "Empty object");
+ a(o.raz["dziewięć"], no.raz["dziewięć"], "Function");
+ a.not(o["jedenaście"], no["jedenaście"]);
+ a.not(o["jedenaście"][1], no["jedenaście"][1]);
+ a.not(o["jedenaście"][1][2], no["jedenaście"][1][2]);
+};
diff --git a/node_modules/es5-ext/test/object/copy.js b/node_modules/es5-ext/test/object/copy.js
new file mode 100644
index 000000000..a5e2c3480
--- /dev/null
+++ b/node_modules/es5-ext/test/object/copy.js
@@ -0,0 +1,30 @@
+"use strict";
+
+var stringify = JSON.stringify;
+
+module.exports = function (t, a) {
+ var o = { 1: "raz", 2: "dwa", 3: "trzy" }, no = t(o);
+
+ a.not(no, o, "Return different object");
+ a(stringify(no), stringify(o), "Match properties and values");
+
+ o = {
+ foo: "bar",
+ raz: {
+ dwa: "dwa",
+ trzy: { cztery: "pięć", sześć: "siedem" },
+ osiem: {},
+ dziewięć: function () {}
+ },
+ dziesięć: 10
+ };
+ o.raz.rec = o;
+
+ no = t(o);
+ a(o.raz, no.raz, "Shallow");
+
+ a.deep(t(o, ["foo"]), { foo: "bar" });
+ a.deep(t(Object.create(o), ["foo"]), { foo: "bar" });
+ a.deep(t(o, ["foo", "habla"]), { foo: "bar" });
+ a.deep(t(o, ["foo", "habla"], { ensure: true }), { foo: "bar", habla: undefined });
+};
diff --git a/node_modules/es5-ext/test/object/count.js b/node_modules/es5-ext/test/object/count.js
new file mode 100644
index 000000000..ec1c50450
--- /dev/null
+++ b/node_modules/es5-ext/test/object/count.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), 0, "Empty");
+ a(t({ raz: 1, dwa: null, trzy: undefined, cztery: 0 }), 4,
+ "Some properties");
+ a(t(Object.defineProperties({}, {
+ raz: { value: "raz" },
+ dwa: { value: "dwa", enumerable: true }
+ })), 1, "Some properties hidden");
+};
diff --git a/node_modules/es5-ext/test/object/create.js b/node_modules/es5-ext/test/object/create.js
new file mode 100644
index 000000000..c9f3029f6
--- /dev/null
+++ b/node_modules/es5-ext/test/object/create.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var setPrototypeOf = require("../../object/set-prototype-of")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, obj;
+
+ a(getPrototypeOf(t(x)), x, "Normal object");
+ a(getPrototypeOf(t(null)),
+ (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Null");
+
+ a.h1("Properties");
+ a.h2("Normal object");
+ a(getPrototypeOf(obj = t(x, { foo: { value: "bar" } })), x, "Prototype");
+ a(obj.foo, "bar", "Property");
+ a.h2("Null");
+ a(getPrototypeOf(obj = t(null, { foo: { value: "bar2" } })),
+ (setPrototypeOf && setPrototypeOf.nullPolyfill) || null, "Prototype");
+ a(obj.foo, "bar2", "Property");
+};
diff --git a/node_modules/es5-ext/test/object/ensure-finite-number.js b/node_modules/es5-ext/test/object/ensure-finite-number.js
new file mode 100644
index 000000000..f1e6166b5
--- /dev/null
+++ b/node_modules/es5-ext/test/object/ensure-finite-number.js
@@ -0,0 +1,54 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(
+ function () {
+ t(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a(t(0), 0, "Zero");
+ a.throws(
+ function () {
+ t(NaN);
+ },
+ TypeError,
+ "NaN"
+ );
+ a.throws(
+ function () {
+ t(Infinity);
+ },
+ TypeError,
+ "Infinity"
+ );
+ a(t(12), 12, "Number");
+ a(t(false), 0, "Boolean");
+ a(t(new Date(1000000)), 1000000, "Date");
+ a(t(new Number(2)), 2, "Number object");
+ a.throws(
+ function () {
+ t("asdfaf");
+ },
+ TypeError,
+ "String"
+ );
+ a(t(""), 0, "Empty String");
+ if (typeof Symbol === "function") {
+ a.throws(
+ function () {
+ t(Symbol("test"));
+ },
+ TypeError,
+ "Symbol"
+ );
+ }
+};
diff --git a/node_modules/es5-ext/test/object/ensure-natural-number-value.js b/node_modules/es5-ext/test/object/ensure-natural-number-value.js
new file mode 100644
index 000000000..9aaae370a
--- /dev/null
+++ b/node_modules/es5-ext/test/object/ensure-natural-number-value.js
@@ -0,0 +1,24 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t(undefined);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a(t(2), 2, "Number");
+ a.throws(function () {
+ t(-2);
+}, TypeError, "Negative");
+ a.throws(function () {
+ t(2.34);
+}, TypeError, "Float");
+ a(t("23"), 23, "Numeric string");
+ a.throws(function () {
+ t(NaN);
+}, TypeError, "NaN");
+ a.throws(function () {
+ t(Infinity);
+}, TypeError, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/object/ensure-natural-number.js b/node_modules/es5-ext/test/object/ensure-natural-number.js
new file mode 100644
index 000000000..ff0e836af
--- /dev/null
+++ b/node_modules/es5-ext/test/object/ensure-natural-number.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t(undefined);
+}, TypeError, "Undefined");
+ a(t(null), 0, "Null");
+ a(t(2), 2, "Number");
+ a.throws(function () {
+ t(-2);
+}, TypeError, "Negative");
+ a.throws(function () {
+ t(2.34);
+}, TypeError, "Float");
+ a(t("23"), 23, "Numeric string");
+ a.throws(function () {
+ t(NaN);
+}, TypeError, "NaN");
+ a.throws(function () {
+ t(Infinity);
+}, TypeError, "Infinity");
+};
diff --git a/node_modules/es5-ext/test/object/ensure-promise.js b/node_modules/es5-ext/test/object/ensure-promise.js
new file mode 100644
index 000000000..1af15bab7
--- /dev/null
+++ b/node_modules/es5-ext/test/object/ensure-promise.js
@@ -0,0 +1,32 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var promise;
+ a.throws(function () {
+ t();
+}, TypeError);
+ a.throws(function () {
+ t(null);
+}, TypeError);
+ a.throws(function () {
+ t("promise");
+}, TypeError);
+ a.throws(function () {
+ t({});
+}, TypeError);
+ a.throws(function () {
+ t(function () {});
+}, TypeError);
+ a.throws(function () {
+ t({ then: {} });
+}, TypeError);
+ promise = { then: function () {} };
+ a(t(promise), promise);
+ promise = function () {};
+ promise.then = {};
+ a.throws(function () {
+ t(promise);
+}, TypeError);
+ promise.then = function () {};
+ a(t(promise), promise);
+};
diff --git a/node_modules/es5-ext/test/object/eq.js b/node_modules/es5-ext/test/object/eq.js
new file mode 100644
index 000000000..8cad90aeb
--- /dev/null
+++ b/node_modules/es5-ext/test/object/eq.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = {};
+ a(t(o, {}), false, "Different objects");
+ a(t(o, o), true, "Same objects");
+ a(t("1", "1"), true, "Same primitive");
+ a(t("1", 1), false, "Different primitive types");
+ a(t(NaN, NaN), true, "NaN");
+ a(t(0, 0), true, "0,0");
+ a(t(0, -0), true, "0,-0");
+};
diff --git a/node_modules/es5-ext/test/object/every.js b/node_modules/es5-ext/test/object/every.js
new file mode 100644
index 000000000..7e837d22e
--- /dev/null
+++ b/node_modules/es5-ext/test/object/every.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {};
+ t(o, function (value, name) {
+ o2[name] = value;
+ return true;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ return true;
+ }), true, "Succeeds");
+
+ a(t(o, function () {
+ return false;
+ }), false, "Fails");
+
+};
diff --git a/node_modules/es5-ext/test/object/filter.js b/node_modules/es5-ext/test/object/filter.js
new file mode 100644
index 000000000..c714d2373
--- /dev/null
+++ b/node_modules/es5-ext/test/object/filter.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ 1: 1, 2: 2, 3: 3, 4: 4 },
+ function (value) {
+ return Boolean(value % 2);
+}), { 1: 1, 3: 3 });
+};
diff --git a/node_modules/es5-ext/test/object/find-key.js b/node_modules/es5-ext/test/object/find-key.js
new file mode 100644
index 000000000..d4a578ff3
--- /dev/null
+++ b/node_modules/es5-ext/test/object/find-key.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), "1", "Finds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), undefined, "Fails");
+
+};
diff --git a/node_modules/es5-ext/test/object/find.js b/node_modules/es5-ext/test/object/find.js
new file mode 100644
index 000000000..eea512470
--- /dev/null
+++ b/node_modules/es5-ext/test/object/find.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), 1, "Finds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), undefined, "Fails");
+
+};
diff --git a/node_modules/es5-ext/test/object/first-key.js b/node_modules/es5-ext/test/object/first-key.js
new file mode 100644
index 000000000..6010ba11c
--- /dev/null
+++ b/node_modules/es5-ext/test/object/first-key.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = Object.create(null);
+ a(t(x), null, "Normal: Empty");
+ a(t(y), null, "Null extension: Empty");
+ x.foo = "raz";
+ x.bar = 343;
+ a(["foo", "bar"].indexOf(t(x)) !== -1, true, "Normal");
+ y.elo = "foo";
+ y.mar = "wew";
+ a(["elo", "mar"].indexOf(t(y)) !== -1, true, "Null extension");
+};
diff --git a/node_modules/es5-ext/test/object/flatten.js b/node_modules/es5-ext/test/object/flatten.js
new file mode 100644
index 000000000..277a97cfd
--- /dev/null
+++ b/node_modules/es5-ext/test/object/flatten.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ a: { aa: 1, ab: 2 }, b: { ba: 3, bb: 4 } }),
+ { aa: 1, ab: 2, ba: 3, bb: 4 });
+};
diff --git a/node_modules/es5-ext/test/object/for-each.js b/node_modules/es5-ext/test/object/for-each.js
new file mode 100644
index 000000000..97c6399a8
--- /dev/null
+++ b/node_modules/es5-ext/test/object/for-each.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { raz: 1, dwa: 2, trzy: 3 }
+ , o2 = {};
+ a(t(o, function (value, name) {
+ o2[name] = value;
+ }), undefined, "Return");
+ a.deep(o2, o);
+};
diff --git a/node_modules/es5-ext/test/object/get-property-names.js b/node_modules/es5-ext/test/object/get-property-names.js
new file mode 100644
index 000000000..a1d6377fe
--- /dev/null
+++ b/node_modules/es5-ext/test/object/get-property-names.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { first: 1, second: 4 }, r1, r2;
+ o = Object.create(o, {
+ third: { value: null }
+ });
+ o.first = 2;
+ o = Object.create(o);
+ o.fourth = 3;
+
+ r1 = t(o);
+ r1.sort();
+ r2 = ["first", "second", "third", "fourth"]
+ .concat(Object.getOwnPropertyNames(Object.prototype));
+ r2.sort();
+ a.deep(r1, r2);
+};
diff --git a/node_modules/es5-ext/test/object/is-array-like.js b/node_modules/es5-ext/test/object/is-array-like.js
new file mode 100644
index 000000000..c50ef1d12
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-array-like.js
@@ -0,0 +1,16 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t([]), true, "Array");
+ a(t(""), true, "String");
+ a(t((function () {
+ return arguments;
+}())), true, "Arguments");
+ a(t({ length: 0 }), true, "List object");
+ a(t(function () {}), false, "Function");
+ a(t({}), false, "Plain object");
+ a(t(/raz/), false, "Regexp");
+ a(t(), false, "No argument");
+ a(t(null), false, "Null");
+ a(t(undefined), false, "Undefined");
+};
diff --git a/node_modules/es5-ext/test/object/is-callable.js b/node_modules/es5-ext/test/object/is-callable.js
new file mode 100644
index 000000000..415023e39
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-callable.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(function () {}), true, "Function");
+ a(t({}), false, "Object");
+ a(t(), false, "Undefined");
+ a(t(null), false, "Null");
+};
diff --git a/node_modules/es5-ext/test/object/is-copy-deep.js b/node_modules/es5-ext/test/object/is-copy-deep.js
new file mode 100644
index 000000000..9c8ad9257
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-copy-deep.js
@@ -0,0 +1,46 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x, y;
+
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Different property value");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+ "Property only in source");
+ a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Property only in target");
+
+ a(t("raz", "dwa"), false, "String: diff");
+ a(t("raz", "raz"), true, "String: same");
+ a(t("32", 32), false, "String & Number");
+
+ a(t([1, "raz", true], [1, "raz", true]), true, "Array: same");
+ a(t([1, "raz", undefined], [1, "raz"]), false, "Array: diff");
+ a(t(["foo"], ["one"]), false, "Array: One value comparision");
+
+ x = { foo: { bar: { mar: {} } } };
+ y = { foo: { bar: { mar: {} } } };
+ a(t(x, y), true, "Deep");
+
+ a(t({ foo: { bar: { mar: "foo" } } }, { foo: { bar: { mar: {} } } }),
+ false, "Deep: false");
+
+ x = { foo: { bar: { mar: {} } } };
+ x.rec = { foo: x };
+
+ y = { foo: { bar: { mar: {} } } };
+ y.rec = { foo: x };
+
+ a(t(x, y), true, "Object: Infinite Recursion: Same #1");
+
+ x.rec.foo = y;
+ a(t(x, y), true, "Object: Infinite Recursion: Same #2");
+
+ x.rec.foo = x;
+ y.rec.foo = y;
+ a(t(x, y), true, "Object: Infinite Recursion: Same #3");
+
+ y.foo.bar.mar = "raz";
+ a(t(x, y), false, "Object: Infinite Recursion: Diff");
+};
diff --git a/node_modules/es5-ext/test/object/is-copy.js b/node_modules/es5-ext/test/object/is-copy.js
new file mode 100644
index 000000000..6052bb051
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-copy.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 3 }), true, "Same");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Different property value");
+ a(t({ 1: 1, 2: 2, 3: 3 }, { 1: 1, 2: 2 }), false,
+ "Property only in source");
+ a(t({ 1: 1, 2: 2 }, { 1: 1, 2: 2, 3: 4 }), false,
+ "Property only in target");
+
+ a(t("raz", "dwa"), false, "String: diff");
+ a(t("raz", "raz"), true, "String: same");
+ a(t("32", 32), false, "String & Number");
+
+ a(t([1, "raz", true], [1, "raz", true]), true, "Array: same");
+ a(t([1, "raz", undefined], [1, "raz"]), false, "Array: diff");
+};
diff --git a/node_modules/es5-ext/test/object/is-empty.js b/node_modules/es5-ext/test/object/is-empty.js
new file mode 100644
index 000000000..067b1621f
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-empty.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), true, "Empty");
+ a(t({ 1: 1 }), false, "Not empty");
+};
diff --git a/node_modules/es5-ext/test/object/is-finite-number.js b/node_modules/es5-ext/test/object/is-finite-number.js
new file mode 100644
index 000000000..6475fb661
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-finite-number.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(0), true, "Zero");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), false, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), true, "Empty String");
+ if (typeof Symbol === "function") {
+ a(t(Symbol("test")), false, "Symbol");
+ }
+};
diff --git a/node_modules/es5-ext/test/object/is-number-value.js b/node_modules/es5-ext/test/object/is-number-value.js
new file mode 100644
index 000000000..2c09d2517
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-number-value.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(0), true, "Zero");
+ a(t(NaN), false, "NaN");
+ a(t(Infinity), true, "Infinity");
+ a(t(12), true, "Number");
+ a(t(false), true, "Boolean");
+ a(t(new Date()), true, "Date");
+ a(t(new Number(2)), true, "Number object");
+ a(t("asdfaf"), false, "String");
+ a(t(""), true, "Empty String");
+ if (typeof Symbol === "function") {
+ a(t(Symbol("test")), false, "Symbol");
+ }
+};
diff --git a/node_modules/es5-ext/test/object/is-object.js b/node_modules/es5-ext/test/object/is-object.js
new file mode 100644
index 000000000..0b8359978
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-object.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(null), false, "Null");
+ a(t(new Date()), true, "Date");
+ a(t(new String("raz")), true, "String object");
+ a(t({}), true, "Plain object");
+ a(t(/a/), true, "Regular expression");
+ a(t(function () {}), true, "Function");
+};
diff --git a/node_modules/es5-ext/test/object/is-plain-object.js b/node_modules/es5-ext/test/object/is-plain-object.js
new file mode 100644
index 000000000..7324438d9
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-plain-object.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t({}), true, "Empty {} is plain object");
+ a(t({ a: true }), true, "{} with property is plain object");
+ a(t({ prototype: 1, constructor: 2, __proto__: 3 }), true,
+ "{} with any property keys is plain object");
+ a(t(null), false, "Null is not plain object");
+ a(t("string"), false, "Primitive is not plain object");
+ a(t(function () {}), false, "Function is not plain object");
+ a(t(Object.create({})), false,
+ "Object whose prototype is not Object.prototype is not plain object");
+ a(t(Object.create(Object.prototype)), true,
+ "Object whose prototype is Object.prototype is plain object");
+ a(t(Object.create(null)), true,
+ "Object whose prototype is null is plain object");
+ a(t(Object.prototype), false, "Object.prototype");
+};
diff --git a/node_modules/es5-ext/test/object/is-promise.js b/node_modules/es5-ext/test/object/is-promise.js
new file mode 100644
index 000000000..18bf934d8
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-promise.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var promise;
+ a(t(), false);
+ a(t(null), false);
+ a(t("promise"), false);
+ a(t({}), false);
+ a(t(function () {}), false);
+ a(t({ then: {} }), false);
+ a(t({ then: function () {} }), true);
+ promise = function () {};
+ promise.then = {};
+ a(t(promise), false);
+ promise.then = function () {};
+ a(t(promise), true);
+};
diff --git a/node_modules/es5-ext/test/object/is-value.js b/node_modules/es5-ext/test/object/is-value.js
new file mode 100644
index 000000000..c97722d0a
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is-value.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), false);
+ a(t(undefined), false);
+ a(t(null), false);
+ a(t(NaN), true);
+ a(t(0), true);
+ a(t(false), true);
+ a(t("null"), true);
+ a(t(""), true);
+ a(t({}), true);
+ a(t(Object.prototype), true);
+};
diff --git a/node_modules/es5-ext/test/object/is.js b/node_modules/es5-ext/test/object/is.js
new file mode 100644
index 000000000..c94ed41c7
--- /dev/null
+++ b/node_modules/es5-ext/test/object/is.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = {};
+ a(t(o, {}), false, "Different objects");
+ a(t(o, o), true, "Same objects");
+ a(t("1", "1"), true, "Same primitive");
+ a(t("1", 1), false, "Different primitive types");
+ a(t(NaN, NaN), true, "NaN");
+ a(t(0, 0), true, "0,0");
+ a(t(0, -0), false, "0,-0");
+};
diff --git a/node_modules/es5-ext/test/object/key-of.js b/node_modules/es5-ext/test/object/key-of.js
new file mode 100644
index 000000000..bf10ca03b
--- /dev/null
+++ b/node_modules/es5-ext/test/object/key-of.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x = {}, y = {}
+ , o = { foo: "bar", raz: x, trzy: "cztery", five: "6" };
+
+ a(t(o, "bar"), "foo", "First property");
+ a(t(o, 6), null, "Primitive that's not there");
+ a(t(o, x), "raz", "Object");
+ a(t(o, y), null, "Object that's not there");
+ a(t(o, "6"), "five", "Last property");
+};
diff --git a/node_modules/es5-ext/test/object/keys/implement.js b/node_modules/es5-ext/test/object/keys/implement.js
new file mode 100644
index 000000000..d364abed9
--- /dev/null
+++ b/node_modules/es5-ext/test/object/keys/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../object/keys/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/object/keys/index.js b/node_modules/es5-ext/test/object/keys/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/object/keys/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/object/keys/is-implemented.js b/node_modules/es5-ext/test/object/keys/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/object/keys/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/object/keys/shim.js b/node_modules/es5-ext/test/object/keys/shim.js
new file mode 100644
index 000000000..47e6547ed
--- /dev/null
+++ b/node_modules/es5-ext/test/object/keys/shim.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ foo: "bar" }), ["foo"], "Object");
+ a.deep(t("raz"), ["0", "1", "2"], "Primitive");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Undefined");
+};
diff --git a/node_modules/es5-ext/test/object/map-keys.js b/node_modules/es5-ext/test/object/map-keys.js
new file mode 100644
index 000000000..4598db21a
--- /dev/null
+++ b/node_modules/es5-ext/test/object/map-keys.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t({ 1: 1, 2: 2, 3: 3 }, function (key, value) {
+ return "x" + (key + value);
+ }), { x11: 1, x22: 2, x33: 3 });
+};
diff --git a/node_modules/es5-ext/test/object/map.js b/node_modules/es5-ext/test/object/map.js
new file mode 100644
index 000000000..78c1ed346
--- /dev/null
+++ b/node_modules/es5-ext/test/object/map.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { 1: 1, 2: 2, 3: 3 };
+ a.deep(t(obj, function (value, key, context) {
+ a(context, obj, "Context argument");
+ return (value + 1) + key;
+ }), { 1: "21", 2: "32", 3: "43" });
+};
diff --git a/node_modules/es5-ext/test/object/mixin-prototypes.js b/node_modules/es5-ext/test/object/mixin-prototypes.js
new file mode 100644
index 000000000..8745d9779
--- /dev/null
+++ b/node_modules/es5-ext/test/object/mixin-prototypes.js
@@ -0,0 +1,73 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o, o1, o2, x, y = {}, z = {};
+ o = { inherited: true, visible: 23 };
+ o1 = Object.create(o);
+ o1.visible = z;
+ o1.nonremovable = "raz";
+ Object.defineProperty(o1, "hidden", { value: "hidden" });
+
+ o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+ o2.other = "other";
+
+ try {
+ t(o2, o1);
+} catch (ignore) {}
+
+ a(o2.visible, z, "Enumerable");
+ a(o1.hidden, "hidden", "Not Enumerable");
+ a(o2.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(o2.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(o2.inherited, true, "Extend deep");
+
+ a(o2.nonremovable, y, "Do not overwrite non configurable");
+ a(o2.other, "other", "Own kept");
+
+ x = {};
+ t(x, o2);
+ try {
+ t(x, o1);
+} catch (ignore) {}
+
+ a(x.visible, z, "Enumerable");
+ a(x.hidden, "hidden", "Not Enumerable");
+ a(x.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(x.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(x.inherited, true, "Extend deep");
+
+ a(x.nonremovable, y, "Ignored non configurable");
+ a(x.other, "other", "Other");
+
+ x.visible = 3;
+ a(x.visible, 3, "Writable is writable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ x.hidden = 3;
+ }, "Not writable is not writable");
+
+ x = {};
+ t(x, o1);
+ delete x.visible;
+ a.ok(!x.hasOwnProperty("visible"), "Configurable is configurable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ delete x.hidden;
+ }, "Not configurable is not configurable");
+
+ x = Object.defineProperty({}, "foo",
+ { configurable: false, writable: true, enumerable: false, value: "bar" });
+
+ try {
+ t(x, { foo: "lorem" });
+} catch (ignore) {}
+ a(x.foo, "bar", "Writable, not enumerable");
+};
diff --git a/node_modules/es5-ext/test/object/mixin.js b/node_modules/es5-ext/test/object/mixin.js
new file mode 100644
index 000000000..d1905c17c
--- /dev/null
+++ b/node_modules/es5-ext/test/object/mixin.js
@@ -0,0 +1,75 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o, o1, o2, x, y = {}, z = {};
+ o = { inherited: true };
+ o1 = Object.create(o);
+ o1.visible = z;
+ o1.nonremovable = "raz";
+ Object.defineProperty(o1, "hidden", { value: "hidden" });
+
+ o2 = Object.defineProperties({}, { nonremovable: { value: y } });
+ o2.other = "other";
+
+ try {
+ t(o2, o1);
+} catch (ignore) {}
+
+ a(o2.visible, z, "Enumerable");
+ a(o1.hidden, "hidden", "Not Enumerable");
+ a(o2.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(o2.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(o2.hasOwnProperty("inherited"), false, "Extend only own");
+ a(o2.inherited, undefined, "Extend ony own: value");
+
+ a(o2.nonremovable, y, "Do not overwrite non configurable");
+ a(o2.other, "other", "Own kept");
+
+ x = {};
+ t(x, o2);
+ try {
+ t(x, o1);
+} catch (ignore) {}
+
+ a(x.visible, z, "Enumerable");
+ a(x.hidden, "hidden", "Not Enumerable");
+ a(x.propertyIsEnumerable("visible"), true, "Enumerable is enumerable");
+ a(x.propertyIsEnumerable("hidden"), false,
+ "Not enumerable is not enumerable");
+
+ a(x.hasOwnProperty("inherited"), false, "Extend only own");
+ a(x.inherited, undefined, "Extend ony own: value");
+
+ a(x.nonremovable, y, "Ignored non configurable");
+ a(x.other, "other", "Other");
+
+ x.visible = 3;
+ a(x.visible, 3, "Writable is writable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ x.hidden = 3;
+ }, "Not writable is not writable");
+
+ x = {};
+ t(x, o1);
+ delete x.visible;
+ a.ok(!x.hasOwnProperty("visible"), "Configurable is configurable");
+
+ x = {};
+ t(x, o1);
+ a.throws(function () {
+ delete x.hidden;
+ }, "Not configurable is not configurable");
+
+ x = Object.defineProperty({}, "foo",
+ { configurable: false, writable: true, enumerable: false, value: "bar" });
+
+ try {
+ t(x, { foo: "lorem" });
+} catch (ignore) {}
+ a(x.foo, "bar", "Writable, not enumerable");
+};
diff --git a/node_modules/es5-ext/test/object/normalize-options.js b/node_modules/es5-ext/test/object/normalize-options.js
new file mode 100644
index 000000000..028864fec
--- /dev/null
+++ b/node_modules/es5-ext/test/object/normalize-options.js
@@ -0,0 +1,46 @@
+"use strict";
+
+var create = Object.create, defineProperty = Object.defineProperty;
+
+module.exports = function (t, a) {
+ var x = { foo: "raz", bar: "dwa" }, y;
+ y = t(x);
+ a.not(y, x, "Returns copy");
+ a.deep(y, x, "Plain");
+
+ x = { raz: "one", dwa: "two" };
+ defineProperty(x, "get", {
+ configurable: true,
+ enumerable: true,
+ get: function () {
+ return this.dwa;
+}
+ });
+ x = create(x);
+ x.trzy = "three";
+ x.cztery = "four";
+ x = create(x);
+ x.dwa = "two!";
+ x.trzy = "three!";
+ x.piec = "five";
+ x.szesc = "six";
+
+ a.deep(t(x), { raz: "one",
+dwa: "two!",
+trzy: "three!",
+cztery: "four",
+ piec: "five",
+szesc: "six",
+get: "two!" }, "Deep object");
+
+ a.deep(t({ marko: "raz", raz: "foo" }, x, { szesc: "elo", siedem: "bibg" }),
+ { marko: "raz",
+raz: "one",
+dwa: "two!",
+trzy: "three!",
+cztery: "four",
+ piec: "five",
+szesc: "elo",
+siedem: "bibg",
+get: "two!" }, "Multiple options");
+};
diff --git a/node_modules/es5-ext/test/object/primitive-set.js b/node_modules/es5-ext/test/object/primitive-set.js
new file mode 100644
index 000000000..b5083d5cc
--- /dev/null
+++ b/node_modules/es5-ext/test/object/primitive-set.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var getPropertyNames = require("../../object/get-property-names")
+ , isPlainObject = require("../../object/is-plain-object");
+
+module.exports = function (t, a) {
+ var x = t();
+ a(isPlainObject(x), true, "Plain object");
+ a.deep(getPropertyNames(x), [], "No properties");
+ x.foo = "bar";
+ a.deep(getPropertyNames(x), ["foo"], "Extensible");
+
+ a.deep(t("raz", "dwa", 3), { raz: true, dwa: true, 3: true },
+ "Arguments handling");
+};
diff --git a/node_modules/es5-ext/test/object/safe-traverse.js b/node_modules/es5-ext/test/object/safe-traverse.js
new file mode 100644
index 000000000..acf49c0ed
--- /dev/null
+++ b/node_modules/es5-ext/test/object/safe-traverse.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { foo: { bar: { lorem: 12 } } };
+ a(t(obj), obj, "No props");
+ a(t(obj, "foo"), obj.foo, "One");
+ a(t(obj, "raz"), undefined, "One: Fail");
+ a(t(obj, "foo", "bar"), obj.foo.bar, "Two");
+ a(t(obj, "dsd", "raz"), undefined, "Two: Fail #1");
+ a(t(obj, "foo", "raz"), undefined, "Two: Fail #2");
+ a(t(obj, "foo", "bar", "lorem"), obj.foo.bar.lorem, "Three");
+ a(t(obj, "dsd", "raz", "fef"), undefined, "Three: Fail #1");
+ a(t(obj, "foo", "raz", "asdf"), undefined, "Three: Fail #2");
+ a(t(obj, "foo", "bar", "asd"), undefined, "Three: Fail #3");
+};
diff --git a/node_modules/es5-ext/test/object/serialize.js b/node_modules/es5-ext/test/object/serialize.js
new file mode 100644
index 000000000..f0ca800cc
--- /dev/null
+++ b/node_modules/es5-ext/test/object/serialize.js
@@ -0,0 +1,45 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var fn = function (raz, dwa) {
+ return raz + dwa;
+ };
+ a(t(), "undefined", "Undefined");
+ a(t(null), "null", "Null");
+ a(t(null), "null", "Null");
+ a(t("raz"), "\"raz\"", "String");
+ a(t("raz\"ddwa\ntrzy"), "\"raz\\\"ddwa\\ntrzy\"", "String with escape");
+ a(t(false), "false", "Booelean");
+ a(t(fn), String(fn), "Function");
+
+ a(t(/raz-dwa/g), "/raz-dwa/g", "RegExp");
+ a(t(new Date(1234567)), "new Date(1234567)", "Date");
+ a(t([]), "[]", "Empty array");
+ a(
+ t([undefined, false, null, "raz\"ddwa\ntrzy", fn, /raz/g, new Date(1234567), ["foo"]]),
+ "[undefined,false,null,\"raz\\\"ddwa\\ntrzy\"," +
+ String(fn) +
+ ",/raz/g,new Date(1234567),[\"foo\"]]",
+ "Rich Array"
+ );
+ a(t({}), "{}", "Empty object");
+ a(
+ t({
+ raz: undefined,
+ dwa: false,
+ trzy: null,
+ cztery: "raz\"ddwa\ntrzy",
+ piec: fn,
+ szesc: /raz/g,
+ siedem: new Date(1234567),
+ osiem: ["foo", 32],
+ dziewiec: { foo: "bar", dwa: 343 }
+ }),
+ "{\"raz\":undefined,\"dwa\":false,\"trzy\":null,\"cztery\":\"raz\\\"ddwa\\ntrzy\"," +
+ "\"piec\":" +
+ String(fn) +
+ ",\"szesc\":/raz/g,\"siedem\":new Date(1234567),\"osiem\":[\"foo\",32]," +
+ "\"dziewiec\":{\"foo\":\"bar\",\"dwa\":343}}",
+ "Rich object"
+ );
+};
diff --git a/node_modules/es5-ext/test/object/set-prototype-of/implement.js b/node_modules/es5-ext/test/object/set-prototype-of/implement.js
new file mode 100644
index 000000000..5b8fb9e99
--- /dev/null
+++ b/node_modules/es5-ext/test/object/set-prototype-of/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var create = require("../../../object/create")
+ , isImplemented = require("../../../object/set-prototype-of/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(create), true);
+};
diff --git a/node_modules/es5-ext/test/object/set-prototype-of/index.js b/node_modules/es5-ext/test/object/set-prototype-of/index.js
new file mode 100644
index 000000000..23619b079
--- /dev/null
+++ b/node_modules/es5-ext/test/object/set-prototype-of/index.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var create = require("../../../object/create")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+
+ if (t === null) return;
+ a(t(x, y), x, "Return self object");
+ a(getPrototypeOf(x), y, "Object");
+ a.throws(function () {
+ t(x);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t("foo");
+}, TypeError, "Primitive");
+ a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+ x = create(null);
+ a.h1("Change null prototype");
+ a(t(x, y), x, "Result");
+ a(getPrototypeOf(x), y, "Prototype");
+ a.h1("Set null prototype");
+ a(t(y, null), y, "Result");
+ a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js b/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/object/set-prototype-of/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/object/set-prototype-of/shim.js b/node_modules/es5-ext/test/object/set-prototype-of/shim.js
new file mode 100644
index 000000000..23619b079
--- /dev/null
+++ b/node_modules/es5-ext/test/object/set-prototype-of/shim.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var create = require("../../../object/create")
+
+ , getPrototypeOf = Object.getPrototypeOf;
+
+module.exports = function (t, a) {
+ var x = {}, y = {};
+
+ if (t === null) return;
+ a(t(x, y), x, "Return self object");
+ a(getPrototypeOf(x), y, "Object");
+ a.throws(function () {
+ t(x);
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t("foo");
+}, TypeError, "Primitive");
+ a(getPrototypeOf(t(x, null)), t.nullPolyfill || null, "Null");
+ x = create(null);
+ a.h1("Change null prototype");
+ a(t(x, y), x, "Result");
+ a(getPrototypeOf(x), y, "Prototype");
+ a.h1("Set null prototype");
+ a(t(y, null), y, "Result");
+ a(getPrototypeOf(y), t.nullPolyfill || null, "Prototype");
+};
diff --git a/node_modules/es5-ext/test/object/some.js b/node_modules/es5-ext/test/object/some.js
new file mode 100644
index 000000000..97e5d772d
--- /dev/null
+++ b/node_modules/es5-ext/test/object/some.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var o = { 1: 1, 2: 2, 3: 3 };
+
+module.exports = function (t, a) {
+ var o2 = {}, i = 0;
+ t(o, function (value, name) {
+ o2[name] = value;
+ return false;
+ });
+ a(JSON.stringify(o2), JSON.stringify(o), "Iterates");
+
+ a(t(o, function () {
+ ++i;
+ return true;
+ }), true, "Succeeds");
+ a(i, 1, "Stops iteration after condition is met");
+
+ a(t(o, function () {
+ return false;
+ }), false, "Fails");
+
+};
diff --git a/node_modules/es5-ext/test/object/to-array.js b/node_modules/es5-ext/test/object/to-array.js
new file mode 100644
index 000000000..cd11a05f2
--- /dev/null
+++ b/node_modules/es5-ext/test/object/to-array.js
@@ -0,0 +1,15 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var o = { 1: 1, 2: 2, 3: 3 }, o1 = {}
+ , o2 = t(o, function (value, name, self) {
+ a(self, o, "Self");
+ a(this, o1, "Scope");
+ return value + Number(name);
+ }, o1);
+ a.deep(o2, [2, 4, 6]);
+
+ t(o).sort().forEach(function (item) {
+ a.deep(item, [item[0], o[item[0]]], "Default");
+ });
+};
diff --git a/node_modules/es5-ext/test/object/unserialize.js b/node_modules/es5-ext/test/object/unserialize.js
new file mode 100644
index 000000000..5af3c77fe
--- /dev/null
+++ b/node_modules/es5-ext/test/object/unserialize.js
@@ -0,0 +1,41 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var fn = function (raz, dwa) {
+ return raz + dwa;
+ };
+ a(t("undefined"), undefined, "Undefined");
+ a(t("null"), null, "Null");
+ a(t("\"raz\""), "raz", "String");
+ a(t("\"raz\\\"ddwa\\ntrzy\""), "raz\"ddwa\ntrzy", "String with escape");
+ a(t("false"), false, "Booelean");
+ a(String(t(String(fn))), String(fn), "Function");
+
+ a.deep(t("/raz-dwa/g"), /raz-dwa/g, "RegExp");
+ a.deep(t("new Date(1234567)"), new Date(1234567), "Date");
+ a.deep(t("[]"), [], "Empty array");
+ a.deep(
+ t("[undefined,false,null,\"raz\\\"ddwa\\ntrzy\",/raz/g,new Date(1234567),[\"foo\"]]"),
+ [undefined, false, null, "raz\"ddwa\ntrzy", /raz/g, new Date(1234567), ["foo"]],
+ "Rich Array"
+ );
+ a.deep(t("{}"), {}, "Empty object");
+ a.deep(
+ t(
+ "{\"raz\":undefined,\"dwa\":false,\"trzy\":null,\"cztery\":\"raz\\\"ddwa\\ntrzy\"," +
+ "\"szesc\":/raz/g,\"siedem\":new Date(1234567),\"osiem\":[\"foo\",32]," +
+ "\"dziewiec\":{\"foo\":\"bar\",\"dwa\":343}}"
+ ),
+ {
+ raz: undefined,
+ dwa: false,
+ trzy: null,
+ cztery: "raz\"ddwa\ntrzy",
+ szesc: /raz/g,
+ siedem: new Date(1234567),
+ osiem: ["foo", 32],
+ dziewiec: { foo: "bar", dwa: 343 }
+ },
+ "Rich object"
+ );
+};
diff --git a/node_modules/es5-ext/test/object/valid-callable.js b/node_modules/es5-ext/test/object/valid-callable.js
new file mode 100644
index 000000000..fb7310c84
--- /dev/null
+++ b/node_modules/es5-ext/test/object/valid-callable.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var f = function () {};
+ a(t(f), f, "Function");
+ a.throws(function () {
+ t({});
+ }, "Not Function");
+};
diff --git a/node_modules/es5-ext/test/object/valid-object.js b/node_modules/es5-ext/test/object/valid-object.js
new file mode 100644
index 000000000..b33be9779
--- /dev/null
+++ b/node_modules/es5-ext/test/object/valid-object.js
@@ -0,0 +1,25 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "''");
+ a(t(x = {}), x, "Object");
+ a(t(x = function () {}), x, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+ a(t(x = new Date()), x, "Date");
+
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/node_modules/es5-ext/test/object/valid-value.js b/node_modules/es5-ext/test/object/valid-value.js
new file mode 100644
index 000000000..394f89f77
--- /dev/null
+++ b/node_modules/es5-ext/test/object/valid-value.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var numIsNaN = require("../../number/is-nan");
+
+module.exports = function (t, a) {
+ var x;
+ a(t(0), 0, "0");
+ a(t(false), false, "false");
+ a(t(""), "", "''");
+ a(numIsNaN(t(NaN)), true, "NaN");
+ a(t(x = {}), x, "{}");
+
+ a.throws(function () {
+ t();
+ }, "Undefined");
+ a.throws(function () {
+ t(null);
+ }, "null");
+};
diff --git a/node_modules/es5-ext/test/object/validate-array-like-object.js b/node_modules/es5-ext/test/object/validate-array-like-object.js
new file mode 100644
index 000000000..b10ec69b5
--- /dev/null
+++ b/node_modules/es5-ext/test/object/validate-array-like-object.js
@@ -0,0 +1,29 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a.throws(function () {
+ t("");
+}, TypeError, "String");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/node_modules/es5-ext/test/object/validate-array-like.js b/node_modules/es5-ext/test/object/validate-array-like.js
new file mode 100644
index 000000000..6da6b191e
--- /dev/null
+++ b/node_modules/es5-ext/test/object/validate-array-like.js
@@ -0,0 +1,27 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t(0);
+}, TypeError, "0");
+ a.throws(function () {
+ t(false);
+}, TypeError, "false");
+ a(t(""), "", "''");
+ a.throws(function () {
+ t({});
+}, TypeError, "Plain Object");
+ a.throws(function () {
+ t(function () {});
+}, TypeError, "Function");
+ a(t(x = new String("raz")), x, "String object"); // Jslint: ignore
+
+ a(t(x = { length: 1 }), x, "Array like");
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "null");
+};
diff --git a/node_modules/es5-ext/test/object/validate-stringifiable-value.js b/node_modules/es5-ext/test/object/validate-stringifiable-value.js
new file mode 100644
index 000000000..8283814ab
--- /dev/null
+++ b/node_modules/es5-ext/test/object/validate-stringifiable-value.js
@@ -0,0 +1,22 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a.throws(function () {
+ t();
+}, TypeError, "Undefined");
+ a.throws(function () {
+ t(null);
+}, TypeError, "Null");
+ a(t(0), "0");
+ a(t(false), "false");
+ a(t(""), "");
+ a(t({}), String({}), "Object");
+ a(t(x = function () {}), String(x), "Function");
+ a(t(x = new String("raz")), String(x), "String object"); // Jslint: ignore
+ a(t(x = new Date()), String(x), "Date");
+
+ a.throws(function () {
+ t(Object.create(null));
+}, TypeError, "Null prototype object");
+};
diff --git a/node_modules/es5-ext/test/object/validate-stringifiable.js b/node_modules/es5-ext/test/object/validate-stringifiable.js
new file mode 100644
index 000000000..e75a4157b
--- /dev/null
+++ b/node_modules/es5-ext/test/object/validate-stringifiable.js
@@ -0,0 +1,18 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var x;
+ a(t(), "undefined", "Undefined");
+ a(t(null), "null", "Null");
+ a(t(0), "0");
+ a(t(false), "false");
+ a(t(""), "");
+ a(t({}), String({}), "Object");
+ a(t(x = function () {}), String(x), "Function");
+ a(t(x = new String("raz")), String(x), "String object"); // Jslint: ignore
+ a(t(x = new Date()), String(x), "Date");
+
+ a.throws(function () {
+ t(Object.create(null));
+}, TypeError, "Null prototype object");
+};
diff --git a/node_modules/es5-ext/test/optional-chaining.js b/node_modules/es5-ext/test/optional-chaining.js
new file mode 100644
index 000000000..1f7d40563
--- /dev/null
+++ b/node_modules/es5-ext/test/optional-chaining.js
@@ -0,0 +1,17 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var obj = { foo: { bar: "elo", par: null } };
+ a(t(), undefined);
+ a(t(null), null);
+ a(t(obj), obj);
+ a(t(obj, "foo"), obj.foo);
+ a(t(obj, "foo", "bar"), "elo");
+ a(t(obj, "foo", "bar", "slice"), String.prototype.slice);
+ a(t(obj, "foo", "par"), null);
+ a(t(obj, "foo", "par", "marko"), undefined);
+ a(t(obj, "marko"), undefined);
+ a(t(""), "");
+ a(t("", "foo"), undefined);
+ a(t("", "slice"), String.prototype.slice);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/index.js b/node_modules/es5-ext/test/reg-exp/#/index.js
new file mode 100644
index 000000000..7ab9ab8af
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/index.js
@@ -0,0 +1,15 @@
+/* eslint-env node */
+
+"use strict";
+
+var indexTest = require("tad/lib/utils/index-test")
+ , path = require("path").resolve(__dirname, "../../../reg-exp/#");
+
+module.exports = function (t, a, d) {
+ indexTest(
+ indexTest.readDir(path).aside(function (data) {
+ delete data.sticky;
+ delete data.unicode;
+ })
+ )(t, a, d);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/is-sticky.js b/node_modules/es5-ext/test/reg-exp/#/is-sticky.js
new file mode 100644
index 000000000..e65740e76
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/is-sticky.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var re;
+ a(t.call(/raz/), false, "Normal");
+ a(t.call(/raz/g), false, "Global");
+ try {
+ // eslint-disable-next-line no-invalid-regexp
+ re = new RegExp("raz", "y");
+ } catch (ignore) {}
+ if (!re) return;
+ a(t.call(re), true, "Sticky");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/is-unicode.js b/node_modules/es5-ext/test/reg-exp/#/is-unicode.js
new file mode 100644
index 000000000..86217aa04
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/is-unicode.js
@@ -0,0 +1,13 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var re;
+ a(t.call(/raz/), false, "Normal");
+ a(t.call(/raz/g), false, "Global");
+ try {
+ // eslint-disable-next-line no-invalid-regexp
+ re = new RegExp("raz", "u");
+ } catch (ignore) {}
+ if (!re) return;
+ a(t.call(re), true, "Unicode");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/match/implement.js b/node_modules/es5-ext/test/reg-exp/#/match/implement.js
new file mode 100644
index 000000000..633d9bb6b
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/match/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/match/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/match/index.js b/node_modules/es5-ext/test/reg-exp/#/match/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/match/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/match/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/match/shim.js b/node_modules/es5-ext/test/reg-exp/#/match/shim.js
new file mode 100644
index 000000000..fce094f61
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/match/shim.js
@@ -0,0 +1,8 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var result = ["foo"];
+ result.index = 0;
+ result.input = "foobar";
+ a.deep(t.call(/foo/, "foobar"), result);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/replace/implement.js b/node_modules/es5-ext/test/reg-exp/#/replace/implement.js
new file mode 100644
index 000000000..7da5e6694
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/replace/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/replace/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/replace/index.js b/node_modules/es5-ext/test/reg-exp/#/replace/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/replace/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/replace/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/replace/shim.js b/node_modules/es5-ext/test/reg-exp/#/replace/shim.js
new file mode 100644
index 000000000..4178065db
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/replace/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(/foo/, "foobar", "mar"), "marbar");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/search/implement.js b/node_modules/es5-ext/test/reg-exp/#/search/implement.js
new file mode 100644
index 000000000..ded73e27d
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/search/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/search/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/search/index.js b/node_modules/es5-ext/test/reg-exp/#/search/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/search/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/search/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/search/shim.js b/node_modules/es5-ext/test/reg-exp/#/search/shim.js
new file mode 100644
index 000000000..779b13274
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/search/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(/foo/, "barfoo"), 3);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/split/implement.js b/node_modules/es5-ext/test/reg-exp/#/split/implement.js
new file mode 100644
index 000000000..4ef532bd7
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/split/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/split/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/split/index.js b/node_modules/es5-ext/test/reg-exp/#/split/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/split/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/split/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/split/shim.js b/node_modules/es5-ext/test/reg-exp/#/split/shim.js
new file mode 100644
index 000000000..a01250e9a
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/split/shim.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.deep(t.call(/\|/, "bar|foo"), ["bar", "foo"]);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js b/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js
new file mode 100644
index 000000000..d7e59bf99
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/sticky/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/sticky/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/sticky/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js b/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js
new file mode 100644
index 000000000..9cb2b3792
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/unicode/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../reg-exp/#/unicode/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js b/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/#/unicode/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/escape.js b/node_modules/es5-ext/test/reg-exp/escape.js
new file mode 100644
index 000000000..9478f5234
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/escape.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var str = "(?:^te|er)s{2}t\\[raz]+$";
+ a(RegExp("^" + t(str) + "$").test(str), true);
+};
diff --git a/node_modules/es5-ext/test/reg-exp/is-reg-exp.js b/node_modules/es5-ext/test/reg-exp/is-reg-exp.js
new file mode 100644
index 000000000..7727eabaf
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/is-reg-exp.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t("arar"), false, "String");
+ a(t(12), false, "Number");
+ a(t(true), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), false, "String object");
+ a(t({}), false, "Plain object");
+ a(t(/a/), true, "Regular expression");
+ a(t(new RegExp("a")), true, "Regular expression via constructor");
+};
diff --git a/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js b/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js
new file mode 100644
index 000000000..2f99441b0
--- /dev/null
+++ b/node_modules/es5-ext/test/reg-exp/valid-reg-exp.js
@@ -0,0 +1,19 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var r = /raz/;
+ a(t(r), r, "Direct");
+ r = new RegExp("foo");
+ a(t(r), r, "Constructor");
+ a.throws(function () {
+ t({});
+ }, "Object");
+ a.throws(function () {
+ t(function () {});
+ }, "Function");
+ a.throws(function () {
+ t({ exec: function () {
+ return 20;
+} });
+ }, "Plain object");
+};
diff --git a/node_modules/es5-ext/test/safe-to-string.js b/node_modules/es5-ext/test/safe-to-string.js
new file mode 100644
index 000000000..1e2d7e13e
--- /dev/null
+++ b/node_modules/es5-ext/test/safe-to-string.js
@@ -0,0 +1,19 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(), "undefined");
+ a(t(null), "null");
+ a(t(10), "10");
+ a(t("str"), "str");
+ a(
+ t({
+ toString: function () {
+ return "miszka";
+ }
+ }),
+ "miszka"
+ );
+ // eslint-disable-next-line symbol-description
+ if (typeof Symbol === "function") a(t(Symbol()), "Symbol()");
+ a(t(Object.create(null)), "<non-stringifiable value>");
+};
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/implement.js b/node_modules/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644
index 000000000..c984fb268
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/@@iterator/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/index.js b/node_modules/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js b/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/shim.js b/node_modules/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644
index 000000000..467cdc355
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var it = t.call("r💩z");
+ a.deep(it.next(), { done: false, value: "r" }, "#1");
+ a.deep(it.next(), { done: false, value: "💩" }, "#2");
+ a.deep(it.next(), { done: false, value: "z" }, "#3");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/node_modules/es5-ext/test/string/#/at.js b/node_modules/es5-ext/test/string/#/at.js
new file mode 100644
index 000000000..a614f938f
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/at.js
@@ -0,0 +1,132 @@
+/* eslint no-useless-call: "off" */
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ a.h1("BMP");
+ a(t.call("abc\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("abc\uD834\uDF06def", -1), "", "-1");
+ a(t.call("abc\uD834\uDF06def", -0), "a", "-0");
+ a(t.call("abc\uD834\uDF06def", +0), "a", "+0");
+ a(t.call("abc\uD834\uDF06def", 1), "b", "1");
+ a(t.call("abc\uD834\uDF06def", 3), "\uD834\uDF06", "3");
+ a(t.call("abc\uD834\uDF06def", 4), "\uDF06", "4");
+ a(t.call("abc\uD834\uDF06def", 5), "d", "5");
+ a(t.call("abc\uD834\uDF06def", 42), "", "42");
+ a(t.call("abc\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("abc\uD834\uDF06def", null), "a", "null");
+ a(t.call("abc\uD834\uDF06def", undefined), "a", "undefined");
+ a(t.call("abc\uD834\uDF06def"), "a", "No argument");
+ a(t.call("abc\uD834\uDF06def", false), "a", "false");
+ a(t.call("abc\uD834\uDF06def", NaN), "a", "NaN");
+ a(t.call("abc\uD834\uDF06def", ""), "a", "Empty string");
+ a(t.call("abc\uD834\uDF06def", "_"), "a", "_");
+ a(t.call("abc\uD834\uDF06def", "1"), "b", "'1'");
+ a(t.call("abc\uD834\uDF06def", []), "a", "[]");
+ a(t.call("abc\uD834\uDF06def", {}), "a", "{}");
+ a(t.call("abc\uD834\uDF06def", -0.9), "a", "-0.9");
+ a(t.call("abc\uD834\uDF06def", 1.9), "b", "1.9");
+ a(t.call("abc\uD834\uDF06def", 7.9), "f", "7.9");
+ a(t.call("abc\uD834\uDF06def", Math.pow(2, 32)), "", "Big number");
+
+ a.h1("Astral symbol");
+ a(t.call("\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("\uD834\uDF06def", -1), "", "-1");
+ a(t.call("\uD834\uDF06def", -0), "\uD834\uDF06", "-0");
+ a(t.call("\uD834\uDF06def", +0), "\uD834\uDF06", "+0");
+ a(t.call("\uD834\uDF06def", 1), "\uDF06", "1");
+ a(t.call("\uD834\uDF06def", 2), "d", "2");
+ a(t.call("\uD834\uDF06def", 3), "e", "3");
+ a(t.call("\uD834\uDF06def", 4), "f", "4");
+ a(t.call("\uD834\uDF06def", 42), "", "42");
+ a(t.call("\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uD834\uDF06def", null), "\uD834\uDF06", "null");
+ a(t.call("\uD834\uDF06def", undefined), "\uD834\uDF06", "undefined");
+ a(t.call("\uD834\uDF06def"), "\uD834\uDF06", "No arguments");
+ a(t.call("\uD834\uDF06def", false), "\uD834\uDF06", "false");
+ a(t.call("\uD834\uDF06def", NaN), "\uD834\uDF06", "NaN");
+ a(t.call("\uD834\uDF06def", ""), "\uD834\uDF06", "Empty string");
+ a(t.call("\uD834\uDF06def", "_"), "\uD834\uDF06", "_");
+ a(t.call("\uD834\uDF06def", "1"), "\uDF06", "'1'");
+
+ a.h1("Lone high surrogates");
+ a(t.call("\uD834abc", -Infinity), "", "-Infinity");
+ a(t.call("\uD834abc", -1), "", "-1");
+ a(t.call("\uD834abc", -0), "\uD834", "-0");
+ a(t.call("\uD834abc", +0), "\uD834", "+0");
+ a(t.call("\uD834abc", 1), "a", "1");
+ a(t.call("\uD834abc", 42), "", "42");
+ a(t.call("\uD834abc", Number(Infinity)), "", "Infinity");
+ a(t.call("\uD834abc", null), "\uD834", "null");
+ a(t.call("\uD834abc", undefined), "\uD834", "undefined");
+ a(t.call("\uD834abc"), "\uD834", "No arguments");
+ a(t.call("\uD834abc", false), "\uD834", "false");
+ a(t.call("\uD834abc", NaN), "\uD834", "NaN");
+ a(t.call("\uD834abc", ""), "\uD834", "Empty string");
+ a(t.call("\uD834abc", "_"), "\uD834", "_");
+ a(t.call("\uD834abc", "1"), "a", "'a'");
+
+ a.h1("Lone low surrogates");
+ a(t.call("\uDF06abc", -Infinity), "", "-Infinity");
+ a(t.call("\uDF06abc", -1), "", "-1");
+ a(t.call("\uDF06abc", -0), "\uDF06", "-0");
+ a(t.call("\uDF06abc", +0), "\uDF06", "+0");
+ a(t.call("\uDF06abc", 1), "a", "1");
+ a(t.call("\uDF06abc", 42), "", "42");
+ a(t.call("\uDF06abc", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uDF06abc", null), "\uDF06", "null");
+ a(t.call("\uDF06abc", undefined), "\uDF06", "undefined");
+ a(t.call("\uDF06abc"), "\uDF06", "No arguments");
+ a(t.call("\uDF06abc", false), "\uDF06", "false");
+ a(t.call("\uDF06abc", NaN), "\uDF06", "NaN");
+ a(t.call("\uDF06abc", ""), "\uDF06", "Empty string");
+ a(t.call("\uDF06abc", "_"), "\uDF06", "_");
+ a(t.call("\uDF06abc", "1"), "a", "'1'");
+
+ a.h1("Context");
+ a.throws(
+ function () {
+ t.call(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t.call(undefined, 4);
+ },
+ TypeError,
+ "Undefined + argument"
+ );
+ a.throws(
+ function () {
+ t.call(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.throws(
+ function () {
+ t.call(null, 4);
+ },
+ TypeError,
+ "Null + argument"
+ );
+ a(t.call(42, 0), "4", "Number #1");
+ a(t.call(42, 1), "2", "Number #2");
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ "c",
+ "Object"
+ );
+};
diff --git a/node_modules/es5-ext/test/string/#/camel-to-hyphen.js b/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644
index 000000000..bbf9ae48a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razDwaTRzy4yFoo45My"), "raz-dwa-t-rzy4y-foo45-my");
+ a(t.call("razDwaTRzy4yFoo45My-"), "raz-dwa-t-rzy4y-foo45-my-");
+ a(t.call("razDwaTRzy4yFoo45My--"), "raz-dwa-t-rzy4y-foo45-my--");
+};
diff --git a/node_modules/es5-ext/test/string/#/capitalize.js b/node_modules/es5-ext/test/string/#/capitalize.js
new file mode 100644
index 000000000..884ae9cbb
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/capitalize.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "Raz", "Word");
+ a(t.call("BLA"), "BLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "A", "One letter");
+ a(t.call("this is a test"), "This is a test", "Sentence");
+};
diff --git a/node_modules/es5-ext/test/string/#/case-insensitive-compare.js b/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644
index 000000000..8117f9205
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("AA", "aa"), 0, "Same");
+ a.ok(t.call("Amber", "zebra") < 0, "Less");
+ a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/implement.js b/node_modules/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644
index 000000000..f966c5354
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isImplemented =
+ require("../../../../string/#/code-point-at/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/index.js b/node_modules/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js b/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/shim.js b/node_modules/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644
index 000000000..40d62766e
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/shim.js
@@ -0,0 +1,119 @@
+/* eslint no-useless-call: "off" */
+
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+// /blob/master/tests/tests.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ // String that starts with a BMP symbol
+ a(t.call("abc\uD834\uDF06def", ""), 0x61);
+ a(t.call("abc\uD834\uDF06def", "_"), 0x61);
+ a(t.call("abc\uD834\uDF06def"), 0x61);
+ a(t.call("abc\uD834\uDF06def", -Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", -1), undefined);
+ a(t.call("abc\uD834\uDF06def", -0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 3), 0x1d306);
+ a(t.call("abc\uD834\uDF06def", 4), 0xdf06);
+ a(t.call("abc\uD834\uDF06def", 5), 0x64);
+ a(t.call("abc\uD834\uDF06def", 42), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", NaN), 0x61);
+ a(t.call("abc\uD834\uDF06def", false), 0x61);
+ a(t.call("abc\uD834\uDF06def", null), 0x61);
+ a(t.call("abc\uD834\uDF06def", undefined), 0x61);
+
+ // String that starts with an astral symbol
+ a(t.call("\uD834\uDF06def", ""), 0x1d306);
+ a(t.call("\uD834\uDF06def", "1"), 0xdf06);
+ a(t.call("\uD834\uDF06def", "_"), 0x1d306);
+ a(t.call("\uD834\uDF06def"), 0x1d306);
+ a(t.call("\uD834\uDF06def", -1), undefined);
+ a(t.call("\uD834\uDF06def", -0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 1), 0xdf06);
+ a(t.call("\uD834\uDF06def", 42), undefined);
+ a(t.call("\uD834\uDF06def", false), 0x1d306);
+ a(t.call("\uD834\uDF06def", null), 0x1d306);
+ a(t.call("\uD834\uDF06def", undefined), 0x1d306);
+
+ // Lone high surrogates
+ a(t.call("\uD834abc", ""), 0xd834);
+ a(t.call("\uD834abc", "_"), 0xd834);
+ a(t.call("\uD834abc"), 0xd834);
+ a(t.call("\uD834abc", -1), undefined);
+ a(t.call("\uD834abc", -0), 0xd834);
+ a(t.call("\uD834abc", 0), 0xd834);
+ a(t.call("\uD834abc", false), 0xd834);
+ a(t.call("\uD834abc", NaN), 0xd834);
+ a(t.call("\uD834abc", null), 0xd834);
+ a(t.call("\uD834abc", undefined), 0xd834);
+
+ // Lone low surrogates
+ a(t.call("\uDF06abc", ""), 0xdf06);
+ a(t.call("\uDF06abc", "_"), 0xdf06);
+ a(t.call("\uDF06abc"), 0xdf06);
+ a(t.call("\uDF06abc", -1), undefined);
+ a(t.call("\uDF06abc", -0), 0xdf06);
+ a(t.call("\uDF06abc", 0), 0xdf06);
+ a(t.call("\uDF06abc", false), 0xdf06);
+ a(t.call("\uDF06abc", NaN), 0xdf06);
+ a(t.call("\uDF06abc", null), 0xdf06);
+ a(t.call("\uDF06abc", undefined), 0xdf06);
+
+ a.throws(function () {
+ t.call(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.call(undefined, 4);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null, 4);
+ }, TypeError);
+ a(t.call(42, 0), 0x34);
+ a(t.call(42, 1), 0x32);
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ 0x63
+ );
+
+ a.throws(function () {
+ t.apply(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(undefined, [4]);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null, [4]);
+ }, TypeError);
+ a(t.apply(42, [0]), 0x34);
+ a(t.apply(42, [1]), 0x32);
+ a(
+ t.apply(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ [2]
+ ),
+ 0x63
+ );
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/implement.js b/node_modules/es5-ext/test/string/#/contains/implement.js
new file mode 100644
index 000000000..297a832f9
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/contains/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/index.js b/node_modules/es5-ext/test/string/#/contains/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/contains/is-implemented.js b/node_modules/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/shim.js b/node_modules/es5-ext/test/string/#/contains/shim.js
new file mode 100644
index 000000000..0a73671d4
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz", ""), true, "Empty");
+ a(t.call("", ""), true, "Both Empty");
+ a(t.call("raz", "raz"), true, "Same");
+ a(t.call("razdwa", "raz"), true, "Starts with");
+ a(t.call("razdwa", "dwa"), true, "Ends with");
+ a(t.call("razdwa", "zdw"), true, "In middle");
+ a(t.call("", "raz"), false, "Something in empty");
+ a(t.call("az", "raz"), false, "Longer");
+ a(t.call("azasdfasdf", "azff"), false, "Not found");
+ a(t.call("razdwa", "raz", 1), false, "Position");
+};
diff --git a/node_modules/es5-ext/test/string/#/count.js b/node_modules/es5-ext/test/string/#/count.js
new file mode 100644
index 000000000..d259c9012
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/count.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t.call("", "");
+ });
+ a(t.call("x", "x"), 1);
+ a(t.call("xx", "x"), 2);
+ a(t.call("xxx", "xx"), 1);
+ a(t.call("xxxx", "xx"), 2);
+ a(t.call("xx", "xxx"), 0);
+ a(t.call("", "elo"), 0);
+ a(t.call("fooo", "foofooo"), 0);
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/implement.js b/node_modules/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644
index 000000000..5a2ca3cc6
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/ends-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/index.js b/node_modules/es5-ext/test/string/#/ends-with/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js b/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/shim.js b/node_modules/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644
index 000000000..753988331
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/shim.js
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "cd"), true, "Ends with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "ab"), false, "Doesn't end with needle");
+ a(t.call("abc", "defg"), false, "Length trick");
+ a(t.call("razdwa", "zd", 3), false, "Position: false");
+ a(t.call("razdwa", "zd", 4), true, "Position: true");
+ a(t.call("razdwa", "zd", 5), false, "Position: false #2");
+};
diff --git a/node_modules/es5-ext/test/string/#/hyphen-to-camel.js b/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644
index 000000000..89c8161c9
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa"), "razDwaTRzy4yRtr4Tiu45Pa");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa-"), "razDwaTRzy4yRtr4Tiu45Pa-");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa--"), "razDwaTRzy4yRtr4Tiu45Pa--");
+};
diff --git a/node_modules/es5-ext/test/string/#/indent.js b/node_modules/es5-ext/test/string/#/indent.js
new file mode 100644
index 000000000..6b1dd895d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/indent.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("ra\nzz", ""), "ra\nzz", "Empty");
+ a(t.call("ra\nzz", "\t", 3), "\t\t\tra\n\t\t\tzz", "String repeat");
+ a(t.call("ra\nzz\nsss\nfff\n", "\t"), "\tra\n\tzz\n\tsss\n\tfff\n",
+ "Multi-line");
+ a(t.call("ra\n\nzz\n", "\t"), "\tra\n\n\tzz\n", "Don't touch empty lines");
+};
diff --git a/node_modules/es5-ext/test/string/#/last.js b/node_modules/es5-ext/test/string/#/last.js
new file mode 100644
index 000000000..fea798d6a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/last.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(""), null, "Null");
+ a(t.call("abcdef"), "f", "String");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/_data.js b/node_modules/es5-ext/test/string/#/normalize/_data.js
new file mode 100644
index 000000000..963121194
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/_data.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t[0], "object");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/implement.js b/node_modules/es5-ext/test/string/#/normalize/implement.js
new file mode 100644
index 000000000..b053aa892
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/normalize/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/index.js b/node_modules/es5-ext/test/string/#/normalize/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/normalize/is-implemented.js b/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/shim.js b/node_modules/es5-ext/test/string/#/normalize/shim.js
new file mode 100644
index 000000000..0c80aa409
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/shim.js
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+"use strict";
+
+var str = "äiti";
+
+module.exports = function (t, a) {
+ a(t.call(str), "\u00e4iti");
+ a(t.call(str, "NFC"), "\u00e4iti");
+ a(t.call(str, "NFD"), "a\u0308iti");
+ a(t.call(str, "NFKC"), "\u00e4iti");
+ a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/node_modules/es5-ext/test/string/#/pad.js b/node_modules/es5-ext/test/string/#/pad.js
new file mode 100644
index 000000000..e573453fb
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/pad.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var partial = require("../../../function/#/partial");
+
+module.exports = {
+ Left: function (t, a) {
+ t = partial.call(t, "x", 5);
+
+ a(t.call("yy"), "xxxyy");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ },
+ Right: function (t, a) {
+ t = partial.call(t, "x", -5);
+
+ a(t.call("yy"), "yyxxx");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ }
+};
diff --git a/node_modules/es5-ext/test/string/#/plain-replace-all.js b/node_modules/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644
index 000000000..e5f801c62
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/plain-replace-all.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+
+ a(t.call("$raz$$dwa$trzy$", "$", "&&"), "&&raz&&&&dwa&&trzy&&", "Multi");
+ a(t.call("$raz$$dwa$$$$trzy$", "$$", "&"), "$raz&dwa&&trzy$",
+ "Multi many chars");
+};
diff --git a/node_modules/es5-ext/test/string/#/plain-replace.js b/node_modules/es5-ext/test/string/#/plain-replace.js
new file mode 100644
index 000000000..9f6c2beef
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/plain-replace.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/implement.js b/node_modules/es5-ext/test/string/#/repeat/implement.js
new file mode 100644
index 000000000..270962895
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/repeat/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/index.js b/node_modules/es5-ext/test/string/#/repeat/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/repeat/is-implemented.js b/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/shim.js b/node_modules/es5-ext/test/string/#/repeat/shim.js
new file mode 100644
index 000000000..4d328390a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("a", 0), "", "Empty");
+ a(t.call("a", 1), "a", "1");
+ a(t.call("a", 2), "aa", "2");
+ a(t.call("\t", 5), "\t\t\t\t\t", "Whitespace");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("razfoobar", 5), "razfoobarrazfoobarrazfoobarrazfoobarrazfoobar", "Many chars");
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/implement.js b/node_modules/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644
index 000000000..d1f1ce252
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/starts-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/index.js b/node_modules/es5-ext/test/string/#/starts-with/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js b/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/shim.js b/node_modules/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644
index 000000000..4b5e4e402
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/shim.js
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "ab"), true, "Starts with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "bcde", 1), false, "Needle larger than haystack");
+ a(!t.call("abcd", "cd"), true, "Doesn't start with needle");
+ a(t.call("abcd", "bc", 1), true, "Position");
+};
diff --git a/node_modules/es5-ext/test/string/#/uncapitalize.js b/node_modules/es5-ext/test/string/#/uncapitalize.js
new file mode 100644
index 000000000..cddd847ce
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/uncapitalize.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "raz", "Word");
+ a(t.call("BLA"), "bLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "a", "One letter");
+ a(t.call("this is a test"), "this is a test", "Sentence");
+ a(t.call("This is a test"), "this is a test", "Capitalized sentence");
+};
diff --git a/node_modules/es5-ext/test/string/format-method.js b/node_modules/es5-ext/test/string/format-method.js
new file mode 100644
index 000000000..69e93de63
--- /dev/null
+++ b/node_modules/es5-ext/test/string/format-method.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ t = t({ a: "A",
+aa: "B",
+ab: "C",
+b: "D",
+ c: function () {
+ return ++this.a;
+} });
+ a(t.call({ a: 0 }, " %a%aab%abb%b\\%aa%ab%c%c "), " ABbCbD%aaC12 ");
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/implement.js b/node_modules/es5-ext/test/string/from-code-point/implement.js
new file mode 100644
index 000000000..31ed7b5bd
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/from-code-point/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/index.js b/node_modules/es5-ext/test/string/from-code-point/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/from-code-point/is-implemented.js b/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/shim.js b/node_modules/es5-ext/test/string/from-code-point/shim.js
new file mode 100644
index 000000000..023931f13
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/shim.js
@@ -0,0 +1,73 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /tests/tests.js
+
+"use strict";
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+ var counter, result;
+
+ a(t.length, 1, "Length");
+ a(String.propertyIsEnumerable("fromCodePoint"), false, "Not enumerable");
+
+ a(t(""), "\0", "Empty string");
+ a(t(), "", "No arguments");
+ a(t(-0), "\0", "-0");
+ a(t(0), "\0", "0");
+ a(t(0x1D306), "\uD834\uDF06", "Unicode");
+ a(t(0x1D306, 0x61, 0x1D307), "\uD834\uDF06a\uD834\uDF07", "Complex unicode");
+ a(t(0x61, 0x62, 0x1D307), "ab\uD834\uDF07", "Complex");
+ a(t(false), "\0", "false");
+ a(t(null), "\0", "null");
+
+ a.throws(function () {
+ t("_");
+}, RangeError, "_");
+ a.throws(function () {
+ t(Infinity);
+}, RangeError, "Infinity");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "-Infinity");
+ a.throws(function () {
+ t(-1);
+}, RangeError, "-1");
+ a.throws(function () {
+ t(0x10FFFF + 1);
+}, RangeError, "Range error #1");
+ a.throws(function () {
+ t(3.14);
+}, RangeError, "Range error #2");
+ a.throws(function () {
+ t(3e-2);
+}, RangeError, "Range error #3");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "Range error #4");
+ a.throws(function () {
+ t(Number(Infinity));
+}, RangeError, "Range error #5");
+ a.throws(function () {
+ t(NaN);
+}, RangeError, "Range error #6");
+ a.throws(function () {
+ t(undefined);
+}, RangeError, "Range error #7");
+ a.throws(function () {
+ t({});
+}, RangeError, "Range error #8");
+ a.throws(function () {
+ t(/re/);
+}, RangeError, "Range error #9");
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0); // One code unit per symbol
+ t.apply(null, result); // Must not throw
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0xFFFF + 1); // Two code units per symbol
+ t.apply(null, result); // Must not throw
+};
diff --git a/node_modules/es5-ext/test/string/is-string.js b/node_modules/es5-ext/test/string/is-string.js
new file mode 100644
index 000000000..0e831221d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/is-string.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(null), false, "Null");
+ a(t(""), true, "Empty string");
+ a(t(12), false, "Number");
+ a(t(false), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), true, "String object");
+ a(t("asdfaf"), true, "String");
+};
diff --git a/node_modules/es5-ext/test/string/random-uniq.js b/node_modules/es5-ext/test/string/random-uniq.js
new file mode 100644
index 000000000..3b6d889ad
--- /dev/null
+++ b/node_modules/es5-ext/test/string/random-uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+ a(typeof t(), "string");
+ a.ok(t().length > 7);
+ a.not(t(), t());
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+};
diff --git a/node_modules/es5-ext/test/string/raw/implement.js b/node_modules/es5-ext/test/string/raw/implement.js
new file mode 100644
index 000000000..25b624e8e
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/raw/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/raw/index.js b/node_modules/es5-ext/test/string/raw/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/raw/is-implemented.js b/node_modules/es5-ext/test/string/raw/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/raw/shim.js b/node_modules/es5-ext/test/string/raw/shim.js
new file mode 100644
index 000000000..17a11ac52
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/shim.js
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var callSite = [];
+
+ callSite.raw = ["The total is ", " ($", " with tax)"];
+ a(t(callSite, "{total}", "{total * 1.01}"),
+ "The total is {total} (${total * 1.01} with tax)");
+
+ callSite.raw = [];
+ a(t(callSite, "{total}", "{total * 1.01}"), "");
+};